From d55788fa72275d6e6ba1eb723cfd623aa46d6e5c Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Wed, 12 Dec 2018 11:30:29 -0700 Subject: [PATCH] SHIBUI-1060 Fixed bug with retaining filter schema --- ui/src/app/metadata/filter/action/filter.action.ts | 8 +++++++- .../app/metadata/filter/container/new-filter.component.ts | 6 ++++-- ui/src/app/metadata/filter/effect/collection.effect.ts | 8 +++++++- ui/src/app/metadata/filter/reducer/filter.reducer.ts | 1 + 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/ui/src/app/metadata/filter/action/filter.action.ts b/ui/src/app/metadata/filter/action/filter.action.ts index 1034d9e09..a745d78c4 100644 --- a/ui/src/app/metadata/filter/action/filter.action.ts +++ b/ui/src/app/metadata/filter/action/filter.action.ts @@ -7,6 +7,7 @@ export enum FilterActionTypes { SELECT_FILTER_TYPE = '[Filter] Select Filter Type', UPDATE_FILTER = '[Filter] Update Filter', CANCEL_CREATE_FILTER = '[Filter] Cancel Create Filter', + CLEAR_FILTER = '[Filter] Clear Filter', LOAD_ENTITY_PREVIEW = '[Filter] Load Preview data', LOAD_ENTITY_PREVIEW_SUCCESS = '[Filter] Load Preview data success', LOAD_ENTITY_PREVIEW_ERROR = '[Filter] Load Preview data error' @@ -38,6 +39,10 @@ export class CancelCreateFilter implements Action { readonly type = FilterActionTypes.CANCEL_CREATE_FILTER; } +export class ClearFilter implements Action { + readonly type = FilterActionTypes.CLEAR_FILTER; +} + export class UpdateFilterChanges implements Action { readonly type = FilterActionTypes.UPDATE_FILTER; @@ -57,4 +62,5 @@ export type FilterActionsUnion = | CancelCreateFilter | LoadEntityPreview | LoadEntityPreviewSuccess - | LoadEntityPreviewError; + | LoadEntityPreviewError + | ClearFilter; diff --git a/ui/src/app/metadata/filter/container/new-filter.component.ts b/ui/src/app/metadata/filter/container/new-filter.component.ts index 7fa2a5c7f..c9b686777 100644 --- a/ui/src/app/metadata/filter/container/new-filter.component.ts +++ b/ui/src/app/metadata/filter/container/new-filter.component.ts @@ -58,18 +58,21 @@ export class NewFilterComponent implements OnDestroy, OnInit { this.model = {}; this.definition$ = this.store.select(fromFilter.getFilterType).pipe( + takeUntil(this.ngUnsubscribe), filter(t => !!t), map(t => MetadataFilterTypes[t]) ); this.schema$ = this.definition$.pipe( + takeUntil(this.ngUnsubscribe), filter(d => !!d), switchMap(d => { - return this.schemaService.get(d.schema); + return this.schemaService.get(d.schema).pipe(takeUntil(this.ngUnsubscribe)); }), shareReplay() ); this.validators$ = this.definition$.pipe( + takeUntil(this.ngUnsubscribe), withLatestFrom(this.store.select(fromFilter.getFilterNames)), map(([definition, names]) => definition.getValidators(names)) ); @@ -107,7 +110,6 @@ export class NewFilterComponent implements OnDestroy, OnInit { } save(): void { - console.log(this.filter); this.store.dispatch(new AddFilterRequest(this.filter)); } diff --git a/ui/src/app/metadata/filter/effect/collection.effect.ts b/ui/src/app/metadata/filter/effect/collection.effect.ts index 65d5f8d2c..392cc0115 100644 --- a/ui/src/app/metadata/filter/effect/collection.effect.ts +++ b/ui/src/app/metadata/filter/effect/collection.effect.ts @@ -39,7 +39,7 @@ import { removeNulls, array_move } from '../../../shared/util'; import { EntityAttributesFilterEntity } from '../../domain/entity/filter/entity-attributes-filter'; import { MetadataFilterService } from '../../domain/service/filter.service'; import { SelectProviderRequest } from '../../provider/action/collection.action'; -import { UpdateFilterChanges } from '../action/filter.action'; +import { UpdateFilterChanges, ClearFilter } from '../action/filter.action'; /* istanbul ignore next */ @Injectable() @@ -112,6 +112,12 @@ export class FilterCollectionEffects { map(([filter, provider]) => new SelectProviderRequest(provider)) ); + @Effect() + addFilterSuccessResetState$ = this.actions$.pipe( + ofType(FilterCollectionActionTypes.ADD_FILTER_SUCCESS), + map(() => new ClearFilter()) + ); + @Effect() updateFilter$ = this.actions$.pipe( ofType(FilterCollectionActionTypes.UPDATE_FILTER_REQUEST), diff --git a/ui/src/app/metadata/filter/reducer/filter.reducer.ts b/ui/src/app/metadata/filter/reducer/filter.reducer.ts index 9b47e8df0..68aaf40ed 100644 --- a/ui/src/app/metadata/filter/reducer/filter.reducer.ts +++ b/ui/src/app/metadata/filter/reducer/filter.reducer.ts @@ -47,6 +47,7 @@ export function reducer(state = initialState, action: FilterActionsUnion): Filte } }; } + case FilterActionTypes.CLEAR_FILTER: case FilterActionTypes.CANCEL_CREATE_FILTER: { return { ...initialState