Adds functionality, remove dataset from dmp editor

This commit is contained in:
apapachristou 2020-09-08 16:54:01 +03:00
parent a706a9c8f6
commit f32a3db3b5
6 changed files with 95 additions and 47 deletions

View File

@ -115,7 +115,6 @@ export class DatasetEditorDetailsComponent extends BaseComponent implements OnIn
subtitleFn: (item) => item['description'] subtitleFn: (item) => item['description']
}; };
// if (this.datasetId) { // if (this.datasetId) {
// this.datasetWizardService.getSingle(this.datasetId) // this.datasetWizardService.getSingle(this.datasetId)
// .pipe(takeUntil(this._destroyed)) // .pipe(takeUntil(this._destroyed))

View File

@ -170,49 +170,48 @@ export class DatasetInfoComponent extends BaseComponent implements OnInit {
return false; return false;
} }
dmpValueChanged(dmp: DmpListingModel) { // dmpValueChanged(dmp: DmpListingModel) {
if (dmp) { // if (dmp) {
this.formGroup.get('profile').enable(); // this.formGroup.get('profile').enable();
this.loadDatasetProfiles(); // this.loadDatasetProfiles();
} // }
else { // else {
this.availableProfiles = []; // this.availableProfiles = [];
this.formGroup.get('profile').reset(); // this.formGroup.get('profile').reset();
this.formGroup.get('profile').disable(); // this.formGroup.get('profile').disable();
this.formGroup.removeControl('datasetProfileDefinition'); // this.formGroup.removeControl('datasetProfileDefinition');
} // }
} // }
registerFormListeners() { // registerFormListeners() {
// this.formGroup.get('datasets')['controls'][0].get('dmp').valueChanges // this.formGroup.get('datasets')['controls'][0].get('dmp').valueChanges
// .pipe(takeUntil(this._destroyed)) // .pipe(takeUntil(this._destroyed))
// .subscribe(x => { // .subscribe(x => {
// this.dmpValueChanged(x); // this.dmpValueChanged(x);
// }); // });
// this.formGroup.get('profile').valueChanges // this.formGroup.get('profile').valueChanges
// .pipe(takeUntil(this._destroyed)) // .pipe(takeUntil(this._destroyed))
// .subscribe(x => { // .subscribe(x => {
// //this.datasetProfileValueChanged(x); // //this.datasetProfileValueChanged(x);
// }); // });
} // }
datasetProfileValueChanged(profiledId: string) { // datasetProfileValueChanged(profiledId: string) {
if (profiledId && profiledId.length > 0) { // if (profiledId && profiledId.length > 0) {
this.formGroup.removeControl('datasetProfileDefinition'); // this.formGroup.removeControl('datasetProfileDefinition');
this.getDefinition(); // this.getDefinition();
} // }
} // }
getDefinition() { // getDefinition() {
// if (this.formGroup.invalid) { setTimeout(() => this.stepper.selectedIndex = 0); return; } // this.datasetWizardService.getDefinition(this.formGroup.get('profile').value)
this.datasetWizardService.getDefinition(this.formGroup.get('profile').value) // .pipe(takeUntil(this._destroyed))
.pipe(takeUntil(this._destroyed)) // .subscribe(item => {
.subscribe(item => { // this.formGroup.get('datasets')['controls'][0].datasetProfileDefinition = new DatasetDescriptionFormEditorModel().fromModel(item);
this.formGroup.get('datasets')['controls'][0].datasetProfileDefinition = new DatasetDescriptionFormEditorModel().fromModel(item); // this.datasetProfileDefinitionModel = this.formGroup.get('datasets')['controls'][0].datasetProfileDefinition;
this.datasetProfileDefinitionModel = this.formGroup.get('datasets')['controls'][0].datasetProfileDefinition; // this.formGroup.addControl('datasetProfileDefinition', this.datasetProfileDefinitionModel.buildForm());
this.formGroup.addControl('datasetProfileDefinition', this.datasetProfileDefinitionModel.buildForm()); // });
}); // }
}
onRemoveTemplate(event) { onRemoveTemplate(event) {
let found = false; let found = false;

View File

@ -82,7 +82,10 @@
<li *ngIf="!isNewDataset" (click)="changeStep(2)" [ngClass]="{'active': this.step === 2}">{{'DMP-EDITOR.STEPPER.DATASET-INFO' | translate}}</li> <li *ngIf="!isNewDataset" (click)="changeStep(2)" [ngClass]="{'active': this.step === 2}">{{'DMP-EDITOR.STEPPER.DATASET-INFO' | translate}}</li>
<li *ngFor="let dataset of datasets.controls; let i = index" (click)="changeStep(i + stepsBeforeDatasets, dataset)" [ngClass]="{'active-dataset': this.step === i + stepsBeforeDatasets}"> <li *ngFor="let dataset of datasets.controls; let i = index" (click)="changeStep(i + stepsBeforeDatasets, dataset)" [ngClass]="{'active-dataset': this.step === i + stepsBeforeDatasets}">
<div>{{'DMP-EDITOR.STEPPER.DATASET' | translate}}</div> <div class="d-flex flex-direction-row">
<div class="label">{{'DMP-EDITOR.STEPPER.DATASET' | translate}}</div>
<mat-icon class="ml-auto remove-dataset" matTooltip="{{'DMP-EDITOR.ACTIONS.DELETE' | translate}}" (click)="$event.stopPropagation(); removeDataset(dataset.get('id').value, i)">remove_circle_outline</mat-icon>
</div>
<span *ngIf="dataset.get('status').value === 1" class="finalized-label"> <span *ngIf="dataset.get('status').value === 1" class="finalized-label">
<mat-icon class="status-icon check-icon">check</mat-icon>{{'TYPES.DATASET-STATUS.FINALISED' | translate}} <mat-icon class="status-icon check-icon">check</mat-icon>{{'TYPES.DATASET-STATUS.FINALISED' | translate}}
</span> </span>
@ -123,7 +126,7 @@
<dataset-info *ngIf="!isNewDataset" [hidden]="this.step !== 2" [formGroup]="formGroup" [dmp]="dmp" [isPublic]="isPublic" [isFinalized]="isFinalized || lockStatus" [isUserOwner]="isUserOwner" [isNewDataset]="isNewDataset" [hasDmpId]="hasDmpId" (onFormChanged)="formChanged()"></dataset-info> <dataset-info *ngIf="!isNewDataset" [hidden]="this.step !== 2" [formGroup]="formGroup" [dmp]="dmp" [isPublic]="isPublic" [isFinalized]="isFinalized || lockStatus" [isUserOwner]="isUserOwner" [isNewDataset]="isNewDataset" [hasDmpId]="hasDmpId" (onFormChanged)="formChanged()"></dataset-info>
<dataset-info *ngIf="isNewDataset" [hidden]="this.step !== 1" [formGroup]="formGroup" [dmp]="dmp" [isPublic]="isPublic" [isFinalized]="isFinalized || lockStatus" [isUserOwner]="isUserOwner" [isNewDataset]="isNewDataset" [hasDmpId]="hasDmpId" (onFormChanged)="formChanged()"></dataset-info> <dataset-info *ngIf="isNewDataset" [hidden]="this.step !== 1" [formGroup]="formGroup" [dmp]="dmp" [isPublic]="isPublic" [isFinalized]="isFinalized || lockStatus" [isUserOwner]="isUserOwner" [isNewDataset]="isNewDataset" [hasDmpId]="hasDmpId" (onFormChanged)="formChanged()"></dataset-info>
<div *ngFor="let dataset of datasets.controls; let i = index" [hidden]="this.step !== i + stepsBeforeDatasets"> <div *ngFor="let dataset of formGroup.get('datasets')['controls']; let i = index" [hidden]="this.step !== i + stepsBeforeDatasets">
<dataset-editor-details [formGroup]="dataset" [isNewDataset]="isNewDataset" [dmpId]="formGroup.get('id').value" [availableProfiles]="formGroup.get('profiles').value" (formChanged)="formChanged($event)"></dataset-editor-details> <dataset-editor-details [formGroup]="dataset" [isNewDataset]="isNewDataset" [dmpId]="formGroup.get('id').value" [availableProfiles]="formGroup.get('profiles').value" (formChanged)="formChanged($event)"></dataset-editor-details>
</div> </div>
</div> </div>

View File

@ -259,6 +259,11 @@ a:hover {
max-width: 290px; max-width: 290px;
} }
.stepper-list li:hover {
background-color: #ececec;
border-radius: 6px;
}
.stepper-list .active { .stepper-list .active {
color: #212121; color: #212121;
font-weight: 700; font-weight: 700;
@ -269,7 +274,7 @@ a:hover {
color: #212121; color: #212121;
font-weight: 700; font-weight: 700;
opacity: 1; opacity: 1;
div { .label {
width: 73px; width: 73px;
height: 27px; height: 27px;
background-color: #f7dd72; background-color: #f7dd72;
@ -283,6 +288,9 @@ a:hover {
} }
} }
.remove-dataset:hover {
color: rgb(204, 0, 0);
}
.stepper-options { .stepper-options {
// flex-grow: 1; // flex-grow: 1;
} }
@ -307,7 +315,8 @@ a:hover {
font-size: 14px; font-size: 14px;
} }
.previous, .add-dataset-btn { .previous,
.add-dataset-btn {
color: #212121; color: #212121;
background: #f5f5f5 0% 0% no-repeat padding-box; background: #f5f5f5 0% 0% no-repeat padding-box;
box-shadow: 0px 3px 6px #1e202029; box-shadow: 0px 3px 6px #1e202029;
@ -332,7 +341,8 @@ a:hover {
cursor: pointer; cursor: pointer;
} }
.previous-disabled, .add-dataset-btn-disabled { .previous-disabled,
.add-dataset-btn-disabled {
border: 1px solid #b5b5b5; border: 1px solid #b5b5b5;
color: #b5b5b5 !important; color: #b5b5b5 !important;
cursor: auto !important; cursor: auto !important;
@ -392,7 +402,7 @@ a:hover {
} }
.add-dataset-option { .add-dataset-option {
list-style-type: none; list-style-type: none;
} }
// ::ng-deep .mat-tab-labels { // ::ng-deep .mat-tab-labels {

View File

@ -49,6 +49,7 @@ import { DatasetDescriptionFormEditorModel } from '@app/ui/misc/dataset-descript
import { DatasetWizardService } from '@app/core/services/dataset-wizard/dataset-wizard.service'; import { DatasetWizardService } from '@app/core/services/dataset-wizard/dataset-wizard.service';
import { CloneDialogComponent } from '../clone/clone-dialog/clone-dialog.component'; import { CloneDialogComponent } from '../clone/clone-dialog/clone-dialog.component';
import { DatasetWizardModel } from '@app/core/model/dataset/dataset-wizard'; import { DatasetWizardModel } from '@app/core/model/dataset/dataset-wizard';
import { DatasetService } from '@app/core/services/dataset/dataset.service';
@Component({ @Component({
selector: 'app-dmp-editor-component', selector: 'app-dmp-editor-component',
@ -97,6 +98,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
constructor( constructor(
private dmpProfileService: DmpProfileService, private dmpProfileService: DmpProfileService,
private datasetWizardService: DatasetWizardService, private datasetWizardService: DatasetWizardService,
private datasetService: DatasetService,
private dmpService: DmpService, private dmpService: DmpService,
private route: ActivatedRoute, private route: ActivatedRoute,
private router: Router, private router: Router,
@ -828,6 +830,40 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
this.isDiscarded = false; this.isDiscarded = false;
} }
public removeDataset(datasetId: string, index: number) {
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
maxWidth: '300px',
restoreFocus: false,
data: {
message: this.language.instant('GENERAL.CONFIRMATION-DIALOG.DELETE-ITEM'),
confirmButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.DELETE'),
cancelButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CANCEL'),
isDeleteConfirmation: true
}
});
dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => {
if (result) {
if (datasetId) {
this.datasetService.delete(datasetId)
.pipe(takeUntil(this._destroyed))
.subscribe(
complete => {
this.onDeleteCallbackSuccess();
},
error => this.onDeleteCallbackError(error)
);
}
this.formGroup.get('datasets')['controls'].splice(index, 1);
this.step = 0;
}
});
}
onDeleteCallbackSuccess(): void {
this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-DELETE'), SnackBarNotificationLevel.Success);
this.dmp.id != null ? this.router.navigate(['/plans', 'edit', this.dmp.id]) : this.router.navigate(['/plans']);
}
// advancedClicked() { // advancedClicked() {
// const dialogRef = this.dialog.open(ExportMethodDialogComponent, { // const dialogRef = this.dialog.open(ExportMethodDialogComponent, {
// maxWidth: '500px', // maxWidth: '500px',

View File

@ -803,6 +803,7 @@
"SAVE": "Save", "SAVE": "Save",
"CANCEL": "Cancel", "CANCEL": "Cancel",
"DELETE": "Delete", "DELETE": "Delete",
"DELETE-DATASET": "Delete Dataset",
"DISCARD": "Discard", "DISCARD": "Discard",
"FINALISE": "Finalize", "FINALISE": "Finalize",
"LOCK": "DMP is locked by another user", "LOCK": "DMP is locked by another user",