diff --git a/client/galaxy/scripts/mvc/workflow/workflow-forms.js b/client/galaxy/scripts/mvc/workflow/workflow-forms.js index 1901c3043ad..b260f558bd0 100644 --- a/client/galaxy/scripts/mvc/workflow/workflow-forms.js +++ b/client/galaxy/scripts/mvc/workflow/workflow-forms.js @@ -103,7 +103,7 @@ var Tool = Backbone.View.extend({ } }); Utils.deepeach(options.inputs, input => { - if (input.type === "conditional"){ + if (input.type === "conditional") { input.test_param.collapsible_value = undefined; } }); @@ -153,7 +153,6 @@ function _addLabelAnnotation(form) { }); } - /** Visit input nodes and enrich by name/value pairs from server data */ function _visit(head, head_list, output_id, options) { head_list = head_list || []; @@ -184,7 +183,7 @@ function _visit(head, head_list, output_id, options) { } } } - if (input.inputs){ + if (input.inputs) { _visit(input, head_list.slice(0), output_id, options); } } @@ -223,8 +222,7 @@ function _makeSection(output_id, datatypes, options) { label: "Label", type: "text", value: ((output = options.node.getWorkflowOutput(output_id)) && output.label) || "", - help: - "This will provide a short name to describe the output - this must be unique across workflows.", + help: "This will provide a short name to describe the output - this must be unique across workflows.", onchange: function(new_value) { options.workflow.attemptUpdateOutputLabel(options.node, output_id, new_value); } @@ -331,7 +329,6 @@ function _addSections(form) { var post_job_actions = node.post_job_actions; var output_id = node.output_terminals && Object.keys(node.output_terminals)[0]; - if (output_id) { inputs.push({ name: `pja__${output_id}__EmailAction`, diff --git a/static/maps/mvc/workflow/workflow-forms.js.map b/static/maps/mvc/workflow/workflow-forms.js.map index 770f964a046..b0e06224f9f 100644 --- a/static/maps/mvc/workflow/workflow-forms.js.map +++ b/static/maps/mvc/workflow/workflow-forms.js.map @@ -1 +1 @@ -{"version":3,"sources":["mvc/workflow/workflow-forms.js"],"names":["_addLabelAnnotation","deepeach","options","form","input","type","test_param","node","inputs","unshift","_addSections","label","fixed","value","annotation","area","help","workflow","name","i","nodes","n","new_label","id","duplicate","data","match","element_list","input_id","model","set","trigger","input_element","push","head","action","_visit","head_list","pja_arg","payload","p_id","output_id","d","post_job_actions","j","action_arguments","slice","_makeSection","datatypes","input_terminal_names","key","extensions","0","1","input_terminals","b","a","output","title","flat","getWorkflowOutput","input_config","new_value","attemptUpdateOutputLabel","onchange","ignore","join","attributes","String","host","location","Boolean","Default","output_terminals","Backbone","View","extend","initialize","self","this","_formView2","default","_utils2","merge","request","url","Galaxy","root","content_id","create","update_field_data","success","_toolFormBase2","text_enable","text_disable","initial_errors","cls","initialmodel","process","_customize","resolve","get","postchange","tool_id","version","$","current_state","buildmodel","config_form","tool_version","emit","debug","response","error","indexOf","info","textify","__class__","collapsible_value","is_workflow","length","undefined","Tool"],"mappings":"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","file":"../../../scripts/mvc/workflow/workflow-forms.js","sourcesContent":["import Utils from \"utils/utils\";\nimport Form from \"mvc/form/form-view\";\nimport ToolFormBase from \"mvc/tool/tool-form-base\";\n/** Default form wrapper for non-tool modules in the workflow editor. */\nvar Default = Backbone.View.extend({\n initialize: function(options) {\n var self = this;\n var node = options.node;\n this.form = new Form(\n Utils.merge(options, {\n onchange: function() {\n Utils.request({\n type: \"POST\",\n url: `${Galaxy.root}api/workflows/build_module`,\n data: {\n id: node.id,\n type: node.type,\n content_id: node.content_id,\n inputs: self.form.data.create()\n },\n success: function(data) {\n node.update_field_data(data);\n }\n });\n }\n })\n );\n _addLabelAnnotation(this.form);\n this.form.render();\n }\n});\n\n/** Tool form wrapper for the workflow editor. */\nvar Tool = Backbone.View.extend({\n initialize: function(options) {\n var self = this;\n var node = options.node;\n this.form = new ToolFormBase(\n Utils.merge(options, {\n text_enable: \"Set in Advance\",\n text_disable: \"Set at Runtime\",\n narrow: true,\n initial_errors: true,\n cls: \"ui-portlet-narrow\",\n initialmodel: function(process, form) {\n self._customize(form);\n process.resolve();\n },\n buildmodel: function(process, form) {\n form.model.get(\"postchange\")(process, form);\n },\n postchange: function(process, form) {\n var options = form.model.attributes;\n var current_state = {\n tool_id: options.id,\n tool_version: options.version,\n type: \"tool\",\n inputs: $.extend(true, {}, form.data.create())\n };\n Galaxy.emit.debug(\"tool-form-workflow::postchange()\", \"Sending current state.\", current_state);\n Utils.request({\n type: \"POST\",\n url: `${Galaxy.root}api/workflows/build_module`,\n data: current_state,\n success: function(data) {\n form.model.set(data.config_form);\n self._customize(form);\n form.update(data.config_form);\n form.errors(data.config_form);\n // This hasn't modified the workflow, just returned\n // module information for the tool to update the workflow\n // state stored on the client with. User needs to save\n // for this to take effect.\n node.update_field_data(data);\n Galaxy.emit.debug(\"tool-form-workflow::postchange()\", \"Received new model.\", data);\n process.resolve();\n },\n error: function(response) {\n Galaxy.emit.debug(\"tool-form-workflow::postchange()\", \"Refresh request failed.\", response);\n process.reject();\n }\n });\n }\n })\n );\n },\n\n _customize: function(form) {\n var options = form.model.attributes;\n Utils.deepeach(options.inputs, input => {\n if (input.type) {\n if ([\"data\", \"data_collection\"].indexOf(input.type) != -1) {\n input.type = \"hidden\";\n input.info = `Data input '${input.name}' (${Utils.textify(input.extensions)})`;\n input.value = { __class__: \"RuntimeValue\" };\n } else if (!input.fixed) {\n input.collapsible_value = {\n __class__: \"RuntimeValue\"\n };\n input.is_workflow =\n (input.options && input.options.length === 0) || [\"integer\", \"float\"].indexOf(input.type) != -1;\n }\n }\n });\n Utils.deepeach(options.inputs, input => {\n if (input.type === \"conditional\"){\n input.test_param.collapsible_value = undefined;\n }\n });\n _addSections(form);\n _addLabelAnnotation(form);\n }\n});\n\n/** Augments the module form definition by adding label and annotation fields */\nfunction _addLabelAnnotation(form) {\n var options = form.model.attributes;\n var workflow = options.workflow;\n var node = options.node;\n options.inputs.unshift({\n type: \"text\",\n name: \"__annotation\",\n label: \"Annotation\",\n fixed: true,\n value: node.annotation,\n area: true,\n help: \"Add an annotation or notes to this step. Annotations are available when a workflow is viewed.\"\n });\n options.inputs.unshift({\n type: \"text\",\n name: \"__label\",\n label: \"Label\",\n value: node.label,\n help: \"Add a step label.\",\n fixed: true,\n onchange: function(new_label) {\n var duplicate = false;\n for (var i in workflow.nodes) {\n var n = workflow.nodes[i];\n if (n.label && n.label == new_label && n.id != node.id) {\n duplicate = true;\n break;\n }\n }\n var input_id = form.data.match(\"__label\");\n var input_element = form.element_list[input_id];\n input_element.model.set(\n \"error_text\",\n duplicate && \"Duplicate label. Please fix this before saving the workflow.\"\n );\n form.trigger(\"change\");\n }\n });\n}\n\n\n/** Visit input nodes and enrich by name/value pairs from server data */\nfunction _visit(head, head_list, output_id, options) {\n head_list = head_list || [];\n head_list.push(head);\n for (var i in head.inputs) {\n var input = head.inputs[i];\n var action = input.action;\n if (action) {\n input.name = `pja__${output_id}__${input.action}`;\n if (input.pja_arg) {\n input.name += `__${input.pja_arg}`;\n }\n if (input.payload) {\n for (var p_id in input.payload) {\n input.payload[`${input.name}__${p_id}`] = input.payload[p_id];\n delete input.payload[p_id];\n }\n }\n var d = options.node.post_job_actions[input.action + output_id];\n if (d) {\n for (var j in head_list) {\n head_list[j].expanded = true;\n }\n if (input.pja_arg) {\n input.value = (d.action_arguments && d.action_arguments[input.pja_arg]) || input.value;\n } else {\n input.value = \"true\";\n }\n }\n }\n if (input.inputs){\n _visit(input, head_list.slice(0), output_id, options);\n }\n }\n}\n\n/** Builds sub section with step actions/annotation */\nfunction _makeSection(output_id, datatypes, options) {\n var extensions = [];\n var input_terminal_names = [];\n for (var key in datatypes) {\n extensions.push({ 0: datatypes[key], 1: datatypes[key] });\n }\n for (key in options.node.input_terminals) {\n input_terminal_names.push(options.node.input_terminals[key].name);\n }\n extensions.sort((a, b) => (a.label > b.label ? 1 : a.label < b.label ? -1 : 0));\n extensions.unshift({\n 0: \"Sequences\",\n 1: \"Sequences\"\n });\n extensions.unshift({\n 0: \"Roadmaps\",\n 1: \"Roadmaps\"\n });\n extensions.unshift({\n 0: \"Leave unchanged\",\n 1: \"__empty__\"\n });\n var output;\n var input_config = {\n title: `Configure Output: '${output_id}'`,\n type: \"section\",\n flat: true,\n inputs: [\n {\n label: \"Label\",\n type: \"text\",\n value: ((output = options.node.getWorkflowOutput(output_id)) && output.label) || \"\",\n help:\n \"This will provide a short name to describe the output - this must be unique across workflows.\",\n onchange: function(new_value) {\n options.workflow.attemptUpdateOutputLabel(options.node, output_id, new_value);\n }\n },\n {\n action: \"RenameDatasetAction\",\n pja_arg: \"newname\",\n label: \"Rename dataset\",\n type: \"text\",\n value: \"\",\n ignore: \"\",\n help: `This action will rename the output dataset. Click here for more information. Valid inputs are: ${input_terminal_names.join(\n \", \"\n )}.`\n },\n {\n action: \"ChangeDatatypeAction\",\n pja_arg: \"newtype\",\n label: \"Change datatype\",\n type: \"select\",\n ignore: \"__empty__\",\n value: \"__empty__\",\n options: extensions,\n help: \"This action will change the datatype of the output to the indicated value.\"\n },\n {\n action: \"TagDatasetAction\",\n pja_arg: \"tags\",\n label: \"Add Tags\",\n type: \"text\",\n value: \"\",\n ignore: \"\",\n help: \"This action will set tags for the dataset.\"\n },\n {\n action: \"RemoveTagDatasetAction\",\n pja_arg: \"tags\",\n label: \"Remove Tags\",\n type: \"text\",\n value: \"\",\n ignore: \"\",\n help: \"This action will remove tags for the dataset.\"\n },\n {\n title: \"Assign columns\",\n type: \"section\",\n flat: true,\n inputs: [\n {\n action: \"ColumnSetAction\",\n pja_arg: \"chromCol\",\n label: \"Chrom column\",\n type: \"integer\",\n value: \"\",\n ignore: \"\"\n },\n {\n action: \"ColumnSetAction\",\n pja_arg: \"startCol\",\n label: \"Start column\",\n type: \"integer\",\n value: \"\",\n ignore: \"\"\n },\n {\n action: \"ColumnSetAction\",\n pja_arg: \"endCol\",\n label: \"End column\",\n type: \"integer\",\n value: \"\",\n ignore: \"\"\n },\n {\n action: \"ColumnSetAction\",\n pja_arg: \"strandCol\",\n label: \"Strand column\",\n type: \"integer\",\n value: \"\",\n ignore: \"\"\n },\n {\n action: \"ColumnSetAction\",\n pja_arg: \"nameCol\",\n label: \"Name column\",\n type: \"integer\",\n value: \"\",\n ignore: \"\"\n }\n ],\n help: \"This action will set column assignments in the output dataset. Blank fields are ignored.\"\n }\n ]\n };\n _visit(input_config, [], output_id, options);\n return input_config;\n}\n\n/** Builds all sub sections */\nfunction _addSections(form) {\n var options = form.model.attributes;\n var inputs = options.inputs;\n var datatypes = options.datatypes;\n var node = options.node;\n var post_job_actions = node.post_job_actions;\n var output_id = node.output_terminals && Object.keys(node.output_terminals)[0];\n\n\n if (output_id) {\n inputs.push({\n name: `pja__${output_id}__EmailAction`,\n label: \"Email notification\",\n type: \"boolean\",\n value: String(Boolean(post_job_actions[`EmailAction${output_id}`])),\n ignore: \"false\",\n help: \"An email notification will be sent when the job has completed.\",\n payload: {\n host: window.location.host\n }\n });\n inputs.push({\n name: `pja__${output_id}__DeleteIntermediatesAction`,\n label: \"Output cleanup\",\n type: \"boolean\",\n value: String(Boolean(post_job_actions[`DeleteIntermediatesAction${output_id}`])),\n ignore: \"false\",\n help:\n \"Upon completion of this step, delete non-starred outputs from completed workflow steps if they are no longer required as inputs.\"\n });\n for (var i in node.output_terminals) {\n inputs.push(_makeSection(i, datatypes, options));\n }\n }\n}\n\nexport default {\n Default: Default,\n Tool: Tool\n};\n"]} \ No newline at end of file +{"version":3,"sources":["mvc/workflow/workflow-forms.js"],"names":["_addLabelAnnotation","deepeach","options","form","input","type","test_param","node","inputs","unshift","_addSections","label","fixed","value","annotation","area","help","workflow","name","i","nodes","n","new_label","id","duplicate","data","match","element_list","input_id","model","set","trigger","_visit","head","input_element","action","output_id","head_list","pja_arg","payload","p_id","post_job_actions","d","expanded","action_arguments","_makeSection","datatypes","extensions","key","push","0","1","input_terminals","input_terminal_names","a","b","output","input_config","flat","getWorkflowOutput","new_value","title","onchange","join","ignore","output_terminals","Object","keys","host","String","Boolean","location","Default","Backbone","View","extend","initialize","self","this","_formView2","default","_utils2","merge","request","url","Galaxy","root","content_id","create","update_field_data","success","_toolFormBase2","text_enable","text_disable","initial_errors","cls","initialmodel","process","_customize","resolve","get","postchange","attributes","tool_id","version","$","current_state","buildmodel","config_form","tool_version","emit","debug","response","error","indexOf","info","textify","__class__","collapsible_value","is_workflow","length","undefined","Tool"],"mappings":"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","file":"../../../scripts/mvc/workflow/workflow-forms.js","sourcesContent":["import Utils from \"utils/utils\";\nimport Form from \"mvc/form/form-view\";\nimport ToolFormBase from \"mvc/tool/tool-form-base\";\n/** Default form wrapper for non-tool modules in the workflow editor. */\nvar Default = Backbone.View.extend({\n initialize: function(options) {\n var self = this;\n var node = options.node;\n this.form = new Form(\n Utils.merge(options, {\n onchange: function() {\n Utils.request({\n type: \"POST\",\n url: `${Galaxy.root}api/workflows/build_module`,\n data: {\n id: node.id,\n type: node.type,\n content_id: node.content_id,\n inputs: self.form.data.create()\n },\n success: function(data) {\n node.update_field_data(data);\n }\n });\n }\n })\n );\n _addLabelAnnotation(this.form);\n this.form.render();\n }\n});\n\n/** Tool form wrapper for the workflow editor. */\nvar Tool = Backbone.View.extend({\n initialize: function(options) {\n var self = this;\n var node = options.node;\n this.form = new ToolFormBase(\n Utils.merge(options, {\n text_enable: \"Set in Advance\",\n text_disable: \"Set at Runtime\",\n narrow: true,\n initial_errors: true,\n cls: \"ui-portlet-narrow\",\n initialmodel: function(process, form) {\n self._customize(form);\n process.resolve();\n },\n buildmodel: function(process, form) {\n form.model.get(\"postchange\")(process, form);\n },\n postchange: function(process, form) {\n var options = form.model.attributes;\n var current_state = {\n tool_id: options.id,\n tool_version: options.version,\n type: \"tool\",\n inputs: $.extend(true, {}, form.data.create())\n };\n Galaxy.emit.debug(\"tool-form-workflow::postchange()\", \"Sending current state.\", current_state);\n Utils.request({\n type: \"POST\",\n url: `${Galaxy.root}api/workflows/build_module`,\n data: current_state,\n success: function(data) {\n form.model.set(data.config_form);\n self._customize(form);\n form.update(data.config_form);\n form.errors(data.config_form);\n // This hasn't modified the workflow, just returned\n // module information for the tool to update the workflow\n // state stored on the client with. User needs to save\n // for this to take effect.\n node.update_field_data(data);\n Galaxy.emit.debug(\"tool-form-workflow::postchange()\", \"Received new model.\", data);\n process.resolve();\n },\n error: function(response) {\n Galaxy.emit.debug(\"tool-form-workflow::postchange()\", \"Refresh request failed.\", response);\n process.reject();\n }\n });\n }\n })\n );\n },\n\n _customize: function(form) {\n var options = form.model.attributes;\n Utils.deepeach(options.inputs, input => {\n if (input.type) {\n if ([\"data\", \"data_collection\"].indexOf(input.type) != -1) {\n input.type = \"hidden\";\n input.info = `Data input '${input.name}' (${Utils.textify(input.extensions)})`;\n input.value = { __class__: \"RuntimeValue\" };\n } else if (!input.fixed) {\n input.collapsible_value = {\n __class__: \"RuntimeValue\"\n };\n input.is_workflow =\n (input.options && input.options.length === 0) || [\"integer\", \"float\"].indexOf(input.type) != -1;\n }\n }\n });\n Utils.deepeach(options.inputs, input => {\n if (input.type === \"conditional\") {\n input.test_param.collapsible_value = undefined;\n }\n });\n _addSections(form);\n _addLabelAnnotation(form);\n }\n});\n\n/** Augments the module form definition by adding label and annotation fields */\nfunction _addLabelAnnotation(form) {\n var options = form.model.attributes;\n var workflow = options.workflow;\n var node = options.node;\n options.inputs.unshift({\n type: \"text\",\n name: \"__annotation\",\n label: \"Annotation\",\n fixed: true,\n value: node.annotation,\n area: true,\n help: \"Add an annotation or notes to this step. Annotations are available when a workflow is viewed.\"\n });\n options.inputs.unshift({\n type: \"text\",\n name: \"__label\",\n label: \"Label\",\n value: node.label,\n help: \"Add a step label.\",\n fixed: true,\n onchange: function(new_label) {\n var duplicate = false;\n for (var i in workflow.nodes) {\n var n = workflow.nodes[i];\n if (n.label && n.label == new_label && n.id != node.id) {\n duplicate = true;\n break;\n }\n }\n var input_id = form.data.match(\"__label\");\n var input_element = form.element_list[input_id];\n input_element.model.set(\n \"error_text\",\n duplicate && \"Duplicate label. Please fix this before saving the workflow.\"\n );\n form.trigger(\"change\");\n }\n });\n}\n\n/** Visit input nodes and enrich by name/value pairs from server data */\nfunction _visit(head, head_list, output_id, options) {\n head_list = head_list || [];\n head_list.push(head);\n for (var i in head.inputs) {\n var input = head.inputs[i];\n var action = input.action;\n if (action) {\n input.name = `pja__${output_id}__${input.action}`;\n if (input.pja_arg) {\n input.name += `__${input.pja_arg}`;\n }\n if (input.payload) {\n for (var p_id in input.payload) {\n input.payload[`${input.name}__${p_id}`] = input.payload[p_id];\n delete input.payload[p_id];\n }\n }\n var d = options.node.post_job_actions[input.action + output_id];\n if (d) {\n for (var j in head_list) {\n head_list[j].expanded = true;\n }\n if (input.pja_arg) {\n input.value = (d.action_arguments && d.action_arguments[input.pja_arg]) || input.value;\n } else {\n input.value = \"true\";\n }\n }\n }\n if (input.inputs) {\n _visit(input, head_list.slice(0), output_id, options);\n }\n }\n}\n\n/** Builds sub section with step actions/annotation */\nfunction _makeSection(output_id, datatypes, options) {\n var extensions = [];\n var input_terminal_names = [];\n for (var key in datatypes) {\n extensions.push({ 0: datatypes[key], 1: datatypes[key] });\n }\n for (key in options.node.input_terminals) {\n input_terminal_names.push(options.node.input_terminals[key].name);\n }\n extensions.sort((a, b) => (a.label > b.label ? 1 : a.label < b.label ? -1 : 0));\n extensions.unshift({\n 0: \"Sequences\",\n 1: \"Sequences\"\n });\n extensions.unshift({\n 0: \"Roadmaps\",\n 1: \"Roadmaps\"\n });\n extensions.unshift({\n 0: \"Leave unchanged\",\n 1: \"__empty__\"\n });\n var output;\n var input_config = {\n title: `Configure Output: '${output_id}'`,\n type: \"section\",\n flat: true,\n inputs: [\n {\n label: \"Label\",\n type: \"text\",\n value: ((output = options.node.getWorkflowOutput(output_id)) && output.label) || \"\",\n help: \"This will provide a short name to describe the output - this must be unique across workflows.\",\n onchange: function(new_value) {\n options.workflow.attemptUpdateOutputLabel(options.node, output_id, new_value);\n }\n },\n {\n action: \"RenameDatasetAction\",\n pja_arg: \"newname\",\n label: \"Rename dataset\",\n type: \"text\",\n value: \"\",\n ignore: \"\",\n help: `This action will rename the output dataset. Click here for more information. Valid inputs are: ${input_terminal_names.join(\n \", \"\n )}.`\n },\n {\n action: \"ChangeDatatypeAction\",\n pja_arg: \"newtype\",\n label: \"Change datatype\",\n type: \"select\",\n ignore: \"__empty__\",\n value: \"__empty__\",\n options: extensions,\n help: \"This action will change the datatype of the output to the indicated value.\"\n },\n {\n action: \"TagDatasetAction\",\n pja_arg: \"tags\",\n label: \"Add Tags\",\n type: \"text\",\n value: \"\",\n ignore: \"\",\n help: \"This action will set tags for the dataset.\"\n },\n {\n action: \"RemoveTagDatasetAction\",\n pja_arg: \"tags\",\n label: \"Remove Tags\",\n type: \"text\",\n value: \"\",\n ignore: \"\",\n help: \"This action will remove tags for the dataset.\"\n },\n {\n title: \"Assign columns\",\n type: \"section\",\n flat: true,\n inputs: [\n {\n action: \"ColumnSetAction\",\n pja_arg: \"chromCol\",\n label: \"Chrom column\",\n type: \"integer\",\n value: \"\",\n ignore: \"\"\n },\n {\n action: \"ColumnSetAction\",\n pja_arg: \"startCol\",\n label: \"Start column\",\n type: \"integer\",\n value: \"\",\n ignore: \"\"\n },\n {\n action: \"ColumnSetAction\",\n pja_arg: \"endCol\",\n label: \"End column\",\n type: \"integer\",\n value: \"\",\n ignore: \"\"\n },\n {\n action: \"ColumnSetAction\",\n pja_arg: \"strandCol\",\n label: \"Strand column\",\n type: \"integer\",\n value: \"\",\n ignore: \"\"\n },\n {\n action: \"ColumnSetAction\",\n pja_arg: \"nameCol\",\n label: \"Name column\",\n type: \"integer\",\n value: \"\",\n ignore: \"\"\n }\n ],\n help: \"This action will set column assignments in the output dataset. Blank fields are ignored.\"\n }\n ]\n };\n _visit(input_config, [], output_id, options);\n return input_config;\n}\n\n/** Builds all sub sections */\nfunction _addSections(form) {\n var options = form.model.attributes;\n var inputs = options.inputs;\n var datatypes = options.datatypes;\n var node = options.node;\n var post_job_actions = node.post_job_actions;\n var output_id = node.output_terminals && Object.keys(node.output_terminals)[0];\n\n if (output_id) {\n inputs.push({\n name: `pja__${output_id}__EmailAction`,\n label: \"Email notification\",\n type: \"boolean\",\n value: String(Boolean(post_job_actions[`EmailAction${output_id}`])),\n ignore: \"false\",\n help: \"An email notification will be sent when the job has completed.\",\n payload: {\n host: window.location.host\n }\n });\n inputs.push({\n name: `pja__${output_id}__DeleteIntermediatesAction`,\n label: \"Output cleanup\",\n type: \"boolean\",\n value: String(Boolean(post_job_actions[`DeleteIntermediatesAction${output_id}`])),\n ignore: \"false\",\n help:\n \"Upon completion of this step, delete non-starred outputs from completed workflow steps if they are no longer required as inputs.\"\n });\n for (var i in node.output_terminals) {\n inputs.push(_makeSection(i, datatypes, options));\n }\n }\n}\n\nexport default {\n Default: Default,\n Tool: Tool\n};\n"]} \ No newline at end of file