";
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=$("
")}),upgrade_message?window.show_modal("Workflow loaded with changes","Problems were encountered loading this workflow (possibly a result of tool upgrades). Please review the following parameters and then save.
"+upgrade_message+"
",{Continue:hide_modal}):hide_modal(),k.showWorkflowParameters()},beforeSubmit:function(){show_message("Loading workflow","progress")}}),$(document).ajaxStart(function(){k.active_ajax_call=!0,$(document).bind("ajaxStop.global",function(){k.active_ajax_call=!1})}),$(document).ajaxError(function(a,b){var c=b.responseText||b.statusText||"Could not connect to server";return window.show_modal("Server error",c,{"Ignore error":hide_modal}),!1}),window.make_popupmenu&&make_popupmenu($("#workflow-options-button"),{Save:m,Run:function(){window.location=k.urls.run_workflow},"Edit Attributes":f,"Auto Re-layout":e,Close:l}),overview_size=$.jStorage.get("overview-size"),void 0!==overview_size&&$("#overview-border").css({width:overview_size,height:overview_size}),$.jStorage.get("overview-off")?i():g(),$("#overview-border").bind("dragend",function(a,b){var c=$(this).offsetParent(),d=c.offset(),e=Math.max(c.width()-(b.offsetX-d.left),c.height()-(b.offsetY-d.top));$.jStorage.set("overview-size",e+"px")}),$("#close-viewport").click(function(){"0px"===$("#overview-border").css("right")?i():g()}),window.onbeforeunload=function(){return workflow&&k.workflow.has_changes?"There are unsaved changes to your workflow which will be lost.":void 0},this.options.workflows.length>0&&$("#left").find(".toolMenu").append(this._buildToolPanelWorkflows()),$("div.toolSectionBody").hide(),$("div.toolSectionTitle > span").wrap("");var n=null;$("div.toolSectionTitle").each(function(){var a=$(this).next("div.toolSectionBody");$(this).click(function(){a.is(":hidden")?(n&&n.slideUp("fast"),n=a,a.slideDown("fast")):(a.slideUp("fast"),n=null)})}),h("workflow-name","workflow-name",k.urls.rename_async,"new_name"),$("#workflow-tag").click(function(){return $(".tag-area").click(),!1}),h("workflow-annotation","workflow-annotation",k.urls.annotate_async,"new_annotation",25,!0,4)},_buildToolPanelWorkflows:function(){var a=this,b=$('
');return _.each(this.options.workflows,function(c){if(c.id!==a.options.id){var d=new g.ButtonIcon({icon:"fa fa-copy",cls:"ui-button-icon-plain",tooltip:"Copy and insert individual steps",onclick:function(){c.step_count<2?a.copy_into_workflow(c.id,c.name):Galaxy.modal.show({title:"Warning",body:"This will copy "+c.step_count+" new steps into your workflow.",buttons:{Cancel:function(){Galaxy.modal.hide()},Copy:function(){Galaxy.modal.hide(),a.copy_into_workflow(c.id,c.name)}}})}}),e=$("").attr("href","#").html(c.name).on("click",function(){a.add_node_for_subworkflow(c.latest_id,c.name)});b.find(".toolSectionBg").append($("").addClass("toolTitle").append(e).append(d.$el))}}),b},copy_into_workflow:function(a){var b=this;this._workflowLoadAjax(a,{success:function(a){b.workflow.from_simple(a,!1),upgrade_message="",$.each(a.upgrade_messages,function(a,c){upgrade_message+="
"}),upgrade_message?window.show_modal("Subworkflow embedded with changes","Problems were encountered loading this workflow (possibly a result of tool upgrades). Please review the following parameters and then save.
Add an annotation or notes to this step; annotations are available when a workflow is viewed.
'}}),Backbone.View.extend({initialize:function(a){function c(){i.workflow.layout(),i.workflow.fit_canvas_to_nodes(),i.scroll_to_nodes(),i.canvas_manager.draw_overview()}function e(){i.workflow.clear_active_node(),$(".right-content").hide(),$("#edit-attributes").show()}function f(){$.jStorage.set("overview-off",!1),$("#overview-border").css("right","0px"),$("#close-viewport").css("background-position","0px 0px")}function g(){$.jStorage.set("overview-off",!0),$("#overview-border").css("right","20000px"),$("#close-viewport").css("background-position","12px 0px")}var i=b.app=this;this.options=a,this.urls=a&&a.urls||{},this.active_ajax_call=!1;var k=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(){l(null,do_close)}},{"Don't Save":do_close})):window.document.location=i.urls.workflow_index},l=function(a,b){if(show_message("Saving workflow","progress"),i.workflow.check_changes_in_active_form(),!i.workflow.has_changes)return hide_modal(),void(b&&b());i.workflow.rectify_workflow_outputs();var c=function(a){$.ajax({url:i.urls.save_workflow,type:"POST",data:{id:i.options.id,workflow_data:function(){return JSON.stringify(i.workflow.to_simple())},_:"true"},dataType:"json",success:function(b){var c=$("").text(b.message);if(b.errors){c.addClass("warningmark");var d=$("
")}),upgrade_message?window.show_modal("Workflow loaded with changes","Problems were encountered loading this workflow (possibly a result of tool upgrades). Please review the following parameters and then save.
"+upgrade_message+"
",{Continue:hide_modal}):hide_modal(),i.showWorkflowParameters()},beforeSubmit:function(){show_message("Loading workflow","progress")}}),$(document).ajaxStart(function(){i.active_ajax_call=!0,$(document).bind("ajaxStop.global",function(){i.active_ajax_call=!1})}),$(document).ajaxError(function(a,b){var c=b.responseText||b.statusText||"Could not connect to server";return window.show_modal("Server error",c,{"Ignore error":hide_modal}),!1}),window.make_popupmenu&&make_popupmenu($("#workflow-options-button"),{Save:l,Run:function(){window.location=i.urls.run_workflow},"Edit Attributes":e,"Auto Re-layout":c,Close:k}),overview_size=$.jStorage.get("overview-size"),void 0!==overview_size&&$("#overview-border").css({width:overview_size,height:overview_size}),$.jStorage.get("overview-off")?g():f(),$("#overview-border").bind("dragend",function(a,b){var c=$(this).offsetParent(),d=c.offset(),e=Math.max(c.width()-(b.offsetX-d.left),c.height()-(b.offsetY-d.top));$.jStorage.set("overview-size",e+"px")}),$("#close-viewport").click(function(){"0px"===$("#overview-border").css("right")?g():f()}),window.onbeforeunload=function(){return workflow&&i.workflow.has_changes?"There are unsaved changes to your workflow which will be lost.":void 0},this.options.workflows.length>0&&$("#left").find(".toolMenu").append(this._buildToolPanelWorkflows()),$("div.toolSectionBody").hide(),$("div.toolSectionTitle > span").wrap("");var m=null;$("div.toolSectionTitle").each(function(){var a=$(this).next("div.toolSectionBody");$(this).click(function(){a.is(":hidden")?(m&&m.slideUp("fast"),m=a,a.slideDown("fast")):(a.slideUp("fast"),m=null)})}),h("workflow-name","workflow-name",i.urls.rename_async,"new_name"),$("#workflow-tag").click(function(){return $(".tag-area").click(),!1}),h("workflow-annotation","workflow-annotation",i.urls.annotate_async,"new_annotation",25,!0,4)},_buildToolPanelWorkflows:function(){var a=this,b=$('
');return _.each(this.options.workflows,function(c){if(c.id!==a.options.id){var d=new g.ButtonIcon({icon:"fa fa-copy",cls:"ui-button-icon-plain",tooltip:"Copy and insert individual steps",onclick:function(){c.step_count<2?a.copy_into_workflow(c.id,c.name):Galaxy.modal.show({title:"Warning",body:"This will copy "+c.step_count+" new steps into your workflow.",buttons:{Cancel:function(){Galaxy.modal.hide()},Copy:function(){Galaxy.modal.hide(),a.copy_into_workflow(c.id,c.name)}}})}}),e=$("").attr("href","#").html(c.name).on("click",function(){a.add_node_for_subworkflow(c.latest_id,c.name)});b.find(".toolSectionBg").append($("").addClass("toolTitle").append(e).append(d.$el))}}),b},copy_into_workflow:function(a){var b=this;this._workflowLoadAjax(a,{success:function(a){b.workflow.from_simple(a,!1),upgrade_message="",$.each(a.upgrade_messages,function(a,c){upgrade_message+="
"}),upgrade_message?window.show_modal("Subworkflow embedded with changes","Problems were encountered loading this workflow (possibly a result of tool upgrades). Please review the following parameters and then save.