From 700c991072eb2dc636d83f051d2d6cd034bdf433 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Mon, 16 Mar 2026 20:58:50 -0400 Subject: [PATCH] Add post job action support to PickValueModule Backend: PJA round-trip (from_dict, from_workflow_step, save_to_step, get_post_job_actions) and execution via ActionBox.execute_on_mapped_over. Added execute_on_mapped_over to ChangeDatatypeAction and ColumnSetAction in post.py to enable jobless PJA execution. Frontend: FormPickValue renders FormSection for PJA UI (rename, change datatype, tags, columns). Wired through FormDefault and NodeInspector. Framework tests: 4 workflow tests for change_datatype, rename, add_tag, and multi-PJA (all three combined). Co-Authored-By: Claude Opus 4.6 (1M context) --- .../Workflow/Editor/Forms/FormDefault.vue | 13 ++++- .../Editor/Forms/FormPickValue.test.ts | 2 +- .../Workflow/Editor/Forms/FormPickValue.vue | 38 +++++++++++++-- .../Workflow/Editor/NodeInspector.vue | 1 + lib/galaxy/job_execution/actions/post.py | 45 +++++++++++++---- lib/galaxy/workflow/modules.py | 48 +++++++++++++++++++ .../pick_value_add_tag.gxwf-tests.yml | 15 ++++++ .../workflow/pick_value_add_tag.gxwf.yml | 29 +++++++++++ .../pick_value_change_datatype.gxwf-tests.yml | 17 +++++++ .../pick_value_change_datatype.gxwf.yml | 28 +++++++++++ .../pick_value_multi_pja.gxwf-tests.yml | 17 +++++++ .../workflow/pick_value_multi_pja.gxwf.yml | 31 ++++++++++++ .../workflow/pick_value_rename.gxwf-tests.yml | 15 ++++++ .../workflow/pick_value_rename.gxwf.yml | 28 +++++++++++ 14 files changed, 310 insertions(+), 17 deletions(-) create mode 100644 lib/galaxy_test/workflow/pick_value_add_tag.gxwf-tests.yml create mode 100644 lib/galaxy_test/workflow/pick_value_add_tag.gxwf.yml create mode 100644 lib/galaxy_test/workflow/pick_value_change_datatype.gxwf-tests.yml create mode 100644 lib/galaxy_test/workflow/pick_value_change_datatype.gxwf.yml create mode 100644 lib/galaxy_test/workflow/pick_value_multi_pja.gxwf-tests.yml create mode 100644 lib/galaxy_test/workflow/pick_value_multi_pja.gxwf.yml create mode 100644 lib/galaxy_test/workflow/pick_value_rename.gxwf-tests.yml create mode 100644 lib/galaxy_test/workflow/pick_value_rename.gxwf.yml diff --git a/client/src/components/Workflow/Editor/Forms/FormDefault.vue b/client/src/components/Workflow/Editor/Forms/FormDefault.vue index 205f9687206..98a202d35c1 100644 --- a/client/src/components/Workflow/Editor/Forms/FormDefault.vue +++ b/client/src/components/Workflow/Editor/Forms/FormDefault.vue @@ -46,7 +46,11 @@ + :datatypes="datatypes" + :node-inputs="stepInputs" + :post-job-actions="postJobActions" + @onChange="onChange" + @onChangePostJobActions="onChangePostJobActions" /> { @@ -132,6 +138,9 @@ function onEditSubworkflow() { function onUpgradeSubworkflow() { emit("onAttemptRefactor", [{ action_type: "upgrade_subworkflow", step: { order_index: stepId.value } }]); } +function onChangePostJobActions(postJobActions: unknown) { + emit("onChangePostJobActions", stepId.value, postJobActions); +} // keeps the component from emitting the onCreate change event const initialChange = ref(true); diff --git a/client/src/components/Workflow/Editor/Forms/FormPickValue.test.ts b/client/src/components/Workflow/Editor/Forms/FormPickValue.test.ts index e1a6ae747b4..0b9eaa94e43 100644 --- a/client/src/components/Workflow/Editor/Forms/FormPickValue.test.ts +++ b/client/src/components/Workflow/Editor/Forms/FormPickValue.test.ts @@ -35,7 +35,7 @@ function makeStep(overrides: Partial = {}): Step { } function mountPickValue(step?: Step): Wrapper { - return shallowMount(FormPickValue, { + return shallowMount(FormPickValue as any, { propsData: { step: step ?? makeStep(), }, diff --git a/client/src/components/Workflow/Editor/Forms/FormPickValue.vue b/client/src/components/Workflow/Editor/Forms/FormPickValue.vue index de379589288..f97fa4b40f3 100644 --- a/client/src/components/Workflow/Editor/Forms/FormPickValue.vue +++ b/client/src/components/Workflow/Editor/Forms/FormPickValue.vue @@ -1,20 +1,33 @@