16086: Looks up input values by the correct input id.
[arvados-workbench2.git] / src / views-components / process-input-dialog / process-input-dialog.tsx
index a639fa88e233550519d7345ee0ef4da046290ba6..6ccf264ca099eda3debd824de5ad993381bca176 100644 (file)
@@ -8,6 +8,8 @@ import { WithDialogProps } from '~/store/dialog/with-dialog';
 import { withDialog } from "~/store/dialog/with-dialog";
 import { PROCESS_INPUT_DIALOG_NAME } from '~/store/processes/process-input-actions';
 import { RunProcessInputsForm } from "~/views/run-process-panel/run-process-inputs-form";
+import { MOUNT_PATH_CWL_WORKFLOW, MOUNT_PATH_CWL_INPUT } from "~/models/process";
+import { getWorkflowInputs } from "~/models/workflow";
 
 export const ProcessInputDialog = withDialog(PROCESS_INPUT_DIALOG_NAME)(
     (props: WithDialogProps<any>) =>
@@ -22,7 +24,7 @@ export const ProcessInputDialog = withDialog(PROCESS_INPUT_DIALOG_NAME)(
             </DialogContent>
             <DialogActions>
                 <Button
-                    variant='flat'
+                    variant='text'
                     color='primary'
                     onClick={props.closeDialog}>
                     Close
@@ -31,52 +33,17 @@ export const ProcessInputDialog = withDialog(PROCESS_INPUT_DIALOG_NAME)(
         </Dialog>
 );
 
-const getInputs = (data: any) =>
-    data && data.mounts.varLibCwlWorkflowJson ? data.mounts.varLibCwlWorkflowJson.content.graph[1].inputs.map((it: any) => (
-        { type: it.type, id: it.id, label: it.label, value: getValue(it.id, data.mounts.varLibCwlCwlInputJson.content), disabled: true }
-    )) : [];
-
-const getValue = (id: string, data: any) => {
-    switch (id) {
-        case "#main/example_flag":
-            return data.exampleFlag;
-        case "#main/example_directory":
-            return data.exampleDirectory;
-        case "#main/example_double":
-            return data.exampleDouble;
-        case "#main/example_file":
-            return data.exampleFile;
-        case "#main/example_float":
-            return data.exampleFloat;
-        case "#main/example_int":
-            return data.exampleInt;
-        case "#main/example_long":
-            return data.exampleLong;
-        case "#main/example_null":
-            return data.exampleNull;
-        case "#main/example_string":
-            return data.exampleString;
-        case "#main/enum_type":
-            return data.enumType;
-        case "#main/multiple_collections":
-            return data.multipleCollections;
-        case "#main/example_string_array":
-            return data.exampleStringArray;
-        case "#main/example_int_array":
-            return data.exampleIntArray;
-        case "#main/example_float_array":
-            return data.exampleFloatArray;
-        case "#main/multiple_files":
-            return data.multipleFiles;
-        case "#main/collection":
-            return data.collection;
-        case "#main/optional_file_missing_label":
-            return data.optionalFileMissingLabel;
-        case "#main/optional_file":
-            return data.optionalFile;
-        case "#main/single_file":
-            return data.singleFile;
-        default:
-            return data.exampleString;
-    }
-};
\ No newline at end of file
+const getInputs = (data: any) => {
+    if (!data || !data.mounts || !data.mounts[MOUNT_PATH_CWL_WORKFLOW]) { return []; }
+    const inputs = getWorkflowInputs(data.mounts[MOUNT_PATH_CWL_WORKFLOW].content);
+    return inputs
+        ? inputs.map( (it: any) => (
+            {
+                type: it.type,
+                id: it.id,
+                label: it.label,
+                value: data.mounts[MOUNT_PATH_CWL_INPUT].content[it.id.split('#main/')[1]] || [],
+                disabled: true
+            }))
+        : [];
+};