Add deactivate guards in dataset editor and dmp editor.

This commit is contained in:
Kristian Ntavidi 2021-06-23 10:54:05 +03:00
parent 25286603c8
commit 1a6df44eeb
4 changed files with 26 additions and 5 deletions

View File

@ -46,13 +46,17 @@ import { MatomoService } from '@app/core/services/matomo/matomo-service';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { VisibilityRulesService } from '@app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service'; import { VisibilityRulesService } from '@app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service';
import { PopupNotificationDialogComponent } from '@app/library/notification/popup/popup-notification.component'; import { PopupNotificationDialogComponent } from '@app/library/notification/popup/popup-notification.component';
import { CheckDeactivateBaseComponent } from '@app/library/deactivate/deactivate.component';
@Component({ @Component({
selector: 'app-dataset-wizard-component', selector: 'app-dataset-wizard-component',
templateUrl: 'dataset-wizard.component.html', templateUrl: 'dataset-wizard.component.html',
styleUrls: ['./dataset-wizard.component.scss'] styleUrls: ['./dataset-wizard.component.scss']
}) })
export class DatasetWizardComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class DatasetWizardComponent extends CheckDeactivateBaseComponent implements OnInit, IBreadCrumbComponent {
canDeactivate(): boolean {
return !this.isDirty();
}
breadCrumbs: Observable<BreadcrumbItem[]>; breadCrumbs: Observable<BreadcrumbItem[]>;
viewOnly = false; viewOnly = false;
@ -619,8 +623,9 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
.pipe(takeUntil(this._destroyed)) .pipe(takeUntil(this._destroyed))
.subscribe( .subscribe(
data => { data => {
this.onCallbackSuccess(data, saveType); this.hasChanges = false;
this.datasetIsOnceSaved = true; this.datasetIsOnceSaved = true;
this.onCallbackSuccess(data, saveType);
}, },
error => this.onCallbackError(error)); error => this.onCallbackError(error));
} }

View File

@ -1,5 +1,6 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { CanDeactivateGuard } from '@app/library/deactivate/can-deactivate.guard';
import { AuthGuard } from '../../core/auth-guard.service'; import { AuthGuard } from '../../core/auth-guard.service';
import { DatasetWizardComponent } from './dataset-wizard/dataset-wizard.component'; import { DatasetWizardComponent } from './dataset-wizard/dataset-wizard.component';
import { DatasetListingComponent } from './listing/dataset-listing.component'; import { DatasetListingComponent } from './listing/dataset-listing.component';
@ -14,6 +15,7 @@ const routes: Routes = [
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.DATASET-NEW' title: 'GENERAL.TITLES.DATASET-NEW'
}, },
canDeactivate:[CanDeactivateGuard]
}, },
{ {
path: 'edit/:id', path: 'edit/:id',
@ -24,6 +26,7 @@ const routes: Routes = [
public: false, public: false,
title: 'GENERAL.TITLES.DATASET-EDIT' title: 'GENERAL.TITLES.DATASET-EDIT'
}, },
canDeactivate:[CanDeactivateGuard]
}, },
{ {
path: 'publicEdit/:publicId', path: 'publicEdit/:publicId',
@ -32,7 +35,8 @@ const routes: Routes = [
data: { data: {
public: true, public: true,
title: 'GENERAL.TITLES.DATASET-PUBLIC-EDIT' title: 'GENERAL.TITLES.DATASET-PUBLIC-EDIT'
} },
canDeactivate:[CanDeactivateGuard]
}, },
{ {
path: 'new', path: 'new',
@ -42,6 +46,7 @@ const routes: Routes = [
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.DATASET-NEW' title: 'GENERAL.TITLES.DATASET-NEW'
}, },
canDeactivate:[CanDeactivateGuard]
}, },
{ {
path: '', path: '',
@ -67,6 +72,7 @@ const routes: Routes = [
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.DATASET-COPY' title: 'GENERAL.TITLES.DATASET-COPY'
}, },
canDeactivate:[CanDeactivateGuard]
}, },
{ {
path: 'profileupdate/:updateId', path: 'profileupdate/:updateId',
@ -76,6 +82,7 @@ const routes: Routes = [
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.DATASET-UPDATE' title: 'GENERAL.TITLES.DATASET-UPDATE'
}, },
canDeactivate:[CanDeactivateGuard]
}, },
{ {
path: 'overview/:id', path: 'overview/:id',

View File

@ -7,6 +7,7 @@ import { DmpWizardComponent } from './wizard/dmp-wizard.component';
import { DmpOverviewComponent } from './overview/dmp-overview.component'; import { DmpOverviewComponent } from './overview/dmp-overview.component';
import { DmpCloneComponent } from './clone/dmp-clone.component'; import { DmpCloneComponent } from './clone/dmp-clone.component';
import { AuthGuard } from '@app/core/auth-guard.service'; import { AuthGuard } from '@app/core/auth-guard.service';
import { CanDeactivateGuard } from '@app/library/deactivate/can-deactivate.guard';
const routes: Routes = [ const routes: Routes = [
{ {
@ -38,6 +39,7 @@ const routes: Routes = [
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.DMP-EDIT' title: 'GENERAL.TITLES.DMP-EDIT'
}, },
canDeactivate:[CanDeactivateGuard]
}, },
{ {
path: 'publicEdit/:publicId', path: 'publicEdit/:publicId',
@ -46,6 +48,7 @@ const routes: Routes = [
breadcrumb: true, breadcrumb: true,
title: 'GENERAL.TITLES.DMP-PUBLIC-EDIT' title: 'GENERAL.TITLES.DMP-PUBLIC-EDIT'
}, },
canDeactivate:[CanDeactivateGuard]
}, },
{ {
path: 'overview/:id', path: 'overview/:id',
@ -78,7 +81,8 @@ const routes: Routes = [
data: { data: {
breadcrumbs: 'new', breadcrumbs: 'new',
title: 'GENERAL.TITLES.DMP-NEW' title: 'GENERAL.TITLES.DMP-NEW'
} },
canDeactivate:[CanDeactivateGuard]
}, },
// { // {
// path: 'new/dataset', // path: 'new/dataset',

View File

@ -49,13 +49,17 @@ import { GrantEditorModel } from '@app/ui/grant/editor/grant-editor.model';
import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { MatomoService } from '@app/core/services/matomo/matomo-service';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { PopupNotificationDialogComponent } from '@app/library/notification/popup/popup-notification.component'; import { PopupNotificationDialogComponent } from '@app/library/notification/popup/popup-notification.component';
import { CheckDeactivateBaseComponent } from '@app/library/deactivate/deactivate.component';
@Component({ @Component({
selector: 'app-dmp-editor-component', selector: 'app-dmp-editor-component',
templateUrl: 'dmp-editor.component.html', templateUrl: 'dmp-editor.component.html',
styleUrls: ['./dmp-editor.component.scss'] styleUrls: ['./dmp-editor.component.scss']
}) })
export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { export class DmpEditorComponent extends CheckDeactivateBaseComponent implements OnInit, IBreadCrumbComponent {
canDeactivate(): boolean {
return !this.isDirty();
}
editMode = true; editMode = true;
// editMode = false; // editMode = false;
@ -491,6 +495,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
complete => { complete => {
this.formGroup.get('id').setValue(complete.id); this.formGroup.get('id').setValue(complete.id);
this.formGroup.get('modified').setValue(complete.modified); this.formGroup.get('modified').setValue(complete.modified);
this.hasChanges = false;
if (showAddDatasetDialog) { if (showAddDatasetDialog) {
this.addDatasetOpenDialog(complete); this.addDatasetOpenDialog(complete);
} }