From 89312f26ca18fbd0008baecf4e727e8347b7394e Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Tue, 10 Sep 2019 11:51:54 -0700 Subject: [PATCH] SHIBUI-1477 Fixed issue with old version of resolver displaying --- .../container/metadata-options.component.html | 1 - .../configuration/effect/restore.effect.ts | 11 +++++++++ .../metadata/provider/reducer/index.spec.ts | 24 +++++++++++++++++++ ui/src/app/metadata/provider/reducer/index.ts | 13 ++++------ .../resolver/action/collection.action.ts | 9 ++++++- .../resolver/reducer/collection.reducer.ts | 7 ++++++ 6 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 ui/src/app/metadata/provider/reducer/index.spec.ts diff --git a/ui/src/app/metadata/configuration/container/metadata-options.component.html b/ui/src/app/metadata/configuration/container/metadata-options.component.html index 390d6981c..a03e50663 100644 --- a/ui/src/app/metadata/configuration/container/metadata-options.component.html +++ b/ui/src/app/metadata/configuration/container/metadata-options.component.html @@ -35,7 +35,6 @@

-
Loading... diff --git a/ui/src/app/metadata/configuration/effect/restore.effect.ts b/ui/src/app/metadata/configuration/effect/restore.effect.ts index 7be47103e..f15f21569 100644 --- a/ui/src/app/metadata/configuration/effect/restore.effect.ts +++ b/ui/src/app/metadata/configuration/effect/restore.effect.ts @@ -30,6 +30,8 @@ import { import { SetMetadata } from '../action/configuration.action'; import { removeNulls } from '../../../shared/util'; import { getModel } from '../../../wizard/reducer'; +import { ClearProviderSelection } from '../../provider/action/collection.action'; +import { ClearResolverSelection } from '../../resolver/action/collection.action'; @Injectable() @@ -107,6 +109,15 @@ export class RestoreEffects { ) ); + @Effect() + restoreVersionSuccessClear$ = this.actions$.pipe( + ofType(RestoreActionTypes.RESTORE_VERSION_SUCCESS), + map(action => action.payload), + map(({ id, type }) => + type === 'provider' ? new ClearProviderSelection() : new ClearResolverSelection() + ) + ); + @Effect() restoreVersionSuccessReload$ = this.actions$.pipe( ofType(RestoreActionTypes.RESTORE_VERSION_SUCCESS), diff --git a/ui/src/app/metadata/provider/reducer/index.spec.ts b/ui/src/app/metadata/provider/reducer/index.spec.ts new file mode 100644 index 000000000..7ffb3e9db --- /dev/null +++ b/ui/src/app/metadata/provider/reducer/index.spec.ts @@ -0,0 +1,24 @@ +import { getFilteredListFn } from './'; + +describe('Provider Reducer selectors', () => { + describe(`getFilteredListFn method`, () => { + it('should return a list without the provider`s property', () => { + + const fn = getFilteredListFn('name'); + const name = 'foo'; + const collection = ['foo', 'bar', 'baz']; + const provider = { name }; + + expect(fn(collection, provider)).toEqual(['bar', 'baz']); + }); + + it('should return the list if the provider passed is null', () => { + + const fn = getFilteredListFn('name'); + const name = 'foo'; + const collection = ['foo', 'bar', 'baz']; + + expect(fn(collection, null)).toEqual(['foo', 'bar', 'baz']); + }); + }); +}); diff --git a/ui/src/app/metadata/provider/reducer/index.ts b/ui/src/app/metadata/provider/reducer/index.ts index 562a4ab44..8005d63e9 100644 --- a/ui/src/app/metadata/provider/reducer/index.ts +++ b/ui/src/app/metadata/provider/reducer/index.ts @@ -66,11 +66,11 @@ export const getProviderIds = createSelector(getCollectionState, fromCollection. export const getProviderCollectionIsLoaded = createSelector(getCollectionState, fromCollection.getIsLoaded); export const getProviderNames = createSelector(getAllProviders, (providers: MetadataProvider[]) => providers.map(p => p.name)); -export const getFilteredProviderNames = createSelector( - getProviderNames, - getSelectedProvider, (names, provider) => names.filter(name => name !== provider.name) -); +export const getFilteredListFn = (property: string) => + (collection, provider) => !provider ? collection : collection.filter(val => val !== provider[property]); + +export const getFilteredProviderNames = createSelector(getProviderNames, getSelectedProvider, getFilteredListFn('name')); export const getProviderFilters = createSelector(getSelectedProvider, provider => provider.metadataFilters); @@ -78,7 +78,4 @@ export const getProviderXmlIds = createSelector(getAllProviders, (providers: Met export const getOrderedProviders = createSelector(getAllProviders, getProviderOrder, utils.mergeOrderFn); export const getOrderedProvidersInSearch = createSelector(getAllProviders, getProviderOrder, utils.mergeOrderFn); -export const getFilteredProviderXmlIds = createSelector( - getProviderXmlIds, - getSelectedProvider, (ids, provider) => ids.filter(id => id !== provider.xmlId) -); +export const getFilteredProviderXmlIds = createSelector(getProviderXmlIds, getSelectedProvider, getFilteredListFn('xmlId')); diff --git a/ui/src/app/metadata/resolver/action/collection.action.ts b/ui/src/app/metadata/resolver/action/collection.action.ts index dc3843319..57861b17c 100644 --- a/ui/src/app/metadata/resolver/action/collection.action.ts +++ b/ui/src/app/metadata/resolver/action/collection.action.ts @@ -7,6 +7,8 @@ export enum ResolverCollectionActionTypes { SELECT = '[Metadata Resolver] Select', SELECT_SUCCESS = '[Metadata Resolver] Select Success', + CLEAR_SELECTION = '[Metadata Resolver] Selection Clear', + UPDATE_RESOLVER_REQUEST = '[Metadata Resolver] Update Request', UPDATE_RESOLVER_SUCCESS = '[Metadata Resolver] Update Success', UPDATE_RESOLVER_FAIL = '[Metadata Resolver] Update Fail', @@ -143,6 +145,10 @@ export class CreateResolverFromUrlRequest implements Action { constructor(public payload: { name: string, url: string }) { } } +export class ClearResolverSelection implements Action { + readonly type = ResolverCollectionActionTypes.CLEAR_SELECTION; +} + export type ResolverCollectionActionsUnion = | LoadResolverRequest | LoadResolverSuccess @@ -162,4 +168,5 @@ export type ResolverCollectionActionsUnion = | UpdateResolverFail | UpdateResolverConflict | UploadResolverRequest - | CreateResolverFromUrlRequest; + | CreateResolverFromUrlRequest + | ClearResolverSelection; diff --git a/ui/src/app/metadata/resolver/reducer/collection.reducer.ts b/ui/src/app/metadata/resolver/reducer/collection.reducer.ts index 93118aec3..425e2dee6 100644 --- a/ui/src/app/metadata/resolver/reducer/collection.reducer.ts +++ b/ui/src/app/metadata/resolver/reducer/collection.reducer.ts @@ -51,6 +51,13 @@ export function reducer(state = initialState, action: ResolverCollectionActionsU }); } + case ResolverCollectionActionTypes.CLEAR_SELECTION: { + return { + ...state, + selectedResolverId: null + }; + } + default: { return state; }