From 79b86dbb3e06b26ab79953098656e89b60b379ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20G=C3=B6bel?= <dgoebel@techfak.uni-bielefeld.de> Date: Tue, 13 Feb 2024 14:17:47 +0100 Subject: [PATCH] Parse ungrouped parameters from nextflow schema #96 --- .../ParameterSchemaDescriptionComponent.vue | 16 ++++++-- .../ParameterSchemaFormComponent.vue | 37 ++++++++++++------- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/src/components/parameter-schema/ParameterSchemaDescriptionComponent.vue b/src/components/parameter-schema/ParameterSchemaDescriptionComponent.vue index 050fa5c..7c70fd7 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 4048dac..b7947f7 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()); -- GitLab