diff --git a/src/components/parameter-schema/ParameterSchemaDescriptionComponent.vue b/src/components/parameter-schema/ParameterSchemaDescriptionComponent.vue index 050fa5cba2d926aa17d775a39b122c95791fae70..7c70fd7ebd44b24ef4647e488658e42cc1a12aeb 100644 --- a/src/components/parameter-schema/ParameterSchemaDescriptionComponent.vue +++ b/src/components/parameter-schema/ParameterSchemaDescriptionComponent.vue @@ -44,9 +44,19 @@ const navParameterGroups = computed<ParameterGroup[]>(() => { return groups; }); -const parameterGroups = computed<Record<string, never>>( - () => props.schema["definitions"], -); +const parameterGroups = computed<Record<string, never>>(() => { + if (Object.keys(props.schema?.["properties"] ?? {}).length > 0) { + return { + ...props.schema?.["definitions"], + ungrouped_parameters: { + title: "Ungrouped Parameters", + properties: props.schema?.["properties"], + type: "object", + }, + }; + } + return props.schema?.["definitions"]; +}); </script> <template> diff --git a/src/components/parameter-schema/ParameterSchemaFormComponent.vue b/src/components/parameter-schema/ParameterSchemaFormComponent.vue index 4048dacc6c9dd8031c6ffeab933946c22fac5454..b7947f789f6001bd9501d5da8fdec4b83026938a 100644 --- a/src/components/parameter-schema/ParameterSchemaFormComponent.vue +++ b/src/components/parameter-schema/ParameterSchemaFormComponent.vue @@ -104,9 +104,19 @@ const formState = reactive<{ // Computed Properties // ============================================================================= -const parameterGroups = computed<Record<string, never>>( - () => props.schema?.["definitions"], -); +const parameterGroups = computed<Record<string, never>>(() => { + if (Object.keys(props.schema?.["properties"] ?? {}).length > 0) { + return { + ...props.schema?.["definitions"], + ungrouped_parameters: { + title: "Ungrouped Parameters", + properties: props.schema?.["properties"], + type: "object", + }, + }; + } + return props.schema?.["definitions"]; +}); // Create a list with the names of all parameter groups const navParameterGroups = computed<ParameterGroup[]>(() => { @@ -159,18 +169,19 @@ watch( /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars */ function updateSchema(schema: Record<string, any>) { validateSchema = schemaCompiler.compile(schema); - const b = Object.keys(schema["definitions"]).map((groupName) => - Object.fromEntries( - Object.entries(schema["definitions"][groupName]["properties"]).map( - ([parameterName, parameter]) => [ - parameterName, - // @ts-ignore - parameter["default"], - ], + const groupedParameters = Object.keys(parameterGroups.value).map( + (groupName) => + Object.fromEntries( + Object.entries(parameterGroups.value[groupName]["properties"]).map( + ([parameterName, parameter]) => [ + parameterName, + // @ts-ignore + parameter["default"], + ], + ), ), - ), ); - formState.formInput = b.reduce((acc, val) => { + formState.formInput = groupedParameters.reduce((acc, val) => { return { ...acc, ...val }; }); loadParameters(executionRepository.popTemporaryParameters());