dataset editor
This commit is contained in:
parent
8bec0a6cf0
commit
b3cbd1addf
|
@ -14,6 +14,8 @@ import { ProjectListingComponent } from './projects/project-listing.component';
|
|||
import { DataManagementPlanListingComponent } from './dmps/dmp-listing.component';
|
||||
import { ProjectEditorComponent } from './projects/editor/project-editor.component';
|
||||
import { DataManagementPlanEditorComponent } from './dmps/editor/dmp-editor.component';
|
||||
import { DatasetEditorComponent } from './datasets_new/editor/dataset-editor.component';
|
||||
import { DatasetListingComponent } from './datasets_new/dataset-listing.component';
|
||||
|
||||
|
||||
const appRoutes: Routes = [
|
||||
|
@ -26,6 +28,9 @@ const appRoutes: Routes = [
|
|||
{ path: 'dmps', component: DataManagementPlanListingComponent, canActivate: [AuthGuard]},
|
||||
{ path: 'dmp/:id', component: DataManagementPlanEditorComponent, canActivate: [AuthGuard]},
|
||||
{ path: 'dmps/new', component: DataManagementPlanEditorComponent, canActivate: [AuthGuard]},
|
||||
{ path: 'datasets', component: DatasetListingComponent, canActivate: [AuthGuard]},
|
||||
{ path: 'dataset/:id', component: DatasetEditorComponent, canActivate: [AuthGuard]},
|
||||
{ path: 'datasets/new', component: DatasetEditorComponent, canActivate: [AuthGuard]},
|
||||
{ path: 'login', component: MainSignInComponent},
|
||||
{ path: "unauthorized", loadChildren: './unauthorized/unauthorized.module#UnauthorizedModule' },
|
||||
{ path: 'welcome', component: HomepageComponent, canActivate: [AuthGuard]},
|
||||
|
|
|
@ -111,6 +111,7 @@ import { ProjectEditorComponent } from './projects/editor/project-editor.compone
|
|||
import { DataManagementPlanEditorComponent } from './dmps/editor/dmp-editor.component';
|
||||
|
||||
import { FigurecardComponent } from './shared/components/figurecard/figurecard.component';
|
||||
import { DatasetEditorComponent } from './datasets_new/editor/dataset-editor.component';
|
||||
|
||||
|
||||
|
||||
|
@ -152,7 +153,8 @@ import { FigurecardComponent } from './shared/components/figurecard/figurecard.c
|
|||
BreadcrumbComponent, DmpDetailedComponent, ProjectDetailedComponent,
|
||||
ProjectEditorComponent,
|
||||
DataManagementPlanEditorComponent,
|
||||
FigurecardComponent
|
||||
FigurecardComponent,
|
||||
DatasetEditorComponent
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
|
|
|
@ -28,7 +28,8 @@
|
|||
<!-- Column Definition: Status -->
|
||||
<ng-container cdkColumnDef="status">
|
||||
<mat-header-cell *matHeaderCellDef>{{'DATASET-LISTING.COLUMNS.STATUS' | translate}}</mat-header-cell>
|
||||
<mat-cell *matCellDef="let row"> {{row.status}} </mat-cell>
|
||||
<mat-cell *matCellDef="let row"> {{row.status}}
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<!-- Column Definition: Description -->
|
||||
|
@ -53,13 +54,11 @@
|
|||
<mat-row *matRowDef="let row; columns: displayedColumns" (click)="rowClick(row.id)"></mat-row>
|
||||
|
||||
</mat-table>
|
||||
<mat-paginator #paginator
|
||||
[length]="dataSource?.totalCount"
|
||||
[pageSizeOptions]="[10, 25, 100]">
|
||||
<mat-paginator #paginator [length]="dataSource?.totalCount" [pageSizeOptions]="[10, 25, 100]">
|
||||
</mat-paginator>
|
||||
</mat-card>
|
||||
|
||||
<button mat-fab class="mat-fab-bottom-right" color="primary" [routerLink]=" ['./new'] ">
|
||||
<mat-icon class="mat-24">add</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
|
@ -20,7 +20,7 @@ import { DatasetListingModel } from "../models/datasets/DatasetListingModel";
|
|||
styleUrls: ['./dataset-listing.component.css'],
|
||||
providers: [DatasetService]
|
||||
})
|
||||
export class DatasetListingComponent implements OnInit, AfterViewInit {
|
||||
export class DatasetListingComponent implements OnInit {
|
||||
|
||||
@ViewChild(MatPaginator) _paginator: MatPaginator;
|
||||
@ViewChild(MatSort) sort: MatSort;
|
||||
|
@ -29,6 +29,11 @@ export class DatasetListingComponent implements OnInit, AfterViewInit {
|
|||
dataSource: DatasetDataSource | null;
|
||||
displayedColumns: String[] = ['label', 'reference', 'uri', 'status', 'description', 'created', 'actions'];
|
||||
|
||||
statuses = [
|
||||
{value: '0', viewValue: 'Active'},
|
||||
{value: '1', viewValue: 'Inactive'}
|
||||
];
|
||||
|
||||
constructor(
|
||||
private datasetService: DatasetService,
|
||||
private router: Router,
|
||||
|
@ -39,14 +44,9 @@ export class DatasetListingComponent implements OnInit, AfterViewInit {
|
|||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
||||
}
|
||||
|
||||
ngAfterViewInit() {
|
||||
setTimeout(() => {
|
||||
this.criteria.setRefreshCallback(() => this.refresh());
|
||||
this.criteria.setCriteria(this.getDefaultCriteria());
|
||||
});
|
||||
this.criteria.setCriteria(this.getDefaultCriteria());
|
||||
this.refresh();
|
||||
this.criteria.setRefreshCallback(() => this.refresh());
|
||||
}
|
||||
|
||||
refresh() {
|
||||
|
@ -54,7 +54,7 @@ export class DatasetListingComponent implements OnInit, AfterViewInit {
|
|||
}
|
||||
|
||||
rowClick(rowId: String) {
|
||||
this.router.navigate(['/project/' + rowId]);
|
||||
this.router.navigate(['/dataset/' + rowId]);
|
||||
}
|
||||
|
||||
getDefaultCriteria(): DatasetCriteria {
|
||||
|
@ -112,7 +112,7 @@ export class DatasetDataSource extends DataSource<DatasetListingModel> {
|
|||
setTimeout(() => {
|
||||
this.isLoadingResults = false;
|
||||
});
|
||||
return result.payload;
|
||||
return result;
|
||||
})
|
||||
.map(result => {
|
||||
if (!result) { return []; }
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
<div class="project-editor">
|
||||
<form *ngIf="formGroup" (ngSubmit)="formSubmit()" [formGroup]="formGroup">
|
||||
<mat-card>
|
||||
<mat-card-title *ngIf="isNew">{{'DMP-EDITOR.TITLE.NEW' | translate}}</mat-card-title>
|
||||
<mat-card-title *ngIf="!isNew">{{'DMP-EDITOR.TITLE.EDIT' | translate}} {{project.label}}</mat-card-title>
|
||||
<mat-card-title *ngIf="isNew">{{'DATASET-EDITOR.TITLE.NEW' | translate}}</mat-card-title>
|
||||
<mat-card-title *ngIf="!isNew">{{'DATASET-EDITOR.TITLE.EDIT' | translate}} {{dataset.label}}</mat-card-title>
|
||||
<mat-card-content>
|
||||
|
||||
<mat-form-field>
|
||||
<input matInput placeholder="{{'DMP-EDITOR.FIELDS.NAME' | translate}}" type="text" name="label" formControlName="label" required>
|
||||
<input matInput placeholder="{{'DATASET-EDITOR.FIELDS.NAME' | translate}}" type="text" name="label" formControlName="label" required>
|
||||
<mat-error *ngIf="formGroup.get('label').errors?.backendError">{{baseErrorModel.label}}</mat-error>
|
||||
<mat-error *ngIf="formGroup.get('label').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<!-- <mat-form-field>
|
||||
<input matInput placeholder="{{'DMP-EDITOR.FIELDS.ABBREVIATION' | translate}}" type="text" name="abbreviation" formControlName="abbreviation"
|
||||
<mat-form-field>
|
||||
<input matInput placeholder="{{'DATASET-EDITOR.FIELDS.PROFILE' | translate}}" type="text" name="profile" formControlName="profile"
|
||||
required>
|
||||
<mat-error *ngIf="formGroup.get('abbreviation').errors?.backendError">{{baseErrorModel.abbreviation}}</mat-error>
|
||||
<mat-error *ngIf="formGroup.get('abbreviation').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||
<mat-error *ngIf="formGroup.get('profile').errors?.backendError">{{baseErrorModel.profile}}</mat-error>
|
||||
<mat-error *ngIf="formGroup.get('profile').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<input matInput placeholder="{{'DMP-EDITOR.FIELDS.URI' | translate}}" type="text" name="uri" formControlName="uri" required>
|
||||
<input matInput placeholder="{{'DATASET-EDITOR.FIELDS.URI' | translate}}" type="text" name="uri" formControlName="uri" required>
|
||||
<mat-error *ngIf="formGroup.get('uri').errors?.backendError">{{baseErrorModel.uri}}</mat-error>
|
||||
<mat-error *ngIf="formGroup.get('uri').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||
</mat-form-field> -->
|
||||
</mat-form-field>
|
||||
|
||||
<!-- <table class="input-table full-width">
|
||||
<tr>
|
||||
|
@ -50,14 +50,14 @@
|
|||
</table> -->
|
||||
|
||||
<mat-form-field class="full-width">
|
||||
<textarea matInput class="description-area" placeholder="{{'DMP-EDITOR.FIELDS.DESCRIPTION' | translate}}" formControlName="description"
|
||||
<textarea matInput class="description-area" placeholder="{{'DATASET-EDITOR.FIELDS.DESCRIPTION' | translate}}" formControlName="description"
|
||||
required></textarea>
|
||||
<mat-error *ngIf="formGroup.get('description').errors?.backendError">{{errorModel.description}}</mat-error>
|
||||
<mat-error *ngIf="formGroup.get('description').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<td-chips color="accent" [items]="filteredOrganisations" formControlName="organisations" placeholder="{{'DMP-EDITOR.FIELDS.ORGANISATIONS' | translate}}"
|
||||
(inputChange)="filterOrganisations($event)" requireMatch>
|
||||
<td-chips color="accent" [items]="filtereddataRepositories" formControlName="dataRepositories" placeholder="{{'DATASET-EDITOR.FIELDS.DATAREPOSITORIES' | translate}}"
|
||||
(inputChange)="filtereddataRepositories($event)" requireMatch>
|
||||
<ng-template td-chip let-chip="chip">
|
||||
<div class="tc-grey-100 bgc-teal-700" td-chip-avatar>{{chip.name.substring(0, 1).toUpperCase()}}</div>
|
||||
{{chip.name}}
|
||||
|
@ -70,8 +70,8 @@
|
|||
<mat-progress-bar [style.height.px]="2" *ngIf="filteringOrganisationsAsync" mode="indeterminate"></mat-progress-bar>
|
||||
</td-chips>
|
||||
|
||||
<td-chips color="accent" [items]="filteredResearchers" formControlName="researchers" placeholder="{{'DMP-EDITOR.FIELDS.RESEARCHERS' | translate}}"
|
||||
(inputChange)="filterResearchers($event)" requireMatch>
|
||||
<td-chips color="accent" [items]="filteredRegistries" formControlName="registries" placeholder="{{'DATASET-EDITOR.FIELDS.REGISTRIES' | translate}}"
|
||||
(inputChange)="filteredRegistries($event)" requireMatch>
|
||||
<ng-template td-chip let-chip="chip">
|
||||
<div class="tc-grey-100 bgc-teal-700" td-chip-avatar>{{chip.name.substring(0, 1).toUpperCase()}}</div>
|
||||
{{chip.name}}
|
||||
|
@ -84,6 +84,20 @@
|
|||
<mat-progress-bar [style.height.px]="2" *ngIf="filteringResearchersAsync" mode="indeterminate"></mat-progress-bar>
|
||||
</td-chips>
|
||||
|
||||
<td-chips color="accent" [items]="filteredServices" formControlName="services" placeholder="{{'DATASET-EDITOR.FIELDS.SERVICES' | translate}}"
|
||||
(inputChange)="filteredServices($event)" requireMatch>
|
||||
<ng-template td-chip let-chip="chip">
|
||||
<div class="tc-grey-100 bgc-teal-700" td-chip-avatar>{{chip.name.substring(0, 1).toUpperCase()}}</div>
|
||||
{{chip.name}}
|
||||
</ng-template>
|
||||
<ng-template td-autocomplete-option let-option="option">
|
||||
<div layout="row" layout-align="start center">
|
||||
{{option.name}}
|
||||
</div>
|
||||
</ng-template>
|
||||
<mat-progress-bar [style.height.px]="2" *ngIf="filteringResearchersAsync" mode="indeterminate"></mat-progress-bar>
|
||||
</td-chips>
|
||||
|
||||
<div layout="row" class="full-width text-right" align="end">
|
||||
<button mat-raised-button color="primary" (click)="cancel()" type="button">{{'DMP-EDITOR.ACTIONS.CANCEL' | translate}}</button>
|
||||
<button mat-raised-button color="primary" type="submit">{{'DMP-EDITOR.ACTIONS.SAVE' | translate}}</button>
|
||||
|
|
|
@ -19,14 +19,14 @@ import { ExternalSourcesItemModel } from "../../models/external-sources/External
|
|||
@Component({
|
||||
selector: 'app-dataset-editor-component',
|
||||
templateUrl: 'dataset-editor.component.html',
|
||||
styleUrls: ['./dataset-editor.component.scss'],
|
||||
styleUrls: ['./dataset-editor.component.css'],
|
||||
providers: [DatasetService, ExternalSourcesService],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class DatasetEditorComponent implements AfterViewInit {
|
||||
|
||||
isNew = true;
|
||||
dataManagementPlan: DatasetModel;
|
||||
dataset: DatasetModel;
|
||||
formGroup: FormGroup = null;
|
||||
|
||||
filteringOrganisationsAsync: boolean = false;
|
||||
|
@ -53,13 +53,13 @@ export class DatasetEditorComponent implements AfterViewInit {
|
|||
this.isNew = false;
|
||||
this.datasetService.getSingle(itemId).map(data => data as DatasetModel)
|
||||
.subscribe(data => {
|
||||
this.dataManagementPlan = new JsonSerializer<DatasetModel>().fromJSONObject(data, DatasetModel);
|
||||
this.formGroup = this.dataManagementPlan.buildForm();
|
||||
this.dataset = new JsonSerializer<DatasetModel>().fromJSONObject(data, DatasetModel);
|
||||
this.formGroup = this.dataset.buildForm();
|
||||
});
|
||||
} else {
|
||||
this.dataManagementPlan = new DatasetModel();
|
||||
this.dataset = new DatasetModel();
|
||||
setTimeout(() => {
|
||||
this.formGroup = this.dataManagementPlan.buildForm();
|
||||
this.formGroup = this.dataset.buildForm();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -88,7 +88,7 @@ export class DatasetEditorComponent implements AfterViewInit {
|
|||
duration: 3000,
|
||||
extraClasses: ['snackbar-success']
|
||||
})
|
||||
this.router.navigate(['/dataManagementPlans']);
|
||||
this.router.navigate(['/datasets']);
|
||||
}
|
||||
|
||||
onCallbackError(error: any) {
|
||||
|
@ -98,12 +98,12 @@ export class DatasetEditorComponent implements AfterViewInit {
|
|||
|
||||
public setErrorModel(errorModel: BaseErrorModel) {
|
||||
Object.keys(errorModel).forEach(item => {
|
||||
(<any>this.dataManagementPlan.errorModel)[item] = (<any>errorModel)[item];
|
||||
(<any>this.dataset.errorModel)[item] = (<any>errorModel)[item];
|
||||
})
|
||||
}
|
||||
|
||||
public cancel(): void {
|
||||
this.router.navigate(['/dataManagementPlans']);
|
||||
this.router.navigate(['/datasets']);
|
||||
}
|
||||
|
||||
filterOrganisations(value: string): void {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import { BaseCriteria } from "../BaseCriteria";
|
||||
|
||||
export class DatasetCriteria extends BaseCriteria {
|
||||
public Name: String;
|
||||
public Status: Number;
|
||||
public status: Number;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import { BaseCriteriaErrorModel } from "../BaseCriteriaErrorModel";
|
||||
|
||||
export class DatasetCriteriaErrorModel extends BaseCriteriaErrorModel{
|
||||
public Name: String;
|
||||
public Status: Number;
|
||||
public status: Number;
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ export class DatasetService {
|
|||
}
|
||||
|
||||
getSingle(id: string): Observable<DatasetModel> {
|
||||
return this.http.get<DatasetModel>(this.actionUrl + id, { headers: this.headers });
|
||||
return this.http.get<DatasetModel>(this.actionUrl +'getSingle/' + id, { headers: this.headers });
|
||||
}
|
||||
|
||||
createDataset(datasetModel: DatasetModel): Observable<DatasetModel> {
|
||||
|
|
|
@ -17,16 +17,20 @@
|
|||
</div> -->
|
||||
<div class="col-sm-6 col-md-2">
|
||||
<mat-form-field>
|
||||
<input matInput placeholder=" {{'CRITERIA.PROJECTS.LIKE'| translate}}" name="datasetCriteriaName" [(ngModel)]="criteria.Name"
|
||||
<input matInput placeholder=" {{'CRITERIA.PROJECTS.LIKE'| translate}}" name="datasetCriteriaName" [(ngModel)]="criteria.like"
|
||||
(ngModelChange)="controlModified()">
|
||||
<mat-error *ngIf="baseErrorModel?.name">{{baseErrorModel['Criteria.Name']}}</mat-error>
|
||||
<mat-error *ngIf="baseErrorModel?.name">{{baseErrorModel['Criteria.like']}}</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-2">
|
||||
<mat-form-field>
|
||||
<input matInput placeholder=" {{'CRITERIA.DATA-SETS.STATUS'| translate}}" name="datasetCriteriastatus" [(ngModel)]="criteria.Status"
|
||||
(ngModelChange)="controlModified()">
|
||||
<mat-error *ngIf="baseErrorModel?.status">{{baseErrorModel['Criteria.Status']}}</mat-error>
|
||||
<mat-select placeholder=" {{'CRITERIA.DATA-SETS.STATUS'| translate}}" name="datasetCriteriastatus" [(ngModel)]="criteria.status"
|
||||
(ngModelChange)="controlModified()">
|
||||
<mat-option *ngFor="let status of statuses" [value]="status.value">
|
||||
{{status.viewValue}}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="baseErrorModel?.status">{{baseErrorModel['Criteria.status']}}</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -21,6 +21,11 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
|
|||
// public formStatus: ProjectStatus;
|
||||
public criteria: DatasetCriteria= new DatasetCriteria();
|
||||
|
||||
statuses = [
|
||||
{value: '0', viewValue: 'Active'},
|
||||
{value: '1', viewValue: 'Inactive'}
|
||||
];
|
||||
|
||||
constructor(
|
||||
public language: TranslateService,
|
||||
public formBuilder: FormBuilder
|
||||
|
|
|
@ -93,5 +93,25 @@
|
|||
"PERIOD-TO": "End",
|
||||
"STATUS": "Status"
|
||||
}
|
||||
},
|
||||
"DATASET-EDITOR": {
|
||||
"TITLE": {
|
||||
"NEW": "New Data Management Plan",
|
||||
"EDIT": "Edit"
|
||||
},
|
||||
"FIELDS": {
|
||||
"NAME": "Name",
|
||||
"DESCRIPTION": "Description",
|
||||
"PROFILE": "Profile",
|
||||
"URI": "Uri",
|
||||
"DATAREPOSITORIES": "Data Repositories",
|
||||
"REGISTRIES": "Registries",
|
||||
"SERVICES": "Services"
|
||||
},
|
||||
"ACTIONS": {
|
||||
"SAVE": "Save",
|
||||
"CANCEL": "Cancel",
|
||||
"DELETE": "Delete"
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue