From d3b343acab7567ce80f9a427f0e61afc55ba4005 Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 19 Feb 2016 01:16:24 -0500 Subject: [PATCH 1/4] Use visit_inputs for check_and_update_param_values --- .../scripts/mvc/workflow/workflow-view.js | 8 +- lib/galaxy/tools/__init__.py | 109 ++++-------------- lib/galaxy/tools/actions/__init__.py | 16 +-- lib/galaxy/tools/execute.py | 10 -- lib/galaxy/tools/parameters/__init__.py | 28 +++-- lib/galaxy/tools/parameters/basic.py | 29 ++--- lib/galaxy/tools/parameters/grouping.py | 41 +------ static/maps/mvc/workflow/workflow-view.js.map | 2 +- static/scripts/mvc/workflow/workflow-view.js | 2 +- test/api/test_workflows.py | 61 ++++------ 10 files changed, 86 insertions(+), 220 deletions(-) diff --git a/client/galaxy/scripts/mvc/workflow/workflow-view.js b/client/galaxy/scripts/mvc/workflow/workflow-view.js index 761270caaf4..7f67452dcd8 100644 --- a/client/galaxy/scripts/mvc/workflow/workflow-view.js +++ b/client/galaxy/scripts/mvc/workflow/workflow-view.js @@ -361,12 +361,10 @@ EditorFormView = Backbone.View.extend({ self.canvas_manager.draw_overview(); // Determine if any parameters were 'upgraded' and provide message upgrade_message = ""; - $.each( data.upgrade_messages, function( step_id, messages ) { + _.each( data.upgrade_messages, function( messages, step_id ) { var details = ""; - Utils.deepeach( [ messages ], function( d ) { - $.each( d, function( i, v ) { - details += typeof v === "string" ? "
  • " + v + "
  • " : ""; - }); + _.each( messages, function( m ) { + details += "
  • " + m + "
  • "; }); if ( details ) { upgrade_message += "
  • Step " + ( parseInt( step_id, 10 ) + 1 ) + ": " + self.workflow.nodes[ step_id ].name + "
  • "; diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index 143601452de..0dd41ab5113 100755 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -32,8 +32,7 @@ from galaxy.tools.parameters import params_to_incoming, check_param, params_from from galaxy.tools.parameters import output_collect from galaxy.tools.parameters.basic import (BaseURLToolParameter, DataToolParameter, DataCollectionToolParameter, HiddenToolParameter, - SelectToolParameter, ToolParameter, - contains_workflow_parameter) + SelectToolParameter, ToolParameter) from galaxy.tools.parameters.grouping import Conditional, ConditionalWhen, Repeat, Section, UploadDataset from galaxy.tools.parameters.input_translation import ToolInputTranslator from galaxy.tools.test import parse_tests @@ -1094,7 +1093,7 @@ class Tool( object, Dictifiable ): return self.code_namespace[name] return None - def visit_inputs( self, value, callback ): + def visit_inputs( self, values, callback ): """ Call the function `callback` on each parameter of this tool. Visits grouping parameters recursively and constructs unique prefixes for @@ -1103,13 +1102,8 @@ class Tool( object, Dictifiable ): `callback( level_prefix, parameter, parameter_value )` """ # HACK: Yet another hack around check_values -- WHY HERE? - if not self.check_values: - return - for input in self.inputs.itervalues(): - if isinstance( input, ToolParameter ): - callback( "", input, value[input.name] ) - else: - input.visit_inputs( "", value[input.name], callback ) + if self.check_values: + visit_input_values( self.inputs, values, callback ) def handle_input( self, trans, incoming, history=None ): """ @@ -1277,87 +1271,22 @@ class Tool( object, Dictifiable ): """ messages = {} request_context = WorkRequestContext( app=trans.app, user=trans.user, history=trans.history, workflow_building_mode=workflow_building_mode ) - self.check_and_update_param_values_helper( self.inputs, values, request_context, messages, update_values=update_values ) - return messages - def check_and_update_param_values_helper( self, inputs, values, trans, messages, context=None, prefix="", update_values=True ): - """ - Recursive helper for `check_and_update_param_values_helper` - """ - context = ExpressionContext( values, context ) - for input in inputs.itervalues(): - # No value, insert the default - if input.name not in values: - if isinstance( input, Conditional ): - cond_messages = {} - if not input.is_job_resource_conditional: - cond_messages = { input.test_param.name: "No value found for '%s%s', using default" % ( prefix, input.test_param.label ) } - messages[ input.name ] = cond_messages - test_value = input.test_param.get_initial_value( trans, context ) - current_case = input.get_current_case( test_value ) - self.check_and_update_param_values_helper( input.cases[ current_case ].inputs, {}, trans, cond_messages, context, prefix, update_values=update_values ) - elif isinstance( input, Repeat ): - if input.min: - messages[ input.name ] = [] - for i in range( input.min ): - rep_prefix = prefix + '%s %d > ' % ( input.title, i + 1 ) - rep_dict = dict() - messages[ input.name ].append( rep_dict ) - self.check_and_update_param_values_helper( input.inputs, {}, trans, rep_dict, context, rep_prefix, update_values=update_values ) - elif isinstance( input, Section ): - messages[ input.name ] = {} - self.check_and_update_param_values_helper( input.inputs, {}, trans, messages[ input.name ], context, prefix, update_values=update_values ) - else: - messages[ input.name ] = "No value found for '%s%s', using default" % ( prefix, input.label ) - values[ input.name ] = input.get_initial_value( trans, context ) - # Value, visit recursively as usual - else: - if isinstance( input, Repeat ): - for i, d in enumerate( values[ input.name ] ): - rep_prefix = prefix + '%s %d > ' % ( input.title, i + 1 ) - self.check_and_update_param_values_helper( input.inputs, d, trans, messages, context, rep_prefix, update_values=update_values ) - elif isinstance( input, Conditional ): - group_values = values[ input.name ] - use_initial_value = False - if '__current_case__' in group_values: - if int( group_values[ '__current_case__' ] ) >= len( input.cases ): - use_initial_value = True - else: - use_initial_value = True - if input.test_param.name not in group_values or use_initial_value: - # No test param invalidates the whole conditional - values[ input.name ] = group_values = input.get_initial_value( trans, context ) - messages[ input.test_param.name ] = "No value found for '%s%s', using default" % ( prefix, input.test_param.label ) - current_case = group_values[ '__current_case__' ] - for child_input in input.cases[current_case].inputs.itervalues(): - messages[ child_input.name ] = "Value no longer valid for '%s%s', replacing with default" % ( prefix, child_input.label ) - else: - current = group_values[ '__current_case__' ] - self.check_and_update_param_values_helper( input.cases[current].inputs, group_values, trans, messages, context, prefix, update_values=update_values ) - elif isinstance( input, Section ): - messages[ input.name ] = {} - self.check_and_update_param_values_helper( input.inputs, values[ input.name ], trans, messages[ input.name ], context, prefix, update_values=update_values ) - else: - # Regular tool parameter, no recursion needed + def validate_inputs( input, value, context, prefixed_name, prefixed_label, **kwargs ): + value, error = check_param( request_context, input, value, context ) + if error: + if update_values: try: - value = values[ input.name ] - if not trans.workflow_building_mode: - input.value_from_basic( input.value_to_basic( value, trans.app ), trans.app, ignore_errors=False ) - input.validate( value, trans ) - else: - # skip check if is workflow parameters - ck_param = True - search = input.type in [ 'text' ] - if trans.workflow_building_mode and contains_workflow_parameter( values[ input.name ], search=search ): - ck_param = False - # this will fail when a parameter's type has changed to a non-compatible one: e.g. conditional group changed to dataset input - if ck_param: - input.value_from_basic( input.value_to_basic( value, self.app ), self.app, ignore_errors=False ) + value = input.get_initial_value( request_context, context ) + messages[ prefixed_name ] = 'No proper value found for \'%s\', using default: \'%s\' (%s).' % ( prefixed_label, value, error ) + return value except: - log.info( "Parameter validation failed.", exc_info=True ) - messages[ input.name ] = "Value no longer valid for '%s%s', replacing with default" % ( prefix, input.label ) - if update_values: - values[ input.name ] = input.get_initial_value( trans, context ) + messages[ prefixed_name ] = 'Attempt to replace invalid value for \'%s\' failed.' % ( prefixed_label ) + else: + messages[ prefixed_name ] = error + + visit_input_values( self.inputs, values, validate_inputs, ignore_errors=True ) + return messages def build_dependency_shell_commands( self, job_directory=None ): """Return a list of commands to be run to populate the current environment to include this tools requirements.""" @@ -1700,10 +1629,11 @@ class Tool( object, Dictifiable ): # load job parameters into incoming tool_message = '' + tool_warnings = '' if job: try: job_params = job.get_param_values( self.app, ignore_errors=True ) - self.check_and_update_param_values( job_params, request_context, update_values=False ) + tool_warnings = self.check_and_update_param_values( job_params, request_context, update_values=False ) self._map_source_to_history( request_context, self.inputs, job_params ) tool_message = self._compare_tool_version( job ) params_to_incoming( kwd, self.inputs, job_params, self.app ) @@ -1870,6 +1800,7 @@ class Tool( object, Dictifiable ): 'biostar_url' : self.app.config.biostar_url, 'sharable_url' : self.tool_shed_repository.get_sharable_url( self.app ) if self.tool_shed_repository else None, 'message' : tool_message, + 'warnings' : tool_warnings, 'versions' : tool_versions, 'requirements' : [ { 'name' : r.name, 'version' : r.version } for r in self.requirements ], 'errors' : state_errors, diff --git a/lib/galaxy/tools/actions/__init__.py b/lib/galaxy/tools/actions/__init__.py index 4f695d5062f..27bc6991a70 100644 --- a/lib/galaxy/tools/actions/__init__.py +++ b/lib/galaxy/tools/actions/__init__.py @@ -50,7 +50,7 @@ class DefaultToolAction( object ): current_user_roles = trans.get_current_user_roles() input_datasets = odict() - def visitor( prefix, input, value, parent=None ): + def visitor( input, value, prefix, parent=None, **kwargs ): def process_dataset( data, formats=None ): if not data: @@ -98,12 +98,12 @@ class DefaultToolAction( object ): else: raise Exception('A path for explicit datatype conversion has not been found: %s --/--> %s' % ( input_datasets[ prefix + input.name + str( i + 1 ) ].extension, conversion_extensions ) ) if parent: - parent[input.name][i] = input_datasets[ prefix + input.name + str( i + 1 ) ] + parent[ input.name ][ i ] = input_datasets[ prefix + input.name + str( i + 1 ) ] for conversion_name, conversion_data in conversions: # allow explicit conversion to be stored in job_parameter table - parent[ conversion_name ][i] = conversion_data.id # a more robust way to determine JSONable value is desired + parent[ conversion_name ][ i ] = conversion_data.id # a more robust way to determine JSONable value is desired else: - param_values[input.name][i] = input_datasets[ prefix + input.name + str( i + 1 ) ] + param_values[ input.name ][ i ] = input_datasets[ prefix + input.name + str( i + 1 ) ] for conversion_name, conversion_data in conversions: # allow explicit conversion to be stored in job_parameter table param_values[ conversion_name ][i] = conversion_data.id # a more robust way to determine JSONable value is desired @@ -143,10 +143,6 @@ class DefaultToolAction( object ): # Skipping implicit conversion stuff for now, revisit at # some point and figure out if implicitly converting a # dataset collection makes senese. - - # if i == 0: - # # Allow copying metadata to output, first item will be source. - # input_datasets[ prefix + input.name ] = data.dataset_instance input_datasets[ prefix + input.name + str( i + 1 ) ] = data tool.visit_inputs( param_values, visitor ) @@ -160,7 +156,7 @@ class DefaultToolAction( object ): input_dataset_collections = dict() - def visitor( prefix, input, value, parent=None ): + def visitor( input, value, prefix, parent=None, **kwargs ): if isinstance( input, DataToolParameter ): values = value if not isinstance( values, list ): @@ -318,7 +314,7 @@ class DefaultToolAction( object ): metadata_source = output.metadata_source if metadata_source: if isinstance( metadata_source, string_types ): - metadata_source = inp_data[metadata_source] + metadata_source = inp_data.get( metadata_source ) if metadata_source is not None: data.init_meta( copy_from=metadata_source ) diff --git a/lib/galaxy/tools/execute.py b/lib/galaxy/tools/execute.py index 3a2bc03bc45..ec93771f0cc 100644 --- a/lib/galaxy/tools/execute.py +++ b/lib/galaxy/tools/execute.py @@ -34,16 +34,6 @@ def execute( trans, tool, param_combinations, history, rerun_remap_job_id=None, # Only workflow invocation code gets to set this, ignore user supplied # values or rerun parameters. del params[ '__workflow_invocation_uuid__' ] - - # If this is a workflow, everything has now been connected so we should validate - # the state we about to execute one last time. Consider whether tool executions - # should run this as well. - if workflow_invocation_uuid: - messages = tool.check_and_update_param_values( params, trans, update_values=False ) - if messages: - execution_tracker.record_error( messages ) - return - job, result = tool.handle_single_execution( trans, rerun_remap_job_id, params, history, collection_info, execution_cache ) if job: message = EXECUTION_SUCCESS_MESSAGE % (tool.id, job.id, job_timer) diff --git a/lib/galaxy/tools/parameters/__init__.py b/lib/galaxy/tools/parameters/__init__.py index 3ebbd9aa57d..c3b82b35c58 100644 --- a/lib/galaxy/tools/parameters/__init__.py +++ b/lib/galaxy/tools/parameters/__init__.py @@ -10,7 +10,7 @@ from galaxy.util.expressions import ExpressionContext REPLACE_ON_TRUTHY = object() -def visit_input_values( inputs, input_values, callback, name_prefix="", label_prefix="", no_replacement_value=REPLACE_ON_TRUTHY, context=None ): +def visit_input_values( inputs, input_values, callback, name_prefix='', label_prefix='', parent_prefix='', no_replacement_value=REPLACE_ON_TRUTHY, context=None, ignore_errors=False ): """ Given a tools parameter definition (`inputs`) and a specific set of parameter `values`, call `callback` for each non-grouping parameter, @@ -19,10 +19,12 @@ def visit_input_values( inputs, input_values, callback, name_prefix="", label_pr If the callback returns a value, it will be replace the old value. """ - def callback_helper( input, input_values, context, name_prefix, label_prefix ): + def callback_helper( input, input_values, context, name_prefix, label_prefix, parent_prefix ): args = { 'input' : input, + 'parent' : input_values, 'value' : input_values.get( input.name ), + 'prefix' : parent_prefix, 'prefixed_name' : '%s%s' % ( name_prefix, input.name ), 'prefixed_label' : '%s%s' % ( label_prefix, input.label ), 'context' : context @@ -36,25 +38,27 @@ def visit_input_values( inputs, input_values, callback, name_prefix="", label_pr input_values[ input.name ] = new_value context = ExpressionContext( input_values, context ) + payload = { 'context': context, 'no_replacement_value': no_replacement_value, 'ignore_errors': ignore_errors, 'parent_prefix': name_prefix } for input in inputs.itervalues(): if isinstance( input, Repeat ) or isinstance( input, UploadDataset ): - for i, d in enumerate( input_values[ input.name ] ): - index = d[ '__index__' ] + values = input_values[ input.name ] = input_values.get( input.name, [] ) + for i, d in enumerate( values ): + index = d[ '__index__' ] = i new_name_prefix = name_prefix + '%s_%d|' % ( input.name, index ) new_label_prefix = label_prefix + '%s %d > ' % ( input.title, i + 1 ) - visit_input_values( input.inputs, d, callback, new_name_prefix, new_label_prefix, no_replacement_value=no_replacement_value, context=context ) + visit_input_values( input.inputs, d, callback, new_name_prefix, new_label_prefix, **payload ) elif isinstance( input, Conditional ): - values = input_values[ input.name ] + values = input_values[ input.name ] = input_values.get( input.name, {} ) new_name_prefix = name_prefix + input.name + '|' - callback_helper( input.test_param, values, context, new_name_prefix, label_prefix ) - values[ '__current_case__' ] = input.get_current_case( values.get( input.test_param.name ) ) - visit_input_values( input.cases[ values[ '__current_case__' ] ].inputs, values, callback, new_name_prefix, label_prefix, no_replacement_value=no_replacement_value, context=context ) + callback_helper( input.test_param, values, context, new_name_prefix, label_prefix, parent_prefix ) + values[ '__current_case__' ] = input.get_current_case( values.get( input.test_param.name ), ignore_errors=ignore_errors ) + visit_input_values( input.cases[ values[ '__current_case__' ] ].inputs, values, callback, new_name_prefix, label_prefix, **payload ) elif isinstance( input, Section ): - values = input_values[ input.name ] + values = input_values[ input.name ] = input_values.get( input.name, {} ) new_name_prefix = name_prefix + input.name + '|' - visit_input_values( input.inputs, values, callback, new_name_prefix, label_prefix, no_replacement_value=no_replacement_value, context=context ) + visit_input_values( input.inputs, values, callback, new_name_prefix, label_prefix, **payload ) else: - callback_helper( input, input_values, context, name_prefix, label_prefix ) + callback_helper( input, input_values, context, name_prefix, label_prefix, parent_prefix ) def check_param( trans, param, incoming_value, param_values ): diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index 05a20963a94..3014a300070 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -58,6 +58,7 @@ class ToolParameter( object, Dictifiable ): self.name = ToolParameter.parse_name( input_source ) self.type = input_source.get("type") self.hidden = input_source.get("hidden", False) + self.optional = input_source.parse_optional() self.is_dynamic = False self.label = input_source.parse_label() self.help = input_source.parse_help() @@ -66,7 +67,6 @@ class ToolParameter( object, Dictifiable ): self.sanitizer = ToolParameterSanitizer.from_element( sanitizer_elem ) else: self.sanitizer = None - self.html = "no html set" try: # These don't do anything right? These we should # delete these two lines and eliminate checks for @@ -75,9 +75,6 @@ class ToolParameter( object, Dictifiable ): self.condition = input_source.elem().get( "condition", None ) except Exception: self.repeat = None - - # Optional DataToolParameters are used in tools like GMAJ and LAJ - self.optional = input_source.parse_optional() self.validators = [] for elem in input_source.parse_validator_elems(): self.validators.append( validation.Validator.from_element( self, elem ) ) @@ -89,10 +86,7 @@ class ToolParameter( object, Dictifiable ): def get_label( self ): """Return user friendly name for the parameter""" - if self.label: - return self.label - else: - return self.name + return self.label if self.label else self.name def get_html_field( self, trans=None, value=None, other_values={} ): raise TypeError( "Abstract Method" ) @@ -191,10 +185,9 @@ class ToolParameter( object, Dictifiable ): return value def validate( self, value, trans=None ): - if value == "" and self.optional: - return - for validator in self.validators: - validator.validate( value, trans ) + if value is not '' or not self.optional: + for validator in self.validators: + validator.validate( value, trans ) def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ): """ to_dict tool parameter. This can be overridden by subclasses. """ @@ -211,23 +204,23 @@ class ToolParameter( object, Dictifiable ): def build( cls, tool, param ): """Factory method to create parameter of correct type""" param_name = cls.parse_name( param ) - param_type = param.get("type") + param_type = param.get( 'type' ) if not param_type: raise ValueError( "Tool parameter '%s' requires a 'type'" % ( param_name ) ) elif param_type not in parameter_types: raise ValueError( "Tool parameter '%s' uses an unknown type '%s'" % ( param_name, param_type ) ) else: - return parameter_types[param_type]( tool, param ) + return parameter_types[ param_type ]( tool, param ) @classmethod def parse_name(cls, input_source): - name = input_source.get("name", None) + name = input_source.get( 'name' ) if name is None: - argument = input_source.get("argument") + argument = input_source.get( 'argument' ) if argument: - name = argument.lstrip("-") + name = argument.lstrip( '-' ) else: - raise ValueError("Tool parameter must specify a name.") + raise ValueError( "Tool parameter must specify a name." ) return name diff --git a/lib/galaxy/tools/parameters/grouping.py b/lib/galaxy/tools/parameters/grouping.py index da07012a932..63184f20934 100644 --- a/lib/galaxy/tools/parameters/grouping.py +++ b/lib/galaxy/tools/parameters/grouping.py @@ -9,8 +9,6 @@ import os import StringIO import unicodedata from six import text_type - -from basic import ToolParameter from galaxy.datatypes import sniff from galaxy.util import inflector from galaxy.util import relpath @@ -113,15 +111,6 @@ class Repeat( Group ): raise e return rval - def visit_inputs( self, prefix, value, callback ): - for i, d in enumerate( value ): - for input in self.inputs.itervalues(): - new_prefix = prefix + "%s_%d|" % ( self.name, i ) - if isinstance( input, ToolParameter ): - callback( new_prefix, input, d[input.name], parent=d ) - else: - input.visit_inputs( new_prefix, d[input.name], callback ) - def get_initial_value( self, trans, context ): rval = [] for i in range( self.default ): @@ -177,13 +166,6 @@ class Section( Group ): raise e return rval - def visit_inputs( self, prefix, value, callback ): - for input in self.inputs.itervalues(): - if isinstance( input, ToolParameter ): - callback( prefix, input, value[input.name], parent=value ) - else: - input.visit_inputs( prefix, value[input.name], callback ) - def get_initial_value( self, trans, context ): rval = {} child_context = ExpressionContext( rval, context ) @@ -289,15 +271,6 @@ class UploadDataset( Group ): rval.append( rval_dict ) return rval - def visit_inputs( self, prefix, value, callback ): - for i, d in enumerate( value ): - for input in self.inputs.itervalues(): - new_prefix = prefix + "%s_%d|" % ( self.name, i ) - if isinstance( input, ToolParameter ): - callback( new_prefix, input, d[input.name], parent=d ) - else: - input.visit_inputs( new_prefix, d[input.name], callback ) - def get_initial_value( self, trans, context ): d_type = self.get_datatype( trans, context ) rval = [] @@ -554,14 +527,16 @@ class Conditional( Group ): def label( self ): return "Conditional (%s)" % self.name - def get_current_case( self, value ): + def get_current_case( self, value, ignore_errors=False ): # Convert value to user representation str_value = self.test_param.to_param_dict_string( value ) # Find the matching case for index, case in enumerate( self.cases ): if str_value == case.value: return index - raise ValueError( "No case matched value:", self.name, str_value ) + if not ignore_errors: + raise ValueError( "No case matched value:", self.name, str_value ) + return 0 def value_to_basic( self, value, app ): rval = dict() @@ -598,14 +573,6 @@ class Conditional( Group ): raise e return rval - def visit_inputs( self, prefix, value, callback ): - current_case = value['__current_case__'] - for input in self.cases[current_case].inputs.itervalues(): - if isinstance( input, ToolParameter ): - callback( prefix, input, value[input.name], parent=value ) - else: - input.visit_inputs( prefix, value[input.name], callback ) - def get_initial_value( self, trans, context ): # State for a conditional is a plain dictionary. rval = {} diff --git a/static/maps/mvc/workflow/workflow-view.js.map b/static/maps/mvc/workflow/workflow-view.js.map index f9831cc4470..b1536bb05db 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","ToolForm","Ui","async_save_text","Toastr","reset_tool_search","initValue","tool_menu_frame","$","contents","length","document","this","removeClass","find","hide","show","each","attr","hasClass","search_input","val","NODE_ICONS","tool","data_input","data_collection_input","subworkflow","pause","add_node_icon","$to_el","nodeType","iconStyle","$icon","addClass","before","EditorFormView","Backbone","View","extend","initialize","options","merge","$el","workflowView","node","html","setElement","id","after","_genericStepAttributesTemplate","type","$titleText","data","text","make_text_editable","on_finish","newLabel","lastValue","workflow","attemptUpdateNodeLabel","submit","name","warning","ajaxForm","dataType","success","active_form_has_changes","update_field_data","showWorkflowParameters","beforeSubmit","push","value","content_id","tool_state","form","change","bind","_annotationTemplate","annotation","layout_editor","self","layout","fit_canvas_to_nodes","scroll_to_nodes","canvas_manager","draw_overview","edit_workflow_attributes","clear_active_node","show_overview","jStorage","set","css","hide_overview","app","urls","active_ajax_call","close_editor","check_changes_in_active_form","has_changes","do_close","window","onbeforeunload","undefined","location","workflow_index","show_modal","Cancel","hide_modal","Save Changes","save_current_workflow","Don't Save","eventObj","success_callback","show_message","rectify_workflow_outputs","savefn","callback","ajax","url","save_workflow","workflow_data","JSON","stringify","to_simple","_","body","message","errors","errlist","i","v","appendTo","append","stored","Ok","unbind","click","focus","select","keyup","q","timer","clearTimeout","setTimeout","get","tool_search","s","map","n","index","parent","this_label","next","no_visible_tools","is","reset","datatypes","parse","Galaxy","root","async","responseText","datatypes_mapping","ext_to_type","ext_to_class_name","type_to_type","class_to_classes","_workflowLoadAjax","from_simple","upgrade_message","upgrade_messages","step_id","messages","details","deepeach","d","parseInt","nodes","Continue","ajaxStart","ajaxError","e","x","statusText","Ignore error","make_popupmenu","Save","Run","run_workflow","Edit Attributes","Auto Re-layout","Close","overview_size","width","height","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","on","add_node_for_subworkflow","latest_id","workflowId","k","vv","remove_all","cv","cc","load_workflow","cache","_moduleInitAjax","request_data","get_new_module_info","global","init_field_data","error","m","status","add_node_for_tool","create_node","add_node_for_module","display_pja","pja","get_pja_form","action_to_rem","closest","children","remove","active_node","post_job_actions","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","form_matches","form_html","match","concat","action_arguments","action_argument","arg_matches","element","inArray","substring","showToolForm","$container","$current","formView","isJSON","scrollTop","isSubType","child","$newNodeElement","title_text","$f","$title","scrollLeft","$b","prebuildNode","tmp","destroy","o","position","p","prependTo","activate_node","node_changed","po","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","ToolForm","Ui","async_save_text","Toastr","reset_tool_search","initValue","tool_menu_frame","$","contents","length","document","this","removeClass","find","hide","show","each","attr","hasClass","search_input","val","NODE_ICONS","tool","data_input","data_collection_input","subworkflow","pause","add_node_icon","$to_el","nodeType","iconStyle","$icon","addClass","before","EditorFormView","Backbone","View","extend","initialize","options","merge","$el","workflowView","node","html","setElement","id","after","_genericStepAttributesTemplate","type","$titleText","data","text","make_text_editable","on_finish","newLabel","lastValue","workflow","attemptUpdateNodeLabel","submit","name","warning","ajaxForm","dataType","success","active_form_has_changes","update_field_data","showWorkflowParameters","beforeSubmit","push","value","content_id","tool_state","form","change","bind","_annotationTemplate","annotation","layout_editor","self","layout","fit_canvas_to_nodes","scroll_to_nodes","canvas_manager","draw_overview","edit_workflow_attributes","clear_active_node","show_overview","jStorage","set","css","hide_overview","app","urls","active_ajax_call","close_editor","check_changes_in_active_form","has_changes","do_close","window","onbeforeunload","undefined","location","workflow_index","show_modal","Cancel","hide_modal","Save Changes","save_current_workflow","Don't Save","eventObj","success_callback","show_message","rectify_workflow_outputs","savefn","callback","ajax","url","save_workflow","workflow_data","JSON","stringify","to_simple","_","body","message","errors","errlist","i","v","appendTo","append","stored","Ok","unbind","click","focus","select","keyup","q","timer","clearTimeout","setTimeout","get","tool_search","s","map","n","index","parent","this_label","next","no_visible_tools","is","reset","datatypes","parse","Galaxy","root","async","responseText","datatypes_mapping","ext_to_type","ext_to_class_name","type_to_type","class_to_classes","_workflowLoadAjax","from_simple","upgrade_message","upgrade_messages","messages","step_id","details","m","parseInt","nodes","Continue","ajaxStart","ajaxError","e","x","statusText","Ignore error","make_popupmenu","Save","Run","run_workflow","Edit Attributes","Auto Re-layout","Close","overview_size","width","height","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","on","add_node_for_subworkflow","latest_id","workflowId","k","vv","remove_all","cv","cc","load_workflow","cache","_moduleInitAjax","request_data","get_new_module_info","global","init_field_data","error","status","add_node_for_tool","create_node","add_node_for_module","display_pja","pja","get_pja_form","action_to_rem","closest","children","remove","active_node","post_job_actions","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","form_matches","form_html","match","concat","action_arguments","action_argument","arg_matches","element","inArray","substring","showToolForm","$container","$current","formView","isJSON","scrollTop","isSubType","child","$newNodeElement","title_text","$f","$title","scrollLeft","$b","prebuildNode","tmp","destroy","o","position","p","prependTo","activate_node","node_changed","po","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 6a768019d85..f47dba5a1b4 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/tool/tool-form-workflow","mvc/ui/ui-misc","utils/async-save-text","libs/toastr","ui/editable-text"],function(a,b,c,d,e,f,g,h,i){function j(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 NODE_ICONS={tool:"fa-wrench",data_input:"fa-file-o",data_collection_input:"fa-folder-o",subworkflow:"fa-sitemap fa-rotate-270",pause:"fa-pause"},add_node_icon=function(a,b){var c=NODE_ICONS[b];if(c){var d=$(' ').addClass(c);a.before(d)}},EditorFormView=Backbone.View.extend({initialize:function(b){this.options=a.merge(b,{});var c=$("
    "),d=b.workflowView,e=b.node;if(b.html&&c.html(b.html),this.setElement(c),e&&"no-node"!=e.id){c.find("table:first").after(this._genericStepAttributesTemplate(e));var f=e.type;add_node_icon(c.find(".portlet-title-text"),f);var g=c.find(".portlet-title-text");g.data("last-value",g.text()),g.make_text_editable({on_finish:function(a){var b=g.data("last-value");if(a!=b){var f=d.workflow;f.attemptUpdateNodeLabel(e,a)?(c.find("input[name='label']").val(a),g.data("last-value",a),c.find("form").submit(),""==a&&g.text(e.name)):(i.warning("Step label "+a+" already exists, cannot update label."),g.text(b))}}}),c.find("form").length>0&&c.find("form").ajaxForm({type:"POST",dataType:"json",success:function(a){d.workflow.active_form_has_changes=!1,e.update_field_data(a),d.showWorkflowParameters()},beforeSubmit:function(a){a.push({name:"content_id",value:e.content_id}),a.push({name:"tool_state",value:e.tool_state}),a.push({name:"_",value:"true"})}}).each(function(){var a=this;$(this).find('select[refresh_on_change="true"]').change(function(){$(a).submit()}),$(this).find('input[refresh_on_change="true"]').change(function(){$(a).submit()}),$(this).find("input, textarea, select").each(function(){$(this).bind("focus click",function(){d.workflow.active_form_has_changes=!0})})})}},_genericStepAttributesTemplate:function(a){return'

    Edit Step Attributes
    '+this._annotationTemplate(a)+"

    "},_annotationTemplate:function(a){return'
    Add an annotation or notes to this step; annotations are available when a workflow is viewed.
    '}}),Backbone.View.extend({initialize:function(c){function e(){k.workflow.layout(),k.workflow.fit_canvas_to_nodes(),k.scroll_to_nodes(),k.canvas_manager.draw_overview()}function f(){k.workflow.clear_active_node(),$(".right-content").hide(),$("#edit-attributes").show()}function g(){$.jStorage.set("overview-off",!1),$("#overview-border").css("right","0px"),$("#close-viewport").css("background-position","0px 0px")}function i(){$.jStorage.set("overview-off",!0),$("#overview-border").css("right","20000px"),$("#close-viewport").css("background-position","12px 0px")}var k=b.app=this;this.options=c,this.urls=c&&c.urls||{},this.active_ajax_call=!1;var l=function(){k.workflow.check_changes_in_active_form(),workflow&&k.workflow.has_changes?(do_close=function(){window.onbeforeunload=void 0,window.document.location=k.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=k.urls.workflow_index},m=function(a,b){if(show_message("Saving workflow","progress"),k.workflow.check_changes_in_active_form(),!k.workflow.has_changes)return hide_modal(),void(b&&b());k.workflow.rectify_workflow_outputs();var c=function(a){$.ajax({url:k.urls.save_workflow,type:"POST",data:{id:k.options.id,workflow_data:function(){return JSON.stringify(k.workflow.to_simple())},_:"true"},dataType:"json",success:function(b){var c=$("
    ").text(b.message);if(b.errors){c.addClass("warningmark");var d=$("