From 07a92fd3ef084a6d7cbe27199d281e534e35cec1 Mon Sep 17 00:00:00 2001 From: guerler Date: Thu, 9 Feb 2017 12:41:27 -0500 Subject: [PATCH 01/26] Remove tool_model usage from client --- client/galaxy/scripts/mvc/tool/tool-form-workflow.js | 4 ++-- lib/galaxy/webapps/galaxy/api/workflows.py | 1 - static/maps/mvc/tool/tool-form-workflow.js.map | 2 +- static/scripts/mvc/tool/tool-form-workflow.js | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/client/galaxy/scripts/mvc/tool/tool-form-workflow.js b/client/galaxy/scripts/mvc/tool/tool-form-workflow.js index 914065bf9f8..7dee1efb827 100644 --- a/client/galaxy/scripts/mvc/tool/tool-form-workflow.js +++ b/client/galaxy/scripts/mvc/tool/tool-form-workflow.js @@ -46,8 +46,8 @@ define( [ 'utils/utils', 'mvc/tool/tool-form-base' ], url : Galaxy.root + 'api/workflows/build_module', data : current_state, success : function( data ) { - form.update( data.tool_model ); - form.errors( data.tool_model ); + form.update( data.config_form ); + form.errors( data.config_form ); // This hasn't modified the workflow, just returned // module information for the tool to update the workflow // state stored on the client with. User needs to save diff --git a/lib/galaxy/webapps/galaxy/api/workflows.py b/lib/galaxy/webapps/galaxy/api/workflows.py index 04e381fafb3..315cc89bb41 100644 --- a/lib/galaxy/webapps/galaxy/api/workflows.py +++ b/lib/galaxy/webapps/galaxy/api/workflows.py @@ -377,7 +377,6 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn tool_model = module.tool.to_json( trans, inputs, workflow_building_mode=True ) module.recover_state( tool_model[ 'state_inputs' ] ) return { - 'tool_model' : tool_model, 'tool_state' : module.get_state(), 'data_inputs' : module.get_data_inputs(), 'data_outputs' : module.get_data_outputs(), diff --git a/static/maps/mvc/tool/tool-form-workflow.js.map b/static/maps/mvc/tool/tool-form-workflow.js.map index 6815ff9b956..66c7d8478d5 100644 --- a/static/maps/mvc/tool/tool-form-workflow.js.map +++ b/static/maps/mvc/tool/tool-form-workflow.js.map @@ -1 +1 @@ -{"version":3,"file":"tool-form-workflow.js","sources":["../../../src/mvc/tool/tool-form-workflow.js"],"names":["define","Utils","ToolFormBase","View","Backbone","extend","initialize","options","self","this","workflow","node","setElement","post_job_actions","deepeach","inputs","input","type","indexOf","info","name","textify","extensions","value","__class__","collapsible_value","is_workflow","length","test_param","undefined","_makeSections","form","merge","text_enable","text_disable","narrow","initial_errors","sustain_version","cls","postchange","process","model","attributes","current_state","tool_id","id","tool_version","version","$","data","create","Galaxy","emit","debug","request","url","root","success","update","tool_model","errors","update_field_data","resolve","error","response","reject","$el","append","datatypes","push","label","area","help","annotation","output_id","output_terminals","Object","keys","String","Boolean","ignore","payload","host","window","location","i","_makeSection","visit","head","head_list","action","pja_arg","p_id","p","d","j","expanded","action_arguments","slice","input_terminal_names","key",1,"input_terminals","sort","a","b","unshift","input_config","title","flat","output","getWorkflowOutput","onchange","new_value","attemptUpdateOutputLabel","join"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tool-form-workflow.js","sources":["../../../src/mvc/tool/tool-form-workflow.js"],"names":["define","Utils","ToolFormBase","View","Backbone","extend","initialize","options","self","this","workflow","node","setElement","post_job_actions","deepeach","inputs","input","type","indexOf","info","name","textify","extensions","value","__class__","collapsible_value","is_workflow","length","test_param","undefined","_makeSections","form","merge","text_enable","text_disable","narrow","initial_errors","sustain_version","cls","postchange","process","model","attributes","current_state","tool_id","id","tool_version","version","$","data","create","Galaxy","emit","debug","request","url","root","success","update","config_form","errors","update_field_data","resolve","error","response","reject","$el","append","datatypes","push","label","area","help","annotation","output_id","output_terminals","Object","keys","String","Boolean","ignore","payload","host","window","location","i","_makeSection","visit","head","head_list","action","pja_arg","p_id","p","d","j","expanded","action_arguments","slice","input_terminal_names","key",1,"input_terminals","sort","a","b","unshift","input_config","title","flat","output","getWorkflowOutput","onchange","new_value","attemptUpdateOutputLabel","join"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/mvc/tool/tool-form-workflow.js b/static/scripts/mvc/tool/tool-form-workflow.js index cfe44a05445..26dadb61d77 100644 --- a/static/scripts/mvc/tool/tool-form-workflow.js +++ b/static/scripts/mvc/tool/tool-form-workflow.js @@ -1,2 +1,2 @@ -define(["utils/utils","mvc/tool/tool-form-base"],function(a,b){var c=Backbone.View.extend({initialize:function(c){var d=this;this.workflow=c.workflow,this.node=c.node,this.setElement("
"),this.node?(this.post_job_actions=this.node.post_job_actions||{},a.deepeach(c.inputs,function(b){b.type&&(-1!=["data","data_collection"].indexOf(b.type)?(b.type="hidden",b.info="Data input '"+b.name+"' ("+a.textify(b.extensions)+")",b.value={__class__:"RuntimeValue"}):(b.collapsible_value={__class__:"RuntimeValue"},b.is_workflow=b.options&&0==b.options.length||-1!=["integer","float"].indexOf(b.type)))}),a.deepeach(c.inputs,function(a){"conditional"==a.type&&(a.test_param.collapsible_value=void 0)}),this._makeSections(c),this.form=new b(a.merge(c,{text_enable:"Set in Advance",text_disable:"Set at Runtime",narrow:!0,initial_errors:!0,sustain_version:!0,cls:"ui-portlet-narrow",postchange:function(b,c){var e=c.model.attributes,f={tool_id:e.id,tool_version:e.version,inputs:$.extend(!0,{},c.data.create())};Galaxy.emit.debug("tool-form-workflow::postchange()","Sending current state.",f),a.request({type:"POST",url:Galaxy.root+"api/workflows/build_module",data:f,success:function(a){c.update(a.tool_model),c.errors(a.tool_model),d.node.update_field_data(a),Galaxy.emit.debug("tool-form-workflow::postchange()","Received new model.",a),b.resolve()},error:function(a){Galaxy.emit.debug("tool-form-workflow::postchange()","Refresh request failed.",a),b.reject()}})}})),this.$el.append(this.form.$el)):Galaxy.emit.debug("tool-form-workflow::initialize()","Node not found in workflow.")},_makeSections:function(a){var b=a.inputs,c=a.datatypes;b.push({label:"Annotation / Notes",name:"__annotation",type:"text",area:!0,help:"Add an annotation or note for this step. It will be shown with the workflow.",value:this.node.annotation});var d=this.node.output_terminals&&Object.keys(this.node.output_terminals)[0];if(d){b.push({name:"pja__"+d+"__EmailAction",label:"Email notification",type:"boolean",value:String(Boolean(this.post_job_actions["EmailAction"+d])),ignore:"false",help:"An email notification will be sent when the job has completed.",payload:{host:window.location.host}}),b.push({name:"pja__"+d+"__DeleteIntermediatesAction",label:"Output cleanup",type:"boolean",value:String(Boolean(this.post_job_actions["DeleteIntermediatesAction"+d])),ignore:"false",help:"Upon completion of this step, delete non-starred outputs from completed workflow steps if they are no longer required as inputs."});for(var e in this.node.output_terminals)b.push(this._makeSection(e,c))}},_makeSection:function(a,b){function c(b,e){e=e||[],e.push(b);for(var f in b.inputs){var g=b.inputs[f],h=g.action;if(h){if(g.name="pja__"+a+"__"+g.action,g.pja_arg&&(g.name+="__"+g.pja_arg),g.payload)for(var i in g.payload){var j=g.payload[i];g.payload[g.name+"__"+i]=j,delete j}var k=d.post_job_actions[g.action+a];if(k){for(var l in e)e[l].expanded=!0;g.value=g.pja_arg?k.action_arguments&&k.action_arguments[g.pja_arg]||g.value:"true"}}g.inputs&&c(g,e.slice(0))}}var d=this,e=[],f=[];for(key in b)e.push({0:b[key],1:b[key]});for(key in this.node.input_terminals)f.push(this.node.input_terminals[key].name);e.sort(function(a,b){return a.label>b.label?1:a.labelhere for more information. Valid inputs are: '+f.join(", ")+"."},{action:"ChangeDatatypeAction",pja_arg:"newtype",label:"Change datatype",type:"select",ignore:"__empty__",value:"__empty__",options:e,help:"This action will change the datatype of the output to the indicated value."},{action:"TagDatasetAction",pja_arg:"tags",label:"Tags",type:"text",value:"",ignore:"",help:"This action will set tags for the dataset."},{title:"Assign columns",type:"section",flat:!0,inputs:[{action:"ColumnSetAction",pja_arg:"chromCol",label:"Chrom column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"startCol",label:"Start column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"endCol",label:"End column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"strandCol",label:"Strand column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"nameCol",label:"Name column",type:"integer",value:"",ignore:""}],help:"This action will set column assignments in the output dataset. Blank fields are ignored."}]};return c(g),g}});return{View:c}}); +define(["utils/utils","mvc/tool/tool-form-base"],function(a,b){var c=Backbone.View.extend({initialize:function(c){var d=this;this.workflow=c.workflow,this.node=c.node,this.setElement("
"),this.node?(this.post_job_actions=this.node.post_job_actions||{},a.deepeach(c.inputs,function(b){b.type&&(-1!=["data","data_collection"].indexOf(b.type)?(b.type="hidden",b.info="Data input '"+b.name+"' ("+a.textify(b.extensions)+")",b.value={__class__:"RuntimeValue"}):(b.collapsible_value={__class__:"RuntimeValue"},b.is_workflow=b.options&&0==b.options.length||-1!=["integer","float"].indexOf(b.type)))}),a.deepeach(c.inputs,function(a){"conditional"==a.type&&(a.test_param.collapsible_value=void 0)}),this._makeSections(c),this.form=new b(a.merge(c,{text_enable:"Set in Advance",text_disable:"Set at Runtime",narrow:!0,initial_errors:!0,sustain_version:!0,cls:"ui-portlet-narrow",postchange:function(b,c){var e=c.model.attributes,f={tool_id:e.id,tool_version:e.version,inputs:$.extend(!0,{},c.data.create())};Galaxy.emit.debug("tool-form-workflow::postchange()","Sending current state.",f),a.request({type:"POST",url:Galaxy.root+"api/workflows/build_module",data:f,success:function(a){c.update(a.config_form),c.errors(a.config_form),d.node.update_field_data(a),Galaxy.emit.debug("tool-form-workflow::postchange()","Received new model.",a),b.resolve()},error:function(a){Galaxy.emit.debug("tool-form-workflow::postchange()","Refresh request failed.",a),b.reject()}})}})),this.$el.append(this.form.$el)):Galaxy.emit.debug("tool-form-workflow::initialize()","Node not found in workflow.")},_makeSections:function(a){var b=a.inputs,c=a.datatypes;b.push({label:"Annotation / Notes",name:"__annotation",type:"text",area:!0,help:"Add an annotation or note for this step. It will be shown with the workflow.",value:this.node.annotation});var d=this.node.output_terminals&&Object.keys(this.node.output_terminals)[0];if(d){b.push({name:"pja__"+d+"__EmailAction",label:"Email notification",type:"boolean",value:String(Boolean(this.post_job_actions["EmailAction"+d])),ignore:"false",help:"An email notification will be sent when the job has completed.",payload:{host:window.location.host}}),b.push({name:"pja__"+d+"__DeleteIntermediatesAction",label:"Output cleanup",type:"boolean",value:String(Boolean(this.post_job_actions["DeleteIntermediatesAction"+d])),ignore:"false",help:"Upon completion of this step, delete non-starred outputs from completed workflow steps if they are no longer required as inputs."});for(var e in this.node.output_terminals)b.push(this._makeSection(e,c))}},_makeSection:function(a,b){function c(b,e){e=e||[],e.push(b);for(var f in b.inputs){var g=b.inputs[f],h=g.action;if(h){if(g.name="pja__"+a+"__"+g.action,g.pja_arg&&(g.name+="__"+g.pja_arg),g.payload)for(var i in g.payload){var j=g.payload[i];g.payload[g.name+"__"+i]=j,delete j}var k=d.post_job_actions[g.action+a];if(k){for(var l in e)e[l].expanded=!0;g.value=g.pja_arg?k.action_arguments&&k.action_arguments[g.pja_arg]||g.value:"true"}}g.inputs&&c(g,e.slice(0))}}var d=this,e=[],f=[];for(key in b)e.push({0:b[key],1:b[key]});for(key in this.node.input_terminals)f.push(this.node.input_terminals[key].name);e.sort(function(a,b){return a.label>b.label?1:a.labelhere for more information. Valid inputs are: '+f.join(", ")+"."},{action:"ChangeDatatypeAction",pja_arg:"newtype",label:"Change datatype",type:"select",ignore:"__empty__",value:"__empty__",options:e,help:"This action will change the datatype of the output to the indicated value."},{action:"TagDatasetAction",pja_arg:"tags",label:"Tags",type:"text",value:"",ignore:"",help:"This action will set tags for the dataset."},{title:"Assign columns",type:"section",flat:!0,inputs:[{action:"ColumnSetAction",pja_arg:"chromCol",label:"Chrom column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"startCol",label:"Start column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"endCol",label:"End column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"strandCol",label:"Strand column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"nameCol",label:"Name column",type:"integer",value:"",ignore:""}],help:"This action will set column assignments in the output dataset. Blank fields are ignored."}]};return c(g),g}});return{View:c}}); //# sourceMappingURL=../../../maps/mvc/tool/tool-form-workflow.js.map \ No newline at end of file From 171655930aa44227d6b88709aac638dea77a6cd0 Mon Sep 17 00:00:00 2001 From: guerler Date: Thu, 9 Feb 2017 14:12:26 -0500 Subject: [PATCH 02/26] Move populate state to parameter handling module --- lib/galaxy/tools/__init__.py | 81 +------------------ lib/galaxy/tools/parameters/__init__.py | 78 ++++++++++++++++++ lib/galaxy/webapps/galaxy/api/lda_datasets.py | 3 +- lib/galaxy/webapps/galaxy/api/workflows.py | 6 +- .../galaxy/controllers/library_common.py | 3 +- 5 files changed, 89 insertions(+), 82 deletions(-) diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index c41ba29b113..6c16535edec 100755 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -46,6 +46,7 @@ from galaxy.tools.parameters import ( params_from_strings, params_to_incoming, params_to_strings, + populate_state, visit_input_values ) from galaxy.tools.parameters import output_collect @@ -1238,7 +1239,7 @@ class Tool( object, Dictifiable ): else: # Update state for all inputs on the current page taking new # values from `incoming`. - self.populate_state( request_context, self.inputs, expanded_incoming, params, errors ) + populate_state( request_context, self.inputs, expanded_incoming, params, errors ) # If the tool provides a `validate_input` hook, call it. validate_input = self.get_hook( 'validate_input' ) @@ -1834,7 +1835,7 @@ class Tool( object, Dictifiable ): # create tool state state_inputs = {} state_errors = {} - self.populate_state( request_context, self.inputs, params.__dict__, state_inputs, state_errors ) + populate_state( request_context, self.inputs, params.__dict__, state_inputs, state_errors ) # create tool model tool_model = self.to_dict( request_context ) @@ -1877,82 +1878,6 @@ class Tool( object, Dictifiable ): }) return tool_model - # populates state from incoming parameters - def populate_state( self, request_context, inputs, incoming, state, errors={}, prefix='', context=None ): - context = ExpressionContext( state, context ) - for input in inputs.values(): - state[ input.name ] = input.get_initial_value( request_context, context ) - key = prefix + input.name - group_state = state[ input.name ] - group_prefix = '%s|' % ( key ) - if input.type == 'repeat': - rep_index = 0 - del group_state[:] - while True: - rep_prefix = '%s_%d' % ( key, rep_index ) - if not any( incoming_key.startswith( rep_prefix ) for incoming_key in incoming.keys() ) and rep_index >= input.min: - break - if rep_index < input.max: - new_state = { '__index__' : rep_index } - group_state.append( new_state ) - self.populate_state( request_context, input.inputs, incoming, new_state, errors, prefix=rep_prefix + '|', context=context ) - rep_index += 1 - elif input.type == 'conditional': - if input.value_ref and not input.value_ref_in_group: - test_param_key = prefix + input.test_param.name - else: - test_param_key = group_prefix + input.test_param.name - test_param_value = incoming.get( test_param_key, group_state.get( input.test_param.name ) ) - value, error = check_param( request_context, input.test_param, test_param_value, context ) - if error: - errors[ test_param_key ] = error - else: - try: - current_case = input.get_current_case( value ) - group_state = state[ input.name ] = {} - self.populate_state( request_context, input.cases[ current_case ].inputs, incoming, group_state, errors, prefix=group_prefix, context=context ) - group_state[ '__current_case__' ] = current_case - except Exception: - errors[ test_param_key ] = 'The selected case is unavailable/invalid.' - pass - group_state[ input.test_param.name ] = value - elif input.type == 'section': - self.populate_state( request_context, input.inputs, incoming, group_state, errors, prefix=group_prefix, context=context ) - elif input.type == 'upload_dataset': - d_type = input.get_datatype( request_context, context=context ) - writable_files = d_type.writable_files - while len( group_state ) > len( writable_files ): - del group_state[ -1 ] - while len( writable_files ) > len( group_state ): - new_state = { '__index__' : len( group_state ) } - for upload_item in input.inputs.values(): - new_state[ upload_item.name ] = upload_item.get_initial_value( request_context, context ) - group_state.append( new_state ) - for i, rep_state in enumerate( group_state ): - rep_index = rep_state[ '__index__' ] - rep_prefix = '%s_%d|' % ( key, rep_index ) - self.populate_state( request_context, input.inputs, incoming, rep_state, errors, prefix=rep_prefix, context=context ) - else: - param_value = self._get_incoming_value( incoming, key, state.get( input.name ) ) - value, error = check_param( request_context, input, param_value, context ) - if error: - errors[ key ] = error - state[ input.name ] = value - - def _get_incoming_value( self, incoming, key, default ): - """ - Fetch value from incoming dict directly or check special nginx upload - created variants of this key. - """ - if '__' + key + '__is_composite' in incoming: - composite_keys = incoming[ '__' + key + '__keys' ].split() - value = dict() - for composite_key in composite_keys: - value[ composite_key ] = incoming[ key + '_' + composite_key ] - return value - else: - return incoming.get( key, default ) - def _get_job_remap( self, job): if job: if job.state == job.states.ERROR: diff --git a/lib/galaxy/tools/parameters/__init__.py b/lib/galaxy/tools/parameters/__init__.py index 87e5d473c81..8aad6065578 100644 --- a/lib/galaxy/tools/parameters/__init__.py +++ b/lib/galaxy/tools/parameters/__init__.py @@ -214,3 +214,81 @@ def update_param( prefixed_name, input_values, new_value ): update_param( match.group( 1 ), input_values[ key ], new_value ) elif prefixed_name == key: input_values[ key ] = new_value + +def populate_state( request_context, inputs, incoming, state, errors={}, prefix='', context=None, check=True ): + """ + Populates nested state dict from incoming parameter values. + """ + context = ExpressionContext( state, context ) + for input in inputs.values(): + state[ input.name ] = input.get_initial_value( request_context, context ) + key = prefix + input.name + group_state = state[ input.name ] + group_prefix = '%s|' % ( key ) + if input.type == 'repeat': + rep_index = 0 + del group_state[:] + while True: + rep_prefix = '%s_%d' % ( key, rep_index ) + if not any( incoming_key.startswith( rep_prefix ) for incoming_key in incoming.keys() ) and rep_index >= input.min: + break + if rep_index < input.max: + new_state = { '__index__' : rep_index } + group_state.append( new_state ) + populate_state( request_context, input.inputs, incoming, new_state, errors, prefix=rep_prefix + '|', context=context ) + rep_index += 1 + elif input.type == 'conditional': + if input.value_ref and not input.value_ref_in_group: + test_param_key = prefix + input.test_param.name + else: + test_param_key = group_prefix + input.test_param.name + test_param_value = incoming.get( test_param_key, group_state.get( input.test_param.name ) ) + value, error = check_param( request_context, input.test_param, test_param_value, context ) if check else [ test_param_value, None ] + if error: + errors[ test_param_key ] = error + else: + try: + current_case = input.get_current_case( value ) + group_state = state[ input.name ] = {} + populate_state( request_context, input.cases[ current_case ].inputs, incoming, group_state, errors, prefix=group_prefix, context=context ) + group_state[ '__current_case__' ] = current_case + except Exception: + errors[ test_param_key ] = 'The selected case is unavailable/invalid.' + pass + group_state[ input.test_param.name ] = value + elif input.type == 'section': + populate_state( request_context, input.inputs, incoming, group_state, errors, prefix=group_prefix, context=context ) + elif input.type == 'upload_dataset': + d_type = input.get_datatype( request_context, context=context ) + writable_files = d_type.writable_files + while len( group_state ) > len( writable_files ): + del group_state[ -1 ] + while len( writable_files ) > len( group_state ): + new_state = { '__index__' : len( group_state ) } + for upload_item in input.inputs.values(): + new_state[ upload_item.name ] = upload_item.get_initial_value( request_context, context ) + group_state.append( new_state ) + for i, rep_state in enumerate( group_state ): + rep_index = rep_state[ '__index__' ] + rep_prefix = '%s_%d|' % ( key, rep_index ) + populate_state( request_context, input.inputs, incoming, rep_state, errors, prefix=rep_prefix, context=context ) + else: + param_value = _get_incoming_value( incoming, key, state.get( input.name ) ) + value, error = check_param( request_context, input, param_value, context ) if check else [ param_value, None ] + if error: + errors[ key ] = error + state[ input.name ] = value + +def _get_incoming_value( incoming, key, default ): + """ + Fetch value from incoming dict directly or check special nginx upload + created variants of this key. + """ + if '__' + key + '__is_composite' in incoming: + composite_keys = incoming[ '__' + key + '__keys' ].split() + value = dict() + for composite_key in composite_keys: + value[ composite_key ] = incoming[ key + '_' + composite_key ] + return value + else: + return incoming.get( key, default ) \ No newline at end of file diff --git a/lib/galaxy/webapps/galaxy/api/lda_datasets.py b/lib/galaxy/webapps/galaxy/api/lda_datasets.py index 14dc75158b7..a8e08eb3983 100644 --- a/lib/galaxy/webapps/galaxy/api/lda_datasets.py +++ b/lib/galaxy/webapps/galaxy/api/lda_datasets.py @@ -19,6 +19,7 @@ from galaxy import web from galaxy.exceptions import ObjectNotFound from galaxy.managers import folders, roles from galaxy.tools.actions import upload_common +from galaxy.tools.parameters import populate_state from galaxy.util.streamball import StreamBall from galaxy.web import _future_expose_api as expose_api from galaxy.web import _future_expose_api_anonymous as expose_api_anonymous @@ -451,7 +452,7 @@ class LibraryDatasetsController( BaseAPIController, UsesVisualizationMixin ): tool_id = 'upload1' tool = trans.app.toolbox.get_tool( tool_id ) state = tool.new_state( trans ) - tool.populate_state( trans, tool.inputs, kwd, state.inputs ) + populate_state( trans, tool.inputs, kwd, state.inputs ) tool_params = state.inputs dataset_upload_inputs = [] for input in tool.inputs.itervalues(): diff --git a/lib/galaxy/webapps/galaxy/api/workflows.py b/lib/galaxy/webapps/galaxy/api/workflows.py index 315cc89bb41..fe7a0d6f3bd 100644 --- a/lib/galaxy/webapps/galaxy/api/workflows.py +++ b/lib/galaxy/webapps/galaxy/api/workflows.py @@ -30,6 +30,7 @@ from galaxy.workflow.extract import extract_workflow from galaxy.workflow.modules import module_factory from galaxy.workflow.run import invoke, queue_invoke from galaxy.workflow.run_request import build_workflow_run_configs +from galaxy.tools.parameters import populate_state log = logging.getLogger(__name__) @@ -374,8 +375,9 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn 'tool_id' : tool.id, 'tool_state' : None } ) - tool_model = module.tool.to_json( trans, inputs, workflow_building_mode=True ) - module.recover_state( tool_model[ 'state_inputs' ] ) + state = {} + populate_state( trans, tool.inputs, inputs, state, check=False ) + module.recover_state( state ) return { 'tool_state' : module.get_state(), 'data_inputs' : module.get_data_inputs(), diff --git a/lib/galaxy/webapps/galaxy/controllers/library_common.py b/lib/galaxy/webapps/galaxy/controllers/library_common.py index 680bb46e823..4f3a39d675e 100644 --- a/lib/galaxy/webapps/galaxy/controllers/library_common.py +++ b/lib/galaxy/webapps/galaxy/controllers/library_common.py @@ -19,6 +19,7 @@ from sqlalchemy.orm import eagerload_all from galaxy import util, web from galaxy.security import Action from galaxy.tools.actions import upload_common +from galaxy.tools.parameters import populate_state from galaxy.util import inflector, unicodify, FILENAME_VALID_CHARS from galaxy.util.streamball import StreamBall from galaxy.web.base.controller import BaseUIController, UsesFormDefinitionsMixin, UsesExtendedMetadataMixin, UsesLibraryMixinItems @@ -1044,7 +1045,7 @@ class LibraryCommon( BaseUIController, UsesFormDefinitionsMixin, UsesExtendedMet tool_id = 'upload1' tool = trans.app.toolbox.get_tool( tool_id ) state = tool.new_state( trans ) - tool.populate_state( trans, tool.inputs, kwd, state.inputs ) + populate_state( trans, tool.inputs, kwd, state.inputs ) tool_params = state.inputs dataset_upload_inputs = [] for input_name, input in tool.inputs.iteritems(): From 3e3eb4d1397effc8b46c913bb80f3c02773ac506 Mon Sep 17 00:00:00 2001 From: guerler Date: Thu, 9 Feb 2017 14:32:18 -0500 Subject: [PATCH 03/26] Unify build_module handler --- .../scripts/mvc/tool/tool-form-workflow.js | 1 + lib/galaxy/webapps/galaxy/api/workflows.py | 57 +++++++------------ lib/galaxy/workflow/modules.py | 3 + .../maps/mvc/tool/tool-form-workflow.js.map | 2 +- static/scripts/mvc/tool/tool-form-workflow.js | 2 +- 5 files changed, 28 insertions(+), 37 deletions(-) diff --git a/client/galaxy/scripts/mvc/tool/tool-form-workflow.js b/client/galaxy/scripts/mvc/tool/tool-form-workflow.js index 7dee1efb827..d9ca767d433 100644 --- a/client/galaxy/scripts/mvc/tool/tool-form-workflow.js +++ b/client/galaxy/scripts/mvc/tool/tool-form-workflow.js @@ -38,6 +38,7 @@ define( [ 'utils/utils', 'mvc/tool/tool-form-base' ], var current_state = { tool_id : options.id, tool_version : options.version, + type : 'tool', inputs : $.extend( true, {}, form.data.create() ) } Galaxy.emit.debug( 'tool-form-workflow::postchange()', 'Sending current state.', current_state ); diff --git a/lib/galaxy/webapps/galaxy/api/workflows.py b/lib/galaxy/webapps/galaxy/api/workflows.py index fe7a0d6f3bd..48ab6c39260 100644 --- a/lib/galaxy/webapps/galaxy/api/workflows.py +++ b/lib/galaxy/webapps/galaxy/api/workflows.py @@ -359,48 +359,35 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn def build_module( self, trans, payload={} ): """ POST /api/workflows/build_module - Builds module details including a tool model for the workflow editor. + Builds module models for the workflow editor. """ type = payload.get( 'type' ) tool_id = payload.get( 'tool_id' ) + tool_version = payload.get( 'tool_version' ) content_id = payload.get( 'content_id' ) inputs = payload.get( 'inputs', {} ) annotation = inputs.get( '__annotation', '' ) label = inputs.get( '__label', '' ) - if tool_id: - tool_version = payload.get( 'tool_version' ) - tool = self._get_tool( tool_id, tool_version=tool_version, user=trans.user ) - module = module_factory.from_dict( trans, { - 'type' : 'tool', - 'tool_id' : tool.id, - 'tool_state' : None - } ) - state = {} - populate_state( trans, tool.inputs, inputs, state, check=False ) - module.recover_state( state ) - return { - 'tool_state' : module.get_state(), - 'data_inputs' : module.get_data_inputs(), - 'data_outputs' : module.get_data_outputs(), - 'config_form' : module.get_config_form(), - 'annotation' : annotation, - 'post_job_actions' : module.get_post_job_actions(inputs) - } - else: - module = module_factory.from_dict( trans, { - 'type' : type, - 'label' : label, - 'content_id' : content_id - } ) - module.recover_state( inputs ) - return { - 'label' : module.label, - 'tool_state' : module.get_state(), - 'data_inputs' : module.get_data_inputs(), - 'data_outputs' : module.get_data_outputs(), - 'config_form' : module.get_config_form(), - 'annotation' : annotation - } + module = module_factory.from_dict( trans, { + 'type' : type, + 'label' : label, + 'tool_id' : tool_id, + 'content_id' : content_id, + 'tool_version' : tool_version, + 'tool_state' : None + } ) + module_state = {} + populate_state( trans, module.get_inputs(), inputs, module_state, check=False ) + module.recover_state( module_state ) + return { + 'label' : module.label, + 'tool_state' : module.get_state(), + 'data_inputs' : module.get_data_inputs(), + 'data_outputs' : module.get_data_outputs(), + 'config_form' : module.get_config_form(), + 'annotation' : annotation, + 'post_job_actions' : module.get_post_job_actions(inputs) + } # # -- Helper methods -- diff --git a/lib/galaxy/workflow/modules.py b/lib/galaxy/workflow/modules.py index 3b182c201ae..60a030d9e8e 100644 --- a/lib/galaxy/workflow/modules.py +++ b/lib/galaxy/workflow/modules.py @@ -131,6 +131,9 @@ class WorkflowModule( object ): def get_data_outputs( self ): return [] + def get_post_job_actions( self, incoming ): + return [] + def check_and_update_state( self ): """ If the state is not in sync with the current implementation of the diff --git a/static/maps/mvc/tool/tool-form-workflow.js.map b/static/maps/mvc/tool/tool-form-workflow.js.map index 66c7d8478d5..77464c1f8f2 100644 --- a/static/maps/mvc/tool/tool-form-workflow.js.map +++ b/static/maps/mvc/tool/tool-form-workflow.js.map @@ -1 +1 @@ -{"version":3,"file":"tool-form-workflow.js","sources":["../../../src/mvc/tool/tool-form-workflow.js"],"names":["define","Utils","ToolFormBase","View","Backbone","extend","initialize","options","self","this","workflow","node","setElement","post_job_actions","deepeach","inputs","input","type","indexOf","info","name","textify","extensions","value","__class__","collapsible_value","is_workflow","length","test_param","undefined","_makeSections","form","merge","text_enable","text_disable","narrow","initial_errors","sustain_version","cls","postchange","process","model","attributes","current_state","tool_id","id","tool_version","version","$","data","create","Galaxy","emit","debug","request","url","root","success","update","config_form","errors","update_field_data","resolve","error","response","reject","$el","append","datatypes","push","label","area","help","annotation","output_id","output_terminals","Object","keys","String","Boolean","ignore","payload","host","window","location","i","_makeSection","visit","head","head_list","action","pja_arg","p_id","p","d","j","expanded","action_arguments","slice","input_terminal_names","key",1,"input_terminals","sort","a","b","unshift","input_config","title","flat","output","getWorkflowOutput","onchange","new_value","attemptUpdateOutputLabel","join"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tool-form-workflow.js","sources":["../../../src/mvc/tool/tool-form-workflow.js"],"names":["define","Utils","ToolFormBase","View","Backbone","extend","initialize","options","self","this","workflow","node","setElement","post_job_actions","deepeach","inputs","input","type","indexOf","info","name","textify","extensions","value","__class__","collapsible_value","is_workflow","length","test_param","undefined","_makeSections","form","merge","text_enable","text_disable","narrow","initial_errors","sustain_version","cls","postchange","process","model","attributes","current_state","tool_id","id","tool_version","version","$","data","create","Galaxy","emit","debug","request","url","root","success","update","config_form","errors","update_field_data","resolve","error","response","reject","$el","append","datatypes","push","label","area","help","annotation","output_id","output_terminals","Object","keys","String","Boolean","ignore","payload","host","window","location","i","_makeSection","visit","head","head_list","action","pja_arg","p_id","p","d","j","expanded","action_arguments","slice","input_terminal_names","key",1,"input_terminals","sort","a","b","unshift","input_config","title","flat","output","getWorkflowOutput","onchange","new_value","attemptUpdateOutputLabel","join"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/mvc/tool/tool-form-workflow.js b/static/scripts/mvc/tool/tool-form-workflow.js index 26dadb61d77..7738c0b4044 100644 --- a/static/scripts/mvc/tool/tool-form-workflow.js +++ b/static/scripts/mvc/tool/tool-form-workflow.js @@ -1,2 +1,2 @@ -define(["utils/utils","mvc/tool/tool-form-base"],function(a,b){var c=Backbone.View.extend({initialize:function(c){var d=this;this.workflow=c.workflow,this.node=c.node,this.setElement("
"),this.node?(this.post_job_actions=this.node.post_job_actions||{},a.deepeach(c.inputs,function(b){b.type&&(-1!=["data","data_collection"].indexOf(b.type)?(b.type="hidden",b.info="Data input '"+b.name+"' ("+a.textify(b.extensions)+")",b.value={__class__:"RuntimeValue"}):(b.collapsible_value={__class__:"RuntimeValue"},b.is_workflow=b.options&&0==b.options.length||-1!=["integer","float"].indexOf(b.type)))}),a.deepeach(c.inputs,function(a){"conditional"==a.type&&(a.test_param.collapsible_value=void 0)}),this._makeSections(c),this.form=new b(a.merge(c,{text_enable:"Set in Advance",text_disable:"Set at Runtime",narrow:!0,initial_errors:!0,sustain_version:!0,cls:"ui-portlet-narrow",postchange:function(b,c){var e=c.model.attributes,f={tool_id:e.id,tool_version:e.version,inputs:$.extend(!0,{},c.data.create())};Galaxy.emit.debug("tool-form-workflow::postchange()","Sending current state.",f),a.request({type:"POST",url:Galaxy.root+"api/workflows/build_module",data:f,success:function(a){c.update(a.config_form),c.errors(a.config_form),d.node.update_field_data(a),Galaxy.emit.debug("tool-form-workflow::postchange()","Received new model.",a),b.resolve()},error:function(a){Galaxy.emit.debug("tool-form-workflow::postchange()","Refresh request failed.",a),b.reject()}})}})),this.$el.append(this.form.$el)):Galaxy.emit.debug("tool-form-workflow::initialize()","Node not found in workflow.")},_makeSections:function(a){var b=a.inputs,c=a.datatypes;b.push({label:"Annotation / Notes",name:"__annotation",type:"text",area:!0,help:"Add an annotation or note for this step. It will be shown with the workflow.",value:this.node.annotation});var d=this.node.output_terminals&&Object.keys(this.node.output_terminals)[0];if(d){b.push({name:"pja__"+d+"__EmailAction",label:"Email notification",type:"boolean",value:String(Boolean(this.post_job_actions["EmailAction"+d])),ignore:"false",help:"An email notification will be sent when the job has completed.",payload:{host:window.location.host}}),b.push({name:"pja__"+d+"__DeleteIntermediatesAction",label:"Output cleanup",type:"boolean",value:String(Boolean(this.post_job_actions["DeleteIntermediatesAction"+d])),ignore:"false",help:"Upon completion of this step, delete non-starred outputs from completed workflow steps if they are no longer required as inputs."});for(var e in this.node.output_terminals)b.push(this._makeSection(e,c))}},_makeSection:function(a,b){function c(b,e){e=e||[],e.push(b);for(var f in b.inputs){var g=b.inputs[f],h=g.action;if(h){if(g.name="pja__"+a+"__"+g.action,g.pja_arg&&(g.name+="__"+g.pja_arg),g.payload)for(var i in g.payload){var j=g.payload[i];g.payload[g.name+"__"+i]=j,delete j}var k=d.post_job_actions[g.action+a];if(k){for(var l in e)e[l].expanded=!0;g.value=g.pja_arg?k.action_arguments&&k.action_arguments[g.pja_arg]||g.value:"true"}}g.inputs&&c(g,e.slice(0))}}var d=this,e=[],f=[];for(key in b)e.push({0:b[key],1:b[key]});for(key in this.node.input_terminals)f.push(this.node.input_terminals[key].name);e.sort(function(a,b){return a.label>b.label?1:a.labelhere for more information. Valid inputs are: '+f.join(", ")+"."},{action:"ChangeDatatypeAction",pja_arg:"newtype",label:"Change datatype",type:"select",ignore:"__empty__",value:"__empty__",options:e,help:"This action will change the datatype of the output to the indicated value."},{action:"TagDatasetAction",pja_arg:"tags",label:"Tags",type:"text",value:"",ignore:"",help:"This action will set tags for the dataset."},{title:"Assign columns",type:"section",flat:!0,inputs:[{action:"ColumnSetAction",pja_arg:"chromCol",label:"Chrom column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"startCol",label:"Start column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"endCol",label:"End column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"strandCol",label:"Strand column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"nameCol",label:"Name column",type:"integer",value:"",ignore:""}],help:"This action will set column assignments in the output dataset. Blank fields are ignored."}]};return c(g),g}});return{View:c}}); +define(["utils/utils","mvc/tool/tool-form-base"],function(a,b){var c=Backbone.View.extend({initialize:function(c){var d=this;this.workflow=c.workflow,this.node=c.node,this.setElement("
"),this.node?(this.post_job_actions=this.node.post_job_actions||{},a.deepeach(c.inputs,function(b){b.type&&(-1!=["data","data_collection"].indexOf(b.type)?(b.type="hidden",b.info="Data input '"+b.name+"' ("+a.textify(b.extensions)+")",b.value={__class__:"RuntimeValue"}):(b.collapsible_value={__class__:"RuntimeValue"},b.is_workflow=b.options&&0==b.options.length||-1!=["integer","float"].indexOf(b.type)))}),a.deepeach(c.inputs,function(a){"conditional"==a.type&&(a.test_param.collapsible_value=void 0)}),this._makeSections(c),this.form=new b(a.merge(c,{text_enable:"Set in Advance",text_disable:"Set at Runtime",narrow:!0,initial_errors:!0,sustain_version:!0,cls:"ui-portlet-narrow",postchange:function(b,c){var e=c.model.attributes,f={tool_id:e.id,tool_version:e.version,type:"tool",inputs:$.extend(!0,{},c.data.create())};Galaxy.emit.debug("tool-form-workflow::postchange()","Sending current state.",f),a.request({type:"POST",url:Galaxy.root+"api/workflows/build_module",data:f,success:function(a){c.update(a.config_form),c.errors(a.config_form),d.node.update_field_data(a),Galaxy.emit.debug("tool-form-workflow::postchange()","Received new model.",a),b.resolve()},error:function(a){Galaxy.emit.debug("tool-form-workflow::postchange()","Refresh request failed.",a),b.reject()}})}})),this.$el.append(this.form.$el)):Galaxy.emit.debug("tool-form-workflow::initialize()","Node not found in workflow.")},_makeSections:function(a){var b=a.inputs,c=a.datatypes;b.push({label:"Annotation / Notes",name:"__annotation",type:"text",area:!0,help:"Add an annotation or note for this step. It will be shown with the workflow.",value:this.node.annotation});var d=this.node.output_terminals&&Object.keys(this.node.output_terminals)[0];if(d){b.push({name:"pja__"+d+"__EmailAction",label:"Email notification",type:"boolean",value:String(Boolean(this.post_job_actions["EmailAction"+d])),ignore:"false",help:"An email notification will be sent when the job has completed.",payload:{host:window.location.host}}),b.push({name:"pja__"+d+"__DeleteIntermediatesAction",label:"Output cleanup",type:"boolean",value:String(Boolean(this.post_job_actions["DeleteIntermediatesAction"+d])),ignore:"false",help:"Upon completion of this step, delete non-starred outputs from completed workflow steps if they are no longer required as inputs."});for(var e in this.node.output_terminals)b.push(this._makeSection(e,c))}},_makeSection:function(a,b){function c(b,e){e=e||[],e.push(b);for(var f in b.inputs){var g=b.inputs[f],h=g.action;if(h){if(g.name="pja__"+a+"__"+g.action,g.pja_arg&&(g.name+="__"+g.pja_arg),g.payload)for(var i in g.payload){var j=g.payload[i];g.payload[g.name+"__"+i]=j,delete j}var k=d.post_job_actions[g.action+a];if(k){for(var l in e)e[l].expanded=!0;g.value=g.pja_arg?k.action_arguments&&k.action_arguments[g.pja_arg]||g.value:"true"}}g.inputs&&c(g,e.slice(0))}}var d=this,e=[],f=[];for(key in b)e.push({0:b[key],1:b[key]});for(key in this.node.input_terminals)f.push(this.node.input_terminals[key].name);e.sort(function(a,b){return a.label>b.label?1:a.labelhere for more information. Valid inputs are: '+f.join(", ")+"."},{action:"ChangeDatatypeAction",pja_arg:"newtype",label:"Change datatype",type:"select",ignore:"__empty__",value:"__empty__",options:e,help:"This action will change the datatype of the output to the indicated value."},{action:"TagDatasetAction",pja_arg:"tags",label:"Tags",type:"text",value:"",ignore:"",help:"This action will set tags for the dataset."},{title:"Assign columns",type:"section",flat:!0,inputs:[{action:"ColumnSetAction",pja_arg:"chromCol",label:"Chrom column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"startCol",label:"Start column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"endCol",label:"End column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"strandCol",label:"Strand column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"nameCol",label:"Name column",type:"integer",value:"",ignore:""}],help:"This action will set column assignments in the output dataset. Blank fields are ignored."}]};return c(g),g}});return{View:c}}); //# sourceMappingURL=../../../maps/mvc/tool/tool-form-workflow.js.map \ No newline at end of file From 62d42f711e26e0ab176041ce9a552d1af1290f1a Mon Sep 17 00:00:00 2001 From: guerler Date: Thu, 9 Feb 2017 14:45:44 -0500 Subject: [PATCH 04/26] Parse payload directly to from_dict handler, handle tool specific attributes in corresponding module wrapper --- lib/galaxy/webapps/galaxy/api/workflows.py | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/workflows.py b/lib/galaxy/webapps/galaxy/api/workflows.py index 48ab6c39260..582282fcabf 100644 --- a/lib/galaxy/webapps/galaxy/api/workflows.py +++ b/lib/galaxy/webapps/galaxy/api/workflows.py @@ -361,32 +361,19 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn POST /api/workflows/build_module Builds module models for the workflow editor. """ - type = payload.get( 'type' ) - tool_id = payload.get( 'tool_id' ) - tool_version = payload.get( 'tool_version' ) - content_id = payload.get( 'content_id' ) inputs = payload.get( 'inputs', {} ) - annotation = inputs.get( '__annotation', '' ) - label = inputs.get( '__label', '' ) - module = module_factory.from_dict( trans, { - 'type' : type, - 'label' : label, - 'tool_id' : tool_id, - 'content_id' : content_id, - 'tool_version' : tool_version, - 'tool_state' : None - } ) + module = module_factory.from_dict( trans, payload ) module_state = {} populate_state( trans, module.get_inputs(), inputs, module_state, check=False ) module.recover_state( module_state ) return { - 'label' : module.label, + 'label' : inputs.get( '__label', '' ), + 'annotation' : inputs.get( '__annotation', '' ), 'tool_state' : module.get_state(), 'data_inputs' : module.get_data_inputs(), 'data_outputs' : module.get_data_outputs(), 'config_form' : module.get_config_form(), - 'annotation' : annotation, - 'post_job_actions' : module.get_post_job_actions(inputs) + 'post_job_actions' : module.get_post_job_actions( inputs ) } # From d27e0570cb0b372288114498fa1ad26a1f5df188 Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 10 Feb 2017 10:15:23 -0500 Subject: [PATCH 05/26] Remove name handling field from workflow module forms --- .../scripts/mvc/workflow/workflow-view.js | 85 +++++++++---------- lib/galaxy/workflow/modules.py | 37 ++------ static/maps/mvc/workflow/workflow-view.js.map | 2 +- static/scripts/mvc/workflow/workflow-view.js | 2 +- 4 files changed, 51 insertions(+), 75 deletions(-) diff --git a/client/galaxy/scripts/mvc/workflow/workflow-view.js b/client/galaxy/scripts/mvc/workflow/workflow-view.js index a29a4ee6b04..e1772b2aa48 100644 --- a/client/galaxy/scripts/mvc/workflow/workflow-view.js +++ b/client/galaxy/scripts/mvc/workflow/workflow-view.js @@ -670,54 +670,49 @@ define([ content.datatypes = this.datatypes; form = new ToolForm.View( content ); } else { - if ( content.inputs && content.inputs.length > 0 ) { - content.inputs.unshift({ - type : 'text', - name : '__label', - label : 'Label', - value : node.label, - help : 'Add a step label.', - onchange: function( new_label ) { - var duplicate = false; - for ( var i in self.workflow.nodes ) { - var n = self.workflow.nodes[ i ]; - if ( n.label && n.label == new_label && n.id != node.id ) { - duplicate = true; - break; - } + content.inputs.unshift({ + type : 'text', + name : '__label', + label : 'Label', + value : node.label, + help : 'Add a step label.', + onchange: function( new_label ) { + var duplicate = false; + for ( var i in self.workflow.nodes ) { + var n = self.workflow.nodes[ i ]; + if ( n.label && n.label == new_label && n.id != node.id ) { + duplicate = true; + break; } - var input_id = form.data.match( '__label' ); - var input_element = form.element_list[ input_id ]; - input_element.model.set( 'error_text', duplicate && 'Duplicate label. Please fix this before saving the workflow.' ); - form.trigger( 'change' ); + } + var input_id = form.data.match( '__label' ); + var input_element = form.element_list[ input_id ]; + input_element.model.set( 'error_text', duplicate && 'Duplicate label. Please fix this before saving the workflow.' ); + form.trigger( 'change' ); + } + }); + content.inputs.push({ + type : 'text', + name : '__annotation', + label : 'Annotation', + value : node.annotation, + area : true, + help : 'Add an annotation or notes to this step. Annotations are available when a workflow is viewed.' + }); + content.onchange = function() { + Utils.request({ + type : 'POST', + url : Galaxy.root + 'api/workflows/build_module', + data : { + id : node.id, + type : node.type, + inputs : form.data.create() + }, + success : function( data ) { + node.update_field_data( data ); } }); - content.inputs.push({ - type : 'text', - name : '__annotation', - label : 'Annotation', - value : node.annotation, - area : true, - help : 'Add an annotation or notes to this step. Annotations are available when a workflow is viewed.' - }); - content.onchange = function() { - Utils.request({ - type : 'POST', - url : Galaxy.root + 'api/workflows/build_module', - data : { - id : node.id, - type : node.type, - inputs : form.data.create() - }, - success : function( data ) { - node.update_field_data( data ); - } - }); - }; - } else { - content.message = 'No inputs available for this module.'; - content.message_status = 'info'; - } + }; form = new Form( content ); } $el.append( form.$el ); diff --git a/lib/galaxy/workflow/modules.py b/lib/galaxy/workflow/modules.py index 60a030d9e8e..27c86290e22 100644 --- a/lib/galaxy/workflow/modules.py +++ b/lib/galaxy/workflow/modules.py @@ -230,7 +230,6 @@ class SubWorkflowModule( WorkflowModule ): # - Second pass actually turn RuntimeInputs into inputs if possible. type = "subworkflow" name = "Subworkflow" - default_name = "Subworkflow" @classmethod def from_dict( Class, trans, d, **kwds ): @@ -381,11 +380,6 @@ class InputModule( WorkflowModule ): class InputDataModule( InputModule ): type = "data_input" name = "Input dataset" - default_name = "Input Dataset" - - def get_inputs( self ): - name = self.state.inputs.get( 'name', self.default_name ) - return dict( name=TextToolParameter( None, Element( "param", name="name", label="Name", type="text", value=name ) ) ) def get_data_outputs( self ): return [ dict( name='output', extensions=['input'] ) ] @@ -402,21 +396,17 @@ class InputDataModule( InputModule ): return ', '.join( filter_set ) def get_runtime_inputs( self, connections=None ): - label = self.state.inputs.get( "name", "Input Dataset" ) - return dict( input=DataToolParameter( None, Element( "param", name="input", label=label, multiple=False, type="data", format=self.get_filter_set( connections ) ), self.trans ) ) + return dict( input=DataToolParameter( None, Element( "param", name="input", label=self.label, multiple=False, type="data", format=self.get_filter_set( connections ) ), self.trans ) ) class InputDataCollectionModule( InputModule ): - default_name = "Input Dataset Collection" - default_collection_type = "list" type = "data_collection_input" name = "Input dataset collection" + default_collection_type = "list" collection_type = default_collection_type def get_inputs( self ): - name = self.state.inputs.get( "name", self.default_name ) collection_type = self.state.inputs.get( "collection_type", self.default_collection_type ) - input_name = TextToolParameter( None, Element( "param", name="name", label="Name", type="text", value=name ) ) input_collection_type = TextToolParameter( None, XML( ''' @@ -425,12 +415,11 @@ class InputDataCollectionModule( InputModule ): ''' % collection_type ) ) - return odict( [ ( "name", input_name ), ( "collection_type", input_collection_type ) ] ) + return odict( [ ( "collection_type", input_collection_type ) ] ) def get_runtime_inputs( self, **kwds ): - label = self.state.inputs.get( "name", self.default_name ) collection_type = self.state.inputs.get( "collection_type", self.default_collection_type ) - input_element = Element( "param", name="input", label=label, type="data_collection", collection_type=collection_type ) + input_element = Element( "param", name="input", label=self.label, type="data_collection", collection_type=collection_type ) return dict( input=DataCollectionToolParameter( None, input_element, self.trans ) ) def get_data_outputs( self ): @@ -445,17 +434,15 @@ class InputDataCollectionModule( InputModule ): class InputParameterModule( WorkflowModule ): - default_name = "input_parameter" + type = "parameter_input" + name = "Input parameter" default_parameter_type = "text" default_optional = False - type = "parameter_input" - name = default_name parameter_type = default_parameter_type optional = default_optional def get_inputs( self ): # TODO: Use an external xml or yaml file to load the parameter definition - name = self.state.inputs.get( "name", self.default_name ) parameter_type = self.state.inputs.get( "parameter_type", self.default_parameter_type ) optional = self.state.inputs.get( "optional", self.default_optional ) input_parameter_type = SelectToolParameter( None, XML( @@ -468,12 +455,10 @@ class InputParameterModule( WorkflowModule ): ''' % parameter_type ) ) - return odict([( "name", TextToolParameter( None, Element( "param", name="name", label="Name", type="text", value=name ) ) ), - ( "parameter_type", input_parameter_type ), + return odict([( "parameter_type", input_parameter_type ), ( "optional", BooleanToolParameter( None, Element( "param", name="optional", label="Optional", type="boolean", value=optional )))]) def get_runtime_inputs( self, **kwds ): - label = self.state.inputs.get( "name", self.default_name ) parameter_type = self.state.inputs.get("parameter_type", self.default_parameter_type) optional = self.state.inputs.get("optional", self.default_optional) if parameter_type not in ["text", "boolean", "integer", "float", "color"]: @@ -484,7 +469,7 @@ class InputParameterModule( WorkflowModule ): parameter_kwds["value"] = str(0) # TODO: Use a dict-based description from YAML tool source - element = Element("param", name="input", label=label, type=parameter_type, optional=str(optional), **parameter_kwds ) + element = Element("param", name="input", label=self.label, type=parameter_type, optional=str(optional), **parameter_kwds ) input = parameter_class( None, element ) return dict( input=input ) @@ -508,11 +493,6 @@ class PauseModule( WorkflowModule ): """ type = "pause" name = "Pause for dataset review" - default_name = "Pause for Dataset Review" - - def get_inputs( self ): - name = self.state.inputs.get( "name", self.default_name ) - return dict( name=TextToolParameter( None, Element( "param", name="name", type="text", value=name ) ) ) def get_data_inputs( self ): input = dict( @@ -562,6 +542,7 @@ class PauseModule( WorkflowModule ): class ToolModule( WorkflowModule ): type = "tool" + name = "Tool" def __init__( self, trans, tool_id, tool_version=None, exact_tools=False, **kwds ): super( ToolModule, self ).__init__( trans, content_id=tool_id, **kwds ) diff --git a/static/maps/mvc/workflow/workflow-view.js.map b/static/maps/mvc/workflow/workflow-view.js.map index c7729a435fc..f83649028e2 100644 --- a/static/maps/mvc/workflow/workflow-view.js.map +++ b/static/maps/mvc/workflow/workflow-view.js.map @@ -1 +1 @@ -{"version":3,"file":"workflow-view.js","sources":["../../../src/mvc/workflow/workflow-view.js"],"names":["define","Utils","Globals","Workflow","WorkflowCanvas","Node","WorkflowIcons","ToolForm","Form","Ui","async_save_text","reset_tool_search","initValue","tool_menu_frame","$","contents","length","document","this","removeClass","find","hide","show","each","attr","hasClass","search_input","val","add_node_icon","$to_el","nodeType","iconStyle","$icon","addClass","before","Backbone","View","extend","initialize","options","workflow_save_as","body","window","show_modal","OK","rename_name","self","workflow","name","rename_annotation","ajax","url","urls","type","data","workflow_name","workflow_annotation","workflow_data","JSON","stringify","to_simple","done","id","onbeforeunload","undefined","location","hide_modal","fail","alert","Cancel","layout_editor","layout","fit_canvas_to_nodes","scroll_to_nodes","canvas_manager","draw_overview","show_overview","jStorage","set","css","hide_overview","app","close_editor","check_changes_in_active_form","has_changes","do_close","workflow_index","Save Changes","save_current_workflow","Don't Save","eventObj","success_callback","show_message","rectify_workflow_outputs","request","Galaxy","root","success","text","message","errors","errlist","i","v","appendTo","append","stored","showWorkflowParameters","Ok","error","response","err_msg","click","focus","select","keyup","value","lastValue","q","timer","clearTimeout","setTimeout","get","tool_search","s","map","n","index","parent","this_label","next","no_visible_tools","is","reset","datatypes","parse","async","responseText","datatypes_mapping","ext_to_type","ext_to_class_name","type_to_type","class_to_classes","_workflowLoadAjax","from_simple","upgrade_message","_","steps","step","step_id","details","upgrade_messages","m","parseInt","nodes","Continue","beforeSubmit","make_popupmenu","Save","Save As","Run","run_workflow","Edit Attributes","clear_active_node","Auto Re-layout","Close","overview_size","width","height","bind","e","d","op","offsetParent","opo","offset","new_size","Math","max","offsetX","left","offsetY","top","workflows","_buildToolPanelWorkflows","wrap","last_expanded","slideUp","slideDown","rename_async","annotate_async","$section","copy","ButtonIcon","icon","cls","tooltip","onclick","step_count","copy_into_workflow","modal","title","buttons","Copy","$add","html","on","add_node_for_subworkflow","latest_id","$el","workflowId","k","vv","remove_all","cv","cc","merge","load_workflow","dataType","cache","_moduleInitAjax","node","request_data","init_field_data","update_field_data","activate_node","add_node_for_tool","create_node","tool_id","content_id","add_node_for_module","display_pja","pja","get_pja_form","action_to_rem","closest","children","remove","active_node","post_job_actions","active_form_has_changes","display_pja_list","pja_list","display_file_list","addlist","out_terminal","output_terminals","new_pja","action_type","target","output_name","parameter_re","workflow_parameters","wf_parm_container","wf_parm_box","new_parameter_content","matches","config_form","inputs","deepeach","form_matches","match","concat","action_arguments","action_argument","arg_matches","element","inArray","push","substring","showAttributes","showForm","content","$container","form","unshift","label","help","onchange","new_label","duplicate","input_id","input_element","element_list","model","trigger","annotation","area","create","message_status","scrollTop","isSubType","child","prebuildNode","title_text","$f","$title","scrollLeft","tmp","destroy","o","position","p","prependTo","node_changed","po","x","y","terminal","redraw"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"workflow-view.js","sources":["../../../src/mvc/workflow/workflow-view.js"],"names":["define","Utils","Globals","Workflow","WorkflowCanvas","Node","WorkflowIcons","ToolForm","Form","Ui","async_save_text","reset_tool_search","initValue","tool_menu_frame","$","contents","length","document","this","removeClass","find","hide","show","each","attr","hasClass","search_input","val","add_node_icon","$to_el","nodeType","iconStyle","$icon","addClass","before","Backbone","View","extend","initialize","options","workflow_save_as","body","window","show_modal","OK","rename_name","self","workflow","name","rename_annotation","ajax","url","urls","type","data","workflow_name","workflow_annotation","workflow_data","JSON","stringify","to_simple","done","id","onbeforeunload","undefined","location","hide_modal","fail","alert","Cancel","layout_editor","layout","fit_canvas_to_nodes","scroll_to_nodes","canvas_manager","draw_overview","show_overview","jStorage","set","css","hide_overview","app","close_editor","check_changes_in_active_form","has_changes","do_close","workflow_index","Save Changes","save_current_workflow","Don't Save","eventObj","success_callback","show_message","rectify_workflow_outputs","request","Galaxy","root","success","text","message","errors","errlist","i","v","appendTo","append","stored","showWorkflowParameters","Ok","error","response","err_msg","click","focus","select","keyup","value","lastValue","q","timer","clearTimeout","setTimeout","get","tool_search","s","map","n","index","parent","this_label","next","no_visible_tools","is","reset","datatypes","parse","async","responseText","datatypes_mapping","ext_to_type","ext_to_class_name","type_to_type","class_to_classes","_workflowLoadAjax","from_simple","upgrade_message","_","steps","step","step_id","details","upgrade_messages","m","parseInt","nodes","Continue","beforeSubmit","make_popupmenu","Save","Save As","Run","run_workflow","Edit Attributes","clear_active_node","Auto Re-layout","Close","overview_size","width","height","bind","e","d","op","offsetParent","opo","offset","new_size","Math","max","offsetX","left","offsetY","top","workflows","_buildToolPanelWorkflows","wrap","last_expanded","slideUp","slideDown","rename_async","annotate_async","$section","copy","ButtonIcon","icon","cls","tooltip","onclick","step_count","copy_into_workflow","modal","title","buttons","Copy","$add","html","on","add_node_for_subworkflow","latest_id","$el","workflowId","k","vv","remove_all","cv","cc","merge","load_workflow","dataType","cache","_moduleInitAjax","node","request_data","init_field_data","update_field_data","activate_node","add_node_for_tool","create_node","tool_id","content_id","add_node_for_module","display_pja","pja","get_pja_form","action_to_rem","closest","children","remove","active_node","post_job_actions","active_form_has_changes","display_pja_list","pja_list","display_file_list","addlist","out_terminal","output_terminals","new_pja","action_type","target","output_name","parameter_re","workflow_parameters","wf_parm_container","wf_parm_box","new_parameter_content","matches","config_form","inputs","deepeach","form_matches","match","concat","action_arguments","action_argument","arg_matches","element","inArray","push","substring","showAttributes","showForm","content","$container","form","unshift","label","help","onchange","new_label","duplicate","input_id","input_element","element_list","model","trigger","annotation","area","create","scrollTop","isSubType","child","prebuildNode","title_text","$f","$title","scrollLeft","tmp","destroy","o","position","p","prependTo","node_changed","po","x","y","terminal","redraw"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/mvc/workflow/workflow-view.js b/static/scripts/mvc/workflow/workflow-view.js index 5c7af223e5a..fe40c13bad8 100644 --- a/static/scripts/mvc/workflow/workflow-view.js +++ b/static/scripts/mvc/workflow/workflow-view.js @@ -1,2 +1,2 @@ -define("mvc/workflow/workflow-globals",{}),define(["utils/utils","mvc/workflow/workflow-globals","mvc/workflow/workflow-manager","mvc/workflow/workflow-canvas","mvc/workflow/workflow-node","mvc/workflow/workflow-icons","mvc/tool/tool-form-workflow","mvc/form/form-view","mvc/ui/ui-misc","utils/async-save-text","libs/toastr","ui/editable-text"],function(a,b,c,d,e,f,g,h,i,j){function k(a){var b=$("#galaxy_tools").contents();if(0===b.length&&(b=$(document),$(this).removeClass("search_active"),b.find(".toolTitle").removeClass("search_match"),b.find(".toolSectionBody").hide(),b.find(".toolTitle").show(),b.find(".toolPanelLabel").show(),b.find(".toolSectionWrapper").each(function(){"recently_used_wrapper"!==$(this).attr("id")?$(this).show():$(this).hasClass("user_pref_visible")&&$(this).show()}),b.find("#search-no-results").hide(),b.find("#search-spinner").hide(),a)){var c=b.find("#tool-search-query");c.val("search tools")}}return add_node_icon=function(a,b){var c=f[b];if(c){var d=$(' ').addClass(c);a.before(d)}},Backbone.View.extend({initialize:function(c){function e(){var a=$('

');window.show_modal("Save As a New Workflow",a,{OK:function(){var a=$("#workflow_rename").val().length>0?$("#workflow_rename").val():"SavedAs_"+i.workflow.name,b=$("#wf_annotation").val().length>0?$("#wf_annotation").val():"";$.ajax({url:i.urls.workflow_save_as,type:"POST",data:{workflow_name:a,workflow_annotation:b,workflow_data:function(){return JSON.stringify(i.workflow.to_simple())}}}).done(function(a){window.onbeforeunload=void 0,window.location="/workflow/editor?id="+a,hide_modal()}).fail(function(){hide_modal(),alert("Saving this workflow failed. Please contact this site's administrator.")})},Cancel:hide_modal})}function f(){i.workflow.layout(),i.workflow.fit_canvas_to_nodes(),i.scroll_to_nodes(),i.canvas_manager.draw_overview()}function g(){$.jStorage.set("overview-off",!1),$("#overview-border").css("right","0px"),$("#close-viewport").css("background-position","0px 0px")}function h(){$.jStorage.set("overview-off",!0),$("#overview-border").css("right","20000px"),$("#close-viewport").css("background-position","12px 0px")}var i=b.app=this;this.options=c,this.urls=c&&c.urls||{};var l=function(){i.workflow.check_changes_in_active_form(),workflow&&i.workflow.has_changes?(do_close=function(){window.onbeforeunload=void 0,window.document.location=i.urls.workflow_index},window.show_modal("Close workflow editor","There are unsaved changes to your workflow which will be lost.",{Cancel:hide_modal,"Save Changes":function(){m(null,do_close)}},{"Don't Save":do_close})):window.document.location=i.urls.workflow_index},m=function(b,c){return show_message("Saving workflow","progress"),i.workflow.check_changes_in_active_form(),i.workflow.has_changes?(i.workflow.rectify_workflow_outputs(),void a.request({url:Galaxy.root+"api/workflows/"+i.options.id,type:"PUT",data:{workflow:i.workflow.to_simple()},success:function(a){var b=$("
").text(a.message);if(a.errors){b.addClass("warningmark");var d=$("