diff --git a/ui/src/app/metadata/provider/container/provider-edit-step.component.ts b/ui/src/app/metadata/provider/container/provider-edit-step.component.ts index c869c8e9c..26eac92a4 100644 --- a/ui/src/app/metadata/provider/container/provider-edit-step.component.ts +++ b/ui/src/app/metadata/provider/container/provider-edit-step.component.ts @@ -95,6 +95,7 @@ export class ProviderEditStepComponent implements OnDestroy { }), filter(({ model, definition }) => definition && model), map(({ model, definition }) => { + // console.log(model, definition.formatter(model)); return definition ? definition.formatter(model) : {}; }) ); @@ -104,14 +105,18 @@ export class ProviderEditStepComponent implements OnDestroy { withLatestFrom(this.definition$, this.store.select(fromProvider.getSelectedProvider)), filter(([ changes, definition, provider ]) => definition && changes && provider), map(([ changes, definition, provider ]) => { - const parsed = definition.parser(changes); - return ({ - ...parsed, - metadataFilters: [ - ...provider.metadataFilters, - ...(parsed.metadataFilters || []) - ] - }); + const appliedFilters = changes && changes.metadataFilters ? { + ...changes, + metadataFilters: Object.keys(changes.metadataFilters).reduce((filters, filterType) => ({ + ...filters, + [filterType]: { + ...provider.metadataFilters.find(f => f['@type'] === filterType) || {}, + ...changes.metadataFilters[filterType] + } + }), {}) + } : changes; + const parsed = definition.parser(appliedFilters); + return parsed; }) ) .subscribe(changes => this.store.dispatch(new UpdateProvider(changes))); diff --git a/ui/src/app/metadata/provider/container/provider-edit.component.ts b/ui/src/app/metadata/provider/container/provider-edit.component.ts index ef37af038..199071b11 100644 --- a/ui/src/app/metadata/provider/container/provider-edit.component.ts +++ b/ui/src/app/metadata/provider/container/provider-edit.component.ts @@ -42,6 +42,8 @@ export class ProviderEditComponent implements OnDestroy, CanComponentDeactivate formats = NAV_FORMATS; + latest$: Observable; + constructor( private store: Store, private router: Router, @@ -70,7 +72,8 @@ export class ProviderEditComponent implements OnDestroy, CanComponentDeactivate }); this.provider$.subscribe(p => this.provider = p); - this.store.select(fromProvider.getEntityChanges).subscribe(changes => this.latest = changes); + this.latest$ = this.store.select(fromProvider.getEntityChanges); + this.latest$.subscribe(changes => this.latest = changes); this.canFilter$ = this.definition$.pipe(map(def => FilterableProviders.indexOf(def.type) > -1)); } diff --git a/ui/src/app/wizard/reducer/index.ts b/ui/src/app/wizard/reducer/index.ts index 255710be0..ca4cdb0f7 100644 --- a/ui/src/app/wizard/reducer/index.ts +++ b/ui/src/app/wizard/reducer/index.ts @@ -48,7 +48,7 @@ export const getWizardDefinition = createSelector(getState, fromWizard.getDefini export const getSchemaPath = (wizard: Wizard) => wizard ? wizard.schema : null; export const getSplitSchema = (schema: any, step: WizardStep) => { - if (!schema || !step.fields || !step.fields.length || !schema.properties) { + if (!schema || !step || !step.fields || !step.fields.length || !schema.properties) { return schema; } const keys = Object.keys(schema.properties).filter(key => step.fields.indexOf(key) > -1);