DMP Overview. Provide user feedback of invalid datasets on finalize. Prevent user from submitting invalid Datasets.

This commit is contained in:
Kristian Ntavidi 2021-05-10 15:51:10 +03:00
parent 1d5befaf6a
commit 9eb1c12afd
11 changed files with 83 additions and 14 deletions

View File

@ -90,6 +90,10 @@ export class DatasetService {
return this.httpClient.get(this.actionUrl + 'getPDF/' + id, { responseType: 'blob', observe: 'response', headers: headerPdf }); return this.httpClient.get(this.actionUrl + 'getPDF/' + id, { responseType: 'blob', observe: 'response', headers: headerPdf });
} }
public validateDataset(id: string) : Observable<any>{
return this.http.get<any>(this.actionUrl+id+"/validate");
}
//GK: NO //GK: NO
// public downloadJson(id: string): Observable<HttpResponse<Blob>> { // public downloadJson(id: string): Observable<HttpResponse<Blob>> {
// return this.httpClient.get(this.actionUrl + 'rda/' + id, { responseType: 'blob', observe: 'response' }); // return this.httpClient.get(this.actionUrl + 'rda/' + id, { responseType: 'blob', observe: 'response' });

View File

@ -30,8 +30,14 @@
<mat-icon *ngIf="dataset.status == 0" class="col-1 draft-bookmark">bookmark</mat-icon> <mat-icon *ngIf="dataset.status == 0" class="col-1 draft-bookmark">bookmark</mat-icon>
<mat-icon *ngIf="dataset.status != 0" class="col-1 finalized-bookmark">bookmark</mat-icon> <mat-icon *ngIf="dataset.status != 0" class="col-1 finalized-bookmark">bookmark</mat-icon>
<h4 *ngIf="dataset.status == 0" class="col-11 ml-auto mt-1 mb-4"> <h4 *ngIf="dataset.status == 0" class="col-11 ml-auto mt-1 mb-4">
<span>{{ 'TYPES.DATASET-STATUS.DRAFT' | translate }}:</span> <span>{{ 'TYPES.DATASET-STATUS.DRAFT' | translate }}
{{ dataset.label }}</h4> <ng-container *ngIf="datasetLookupStatus[dataset.id] && (datasetLookupStatus[dataset.id] === datasetLookupStatusEnum.INVALID)">
({{'DMP-FINALISE-DIALOG.INVALID' | translate}})
</ng-container>
:</span>
{{ dataset.label }}
<i *ngIf="(datasetLookupStatus[dataset.id] != datasetLookupStatusEnum.INVALID) && (datasetLookupStatus[dataset.id] != datasetLookupStatusEnum.VALID) " class="fa fa-spinner fa-spin" ></i>
</h4>
<h4 *ngIf="dataset.status != 0" class="col-11 ml-auto mt-1 mb-4">{{ dataset.label }}</h4> <h4 *ngIf="dataset.status != 0" class="col-11 ml-auto mt-1 mb-4">{{ dataset.label }}</h4>
</div> </div>
</div> </div>
@ -39,11 +45,11 @@
</mat-expansion-panel> </mat-expansion-panel>
</mat-accordion> </mat-accordion>
<div *ngIf="getDraftDatasets().length > 0" class="pt-4 pb-2"> <div *ngIf="validDrafts.length > 0" class="pt-4 pb-2">
<h4 class="pl-2">{{'DMP-FINALISE-DIALOG.FINALISE-TITLE' | translate}}</h4> <h4 class="pl-2">{{'DMP-FINALISE-DIALOG.FINALISE-TITLE' | translate}}</h4>
<mat-selection-list #datasetsDraftSelectionList [(ngModel)]="outputModel.datasetsToBeFinalized"> <mat-selection-list #datasetsDraftSelectionList [(ngModel)]="outputModel.datasetsToBeFinalized">
<div class="styleBorder" *ngFor="let dataset of getDraftDatasets()"> <div class="styleBorder" *ngFor="let dataset of validDrafts">
<mat-list-option [value]='dataset.id'> <mat-list-option [value]='dataset.id' [disabled]="!datasetLookupStatus[dataset.id] || (datasetLookupStatus[dataset.id] != datasetLookupStatusEnum.VALID)">
{{ dataset.label }} {{ dataset.label }}
</mat-list-option> </mat-list-option>
</div> </div>

View File

@ -4,6 +4,9 @@ import { Router } from '@angular/router';
import { DatasetStatus } from '@app/core/common/enum/dataset-status'; import { DatasetStatus } from '@app/core/common/enum/dataset-status';
import { DatasetService } from '@app/core/services/dataset/dataset.service'; import { DatasetService } from '@app/core/services/dataset/dataset.service';
import { BaseComponent } from '@common/base/base.component'; import { BaseComponent } from '@common/base/base.component';
import { Observable, of } from 'rxjs';
import { catchError, map, takeUntil } from 'rxjs/operators';
@Component({ @Component({
selector: 'app-dmp-finalize-dialog-component', selector: 'app-dmp-finalize-dialog-component',
@ -15,6 +18,8 @@ export class DmpFinalizeDialogComponent extends BaseComponent implements OnInit
inputModel: DmpFinalizeDialogInput; inputModel: DmpFinalizeDialogInput;
outputModel: DmpFinalizeDialogOutput; outputModel: DmpFinalizeDialogOutput;
protected datasetLookupStatus:DatasetStatusLookup[] = [];
protected datasetLookupStatusEnum = DatasetStatusLookup;
constructor( constructor(
public router: Router, public router: Router,
public dialogRef: MatDialogRef<DmpFinalizeDialogComponent>, public dialogRef: MatDialogRef<DmpFinalizeDialogComponent>,
@ -26,7 +31,30 @@ export class DmpFinalizeDialogComponent extends BaseComponent implements OnInit
this.outputModel = { datasetsToBeFinalized: [] }; this.outputModel = { datasetsToBeFinalized: [] };
} }
ngOnInit(): void { } ngOnInit(): void {
this.inputModel.datasets.forEach(ds=>{
this.validateDataset(ds.id).subscribe(_=>{
console.log('response', _);
});
})
const drafts = this.getDraftDatasets();
drafts.forEach(draft=>{
this.datasetLookupStatus[draft.id] == DatasetStatusLookup.PENDING_VALIDATION;
this.validateDataset(draft.id)
.subscribe(isValid=>{
if(isValid){
this.datasetLookupStatus[draft.id] = DatasetStatusLookup.VALID;
}else{
this.datasetLookupStatus[draft.id] = DatasetStatusLookup.INVALID;
}
})
});
}
onSubmit() { onSubmit() {
this.dialogRef.close(this.outputModel); this.dialogRef.close(this.outputModel);
@ -43,6 +71,24 @@ export class DmpFinalizeDialogComponent extends BaseComponent implements OnInit
close() { close() {
this.dialogRef.close({ cancelled: true } as DmpFinalizeDialogOutput); this.dialogRef.close({ cancelled: true } as DmpFinalizeDialogOutput);
} }
validateDataset(datasetId: string) : Observable<boolean>{
return this.datasetService
.validateDataset(datasetId)
.pipe(
takeUntil(this._destroyed),
map(_=>{
return true
}),
catchError(error=>{
return of(false);
})
);
}
get validDrafts(){
return this.getDraftDatasets().filter(x=> this.datasetLookupStatus[x.id] && (this.datasetLookupStatus[x.id] == DatasetStatusLookup.VALID));
}
} }
export interface DmpFinalizeDialogInput { export interface DmpFinalizeDialogInput {
@ -61,3 +107,8 @@ export interface DmpFinalizeDialogOutput {
cancelled?: boolean; cancelled?: boolean;
datasetsToBeFinalized?: string[]; datasetsToBeFinalized?: string[];
} }
enum DatasetStatusLookup{
VALID = "VALID",
INVALID = "INVALID",
PENDING_VALIDATION = "PENDING"
}

View File

@ -1652,7 +1652,8 @@
"AT-LEAST-ONE-DATASET-FINALISED": "Sie müssen mindestens eine Datensatzbeschreibung fertiggestellt haben" "AT-LEAST-ONE-DATASET-FINALISED": "Sie müssen mindestens eine Datensatzbeschreibung fertiggestellt haben"
}, },
"IMPACT": "Mit dieser Aktion wird Ihr DMP fertiggestellt und Sie werden ihn nicht erneut bearbeiten können.", "IMPACT": "Mit dieser Aktion wird Ihr DMP fertiggestellt und Sie werden ihn nicht erneut bearbeiten können.",
"AFTER-FINALIZATION": "Nach der Fertigstellung Ihres DMP können Sie ihn veröffentlichen, wodurch er für das ARGOS Programm öffentlich zugänglich sein wird." "AFTER-FINALIZATION": "Nach der Fertigstellung Ihres DMP können Sie ihn veröffentlichen, wodurch er für das ARGOS Programm öffentlich zugänglich sein wird.",
"INVALID":"Invalid"
}, },
"DRAFTS": { "DRAFTS": {
"FOR-DMP": "Für DMP:", "FOR-DMP": "Für DMP:",

View File

@ -1652,7 +1652,8 @@
"AT-LEAST-ONE-DATASET-FINALISED": "You need to have at least one Dataset Finalized" "AT-LEAST-ONE-DATASET-FINALISED": "You need to have at least one Dataset Finalized"
}, },
"IMPACT": "This action will finalize your DMP, and you won't be able to edit it again.", "IMPACT": "This action will finalize your DMP, and you won't be able to edit it again.",
"AFTER-FINALIZATION": "After finalizing your DMP you can Publish it, and it'll be publicly available to the ARGOS tool." "AFTER-FINALIZATION": "After finalizing your DMP you can Publish it, and it'll be publicly available to the ARGOS tool.",
"INVALID":"Invalid"
}, },
"DRAFTS": { "DRAFTS": {
"FOR-DMP": "For DMP:", "FOR-DMP": "For DMP:",

View File

@ -1652,7 +1652,8 @@
"AT-LEAST-ONE-DATASET-FINALISED": "Necesita tener al menos una descripción del dataset finalizada" "AT-LEAST-ONE-DATASET-FINALISED": "Necesita tener al menos una descripción del dataset finalizada"
}, },
"IMPACT": "Esta acción finaliza su PGD, y no podrá editarla otra vez. ", "IMPACT": "Esta acción finaliza su PGD, y no podrá editarla otra vez. ",
"AFTER-FINALIZATION": "Después de finalizar su PGD puede publicarlo, y estará disponible públicamente en la herramienta ARGOS." "AFTER-FINALIZATION": "Después de finalizar su PGD puede publicarlo, y estará disponible públicamente en la herramienta ARGOS.",
"INVALID":"Invalid"
}, },
"DRAFTS": { "DRAFTS": {
"FOR-DMP": "Para el PGD:", "FOR-DMP": "Para el PGD:",

View File

@ -1652,7 +1652,8 @@
"AT-LEAST-ONE-DATASET-FINALISED": "Πρέπει να έχετε οριστικοποιήσει τουλάχιστον μία Περιγραφή Συνόλου Δεδομένων." "AT-LEAST-ONE-DATASET-FINALISED": "Πρέπει να έχετε οριστικοποιήσει τουλάχιστον μία Περιγραφή Συνόλου Δεδομένων."
}, },
"IMPACT": "Αυτή η επιλογή θα οριστικοποιήσει το Σχέδιο Διαχείρισης Δεδομένων σας και δε θα μπορείτε να το επεξεργαστείτε ξανά σε αυτήν την έκδοση.", "IMPACT": "Αυτή η επιλογή θα οριστικοποιήσει το Σχέδιο Διαχείρισης Δεδομένων σας και δε θα μπορείτε να το επεξεργαστείτε ξανά σε αυτήν την έκδοση.",
"AFTER-FINALIZATION": "Μετά την οριστικοποίηση του Σχεδίου Διαχείρισης Δεδομένων σας, μπορείτε να το δημοσιεύσετε και να το διαθέσετε δημόσια στο εργαλείο ARGOS." "AFTER-FINALIZATION": "Μετά την οριστικοποίηση του Σχεδίου Διαχείρισης Δεδομένων σας, μπορείτε να το δημοσιεύσετε και να το διαθέσετε δημόσια στο εργαλείο ARGOS.",
"INVALID":"Invalid"
}, },
"DRAFTS": { "DRAFTS": {
"FOR-DMP": "Για Σχέδιο Διαχείρισης Δεδομένων:", "FOR-DMP": "Για Σχέδιο Διαχείρισης Δεδομένων:",

View File

@ -1652,7 +1652,8 @@
"AT-LEAST-ONE-DATASET-FINALISED": "Tem de ter pelo menos um Dataset Concluído" "AT-LEAST-ONE-DATASET-FINALISED": "Tem de ter pelo menos um Dataset Concluído"
}, },
"IMPACT": "Esta ação finalizará o seu PGD, não sendo possível a sua edição.", "IMPACT": "Esta ação finalizará o seu PGD, não sendo possível a sua edição.",
"AFTER-FINALIZATION": "Após a finalização do seu PGD poderá publicá-lo, e este ficará publicamente disponível na ferramenta ARGOS." "AFTER-FINALIZATION": "Após a finalização do seu PGD poderá publicá-lo, e este ficará publicamente disponível na ferramenta ARGOS.",
"INVALID":"Invalid"
}, },
"DRAFTS": { "DRAFTS": {
"FOR-DMP": "Para PGD:", "FOR-DMP": "Para PGD:",

View File

@ -1652,7 +1652,8 @@
"AT-LEAST-ONE-DATASET-FINALISED": "Musíte mať dokončený aspoň jeden súbor dát" "AT-LEAST-ONE-DATASET-FINALISED": "Musíte mať dokončený aspoň jeden súbor dát"
}, },
"IMPACT": "Týmto krokom dokončíte svoj DMP a nebudete ho môcť znovu editovať.", "IMPACT": "Týmto krokom dokončíte svoj DMP a nebudete ho môcť znovu editovať.",
"AFTER-FINALIZATION": "Po dokončení DMP ho budete môcť Zverejniť, čím bude verejne dostupný pre ARGOS nástroje ." "AFTER-FINALIZATION": "Po dokončení DMP ho budete môcť Zverejniť, čím bude verejne dostupný pre ARGOS nástroje .",
"INVALID":"Invalid"
}, },
"DRAFTS": { "DRAFTS": {
"FOR-DMP": "Pre DMP:", "FOR-DMP": "Pre DMP:",

View File

@ -1652,7 +1652,8 @@
"AT-LEAST-ONE-DATASET-FINALISED": "Bar jedan skup podataka mora da bude dovršen" "AT-LEAST-ONE-DATASET-FINALISED": "Bar jedan skup podataka mora da bude dovršen"
}, },
"IMPACT": "Ovim korakom se završava proces kreiranja plana upravljanja podacima i posle toga nećete biti u mogućnosti da ga menjate.", "IMPACT": "Ovim korakom se završava proces kreiranja plana upravljanja podacima i posle toga nećete biti u mogućnosti da ga menjate.",
"AFTER-FINALIZATION": "Kada dovršite rad na Planu, možete ga objaviti i on će biti javno dostupan u Argosu." "AFTER-FINALIZATION": "Kada dovršite rad na Planu, možete ga objaviti i on će biti javno dostupan u Argosu.",
"INVALID":"Invalid"
}, },
"DRAFTS": { "DRAFTS": {
"FOR-DMP": "Za Plan:", "FOR-DMP": "Za Plan:",

View File

@ -1652,7 +1652,8 @@
"AT-LEAST-ONE-DATASET-FINALISED": "En azından bir bitirilmiş Veri Seti tanımınız olmalı" "AT-LEAST-ONE-DATASET-FINALISED": "En azından bir bitirilmiş Veri Seti tanımınız olmalı"
}, },
"IMPACT": "Bu işlem VYP'nızı sonlandıracak ve onu tekrar düzenleyemeyeceksiniz.", "IMPACT": "Bu işlem VYP'nızı sonlandıracak ve onu tekrar düzenleyemeyeceksiniz.",
"AFTER-FINALIZATION": "VYP'nızı tamamladıktan sonra onu yayınlayabilirsiniz, plan ARGOS içinde herkese açık olacaktır." "AFTER-FINALIZATION": "VYP'nızı tamamladıktan sonra onu yayınlayabilirsiniz, plan ARGOS içinde herkese açık olacaktır.",
"INVALID":"Invalid"
}, },
"DRAFTS": { "DRAFTS": {
"FOR-DMP": "For DMP:", "FOR-DMP": "For DMP:",