diff --git a/src/components/parameter-schema/ParameterSchemaFormComponent.vue b/src/components/parameter-schema/ParameterSchemaFormComponent.vue index ed64353529cca205ce44e899f0e2c3ac2d2a737e..c100465a47a38563f851b23c60ce74d9e212aa4c 100644 --- a/src/components/parameter-schema/ParameterSchemaFormComponent.vue +++ b/src/components/parameter-schema/ParameterSchemaFormComponent.vue @@ -15,6 +15,7 @@ import type { ClowmInfo } from "@/types/ClowmInfo"; import UploadParameterFileModal from "@/components/parameter-schema/UploadParameterFileModal.vue"; import type { TemporaryParams, + WorkflowMetaParameters, WorkflowParameters, } from "@/types/WorkflowParameters"; import { useWorkflowExecutionStore } from "@/stores/workflowExecutions"; @@ -55,10 +56,7 @@ const emit = defineEmits<{ ( e: "start-workflow", parameters: WorkflowParameters, - notes?: string, - logs_s3_path?: string, - debug_s3_path?: string, - provenance_s3_path?: string, + metaParameters: WorkflowMetaParameters, ): void; }>(); @@ -90,18 +88,17 @@ const launchForm = ref<HTMLFormElement | null>(null); const formState = reactive<{ formInput: WorkflowParameters; validated: boolean; - pipelineNotes: string; - logs_s3_path?: string; - debug_s3_path?: string; - provenance_s3_path?: string; + metaParameters: WorkflowMetaParameters; errorType?: string; }>({ formInput: {}, validated: false, - pipelineNotes: "", - logs_s3_path: undefined, - debug_s3_path: undefined, - provenance_s3_path: undefined, + metaParameters: { + logs_s3_path: undefined, + debug_s3_path: undefined, + provenance_s3_path: undefined, + notes: undefined, + }, errorType: undefined, }); @@ -191,14 +188,7 @@ function startWorkflow() { console.error(validateSchema.errors); errorToast?.show(); } else { - emit( - "start-workflow", - formState.formInput, - formState.pipelineNotes, - formState.logs_s3_path, - formState.debug_s3_path, - formState.provenance_s3_path, - ); + emit("start-workflow", formState.formInput, formState.metaParameters); } } else { formState.errorType = "form"; @@ -213,10 +203,7 @@ function loadParameters(tempParams?: TemporaryParams) { formState.formInput[param] = tempParams.params[param]; } } - formState.pipelineNotes = tempParams.metaParams.notes ?? ""; - formState.logs_s3_path = tempParams.metaParams.logs_s3_path; - formState.provenance_s3_path = tempParams.metaParams.provenance_s3_path; - formState.debug_s3_path = tempParams.metaParams.debug_s3_path; + formState.metaParameters = tempParams.metaParams; if (Object.keys(tempParams?.params ?? {}).length > 0) { parameterLoadToast?.show(); } @@ -285,8 +272,7 @@ onMounted(() => { > <template v-for="(group, groupName) in parameterGroups" :key="groupName"> <parameter-group-form - :modelValue="formState.formInput" - @update:model-value="(newValue) => (formState.formInput = newValue)" + v-model="formState.formInput" v-if="formState.formInput" :parameter-group-name="groupName" :parameter-group="group" @@ -319,7 +305,7 @@ onMounted(() => { <textarea class="form-control border border-secondary" rows="2" - v-model="formState.pipelineNotes" + v-model="formState.metaParameters.notes" /> </div> <label class="mb-3" for="pipelineNotes" @@ -337,7 +323,7 @@ onMounted(() => { </span> <parameter-string-input parameter-name="logs_s3_path" - v-model="formState.logs_s3_path" + v-model="formState.metaParameters.logs_s3_path" :parameter="{ format: 'directory-path', type: 'string', @@ -360,7 +346,7 @@ onMounted(() => { </span> <parameter-string-input parameter-name="provenance_s3_path" - v-model="formState.provenance_s3_path" + v-model="formState.metaParameters.provenance_s3_path" :parameter="{ format: 'directory-path', type: 'string', @@ -384,7 +370,7 @@ onMounted(() => { </span> <parameter-string-input parameter-name="debug_s3_path" - v-model="formState.debug_s3_path" + v-model="formState.metaParameters.debug_s3_path" :parameter="{ format: 'directory-path', type: 'string', diff --git a/src/components/parameter-schema/form-mode/ParameterGroupForm.vue b/src/components/parameter-schema/form-mode/ParameterGroupForm.vue index 836ff273740499ed3b5c712a5cf513b90b5d9ba4..9d4b0f398b7cf79348714c6bcabdf6f013d0d74f 100644 --- a/src/components/parameter-schema/form-mode/ParameterGroupForm.vue +++ b/src/components/parameter-schema/form-mode/ParameterGroupForm.vue @@ -101,32 +101,42 @@ function parameterRequired( > <font-awesome-icon :icon="parameter['fa_icon']" /> </span> - <parameter-number-input + <template v-if=" parameter['type'] === 'number' || parameter['type'] === 'integer' " - :parameter-name="parameterName" - :parameter="parameter" - :help-id="parameterName + '-help'" - :required="parameterRequired(parameterGroup, parameterName)" - v-model="model[parameterName]" - /> - <parameter-boolean-input - v-else-if="parameter['type'] === 'boolean'" - :parameter-name="parameterName" - :parameter="parameter" - :help-id="parameterName + '-help'" - v-model="model[parameterName]" - /> - <template v-else-if="parameter['type'] === 'string'"> - <parameter-enum-input - v-if="parameter['enum']" + > + <!-- @vue-ignore --> + <parameter-number-input :parameter-name="parameterName" :parameter="parameter" + :help-id="parameterName + '-help'" :required="parameterRequired(parameterGroup, parameterName)" v-model="model[parameterName]" /> + </template> + <template v-else-if="parameter['type'] === 'boolean'"> + <!-- @vue-ignore --> + <parameter-boolean-input + :parameter-name="parameterName" + :parameter="parameter" + :help-id="parameterName + '-help'" + v-model="model[parameterName]" + /> + </template> + <template v-else-if="parameter['type'] === 'string'"> + <!-- @vue-ignore --> + <template v-if="parameter['enum']"> + <!-- @vue-ignore --> + <parameter-enum-input + :parameter-name="parameterName" + :parameter="parameter" + :required="parameterRequired(parameterGroup, parameterName)" + v-model="model[parameterName]" + /> + </template> + <!-- @vue-ignore --> <parameter-string-input v-else :parameter-name="parameterName" diff --git a/src/views/workflows/ArbitraryWorkflowView.vue b/src/views/workflows/ArbitraryWorkflowView.vue index a32fd64a807377857fe768b161aa864dd700a078..ff7589e1b776ae75e2de9864795743fbaddc0ab3 100644 --- a/src/views/workflows/ArbitraryWorkflowView.vue +++ b/src/views/workflows/ArbitraryWorkflowView.vue @@ -11,7 +11,10 @@ import type { WorkflowIn } from "@/client/workflow"; import { useWorkflowExecutionStore } from "@/stores/workflowExecutions"; import ParameterSchemaFormComponent from "@/components/parameter-schema/ParameterSchemaFormComponent.vue"; import BootstrapToast from "@/components/BootstrapToast.vue"; -import type { WorkflowParameters } from "@/types/WorkflowParameters"; +import type { + WorkflowMetaParameters, + WorkflowParameters, +} from "@/types/WorkflowParameters"; const props = defineProps<{ wid: string; @@ -94,10 +97,7 @@ watch( function startWorkflow( parameters: WorkflowParameters, - notes?: string, - logs_s3_path?: string, - debug_s3_path?: string, - provenance_s3_path?: string, + metaParameters: WorkflowMetaParameters, ) { if (workflowState.workflow) { errorToast?.hide(); @@ -106,9 +106,9 @@ function startWorkflow( .startDevExecution({ git_commit_hash: workflowState.workflow.git_commit_hash, parameters: parameters, - logs_s3_path: logs_s3_path ? logs_s3_path : undefined, - debug_s3_path: debug_s3_path ? debug_s3_path : undefined, - provenance_s3_path: provenance_s3_path ? provenance_s3_path : undefined, + logs_s3_path: metaParameters.logs_s3_path, + debug_s3_path: metaParameters.debug_s3_path, + provenance_s3_path: metaParameters.provenance_s3_path, repository_url: workflowState.workflow.repository_url, token: workflowState.workflow.token ?? undefined, mode: diff --git a/src/views/workflows/StartWorkflowView.vue b/src/views/workflows/StartWorkflowView.vue index df2f89e29afcc73b3fd3bcefb77027d39aa9eb74..e6fde26d083723352bb271517dadc2c2b077585f 100644 --- a/src/views/workflows/StartWorkflowView.vue +++ b/src/views/workflows/StartWorkflowView.vue @@ -8,7 +8,10 @@ import { Toast } from "bootstrap"; import { useWorkflowExecutionStore } from "@/stores/workflowExecutions"; import BootstrapToast from "@/components/BootstrapToast.vue"; import { useWorkflowStore } from "@/stores/workflows"; -import type { WorkflowParameters } from "@/types/WorkflowParameters"; +import type { + WorkflowMetaParameters, + WorkflowParameters, +} from "@/types/WorkflowParameters"; const executionRepository = useWorkflowExecutionStore(); const workflowRepository = useWorkflowStore(); @@ -69,10 +72,7 @@ function downloadParameterSchema() { function startWorkflow( parameters: WorkflowParameters, - notes?: string, - logs_s3_path?: string, - debug_s3_path?: string, - provenance_s3_path?: string, + metaParameters: WorkflowMetaParameters, ) { if (props.versionId) { versionState.workflowExecutionError = undefined; @@ -81,12 +81,10 @@ function startWorkflow( .startExecution({ workflow_version_id: props.versionId, parameters: parameters, - notes: notes, - logs_s3_path: logs_s3_path?.length ?? 0 > 0 ? logs_s3_path : undefined, - debug_s3_path: - debug_s3_path?.length ?? 0 > 0 ? debug_s3_path : undefined, - provenance_s3_path: - provenance_s3_path?.length ?? 0 > 0 ? provenance_s3_path : undefined, + notes: metaParameters.notes, + logs_s3_path: metaParameters.logs_s3_path, + debug_s3_path: metaParameters.debug_s3_path, + provenance_s3_path: metaParameters.provenance_s3_path, mode_id: props.workflowModeId, }) .then(() => {