-
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;
}