diff --git a/ui/src/app/metadata/domain/component/unsaved-entity.dialog.html b/ui/src/app/metadata/domain/component/unsaved-entity.dialog.html index 6c210c045..5966b73c8 100644 --- a/ui/src/app/metadata/domain/component/unsaved-entity.dialog.html +++ b/ui/src/app/metadata/domain/component/unsaved-entity.dialog.html @@ -1,14 +1,28 @@ - +
diff --git a/ui/src/app/metadata/domain/component/unsaved-entity.dialog.ts b/ui/src/app/metadata/domain/component/unsaved-entity.dialog.ts index 7efe195c8..10180a2a8 100644 --- a/ui/src/app/metadata/domain/component/unsaved-entity.dialog.ts +++ b/ui/src/app/metadata/domain/component/unsaved-entity.dialog.ts @@ -10,6 +10,8 @@ import { Subject } from 'rxjs/Subject'; export class UnsavedEntityComponent { readonly subject: Subject = new Subject(); + @Input() message; + constructor( public activeModal: NgbActiveModal ) { } diff --git a/ui/src/app/metadata/resolver/container/resolver-wizard.component.ts b/ui/src/app/metadata/resolver/container/resolver-wizard.component.ts index bf886ae6d..ba2221fda 100644 --- a/ui/src/app/metadata/resolver/container/resolver-wizard.component.ts +++ b/ui/src/app/metadata/resolver/container/resolver-wizard.component.ts @@ -28,7 +28,7 @@ import { LoadSchemaRequest } from '../../../wizard/action/wizard.action'; import { UnsavedEntityComponent } from '../../domain/component/unsaved-entity.dialog'; import { ModalService } from '../../../core/service/modal.service'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; -import { UpdateChanges } from '../action/entity.action'; +import { UpdateChanges, Clear } from '../action/entity.action'; @Component({ selector: 'resolver-wizard-page', @@ -127,6 +127,8 @@ export class ResolverWizardComponent implements OnDestroy, CanComponentDeactivat } )) ); + + this.changes$.pipe(takeUntil(this.ngUnsubscribe)).subscribe(c => this.changes = c); } next(): void { @@ -170,12 +172,15 @@ export class ResolverWizardComponent implements OnDestroy, CanComponentDeactivat currentState: RouterStateSnapshot, nextState: RouterStateSnapshot ): Observable { - if (nextState.url.match('wizard')) { return of(true); } + if (nextState.url.match('blank')) { return of(true); } if (Object.keys(this.changes).length > 0) { let modal = this.modalService.open(UnsavedEntityComponent); - modal.componentInstance.action = new UpdateChanges(this.latest); + modal.componentInstance.message = 'resolver'; modal.result.then( - () => this.router.navigate([nextState.url]), + () => { + this.store.dispatch(new Clear()); + this.router.navigate([nextState.url]); + }, () => console.warn('denied') ); } diff --git a/ui/src/app/metadata/resolver/resolver.routing.ts b/ui/src/app/metadata/resolver/resolver.routing.ts index 5312f5537..1d080bd5f 100644 --- a/ui/src/app/metadata/resolver/resolver.routing.ts +++ b/ui/src/app/metadata/resolver/resolver.routing.ts @@ -26,7 +26,9 @@ export const ResolverRoutes: Routes = [ { path: 'blank/:index', component: ResolverWizardComponent, - canDeactivate: [], + canDeactivate: [ + CanDeactivateGuard + ], children: [ { path: '',