diff --git a/dmp-frontend/src/app/library/deactivate/can-deactivate.guard.ts b/dmp-frontend/src/app/library/deactivate/can-deactivate.guard.ts index 75d89ac2d..8e6df7ff9 100644 --- a/dmp-frontend/src/app/library/deactivate/can-deactivate.guard.ts +++ b/dmp-frontend/src/app/library/deactivate/can-deactivate.guard.ts @@ -30,7 +30,7 @@ export class CanDeactivateGuard extends BaseComponent implements CanDeactivate x ? true : false)); diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.routing.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.routing.ts index 4fb6f9404..1bf042f25 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.routing.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.routing.ts @@ -5,6 +5,7 @@ import { DatasetProfileListingComponent } from './listing/dataset-profile-listin import { AdminAuthGuard } from '@app/core/admin-auth-guard.service'; import { AppRole } from '@app/core/common/enum/app-role'; import { SpecialAuthGuard } from '@app/core/special-auth-guard.service'; +import { CanDeactivateGuard } from '@app/library/deactivate/can-deactivate.guard'; const routes: Routes = [ { @@ -16,7 +17,8 @@ const routes: Routes = [ permissions: [AppRole.Admin, AppRole.DatasetTemplateEditor] } }, - canActivate: [SpecialAuthGuard] + canActivate: [SpecialAuthGuard], + canDeactivate:[CanDeactivateGuard] }, { path: ':id', @@ -27,7 +29,8 @@ const routes: Routes = [ permissions: [AppRole.Admin, AppRole.DatasetTemplateEditor] } }, - canActivate: [SpecialAuthGuard] + canActivate: [SpecialAuthGuard], + canDeactivate:[CanDeactivateGuard] }, { path: 'clone/:cloneid', @@ -38,7 +41,8 @@ const routes: Routes = [ permissions: [AppRole.Admin, AppRole.DatasetTemplateEditor] } }, - canActivate: [SpecialAuthGuard] + canActivate: [SpecialAuthGuard], + canDeactivate:[CanDeactivateGuard] }, { path: 'newversion/:newversionid', @@ -49,7 +53,8 @@ const routes: Routes = [ permissions: [AppRole.Admin, AppRole.DatasetTemplateEditor] } }, - canActivate: [SpecialAuthGuard] + canActivate: [SpecialAuthGuard], + canDeactivate:[CanDeactivateGuard] }, { path: 'versions/:groupId', diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/animations/animations.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/animations/animations.ts index 4542d8b4a..5b4cd484a 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/animations/animations.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/animations/animations.ts @@ -83,7 +83,7 @@ export const GENERAL_ANIMATIONS = [ transition(":enter", [style({opacity:0}), animate('1000ms 800ms ease', style({'opacity':1}))]), ]), trigger('fade-in-fast',[ - transition(":enter", [style({opacity:0}), animate('1000ms 200ms ease', style({'opacity':1}))]), + transition(":enter", [style({opacity:0}), animate('800ms 100ms ease', style({'opacity':1}))]), ]), diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.ts index 2e3480803..d6ac1fcfe 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.ts @@ -364,7 +364,8 @@ export class DatasetProfileEditorCompositeFieldComponent extends BaseComponent i fieldsForm.controls.forEach((field, idx)=>{ field.get('ordinal').setValue(idx); field.updateValueAndValidity(); - }) + }); + this.form.markAsDirty();//deactivate guard } getFieldTile(formGroup: FormGroup, index: number) { diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts index 73746d533..5d3ae69d5 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts @@ -794,7 +794,7 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements validationsControl.setValue(validations.filter(validator=> validator != ValidationType.Required)); validationsControl.updateValueAndValidity(); } - + this.form.markAsDirty();//deactivate guard } get isRequired(){ diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/rule/dataset-profile-editor-rule.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/rule/dataset-profile-editor-rule.component.ts index cd8f546b8..150d58c69 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/rule/dataset-profile-editor-rule.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/rule/dataset-profile-editor-rule.component.ts @@ -42,6 +42,7 @@ export class DatasetProfileEditorRuleComponent implements OnInit { deleteRule(index) { this.form.removeAt(index); + this.form.markAsDirty();//deactivate guard } ngOnInit(): void { diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts index 60b689d58..456e5fabd 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts @@ -44,6 +44,7 @@ import { GENERAL_ANIMATIONS, STEPPER_ANIMATIONS } from './animations/animations' import { DatasetProfileComboBoxType } from '@app/core/common/enum/dataset-profile-combo-box-type'; import { UserService } from '@app/core/services/user/user.service'; import { MatInput } from '@angular/material'; +import { CheckDeactivateBaseComponent } from '@app/library/deactivate/deactivate.component'; const skipDisable: any[] = require('../../../../../assets/resources/skipDisable.json'); @@ -55,7 +56,10 @@ const skipDisable: any[] = require('../../../../../assets/resources/skipDisable. animations:[...STEPPER_ANIMATIONS, ...GENERAL_ANIMATIONS], providers:[VisibilityRulesService] }) -export class DatasetProfileEditorComponent extends BaseComponent implements OnInit { +export class DatasetProfileEditorComponent extends CheckDeactivateBaseComponent implements OnInit { + canDeactivate(): boolean { + return !this.form.dirty; + } isNew = true; isNewVersion = false; @@ -425,6 +429,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn this.datasetProfileService.updateForm(this.datasetProfileId, data) .pipe(takeUntil(this._destroyed)) .subscribe(() => { + this.form.markAsPristine();//deactivate guard this.router.navigate(['/dataset-profiles']); this.uiNotificationService.snackBarNotification(this.language.instant('DATASET-PROFILE-EDITOR.FEEDBACK-MESSAGES.SAVE-SUCCESS'), SnackBarNotificationLevel.Success); },error=> this.onCallbackError(error)); @@ -434,6 +439,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn this.datasetProfileService.newVersion(this.newVersionId, data) .pipe(takeUntil(this._destroyed)) .subscribe(() => { + this.form.markAsPristine();//deactivate guard this.router.navigate(['/dataset-profiles']); this.uiNotificationService.snackBarNotification(this.language.instant('DATASET-PROFILE-EDITOR.FEEDBACK-MESSAGES.SAVE-SUCCESS'), SnackBarNotificationLevel.Success); }, @@ -447,6 +453,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn this.datasetProfileService.createForm(data) .pipe(takeUntil(this._destroyed)) .subscribe(() => { + this.form.markAsPristine();//deactivate guard this.router.navigate(['/dataset-profiles']); this.uiNotificationService.snackBarNotification(this.language.instant('DATASET-PROFILE-EDITOR.FEEDBACK-MESSAGES.SAVE-SUCCESS'), SnackBarNotificationLevel.Success); }, error=> this.onCallbackError(error)); @@ -1183,7 +1190,8 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn //in case selectedtocentrhy is child of the removed element - this.refreshToCEntries(); + // this.refreshToCEntries(); + this.onDataNeedsRefresh(); this.form.updateValueAndValidity(); } @@ -1572,6 +1580,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn this.displayItem(this._findTocEntryById(params.draggedItemId, tocentries)); } } + this.form.markAsDirty(); } cloneFieldSet(fieldset: FormGroup){ @@ -1944,6 +1953,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn email.value = ''; this.userFormDisabled = false; + this.form.markAsDirty(); // email.focus(); // this.inputUserState = 'triggered'; diff --git a/dmp-frontend/src/common/modules/confirmation-dialog/confirmation-dialog.component.html b/dmp-frontend/src/common/modules/confirmation-dialog/confirmation-dialog.component.html index 258eb7cda..199b9ed9b 100644 --- a/dmp-frontend/src/common/modules/confirmation-dialog/confirmation-dialog.component.html +++ b/dmp-frontend/src/common/modules/confirmation-dialog/confirmation-dialog.component.html @@ -1,14 +1,14 @@
-
-
+
+
{{ data.icon }}
-
{{ data.warning }}
+
{{ data.warning }}
close
-
+
close
diff --git a/dmp-frontend/src/common/modules/confirmation-dialog/confirmation-dialog.component.scss b/dmp-frontend/src/common/modules/confirmation-dialog/confirmation-dialog.component.scss index 5bd8b98b0..804e34258 100644 --- a/dmp-frontend/src/common/modules/confirmation-dialog/confirmation-dialog.component.scss +++ b/dmp-frontend/src/common/modules/confirmation-dialog/confirmation-dialog.component.scss @@ -14,7 +14,8 @@ } .warn-text { - color: #f44336; + // color: #f44336; + } .cancel {