From c38f4961531105247d6323a650ae26c8d3d4314b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20G=C3=B6bel?= <dgoebel@techfak.uni-bielefeld.de>
Date: Wed, 29 Jan 2025 08:50:04 +0000
Subject: [PATCH] Delete undefined parameters before starting workflow
 execution

#187
---
 .../ParameterSchemaFormComponent.vue          |  6 ++++-
 src/stores/workflows.ts                       |  4 ----
 .../CreateParameterTranslationView.vue        | 24 ++++++++-----------
 3 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/src/components/parameter-schema/ParameterSchemaFormComponent.vue b/src/components/parameter-schema/ParameterSchemaFormComponent.vue
index 58ea805..64c3ff0 100644
--- a/src/components/parameter-schema/ParameterSchemaFormComponent.vue
+++ b/src/components/parameter-schema/ParameterSchemaFormComponent.vue
@@ -236,7 +236,11 @@ function startWorkflow() {
   // delete parameters that are strings and have a length of 0
   for (const paramName of Object.keys(formState.formInput)) {
     const param = formState.formInput[paramName];
-    if (typeof param === "string" && param?.length === 0) {
+    if (
+      param == undefined ||
+      (typeof param === "string" && param?.trim()?.length === 0)
+    ) {
+      console.log("Delete", paramName);
       delete formState.formInput[paramName];
     }
   }
diff --git a/src/stores/workflows.ts b/src/stores/workflows.ts
index ea0d2e4..58e8d9a 100644
--- a/src/stores/workflows.ts
+++ b/src/stores/workflows.ts
@@ -75,10 +75,6 @@ export const useWorkflowStore = defineStore("workflows", {
           mapping[version.workflow_version_id] = version;
         }
       }
-      return mapping;
-    },
-    ownVersionMapping(): Record<string, WorkflowVersionOut> {
-      const mapping: Record<string, WorkflowVersionOut> = {};
       for (const workflow of this.ownWorkflows) {
         for (const version of workflow.versions) {
           mapping[version.workflow_version_id] = version;
diff --git a/src/views/workflows/CreateParameterTranslationView.vue b/src/views/workflows/CreateParameterTranslationView.vue
index 407143d..62d306f 100644
--- a/src/views/workflows/CreateParameterTranslationView.vue
+++ b/src/views/workflows/CreateParameterTranslationView.vue
@@ -113,13 +113,11 @@ function updateParameterPools(newVal?: object) {
         !parameterSchema.value?.[param]?.["enum"],
     );
   }
-  if (
-    workflowRepository.ownVersionMapping[props.versionId]?.parameter_extension
-  ) {
+  if (workflowRepository.versionMapping[props.versionId]?.parameter_extension) {
     parameterPools.defaults = parameterPools.defaults.filter(
       (param) =>
-        workflowRepository.ownVersionMapping[props.versionId]
-          ?.parameter_extension?.defaults?.[param] == undefined,
+        workflowRepository.versionMapping[props.versionId]?.parameter_extension
+          ?.defaults?.[param] == undefined,
     );
   }
 }
@@ -327,8 +325,8 @@ onMounted(() => {
   deleteToast = new Toast("#delete-parameter-extension-success-toast");
   workflowRepository.fetchWorkflow(props.workflowId, true, () => {
     parameterState.extension =
-      workflowRepository.ownVersionMapping[props.versionId]
-        ?.parameter_extension ?? {};
+      workflowRepository.versionMapping[props.versionId]?.parameter_extension ??
+      {};
     for (const param of Object.keys(parameterState.extension?.mapping ?? {})) {
       for (const paramOption of Object.keys(
         parameterState.extension?.mapping?.[param] ?? {},
@@ -347,14 +345,14 @@ onMounted(() => {
         props.workflowId,
         props.versionId,
         DocumentationEnum.PARAMETER_SCHEMA_JSON,
-        workflowRepository.ownVersionMapping[props.versionId]?.modes?.[0],
+        workflowRepository.versionMapping[props.versionId]?.modes?.[0],
       )
       .then(() =>
         workflowRepository.fetchWorkflowDocumentation(
           props.workflowId,
           props.versionId,
           DocumentationEnum.CLOWM_INFO_JSON,
-          workflowRepository.ownVersionMapping[props.versionId]?.modes?.[0],
+          workflowRepository.versionMapping[props.versionId]?.modes?.[0],
         ),
       )
       .finally(() => {
@@ -393,8 +391,7 @@ onMounted(() => {
             },
             query: {
               workflowModeId:
-                workflowRepository.ownVersionMapping[props.versionId]
-                  ?.modes?.[0],
+                workflowRepository.versionMapping[props.versionId]?.modes?.[0],
               viewMode: 'expert',
             },
           }"
@@ -411,7 +408,7 @@ onMounted(() => {
   </bootstrap-toast>
   <delete-modal
     v-if="
-      workflowRepository.ownVersionMapping[props.versionId]?.parameter_extension
+      workflowRepository.versionMapping[props.versionId]?.parameter_extension
     "
     modal-id="delete-parameter-extension-modal"
     :object-name-delete="`parameter extension of ${nameRepository.getName(props.workflowId)}@${nameRepository.getName(props.versionId)}`"
@@ -426,8 +423,7 @@ onMounted(() => {
     </h2>
     <div
       v-if="
-        workflowRepository.ownVersionMapping[props.versionId]
-          ?.parameter_extension
+        workflowRepository.versionMapping[props.versionId]?.parameter_extension
       "
     >
       <button
-- 
GitLab