diff --git a/ui/src/app/metadata/domain/provider/BaseProviderDefinition.js b/ui/src/app/metadata/domain/provider/BaseProviderDefinition.js
index 2db57a57b..47c0ce735 100644
--- a/ui/src/app/metadata/domain/provider/BaseProviderDefinition.js
+++ b/ui/src/app/metadata/domain/provider/BaseProviderDefinition.js
@@ -22,13 +22,15 @@ export const BaseProviderDefinition = {
},
parser: (changes, base) => {
+ const baseFilters = base ? base.metadataFilters.filter(f => MetadataFilterTypes.indexOf(f['@type']) > -1) : []
+
const parsed = (changes.metadataFilters ? ({
...changes,
metadataFilters: [
...changes.metadataFilters.filter((filter, filterName) => (
Object.keys(filter).filter(k => k !== '@type').length > 0
)),
- ...base.metadataFilters.filter(f => MetadataFilterTypes.indexOf(f['@type']) > -1)
+ ...baseFilters
]
}) : changes);
diff --git a/ui/src/app/metadata/hoc/MetadataFormContext.js b/ui/src/app/metadata/hoc/MetadataFormContext.js
index a23f417a8..12fd598e8 100644
--- a/ui/src/app/metadata/hoc/MetadataFormContext.js
+++ b/ui/src/app/metadata/hoc/MetadataFormContext.js
@@ -55,22 +55,22 @@ function reducer(state, action) {
/*eslint-disable react-hooks/exhaustive-deps*/
function MetadataForm({ children, initial = {} }) {
- const [state, dispatch] = React.useReducer(
- reducer,
- initialState
- );
+ const metadata = {
+ ...useFormattedMetadata(initial)
+ };
- const base = useFormattedMetadata(initial);
+ const [state, dispatch] = React.useReducer(reducer, {
+ ...initialState,
+ metadata
+ });
- React.useEffect(() => {
- dispatch(setFormDataAction(base))
- dispatch(setFormErrorAction(initialState.errors))
- }, [initial])
const contextValue = React.useMemo(() => ({ state, dispatch }), [state, dispatch]);
return (
- {children}
+
+ {children}
+
);
}
diff --git a/ui/src/app/metadata/hoc/MetadataSchema.js b/ui/src/app/metadata/hoc/MetadataSchema.js
index 061ee6a36..ec6dd49f0 100644
--- a/ui/src/app/metadata/hoc/MetadataSchema.js
+++ b/ui/src/app/metadata/hoc/MetadataSchema.js
@@ -21,7 +21,10 @@ export function MetadataSchema({ type, children, wizard = false }) {
}
/*eslint-disable react-hooks/exhaustive-deps*/
- React.useEffect(() => { loadSchema(definition) }, [definition]);
+ React.useEffect(() => {
+ setSchema(null);
+ loadSchema(definition);
+ }, [definition]);
return (
diff --git a/ui/src/app/metadata/hooks/schema.js b/ui/src/app/metadata/hooks/schema.js
index 302c4819a..13b2b9204 100644
--- a/ui/src/app/metadata/hooks/schema.js
+++ b/ui/src/app/metadata/hooks/schema.js
@@ -16,7 +16,6 @@ export function useUiSchema(definition, schema, current, locked = true) {
const step = React.useMemo(() => definition ? definition.steps.find(step => step.id === current) : {fields: []}, [definition, current]);
const filled = React.useMemo(() => fillInRootProperties(schemaKeys, ui), [schemaKeys, ui]);
-
const mapped = React.useMemo(() => {
return Object.keys(filled).reduce((sch, key) => {
const obj = { ...filled[key] };
@@ -35,6 +34,8 @@ export function useUiSchema(definition, schema, current, locked = true) {
};
}, [mapped, step.locked, locked])
+ console.log(isLocked);
+
return {uiSchema: isLocked, step};
}
diff --git a/ui/src/app/metadata/view/MetadataWizard.js b/ui/src/app/metadata/view/MetadataWizard.js
index 08ad1a235..00031692a 100644
--- a/ui/src/app/metadata/view/MetadataWizard.js
+++ b/ui/src/app/metadata/view/MetadataWizard.js
@@ -6,7 +6,6 @@ import { MetadataProviderWizard } from '../wizard/MetadataProviderWizard';
import { Wizard } from '../wizard/Wizard';
export function MetadataWizard ({type, data, onCallback}) {
-
return (