diff --git a/client/galaxy/scripts/mvc/workflow/workflow-manager.js b/client/galaxy/scripts/mvc/workflow/workflow-manager.js
index 08c247672b9..070c3aa15f8 100644
--- a/client/galaxy/scripts/mvc/workflow/workflow-manager.js
+++ b/client/galaxy/scripts/mvc/workflow/workflow-manager.js
@@ -1,4 +1,8 @@
-define(['mvc/workflow/workflow-connector'], function( Connector ) {
+define([
+ 'mvc/workflow/workflow-connector',
+ 'libs/toastr'
+ ],
+function( Connector, Toastr ) {
function Workflow( app, canvas_container ) {
this.app = app;
this.canvas_container = canvas_container;
@@ -7,10 +11,49 @@ define(['mvc/workflow/workflow-connector'], function( Connector ) {
this.name = null;
this.has_changes = false;
this.active_form_has_changes = false;
+ this.nodeLabels = {}; // TODO: track and enforce output labels also
+
}
$.extend( Workflow.prototype, {
- create_node: function ( type, title_text, tool_id ) {
- var node = this.app.prebuildNode( type, title_text, tool_id );
+ canLabelNodeWith: function( label ) {
+ if( label ) {
+ return ! (label in this.nodeLabels);
+ } else {
+ // empty labels are non-exclusive, so allow this one.
+ return true;
+ }
+ },
+ registerNodeLabel: function( label ) {
+ if( label ) {
+ this.nodeLabels[label] = true;
+ }
+ },
+ unregisterNodeLabel: function( label ) {
+ if( label ) {
+ delete this.nodeLabels[label];
+ }
+ },
+ updateNodeLabel: function( fromLabel, toLabel ) {
+ if( fromLabel ) {
+ this.unregisterNodeLabel( fromLabel );
+ }
+ if( ! this.canLabelNodeWith( toLabel ) ) {
+ Toastr.warning("Workflow contains duplicate node labels " + toLabel + ". This must be fixed before it can be saved.");
+ }
+ if( toLabel ) {
+ this.registerNodeLabel( toLabel );
+ }
+ },
+ attemptUpdateNodeLabel: function( node, label ) {
+ if( this.canLabelNodeWith( label ) ) {
+ node.setLabel( label );
+ return true;
+ } else {
+ return false;
+ }
+ },
+ create_node: function ( type, title_text, content_id ) {
+ var node = this.app.prebuildNode( type, title_text, content_id );
this.add_node( node );
this.fit_canvas_to_nodes();
this.app.canvas_manager.draw_overview();
@@ -131,7 +174,7 @@ define(['mvc/workflow/workflow-connector'], function( Connector ) {
var node_data = {
id : node.id,
type : node.type,
- tool_id : node.tool_id,
+ tool_id : node.content_id,
tool_state : node.tool_state,
tool_errors : node.tool_errors,
input_connections : input_connections,
@@ -383,4 +426,4 @@ define(['mvc/workflow/workflow-connector'], function( Connector ) {
}
});
return Workflow;
-});
\ No newline at end of file
+});
diff --git a/client/galaxy/scripts/mvc/workflow/workflow-node.js b/client/galaxy/scripts/mvc/workflow/workflow-node.js
index fb4feb69844..7395f22a8ff 100644
--- a/client/galaxy/scripts/mvc/workflow/workflow-node.js
+++ b/client/galaxy/scripts/mvc/workflow/workflow-node.js
@@ -124,6 +124,10 @@ define(['mvc/workflow/workflow-view-node'], function( NodeView ) {
// Remove active class
$(element).removeClass( "toolForm-active" );
},
+ setLabel: function(label) {
+ this.app.workflow.updateNodeLabel(this.label, label);
+ this.label = label || null;
+ },
init_field_data : function ( data ) {
if ( data.type ) {
this.type = data.type;
@@ -135,7 +139,7 @@ define(['mvc/workflow/workflow-view-node'], function( NodeView ) {
this.tooltip = data.tooltip ? data.tooltip : "";
this.annotation = data.annotation;
this.post_job_actions = data.post_job_actions ? data.post_job_actions : {};
- this.label = data.label;
+ this.setLabel(data.label);
this.uuid = data.uuid;
this.workflow_outputs = data.workflow_outputs ? data.workflow_outputs : [];
@@ -165,6 +169,8 @@ define(['mvc/workflow/workflow-view-node'], function( NodeView ) {
this.form_html = data.form_html;
this.tool_errors = data.tool_errors;
this.annotation = data['annotation'];
+ this.setLabel(data.label);
+
if( "post_job_actions" in data ) {
// Won't be present in response for data inputs
var pja_in = $.parseJSON(data.post_job_actions);
@@ -184,6 +190,7 @@ define(['mvc/workflow/workflow-view-node'], function( NodeView ) {
unusedView.el.terminal.destroy();
} );
nodeView.terminalViews = newTerminalViews;
+ node.nodeView.render();
// In general workflow editor assumes tool outputs don't change in # or
// type (not really valid right?) but adding special logic here for
// data collection input parameters that can have their collection
diff --git a/client/galaxy/scripts/mvc/workflow/workflow-view-node.js b/client/galaxy/scripts/mvc/workflow/workflow-view-node.js
index d702d17e7b3..f08308d6bf7 100644
--- a/client/galaxy/scripts/mvc/workflow/workflow-view-node.js
+++ b/client/galaxy/scripts/mvc/workflow/workflow-view-node.js
@@ -11,6 +11,14 @@ define(['mvc/workflow/workflow-view-terminals', 'mvc/workflow/workflow-view-data
},
render: function() {
+ var label = this.node.label;
+ var title;
+ if(label) {
+ title = label;
+ } else {
+ title = this.node.name;
+ }
+ this.$el.find(".nodeTitle").text(title);
this.renderToolErrors();
this.$el.css( "width", Math.min(250, Math.max( this.$el.width(), this.output_width )));
},
diff --git a/client/galaxy/scripts/mvc/workflow/workflow-view.js b/client/galaxy/scripts/mvc/workflow/workflow-view.js
index fe712da025e..6fa56e40d67 100644
--- a/client/galaxy/scripts/mvc/workflow/workflow-view.js
+++ b/client/galaxy/scripts/mvc/workflow/workflow-view.js
@@ -7,7 +7,9 @@ define([
'mvc/workflow/workflow-node',
'mvc/tool/tools-form-workflow',
'utils/async-save-text',
-], function( Utils, Globals, Workflow, WorkflowCanvas, Node, ToolsForm, async_save_text ){
+ 'libs/toastr',
+ 'ui/editable-text'
+], function( Utils, Globals, Workflow, WorkflowCanvas, Node, ToolsForm, async_save_text, Toastr ){
// Reset tool search to start state.
function reset_tool_search( initValue ) {
@@ -44,6 +46,21 @@ function reset_tool_search( initValue ) {
}
}
+NODE_ICONS = {
+ 'tool': 'fa-wrench',
+ 'data_input': 'fa-file-o',
+ 'data_collection_input': 'fa-folder-o',
+ 'pause': 'fa-pause'
+}
+
+add_node_icon = function($to_el, nodeType) {
+ var iconStyle = NODE_ICONS[nodeType];
+ if(iconStyle) {
+ var $icon = $(' ').addClass(iconStyle);
+ $to_el.before($icon);
+ }
+}
+
// Really a shell of a real backbone view, but refactoring in the right
// direction I think.
@@ -61,7 +78,33 @@ EditorFormView = Backbone.View.extend({
this.setElement($el);
if (node && node.id != 'no-node') {
- $el.find('.toolForm:first').after(this._genericStepAttributesTemplate( node ));
+ $el.find('table:first').after(this._genericStepAttributesTemplate( node ));
+ var nodeType = node.type;
+ add_node_icon($el.find('.portlet-title-text'), nodeType);
+ var $titleText = $el.find(".portlet-title-text");
+ $titleText.data('last-value', $titleText.text());
+ $titleText.make_text_editable({
+ on_finish: function( newLabel ){
+ var lastValue = $titleText.data("last-value");
+ if( newLabel == lastValue ) {
+ return;
+ }
+
+ var workflow = workflowView.workflow;
+ if( workflow.attemptUpdateNodeLabel( node, newLabel ) ) {
+ $el.find("input[name='label']").val(newLabel);
+ $titleText.data("last-value", newLabel);
+ $el.find('form').submit();
+ if(newLabel == "") {
+ // If label unset restore default name as title.
+ $titleText.text(node.name);
+ }
+ } else {
+ Toastr.warning("Step label " + newLabel + " already exists, cannot update label.");
+ $titleText.text(lastValue);
+ }
+ }
+ });
($el.find( 'form' ).length > 0) && $el.find( 'form' ).ajaxForm( {
type: 'POST',
dataType: 'json',
@@ -525,12 +568,10 @@ EditorFormView = Backbone.View.extend({
cc.css( { left: left, top: top } );
},
- // Add a new step to the workflow by tool id
- add_node_for_tool: function ( id, title ) {
- node = this.workflow.create_node( 'tool', title, id );
+ _moduleInitAjax: function(node, request_data) {
$.ajax( {
url: this.urls.get_new_module_info,
- data: { type: "tool", tool_id: id, "_": "true" },
+ data: request_data,
global: false,
dataType: "json",
success: function( data ) {
@@ -546,23 +587,21 @@ EditorFormView = Backbone.View.extend({
});
},
+ // Add a new step to the workflow by tool id
+ add_node_for_tool: function ( id, title ) {
+ node = this.workflow.create_node( 'tool', title, id );
+ this._moduleInitAjax(node, { type: "tool", content_id: id, "_": "true" });
+ },
+
+ // Add a new step to the workflow by tool id
+ add_node_for_subworkflow: function ( id, title ) {
+ node = this.workflow.create_node( 'subworkflow', title, id );
+ this._moduleInitAjax(node, { type: "subworkflow", subworkflow_id: id, "_": "true" });
+ },
+
add_node_for_module: function ( type, title ) {
node = this.workflow.create_node( type, title );
- $.ajax( {
- url: this.urls.get_new_module_info,
- data: { type: type, "_": "true" },
- dataType: "json",
- success: function( data ) {
- node.init_field_data( data );
- },
- error: function( x, e ) {
- var m = "error loading field data"
- if ( x.status == 0 ) {
- m += ", server unavailable"
- }
- node.error( m );
- }
- });
+ this._moduleInitAjax(node, { type: type, "_": "true" });
},
// This function preloads how to display known pja's.
@@ -704,22 +743,27 @@ EditorFormView = Backbone.View.extend({
return ( this.type_to_type[child] ) && ( parent in this.type_to_type[child] );
},
- prebuildNode: function ( type, title_text, tool_id ) {
+ $newNodeElement: function(type, title_text) {
+ var $f = $("
");
+ var $title = $("" + title_text + "
" );
+ add_node_icon($title.find('.nodeTitle'), type);
+ $f.append( $title );
+ $f.css( "left", $(window).scrollLeft() + 20 );
+ $f.css( "top", $(window).scrollTop() + 20 );
+ var $b = $("
");
+ $f.append($b);
+ return $f
+ },
+
+ prebuildNode: function ( type, title_text, content_id ) {
var self = this;
- var f = $("
");
- var node = new Node( this, { element: f } );
+ var $f = this.$newNodeElement( type, title_text );
+ var node = new Node( this, { element: $f } );
node.type = type;
- if ( type == 'tool' ) {
- node.tool_id = tool_id;
- }
- var title = $("" + title_text + "
" );
- f.append( title );
- f.css( "left", $(window).scrollLeft() + 20 ); f.css( "top", $(window).scrollTop() + 20 );
- var b = $("
");
+ node.content_id = content_id;
var tmp = " loading tool info...
";
- b.append( tmp );
+ $f.find(".toolFormBody").append(tmp);
node.form_html = tmp;
- f.append( b );
// Fix width to computed width
// Now add floats
var buttons = $("
");
@@ -727,17 +771,17 @@ EditorFormView = Backbone.View.extend({
node.destroy();
}));
// Place inside container
- f.appendTo( "#canvas-container" );
+ $f.appendTo( "#canvas-container" );
// Position in container
var o = $("#canvas-container").position();
var p = $("#canvas-container").parent();
- var width = f.width();
- var height = f.height();
- f.css( { left: ( - o.left ) + ( p.width() / 2 ) - ( width / 2 ), top: ( - o.top ) + ( p.height() / 2 ) - ( height / 2 ) } );
- buttons.prependTo( title );
+ var width = $f.width();
+ var height = $f.height();
+ $f.css( { left: ( - o.left ) + ( p.width() / 2 ) - ( width / 2 ), top: ( - o.top ) + ( p.height() / 2 ) - ( height / 2 ) } );
+ buttons.prependTo( $f.find(".toolFormTitle" ) );
width += ( buttons.width() + 10 );
- f.css( "width", width );
- $(f).bind( "dragstart", function() {
+ $f.css( "width", width );
+ $f.bind( "dragstart", function() {
self.workflow.activate_node( node );
}).bind( "dragend", function() {
self.workflow.node_changed( this );
diff --git a/lib/galaxy/managers/base.py b/lib/galaxy/managers/base.py
index c12ae7a513c..13820752c79 100644
--- a/lib/galaxy/managers/base.py
+++ b/lib/galaxy/managers/base.py
@@ -112,6 +112,16 @@ def get_class( class_name ):
return item_class
+def decode_id(app, id):
+ try:
+ # note: use str - occasionally a fully numeric id will be placed in post body and parsed as int via JSON
+ # resulting in error for valid id
+ return app.security.decode_id( str( id ) )
+ except ( ValueError, TypeError ):
+ msg = "Malformed id ( %s ) specified, unable to decode" % ( str( id ) )
+ raise exceptions.MalformedId( msg, id=str( id ) )
+
+
def get_object( trans, id, class_name, check_ownership=False, check_accessible=False, deleted=None ):
"""
Convenience method to get a model object with the specified checks. This is
@@ -119,11 +129,7 @@ def get_object( trans, id, class_name, check_ownership=False, check_accessible=F
controller mixin code - however whenever possible the managers for a
particular model should be used to load objects.
"""
- try:
- decoded_id = trans.security.decode_id( id )
- except:
- raise exceptions.MessageException( "Malformed %s id ( %s ) specified, unable to decode"
- % ( class_name, str( id ) ), type='error' )
+ decoded_id = decode_id(trans.app, id)
try:
item_class = get_class( class_name )
assert item_class is not None
diff --git a/lib/galaxy/managers/workflows.py b/lib/galaxy/managers/workflows.py
index bdaadc39e1b..3a4bf53489c 100644
--- a/lib/galaxy/managers/workflows.py
+++ b/lib/galaxy/managers/workflows.py
@@ -2,12 +2,18 @@ from __future__ import absolute_import
from collections import namedtuple
import json
+import uuid
+
+from sqlalchemy import and_
from galaxy import model
+from galaxy import util
from galaxy import exceptions
from galaxy.model.item_attrs import UsesAnnotations
from galaxy.workflow import modules
+from .base import decode_id
+
# For WorkflowContentManager
from galaxy.util.sanitize_html import sanitize_html
from galaxy.workflow.steps import attach_ordered_steps
@@ -26,6 +32,38 @@ class WorkflowsManager( object ):
def __init__( self, app ):
self.app = app
+ def get_stored_workflow( self, trans, workflow_id ):
+ """ Use a supplied ID (UUID or encoded stored workflow ID) to find
+ a workflow.
+ """
+ if util.is_uuid(workflow_id):
+ # see if they have passed in the UUID for a workflow that is attached to a stored workflow
+ workflow_uuid = uuid.UUID(workflow_id)
+ stored_workflow = trans.sa_session.query(trans.app.model.StoredWorkflow).filter( and_(
+ trans.app.model.StoredWorkflow.latest_workflow_id == trans.app.model.Workflow.id,
+ trans.app.model.Workflow.uuid == workflow_uuid
+ )).first()
+ if stored_workflow is None:
+ raise exceptions.ObjectNotFound( "Workflow not found: %s" % workflow_id )
+ else:
+ workflow_id = decode_id( self.app, workflow_id )
+ query = trans.sa_session.query( trans.app.model.StoredWorkflow )
+ stored_workflow = query.get( workflow_id )
+ if stored_workflow is None:
+ raise exceptions.ObjectNotFound( "No such workflow found." )
+ return stored_workflow
+
+ def get_stored_accessible_workflow( self, trans, workflow_id ):
+ stored_workflow = self.get_stored_workflow( trans, workflow_id )
+
+ # check to see if user has permissions to selected workflow
+ if stored_workflow.user != trans.user and not trans.user_is_admin():
+ if trans.sa_session.query(trans.app.model.StoredWorkflowUserShareAssociation).filter_by(user=trans.user, stored_workflow=stored_workflow).count() == 0:
+ message = "Workflow is not owned by or shared with current user"
+ raise exceptions.ItemAccessibilityException( message )
+
+ return stored_workflow
+
def check_security( self, trans, has_workflow, check_ownership=True, check_accessible=True):
""" check accessibility or ownership of workflows, storedworkflows, and
workflowinvocations. Throw an exception or returns True if user has
@@ -352,7 +390,7 @@ class WorkflowContentsManager(UsesAnnotations):
step_dict = {
'id': step.order_index,
'type': module.type,
- 'tool_id': module.get_tool_id(),
+ 'tool_id': module.get_content_id(),
'name': module.get_name(),
'tool_state': module.get_state(),
'tooltip': module.get_tooltip( static_path=url_for( '/static' ) ),
@@ -395,11 +433,13 @@ class WorkflowContentsManager(UsesAnnotations):
action_arguments=pja.action_arguments
)
step_dict['post_job_actions'] = pja_dict
- # workflow outputs
- outputs = []
- for output in step.workflow_outputs:
- outputs.append({"output_name": output.output_name})
- step_dict['workflow_outputs'] = outputs
+
+ # workflow outputs
+ outputs = []
+ for output in step.workflow_outputs:
+ outputs.append({"output_name": output.output_name})
+ step_dict['workflow_outputs'] = outputs
+
# Encode input connections as dictionary
input_conn_dict = {}
for conn in input_connections:
@@ -453,7 +493,7 @@ class WorkflowContentsManager(UsesAnnotations):
step_dict = {
'id': step.order_index,
'type': module.type,
- 'tool_id': module.get_tool_id(),
+ 'tool_id': module.get_content_id(),
'tool_version': step.tool_version,
'name': module.get_name(),
'tool_state': module.get_state( secure=False ),
diff --git a/lib/galaxy/web/base/controller.py b/lib/galaxy/web/base/controller.py
index dba14dc3ece..3c46652783c 100644
--- a/lib/galaxy/web/base/controller.py
+++ b/lib/galaxy/web/base/controller.py
@@ -11,7 +11,6 @@ from paste.httpexceptions import HTTPBadRequest, HTTPInternalServerError
from paste.httpexceptions import HTTPNotImplemented, HTTPRequestRangeNotSatisfiable
from galaxy.exceptions import ItemAccessibilityException, ItemDeletionException, ItemOwnershipException
from galaxy.exceptions import MessageException
-from galaxy import exceptions
from galaxy import web
from galaxy import model
@@ -94,13 +93,7 @@ class BaseController( object ):
# ---- parsing query params
def decode_id( self, id ):
- try:
- # note: use str - occasionally a fully numeric id will be placed in post body and parsed as int via JSON
- # resulting in error for valid id
- return self.app.security.decode_id( str( id ) )
- except ( ValueError, TypeError ):
- msg = "Malformed id ( %s ) specified, unable to decode" % ( str( id ) )
- raise exceptions.MalformedId( msg, id=str( id ) )
+ return managers_base.decode_id( self.app, id )
def encode_all_ids( self, trans, rval, recursive=False ):
"""
diff --git a/lib/galaxy/webapps/galaxy/api/workflows.py b/lib/galaxy/webapps/galaxy/api/workflows.py
index 4e7107d44c3..be1ff669617 100644
--- a/lib/galaxy/webapps/galaxy/api/workflows.py
+++ b/lib/galaxy/webapps/galaxy/api/workflows.py
@@ -4,11 +4,10 @@ API operations for Workflows
from __future__ import absolute_import
-import uuid
import logging
import copy
import urllib
-from sqlalchemy import and_, desc, false, or_, true
+from sqlalchemy import desc, false, or_, true
from galaxy import exceptions, util
from galaxy.model.item_attrs import UsesAnnotations
from galaxy.managers import histories
@@ -570,33 +569,10 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn
)
def __get_stored_accessible_workflow( self, trans, workflow_id ):
- stored_workflow = self.__get_stored_workflow( trans, workflow_id )
-
- # check to see if user has permissions to selected workflow
- if stored_workflow.user != trans.user and not trans.user_is_admin():
- if trans.sa_session.query(trans.app.model.StoredWorkflowUserShareAssociation).filter_by(user=trans.user, stored_workflow=stored_workflow).count() == 0:
- message = "Workflow is not owned by or shared with current user"
- raise exceptions.ItemAccessibilityException( message )
-
- return stored_workflow
+ return self.workflow_manager.get_stored_accessible_workflow( trans, workflow_id )
def __get_stored_workflow( self, trans, workflow_id ):
- if util.is_uuid(workflow_id):
- # see if they have passed in the UUID for a workflow that is attached to a stored workflow
- workflow_uuid = uuid.UUID(workflow_id)
- stored_workflow = trans.sa_session.query(trans.app.model.StoredWorkflow).filter( and_(
- trans.app.model.StoredWorkflow.latest_workflow_id == trans.app.model.Workflow.id,
- trans.app.model.Workflow.uuid == workflow_uuid
- )).first()
- if stored_workflow is None:
- raise exceptions.ObjectNotFound( "Workflow not found: %s" % workflow_id )
- else:
- workflow_id = self.decode_id( workflow_id )
- query = trans.sa_session.query( trans.app.model.StoredWorkflow )
- stored_workflow = query.get( workflow_id )
- if stored_workflow is None:
- raise exceptions.ObjectNotFound( "No such workflow found." )
- return stored_workflow
+ return self.workflow_manager.get_stored_workflow( trans, workflow_id )
def __encode_invocation( self, trans, invocation, view="element", step_details=False ):
return self.encode_all_ids(
diff --git a/lib/galaxy/webapps/galaxy/controllers/workflow.py b/lib/galaxy/webapps/galaxy/controllers/workflow.py
index 8ab9bbc8638..24eb397b893 100644
--- a/lib/galaxy/webapps/galaxy/controllers/workflow.py
+++ b/lib/galaxy/webapps/galaxy/controllers/workflow.py
@@ -613,7 +613,7 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
return trans.fill_template( "workflow/editor.mako", stored=stored, annotation=self.get_item_annotation_str( trans.sa_session, trans.user, stored ) )
@web.json
- def editor_form_post( self, trans, type='tool', tool_id=None, annotation=None, **incoming ):
+ def editor_form_post( self, trans, type='tool', tool_id=None, annotation=None, label=None, **incoming ):
"""
Accepts a tool state and incoming values, and generates a new tool
form and some additional information, packed into a json dictionary.
@@ -625,12 +625,14 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
module = module_factory.from_dict( trans, {
'type': type,
'tool_id': tool_id,
- 'tool_state': tool_state
+ 'tool_state': tool_state,
+ 'label': label or None,
} )
# update module state
module.update_state( incoming )
if type == 'tool':
return {
+ 'label': module.label,
'tool_state': module.get_state(),
'data_inputs': module.get_data_inputs(),
'data_outputs': module.get_data_outputs(),
@@ -641,6 +643,7 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
}
else:
return {
+ 'label': module.label,
'tool_state': module.get_state(),
'data_inputs': module.get_data_inputs(),
'data_outputs': module.get_data_outputs(),
@@ -664,7 +667,7 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
return {
'type': module.type,
'name': module.get_name(),
- 'tool_id': module.get_tool_id(),
+ 'tool_id': module.get_content_id(),
'tool_state': module.get_state(),
'tool_model': tool_model,
'tooltip': module.get_tooltip( static_path=url_for( '/static' ) ),
diff --git a/lib/galaxy/workflow/modules.py b/lib/galaxy/workflow/modules.py
index c46c4fac3ae..a5a7d8e2b13 100644
--- a/lib/galaxy/workflow/modules.py
+++ b/lib/galaxy/workflow/modules.py
@@ -42,7 +42,7 @@ class WorkflowModule( object ):
# ---- Creating modules from various representations ---------------------
@classmethod
- def new( Class, trans, tool_id=None ):
+ def new( Class, trans, content_id=None ):
"""
Create a new instance of the module with default state
"""
@@ -73,7 +73,10 @@ class WorkflowModule( object ):
def get_name( self ):
return self.name
- def get_tool_id( self ):
+ def get_content_id( self ):
+ """ If this component has an identifier external to the step (such
+ as a tool or another workflow) return the identifier for that content.
+ """
return None
def get_tooltip( self, static_path='' ):
@@ -194,9 +197,10 @@ class WorkflowModule( object ):
class SimpleWorkflowModule( WorkflowModule ):
@classmethod
- def new( Class, trans, tool_id=None ):
+ def new( Class, trans, content_id=None ):
module = Class( trans )
module.state = Class.default_state()
+ module.label = None
return module
@classmethod
@@ -204,12 +208,14 @@ class SimpleWorkflowModule( WorkflowModule ):
module = Class( trans )
state = loads( d["tool_state"] )
module.recover_state( state )
+ module.label = d.get("label", None) or None
return module
@classmethod
def from_workflow_step( Class, trans, step ):
module = Class( trans )
module.recover_state( step.tool_inputs )
+ module.label = step.label
return module
@classmethod
@@ -502,12 +508,13 @@ class ToolModule( WorkflowModule ):
self.errors[ tool_id ] = 'Tool unavailable'
@classmethod
- def new( Class, trans, tool_id=None ):
- module = Class( trans, tool_id )
+ def new( Class, trans, content_id=None ):
+ module = Class( trans, content_id )
if module.tool is None:
- error_message = "Attempted to create new workflow module for invalid tool_id, no tool with id - %s." % tool_id
+ error_message = "Attempted to create new workflow module for invalid tool_id, no tool with id - %s." % content_id
raise Exception( error_message )
module.state = module.tool.new_state( trans )
+ module.label = None
return module
@classmethod
@@ -516,6 +523,7 @@ class ToolModule( WorkflowModule ):
tool_version = str( d.get( 'tool_version', None ) )
module = Class( trans, tool_id, tool_version=tool_version )
module.state = galaxy.tools.DefaultToolState()
+ module.label = d.get("label", None) or None
if module.tool is not None:
message = ""
if tool_id != module.tool_id:
@@ -560,6 +568,7 @@ class ToolModule( WorkflowModule ):
module.recover_state( step.tool_inputs )
module.errors = step.tool_errors
module.workflow_outputs = step.workflow_outputs
+ module.label = step.label or None
pjadict = {}
for pja in step.post_job_actions:
pjadict[pja.action_type] = pja
@@ -623,7 +632,7 @@ class ToolModule( WorkflowModule ):
return self.tool.name
return 'unavailable'
- def get_tool_id( self ):
+ def get_content_id( self ):
return self.tool_id
def get_tool_version( self ):
@@ -735,6 +744,7 @@ class ToolModule( WorkflowModule ):
# set. We also need to make sure all datasets have a dummy value
# for dependencies to see
+ self.label = incoming.get("label", None) or None
self.post_job_actions = ActionBox.handle_incoming(incoming)
make_runtime_key = incoming.get( 'make_runtime', None )
@@ -951,13 +961,13 @@ class WorkflowModuleFactory( object ):
def __init__( self, module_types ):
self.module_types = module_types
- def new( self, trans, type, tool_id=None ):
+ def new( self, trans, type, content_id=None ):
"""
Return module for type and (optional) tool_id intialized with
new / default state.
"""
assert type in self.module_types
- return self.module_types[type].new( trans, tool_id )
+ return self.module_types[type].new( trans, content_id )
def from_dict( self, trans, d, **kwargs ):
"""
diff --git a/lib/galaxy/workflow/run.py b/lib/galaxy/workflow/run.py
index f9efbd6056b..b06b770e830 100644
--- a/lib/galaxy/workflow/run.py
+++ b/lib/galaxy/workflow/run.py
@@ -235,8 +235,8 @@ class WorkflowProgress( object ):
if not hasattr( step, 'module' ):
self.module_injector.inject( step )
if step_id not in step_states:
- template = "Workflow invocation [%s] has no step state for step id [%s]. States are [%s]."
- message = template % (self.workflow_invocation.id, step_id, step_states)
+ template = "Workflow invocation [%s] has no step state for step id [%s]. States ids are %s."
+ message = template % (self.workflow_invocation.id, step_id, step_states.keys())
raise Exception(message)
runtime_state = step_states[ step_id ].value
step.state = step.module.recover_runtime_state( runtime_state )
diff --git a/static/maps/mvc/workflow/workflow-manager.js.map b/static/maps/mvc/workflow/workflow-manager.js.map
index 6c4348c37c4..27171ddefe9 100644
--- a/static/maps/mvc/workflow/workflow-manager.js.map
+++ b/static/maps/mvc/workflow/workflow-manager.js.map
@@ -1 +1 @@
-{"version":3,"file":"workflow-manager.js","sources":["../../../src/mvc/workflow/workflow-manager.js"],"names":["define","Connector","Workflow","app","canvas_container","this","id_counter","nodes","name","has_changes","active_form_has_changes","$","extend","prototype","create_node","type","title_text","tool_id","node","prebuildNode","add_node","fit_canvas_to_nodes","canvas_manager","draw_overview","activate_node","id","element","attr","workflow","remove_node","active_node","clear_active_node","remove_all","wf","each","k","v","destroy","rectify_workflow_outputs","using_workflow_outputs","has_existing_pjas","workflow_outputs","length","post_job_actions","pja_id","pja","action_type","self","node_changed","pjas_to_rem","push","i","pja_name","output_terminals","ot_id","ot","create_pja","isWorkflowOutput","output_name","action_arguments","reload_active_node","to_simple","input_connections","input_terminals","t","cons","connectors","c","handle1","act","node_data","tool_state","tool_errors","position","annotation","uuid","label","steps","from_simple","data","max_id","step","init_field_data","css","top","left","Math","max","parseInt","isArray","l","x","other_node","connect","redraw","undefined","addWorkflowOutput","callout","find","Galaxy","root","check_changes_in_active_form","submit","make_inactive","showToolForm","form_html","make_active","force","layout","n_pred","successors","j","other","node_ids_by_level","level_parents","pred_k","sk","all_nodes","h_pad","v_pad","ids","sort","a","b","max_width","width","height","_","bounds_for_all_nodes","p","xmin","xmax","ymin","ymax","e","min","round_up","n","ceil","fix_delta","new_pos","bounds","parent","xmin_delta","ymin_delta","children"],"mappings":"AAAAA,QAAQ,mCAAoC,SAAUC,GAClD,QAASC,GAAUC,EAAKC,GACpBC,KAAKF,IAAMA,EACXE,KAAKD,iBAAmBA,EACxBC,KAAKC,WAAa,EAClBD,KAAKE,SACLF,KAAKG,KAAO,KACZH,KAAKI,aAAc,EACnBJ,KAAKK,yBAA0B,EAwXnC,MAtXAC,GAAEC,OAAQV,EAASW,WACfC,YAAa,SAAWC,EAAMC,EAAYC,GACtC,GAAIC,GAAOb,KAAKF,IAAIgB,aAAcJ,EAAMC,EAAYC,EAKpD,OAJAZ,MAAKe,SAAUF,GACfb,KAAKgB,sBACLhB,KAAKF,IAAImB,eAAeC,gBACxBlB,KAAKmB,cAAeN,GACbA,GAEXE,SAAW,SAAUF,GACjBA,EAAKO,GAAKpB,KAAKC,WACfY,EAAKQ,QAAQC,KAAM,KAAM,gBAAkBT,EAAKO,IAChDpB,KAAKC,aACLD,KAAKE,MAAOW,EAAKO,IAAOP,EACxBb,KAAKI,aAAc,EACnBS,EAAKU,SAAWvB,MAEpBwB,YAAc,SAAUX,GACfb,KAAKyB,aAAeZ,GACrBb,KAAK0B,0BAEF1B,MAAKE,MAAOW,EAAKO,IACxBpB,KAAKI,aAAc,GAEvBuB,WAAa,WACTC,GAAK5B,KACLM,EAAEuB,KAAM7B,KAAKE,MAAO,SAAW4B,EAAGC,GAC9BA,EAAEC,UACFJ,GAAGJ,YAAaO,MAGxBE,yBAA2B,WAEvB,GAAIC,IAAyB,EACzBC,GAAoB,CAWxB,IAVA7B,EAAEuB,KAAM7B,KAAKE,MAAO,SAAW4B,EAAGjB,GAC1BA,EAAKuB,kBAAoBvB,EAAKuB,iBAAiBC,OAAS,IACxDH,GAAyB,GAE7B5B,EAAEuB,KAAKhB,EAAKyB,iBAAkB,SAASC,EAAQC,GACnB,sBAApBA,EAAIC,cACJN,GAAoB,OAI5BD,KAA2B,GAASC,KAAsB,EAAM,CAEhE,GAAIO,GAAO1C,IACXM,GAAEuB,KAAK7B,KAAKE,MAAO,SAAU4B,EAAGjB,GAC5B,GAAkB,SAAdA,EAAKH,KAAgB,CACrB,GAAIiC,IAAe,CACU,OAAzB9B,EAAKyB,mBACLzB,EAAKyB,oBACLK,GAAe,EAEnB,IAAIC,KACJtC,GAAEuB,KAAKhB,EAAKyB,iBAAkB,SAASC,EAAQC,GACpB,qBAAnBA,EAAIC,aACJG,EAAYC,KAAKN,KAGrBK,EAAYP,OAAS,GACrB/B,EAAEuB,KAAKe,EAAa,SAASE,EAAGC,GAC5BJ,GAAe,QACR9B,GAAKyB,iBAAiBS,KAGjCb,GACA5B,EAAEuB,KAAKhB,EAAKmC,iBAAkB,SAASC,EAAOC,GAC1C,GAAIC,IAActC,EAAKuC,iBAAiBF,EAAG/C,KAC3C,IAAIgD,KAAe,EAAK,CACpBR,GAAe,CACf,IAAIH,IACAC,YAAc,oBACdY,YAAcH,EAAG/C,KACjBmD,oBAEJzC,GAAKyB,iBAAiB,oBAAoBY,EAAG/C,MAAQ,KACrDU,EAAKyB,iBAAiB,oBAAoBY,EAAG/C,MAAQqC,KAK7DE,EAAKjB,aAAeZ,GAAQ8B,KAAiB,GAC7CD,EAAKa,0BAMzBC,UAAY,WACR,GAAItD,KA6CJ,OA5CAI,GAAEuB,KAAM7B,KAAKE,MAAO,SAAW4C,EAAGjC,GAC9B,GAAI4C,KACJnD,GAAEuB,KAAMhB,EAAK6C,gBAAiB,SAAW5B,EAAG6B,GACxCF,EAAmBE,EAAExD,MAAS,IAG9B,IAAIyD,KACJtD,GAAEuB,KAAM8B,EAAEE,WAAY,SAAWf,EAAGgB,GAChCF,EAAKd,IAAO1B,GAAI0C,EAAEC,QAAQlD,KAAKO,GAAIiC,YAAaS,EAAEC,QAAQ5D,MAC1DsD,EAAmBE,EAAExD,MAASyD,KAGtC,IAAItB,KACAzB,GAAKyB,kBACLhC,EAAEuB,KAAMhB,EAAKyB,iBAAkB,SAAWQ,EAAGkB,GACzC,GAAIxB,IACAC,YAAcuB,EAAIvB,YAClBY,YAAcW,EAAIX,YAClBC,iBAAmBU,EAAIV,iBAE3BhB,GAAkB0B,EAAIvB,YAAcuB,EAAIX,aAAgB,KACxDf,EAAkB0B,EAAIvB,YAAcuB,EAAIX,aAAgBb,IAG3D3B,EAAKuB,mBACNvB,EAAKuB,oBAGT,IAAI6B,IACA7C,GAAKP,EAAKO,GACVV,KAAOG,EAAKH,KACZE,QAAUC,EAAKD,QACfsD,WAAarD,EAAKqD,WAClBC,YAActD,EAAKsD,YACnBV,kBAAoBA,EACpBW,SAAW9D,EAAEO,EAAKQ,SAAS+C,WAC3BC,WAAYxD,EAAKwD,WACjB/B,iBAAkBzB,EAAKyB,iBACvBgC,KAAMzD,EAAKyD,KACXC,MAAO1D,EAAK0D,MACZnC,iBAAkBvB,EAAKuB,iBAE3BlC,GAAOW,EAAKO,IAAO6C,KAEdO,MAAOtE,IAEpBuE,YAAc,SAAWC,GACrB9C,GAAK5B,IACL,IAAI2E,GAAS,CACb/C,IAAGzB,KAAOuE,EAAKvE,IAEf,IAAI+B,IAAyB,CAC7B5B,GAAEuB,KAAM6C,EAAKF,MAAO,SAAUpD,EAAIwD,GAC9B,GAAI/D,GAAOe,GAAG9B,IAAIgB,aAAc8D,EAAKlE,KAAMkE,EAAKzE,KAAMyE,EAAKhE,QAC3DC,GAAKgE,gBAAiBD,GACjBA,EAAKR,UACNvD,EAAKQ,QAAQyD,KAAOC,IAAKH,EAAKR,SAASW,IAAKC,KAAMJ,EAAKR,SAASY,OAEpEnE,EAAKO,GAAKwD,EAAKxD,GACfQ,GAAG1B,MAAOW,EAAKO,IAAOP,EACtB8D,EAASM,KAAKC,IAAKP,EAAQQ,SAAU/D,IAGhCc,GAAwC,SAAdrB,EAAKH,OAC5BG,EAAKuB,iBAAiBC,OAAS,EAC/BH,GAAyB,EAGzB5B,EAAEuB,KAAKhB,EAAKyB,iBAAkB,SAASC,EAAQC,GACnB,sBAApBA,EAAIC,cACJP,GAAyB,QAM7CN,GAAG3B,WAAa0E,EAAS,EAEzBrE,EAAEuB,KAAM6C,EAAKF,MAAO,SAAUpD,EAAIwD,GAC9B,GAAI/D,GAAOe,GAAG1B,MAAMkB,EACpBd,GAAEuB,KAAM+C,EAAKnB,kBAAmB,SAAU3B,EAAGC,GACpCA,IACMzB,EAAE8E,QAASrD,KACdA,GAAMA,IAEVzB,EAAEuB,KAAME,EAAG,SAAUsD,EAAGC,GACpB,GAAIC,GAAa3D,GAAG1B,MAAOoF,EAAElE,IACzB0C,EAAI,GAAIlE,EACZkE,GAAE0B,QAASD,EAAWvC,iBAAkBsC,EAAEjC,aAC/BxC,EAAK6C,gBAAiB5B,IACjCgC,EAAE2B,cAIXvD,GAAwC,SAAdrB,EAAKH,MAE9BJ,EAAEuB,KAAKhB,EAAKmC,iBAAkB,SAASC,EAAOC,GACgBwC,SAAvD7E,EAAKyB,iBAAiB,oBAAoBY,EAAG/C,QAC5CU,EAAK8E,kBAAkBzC,EAAG/C,MAC1ByF,QAAUtF,EAAEO,EAAKQ,SAASwE,KAAK,YAAY3C,EAAG/C,MAC9CyF,QAAQC,KAAK,OAAOvE,KAAK,MAAOwE,OAAOC,KAAO,0CAC9CnE,GAAGxB,aAAc,QAMrC4F,6BAA+B,WAEvBhG,KAAKK,0BACLL,KAAKI,aAAc,EAEnBE,EAAE,kBAAkBuF,KAAK,QAAQI,SACjCjG,KAAKK,yBAA0B,IAGvCkD,mBAAqB,WACjB,GAAIvD,KAAKyB,YAAY,CACjB,GAAIZ,GAAOb,KAAKyB,WAChBzB,MAAK0B,oBACL1B,KAAKmB,cAAcN,KAG3Ba,kBAAoB,WACX1B,KAAKyB,cACNzB,KAAKyB,YAAYyE,gBACjBlG,KAAKyB,YAAc,MAEvBzB,KAAKF,IAAIqG,aAAc,+BAAgC/E,GAAI,aAE/DD,cAAgB,SAAUN,GACjBb,KAAKyB,aAAeZ,IACrBb,KAAKgG,+BACLhG,KAAK0B,oBACL1B,KAAKF,IAAIqG,aAActF,EAAKuF,UAAWvF,GACvCA,EAAKwF,cACLrG,KAAKyB,YAAcZ,IAG3B8B,aAAe,SAAW9B,EAAMyF,GAC5BtG,KAAKI,aAAc,EACdJ,KAAKyB,aAAeZ,GAAQyF,IAE7BtG,KAAKgG,+BACLhG,KAAKF,IAAIqG,aAActF,EAAKuF,UAAWvF,KAG/C0F,OAAS,WACLvG,KAAKgG,+BACLhG,KAAKI,aAAc,CAEnB,IAAIoG,MACAC,IAqBJ,KAnBAnG,EAAEuB,KAAM7B,KAAKE,MAAO,SAAUkB,GACNsE,SAAfc,EAAOpF,KAAsBoF,EAAOpF,GAAM,GACvBsE,SAAnBe,EAAWrF,KAAsBqF,EAAWrF,SAGrDd,EAAEuB,KAAM7B,KAAKE,MAAO,SAAUkB,EAAIP,GAC9BP,EAAEuB,KAAMhB,EAAK6C,gBAAiB,SAAWgD,EAAG/C,GACxCrD,EAAEuB,KAAM8B,EAAEE,WAAY,SAAW/B,EAAGgC,GAEhC,GAAI6C,GAAQ7C,EAAEC,QAAQlD,IAEtB2F,GAAO3F,EAAKO,KAAO,EAEnBqF,EAAWE,EAAMvF,IAAIyB,KAAMhC,EAAKO,UAK5CwF,uBACe,CAEXC,gBACA,KAAM,GAAIC,KAAUN,GACS,GAApBA,EAAQM,IACTD,cAAchE,KAAMiE,EAG5B,IAA6B,GAAxBD,cAAcxE,OACf,KAEJuE,mBAAkB/D,KAAMgE,cAGxB,KAAM,GAAI/E,KAAK+E,eAAgB,CAC3B,GAAI9E,GAAI8E,cAAc/E,SACf0E,GAAOzE,EACd,KAAM,GAAIgF,KAAMN,GAAW1E,GACvByE,EAAQC,EAAW1E,GAAGgF,KAAS,GAI3C,IAAKP,EAAOnE,OAAZ,CAKA,GAAI2E,GAAYhH,KAAKE,MACjB+G,EAAQ,EAAIC,OAAQ,EACxB,IAAIlC,GAAOiC,CACX3G,GAAEuB,KAAM+E,kBAAmB,SAAU9D,EAAGqE,GAGpCA,EAAIC,KAAM,SAAUC,EAAGC,GACnB,MAAOhH,GAAE0G,EAAUK,GAAGhG,SAAS+C,WAAWW,IAAMzE,EAAE0G,EAAUM,GAAGjG,SAAS+C,WAAWW,KAGvF,IAAIwC,GAAY,EACZxC,EAAMmC,KACV5G,GAAEuB,KAAMsF,EAAK,SAAUT,EAAGtF,GACtB,GAAIP,GAAOmG,EAAU5F,GACjBC,EAAUf,EAAEO,EAAKQ,QACrBf,GAAEe,GAASyD,KAAOC,IAAKA,EAAKC,KAAMA,IAClCuC,EAAYtC,KAAKC,IAAKqC,EAAWjH,EAAEe,GAASmG,SAC5CzC,GAAOzE,EAAEe,GAASoG,SAAWP,QAEjClC,GAAQuC,EAAYN,IAGxB3G,EAAEuB,KAAMmF,EAAW,SAAUU,EAAG7G,GAASA,EAAK4E,aAElDkC,qBAAsB,WAClB,GAEIC,GAFAC,MAAiBC,SACjBC,MAAiBC,QAUrB,OARA1H,GAAEuB,KAAM7B,KAAKE,MAAO,SAAUkB,EAAIP,GAC9BoH,EAAI3H,EAAEO,EAAKQ,SACXuG,EAAIK,EAAE7D,WACNyD,EAAO5C,KAAKiD,IAAKL,EAAMD,EAAE5C,MACzB8C,EAAO7C,KAAKC,IAAK4C,EAAMF,EAAE5C,KAAOiD,EAAET,SAClCO,EAAO9C,KAAKiD,IAAKH,EAAMH,EAAE7C,KACzBiD,EAAO/C,KAAKC,IAAK8C,EAAMJ,EAAE7C,IAAMkD,EAAET,YAE3BK,KAAMA,EAAMC,KAAMA,EAAMC,KAAMA,EAAMC,KAAMA,IAExDhH,oBAAqB,WAEjB,QAASmH,GAAU7C,EAAG8C,GAClB,MAAOnD,MAAKoD,KAAM/C,EAAI8C,GAAMA,EAEhC,QAASE,GAAWhD,EAAG8C,GACnB,MAASA,GAAJ9C,GAAQA,EAAI,EAAE8C,GACfG,SAAYtD,KAAKoD,KAAU/C,EAAI8C,EAAQA,GAAM,GAAMA,IACtC9C,EAAIiD,UAEd,EAGX,GAAIC,GAASxI,KAAK2H,uBACdvD,EAAWpE,KAAKD,iBAAiBqE,WACjCqE,EAASzI,KAAKD,iBAAiB0I,SAE/BC,EAAaJ,EAAWE,EAAOX,KAAM,KACrCc,EAAaL,EAAWE,EAAOT,KAAM,IAEzCW,GAAazD,KAAKC,IAAKwD,EAAYtE,EAASY,MAC5C2D,EAAa1D,KAAKC,IAAKyD,EAAYvE,EAASW,IAC5C,IAAIC,GAAOZ,EAASY,KAAO0D,EACvB3D,EAAMX,EAASW,IAAM4D,EAErBnB,EAAQW,EAAUK,EAAOV,KAAO,IAAK,KAAQY,EAC7CjB,EAASU,EAAUK,EAAOR,KAAO,IAAK,KAAQW,CAClDnB,GAAQvC,KAAKC,IAAKsC,GAASxC,EAAOyD,EAAOjB,SACzCC,EAASxC,KAAKC,IAAKuC,GAAU1C,EAAM0D,EAAOhB,UAE1CzH,KAAKD,iBAAiB+E,KAClBE,KAAMA,EACND,IAAKA,EACLyC,MAAOA,EACPC,OAAQA,IAGZzH,KAAKD,iBAAiB6I,WAAW/G,KAAM,WACnC,GAAI+F,GAAItH,EAAEN,MAAMoE,UAChB9D,GAAEN,MAAM8E,IAAK,OAAQ8C,EAAE5C,KAAO0D,GAC9BpI,EAAEN,MAAM8E,IAAK,MAAO8C,EAAE7C,IAAM4D,QAIjC9I"}
\ No newline at end of file
+{"version":3,"file":"workflow-manager.js","sources":["../../../src/mvc/workflow/workflow-manager.js"],"names":["define","Connector","Toastr","Workflow","app","canvas_container","this","id_counter","nodes","name","has_changes","active_form_has_changes","nodeLabels","$","extend","prototype","canLabelNodeWith","label","registerNodeLabel","unregisterNodeLabel","updateNodeLabel","fromLabel","toLabel","warning","attemptUpdateNodeLabel","node","setLabel","create_node","type","title_text","content_id","prebuildNode","add_node","fit_canvas_to_nodes","canvas_manager","draw_overview","activate_node","id","element","attr","workflow","remove_node","active_node","clear_active_node","remove_all","wf","each","k","v","destroy","rectify_workflow_outputs","using_workflow_outputs","has_existing_pjas","workflow_outputs","length","post_job_actions","pja_id","pja","action_type","self","node_changed","pjas_to_rem","push","i","pja_name","output_terminals","ot_id","ot","create_pja","isWorkflowOutput","output_name","action_arguments","reload_active_node","to_simple","input_connections","input_terminals","t","cons","connectors","c","handle1","act","node_data","tool_id","tool_state","tool_errors","position","annotation","uuid","steps","from_simple","data","max_id","step","init_field_data","css","top","left","Math","max","parseInt","isArray","l","x","other_node","connect","redraw","undefined","addWorkflowOutput","callout","find","Galaxy","root","check_changes_in_active_form","submit","make_inactive","showToolForm","form_html","make_active","force","layout","n_pred","successors","j","other","node_ids_by_level","level_parents","pred_k","sk","all_nodes","h_pad","v_pad","ids","sort","a","b","max_width","width","height","_","bounds_for_all_nodes","p","xmin","xmax","ymin","ymax","e","min","round_up","n","ceil","fix_delta","new_pos","bounds","parent","xmin_delta","ymin_delta","children"],"mappings":"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"}
\ No newline at end of file
diff --git a/static/maps/mvc/workflow/workflow-node.js.map b/static/maps/mvc/workflow/workflow-node.js.map
index f07e1b25d75..eff73424320 100644
--- a/static/maps/mvc/workflow/workflow-node.js.map
+++ b/static/maps/mvc/workflow/workflow-node.js.map
@@ -1 +1 @@
-{"version":3,"file":"workflow-node.js","sources":["../../../src/mvc/workflow/workflow-node.js"],"names":["define","NodeView","Node","Backbone","Model","extend","initialize","app","attr","this","element","input_terminals","output_terminals","tool_errors","workflow_outputs","getWorkflowOutput","outputName","_","findWhere","output_name","isWorkflowOutput","undefined","removeWorkflowOutput","splice","addWorkflowOutput","push","connectedOutputTerminals","_connectedTerminals","terminals","connectedTerminals","$","each","t","connectors","length","hasConnectedOutputTerminals","outputTerminals","connectedMappedInputTerminals","_connectedMappedTerminals","hasConnectedMappedInputTerminals","inputTerminals","inputName","inputTerminal","isMappedOver","mapped_outputs","mapOver","isCollection","mappedInputTerminals","_mappedTerminals","mappedTerminals","hasMappedOverInputTerminals","found","redraw","destroy","k","workflow","remove_node","remove","make_active","addClass","make_inactive","get","p","removeChild","appendChild","parentNode","removeClass","init_field_data","data","type","name","form_html","tool_state","tooltip","annotation","post_job_actions","label","uuid","node","nodeView","el","data_inputs","i","input","addDataInput","data_outputs","addRule","output","addDataOutput","render","node_changed","update_field_data","pja_in","parseJSON","renderToolErrors","old_body","new_body","newInputsDiv","newTerminalViews","terminalView","difference","values","terminalViews","unusedView","terminal","updateDataOutput","replaceWith","markChanged","error","text","b","find","tmp","html"],"mappings":"AAAAA,QAAQ,mCAAoC,SAAUC,GAClD,GAAIC,GAAOC,SAASC,MAAMC,QACtBC,WAAY,SAAUC,EAAKC,GACvBC,KAAKF,IAAMA,EACXE,KAAKC,QAAUF,EAAKE,QACpBD,KAAKE,mBACLF,KAAKG,oBACLH,KAAKI,eACLJ,KAAKK,qBAETC,kBAAmB,SAASC,GACxB,MAAOC,GAAEC,UAAUT,KAAKK,kBAAmBK,YAAeH,KAE9DI,iBAAkB,SAASJ,GACvB,MAA6CK,SAAtCZ,KAAKM,kBAAkBC,IAElCM,qBAAsB,SAASN,GAC3B,KAAMP,KAAKW,iBAAiBJ,IACxBP,KAAKK,iBAAiBS,OAAOd,KAAKM,kBAAkBC,GAAa,IAGzEQ,kBAAmB,SAASR,GACpBP,KAAKW,iBAAiBJ,IACtBP,KAAKK,iBAAiBW,MAAMN,YAAeH,KAGnDU,yBAA0B,WACtB,MAAOjB,MAAKkB,oBAAqBlB,KAAKG,mBAE1Ce,oBAAqB,SAAUC,GAC3B,GAAIC,KAMJ,OALAC,GAAEC,KAAMH,EAAW,SAAUX,EAAGe,GACxBA,EAAEC,WAAWC,OAAS,GACtBL,EAAmBJ,KAAMO,KAG1BH,GAEXM,4BAA6B,WAEzB,GAAIC,GAAkB3B,KAAKG,gBAC3B,KAAK,GAAII,KAAcoB,GACnB,GAAIA,EAAiBpB,GAAaiB,WAAWC,OAAS,EAClD,OAAO,CAGf,QAAO,GAEXG,8BAA+B,WAC3B,MAAO5B,MAAK6B,0BAA2B7B,KAAKE,kBAEhD4B,iCAAkC,WAE9B,GAAIC,GAAiB/B,KAAKE,eAC1B,KAAK,GAAI8B,KAAaD,GAAiB,CACnC,GAAIE,GAAgBF,EAAgBC,EACpC,IAAIC,EAAcT,WAAWC,OAAS,GAAKQ,EAAcC,eACrD,OAAO,EAGf,OAAO,GAEXL,0BAA2B,SAAUV,GACjC,GAAIgB,KASJ,OARAd,GAAEC,KAAMH,EAAW,SAAUX,EAAGe,GAC5B,GAAIa,GAAUb,EAAEa,SACZA,GAAQC,cACJd,EAAEC,WAAWC,OAAS,GACtBU,EAAenB,KAAMO,KAI1BY,GAEXG,qBAAsB,WAClB,MAAOtC,MAAKuC,iBAAkBvC,KAAKE,kBAEvCqC,iBAAkB,SAAUpB,GACxB,GAAIqB,KAOJ,OANAnB,GAAEC,KAAMH,EAAW,SAAUX,EAAGe,GAC5B,GAAIa,GAAUb,EAAEa,SACZA,GAAQC,cACRG,EAAgBxB,KAAMO,KAGvBiB,GAEXC,4BAA6B,WACzB,GAAIC,IAAQ,CAOZ,OANAlC,GAAEc,KAAMtB,KAAKE,gBAAiB,SAAUqB,GACpC,GAAIa,GAAUb,EAAEa,SACZA,GAAQC,eACRK,GAAQ,KAGTA,GAEXC,OAAS,WACLtB,EAAEC,KAAMtB,KAAKE,gBAAiB,SAAUM,EAAGe,GACvCA,EAAEoB,WAENtB,EAAEC,KAAMtB,KAAKG,iBAAkB,SAAUK,EAAGe,GACxCA,EAAEoB,YAGVC,QAAU,WACNvB,EAAEC,KAAMtB,KAAKE,gBAAiB,SAAU2C,EAAGtB,GACvCA,EAAEqB,YAENvB,EAAEC,KAAMtB,KAAKG,iBAAkB,SAAU0C,EAAGtB,GACxCA,EAAEqB,YAEN5C,KAAKF,IAAIgD,SAASC,YAAa/C,MAC/BqB,EAAErB,KAAKC,SAAS+C,UAEpBC,YAAc,WACV5B,EAAErB,KAAKC,SAASiD,SAAU,oBAE9BC,cAAgB,WAGZ,GAAIlD,GAAUD,KAAKC,QAAQmD,IAAI,IAC/B,SAAUC,GAAKA,EAAEC,YAAarD,GAAWoD,EAAEE,YAAatD,IAAcA,EAAQuD,YAE9EnC,EAAEpB,GAASwD,YAAa,oBAE5BC,gBAAkB,SAAWC,GACpBA,EAAKC,OACN5D,KAAK4D,KAAOD,EAAKC,MAErB5D,KAAK6D,KAAOF,EAAKE,KACjB7D,KAAK8D,UAAYH,EAAKG,UACtB9D,KAAK+D,WAAaJ,EAAKI,WACvB/D,KAAKI,YAAcuD,EAAKvD,YACxBJ,KAAKgE,QAAUL,EAAKK,QAAUL,EAAKK,QAAU,GAC7ChE,KAAKiE,WAAaN,EAAKM,WACvBjE,KAAKkE,iBAAmBP,EAAKO,iBAAmBP,EAAKO,oBACrDlE,KAAKmE,MAAQR,EAAKQ,MAClBnE,KAAKoE,KAAOT,EAAKS,KACjBpE,KAAKK,iBAAmBsD,EAAKtD,iBAAmBsD,EAAKtD,mBAErD,IAAIgE,GAAOrE,KACPsE,EAAW,GAAI9E,IACf+E,GAAIvE,KAAKC,QAAS,GAClBoE,KAAMA,GAEVA,GAAKC,SAAWA,EAEhBjD,EAAEC,KAAMqC,EAAKa,YAAa,SAAUC,EAAGC,GACnCJ,EAASK,aAAcD,KAEpBf,EAAKa,YAAY/C,OAAS,GAASkC,EAAKiB,aAAanD,OAAS,GACjE6C,EAASO,UAEbxD,EAAEC,KAAMqC,EAAKiB,aAAc,SAAUH,EAAGK,GACpCR,EAASS,cAAeD,KAE5BR,EAASU,SACThF,KAAKF,IAAIgD,SAASmC,aAAcjF,MAAM,IAE1CkF,kBAAoB,SAAUvB,GAC1B,GAAIU,GAAOrE,IAMX,IALIsE,SAAWD,EAAKC,SACpBtE,KAAK+D,WAAaJ,EAAKI,WACvB/D,KAAK8D,UAAYH,EAAKG,UACtB9D,KAAKI,YAAcuD,EAAKvD,YACxBJ,KAAKiE,WAAaN,EAAiB,WAC/B,oBAAsBA,GAAO,CAE7B,GAAIwB,GAAS9D,EAAE+D,UAAUzB,EAAKO,iBAC9BlE,MAAKkE,iBAAmBiB,EAASA,KAErCd,EAAKC,SAASe,kBAEd,IAAIC,GAAWhB,SAASjD,EAAG,cACvBkE,EAAWjB,SAASkB,eACpBC,IACJjF,GAAEc,KAAMqC,EAAKa,YAAa,SAAUE,GAChC,GAAIgB,GAAerB,EAAKC,SAASK,aAAcD,EAAOa,EACtDE,GAAkBf,EAAMb,MAAS6B,IAGrClF,EAAEc,KAAMd,EAAEmF,WAAYnF,EAAEoF,OAAQtB,SAASuB,eAAiBrF,EAAEoF,OAAQH,IAAsB,SAAUK,GAChGA,EAAWvB,GAAGwB,SAASnD,YAE3B0B,SAASuB,cAAgBJ,EAKO,GAA5B9B,EAAKiB,aAAanD,QAAe,mBAAqBkC,GAAKiB,aAAc,IACzEN,SAAS0B,iBAAkBrC,EAAKiB,aAAc,IAElDU,EAASW,YAAaV,GAEtBvF,KAAKkG,cACLlG,KAAK2C,UAETwD,MAAQ,SAAWC,GACf,GAAIC,GAAIhF,EAAErB,KAAKC,SAASqG,KAAM,gBAC9BD,GAAEC,KAAM,OAAQtD,QAChB,IAAIuD,GAAM,gDAAkDH,EAAO,QACnEpG,MAAK8D,UAAYyC,EACjBF,EAAEG,KAAMD,GACRvG,KAAKF,IAAIgD,SAASmC,aAAcjF,OAEpCkG,YAAa,WACTlG,KAAKF,IAAIgD,SAASmC,aAAcjF,QAGxC,OAAOP"}
\ No newline at end of file
+{"version":3,"file":"workflow-node.js","sources":["../../../src/mvc/workflow/workflow-node.js"],"names":["define","NodeView","Node","Backbone","Model","extend","initialize","app","attr","this","element","input_terminals","output_terminals","tool_errors","workflow_outputs","getWorkflowOutput","outputName","_","findWhere","output_name","isWorkflowOutput","undefined","removeWorkflowOutput","splice","addWorkflowOutput","push","connectedOutputTerminals","_connectedTerminals","terminals","connectedTerminals","$","each","t","connectors","length","hasConnectedOutputTerminals","outputTerminals","connectedMappedInputTerminals","_connectedMappedTerminals","hasConnectedMappedInputTerminals","inputTerminals","inputName","inputTerminal","isMappedOver","mapped_outputs","mapOver","isCollection","mappedInputTerminals","_mappedTerminals","mappedTerminals","hasMappedOverInputTerminals","found","redraw","destroy","k","workflow","remove_node","remove","make_active","addClass","make_inactive","get","p","removeChild","appendChild","parentNode","removeClass","setLabel","label","updateNodeLabel","init_field_data","data","type","name","form_html","tool_state","tooltip","annotation","post_job_actions","uuid","node","nodeView","el","data_inputs","i","input","addDataInput","data_outputs","addRule","output","addDataOutput","render","node_changed","update_field_data","pja_in","parseJSON","renderToolErrors","old_body","new_body","newInputsDiv","newTerminalViews","terminalView","difference","values","terminalViews","unusedView","terminal","updateDataOutput","replaceWith","markChanged","error","text","b","find","tmp","html"],"mappings":"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"}
\ No newline at end of file
diff --git a/static/maps/mvc/workflow/workflow-view-node.js.map b/static/maps/mvc/workflow/workflow-view-node.js.map
index b248c82942a..3f658f81891 100644
--- a/static/maps/mvc/workflow/workflow-view-node.js.map
+++ b/static/maps/mvc/workflow/workflow-view-node.js.map
@@ -1 +1 @@
-{"version":3,"file":"workflow-view-node.js","sources":["../../../src/mvc/workflow/workflow-view-node.js"],"names":["define","TerminalViews","DataViews","Backbone","View","extend","initialize","options","this","node","output_width","Math","max","$el","width","tool_body","find","remove","newInputsDiv","appendTo","terminalViews","outputTerminlViews","render","renderToolErrors","css","min","tool_errors","addClass","removeClass","$","updateMaxWidth","newWidth","addRule","append","addDataInput","input","body","skipResize","terminalView","name","terminalViewClass","input_type","InputCollectionTerminalView","InputTerminalView","el","terminal","destroy","update","destroyInvalidConnections","terminalElement","inputView","DataInputView","nodeView","ib","prepend","terminalElements","addDataOutput","output","OutputCollectionTerminalView","OutputTerminalView","outputView","DataOutputView","updateDataOutput","outputTerminal","output_terminals"],"mappings":"AAAAA,QAAQ,uCAAwC,mCAAoC,SAAUC,EAAeC,GACzG,MAAOC,UAASC,KAAKC,QACjBC,WAAY,SAAUC,GAClBC,KAAKC,KAAOF,EAAQE,KACpBD,KAAKE,aAAeC,KAAKC,IAAI,IAAKJ,KAAKK,IAAIC,SAC3CN,KAAKO,UAAYP,KAAKK,IAAIG,KAAM,iBAChCR,KAAKO,UAAUC,KAAM,OAAQC,SAC7BT,KAAKU,eAAeC,SAAUX,KAAKO,WACnCP,KAAKY,iBACLZ,KAAKa,uBAGTC,OAAQ,WACJd,KAAKe,mBACLf,KAAKK,IAAIW,IAAK,QAASb,KAAKc,IAAI,IAAKd,KAAKC,IAAKJ,KAAKK,IAAIC,QAASN,KAAKE,iBAG1Ea,iBAAkB,WACTf,KAAKC,KAAKiB,YACXlB,KAAKK,IAAIc,SAAU,mBAEnBnB,KAAKK,IAAIe,YAAa,oBAI9BV,aAAc,WACV,MAAOW,GAAE,+BAGbC,eAAgB,SAAUC,GACtBvB,KAAKE,aAAeC,KAAKC,IAAKJ,KAAKE,aAAcqB,IAGrDC,QAAS,WACLxB,KAAKO,UAAUkB,OAAQJ,EAAG,8BAG9BK,aAAc,SAAUC,EAAOC,GAC3B,GAAIC,IAAa,CACXD,KACFA,EAAO5B,KAAKqB,EAAG,WAGfQ,GAAa,EAEjB,IAAIC,GAAe9B,KAAKY,cAAee,EAAMI,MACzCC,EAA0C,sBAApBL,EAAMM,WAAuCxC,EAAcyC,4BAA8BzC,EAAc0C,iBAKjI,KAJIL,GAAoBA,YAAwBE,KAC5CF,EAAaM,GAAGC,SAASC,UACzBR,EAAe,MAEbA,EAKC,CACH,GAAIO,GAAWP,EAAaM,GAAGC,QAC/BA,GAASE,OAAQZ,GACjBU,EAASG,gCAPTV,GAAe,GAAIE,IACf/B,KAAMD,KAAKC,KACX0B,MAAOA,GAOf3B,MAAKY,cAAee,EAAMI,MAASD,CACnC,IAAIW,GAAkBX,EAAaM,GAC/BM,EAAY,GAAIhD,GAAUiD,eAC1BF,gBAAiBA,EACjBd,MAAOA,EACPiB,SAAU5C,KACV6B,WAAYA,IAEZgB,EAAKH,EAAUrC,GAEnB,OADAuB,GAAKH,OAAQoB,EAAGC,QAAShB,EAAaiB,qBAC/BjB,GAGXkB,cAAe,SAAUC,GACrB,GAAIjB,GAAsBiB,EAAkB,WAAIxD,EAAcyD,6BAA+BzD,EAAc0D,mBACvGrB,EAAe,GAAIE,IACnB/B,KAAMD,KAAKC,KACXgD,OAAQA,IAERG,EAAa,GAAI1D,GAAU2D,gBAC3BJ,OAAUA,EACVR,gBAAmBX,EAAaM,GAChCQ,SAAY5C,MAEhBA,MAAKO,UAAUkB,OAAQ2B,EAAW/C,IAAIoB,OAAQK,EAAaiB,sBAG/DO,iBAAkB,SAAUL,GACxB,GAAIM,GAAiBvD,KAAKC,KAAKuD,iBAAkBP,EAAOlB,KACxDwB,GAAehB,OAAQU"}
\ No newline at end of file
+{"version":3,"file":"workflow-view-node.js","sources":["../../../src/mvc/workflow/workflow-view-node.js"],"names":["define","TerminalViews","DataViews","Backbone","View","extend","initialize","options","this","node","output_width","Math","max","$el","width","tool_body","find","remove","newInputsDiv","appendTo","terminalViews","outputTerminlViews","render","title","label","name","text","renderToolErrors","css","min","tool_errors","addClass","removeClass","$","updateMaxWidth","newWidth","addRule","append","addDataInput","input","body","skipResize","terminalView","terminalViewClass","input_type","InputCollectionTerminalView","InputTerminalView","el","terminal","destroy","update","destroyInvalidConnections","terminalElement","inputView","DataInputView","nodeView","ib","prepend","terminalElements","addDataOutput","output","OutputCollectionTerminalView","OutputTerminalView","outputView","DataOutputView","updateDataOutput","outputTerminal","output_terminals"],"mappings":"AAAAA,QAAQ,uCAAwC,mCAAoC,SAAUC,EAAeC,GACzG,MAAOC,UAASC,KAAKC,QACjBC,WAAY,SAAUC,GAClBC,KAAKC,KAAOF,EAAQE,KACpBD,KAAKE,aAAeC,KAAKC,IAAI,IAAKJ,KAAKK,IAAIC,SAC3CN,KAAKO,UAAYP,KAAKK,IAAIG,KAAM,iBAChCR,KAAKO,UAAUC,KAAM,OAAQC,SAC7BT,KAAKU,eAAeC,SAAUX,KAAKO,WACnCP,KAAKY,iBACLZ,KAAKa,uBAGTC,OAAQ,WACJ,GACIC,GADAC,EAAQhB,KAAKC,KAAKe,KAGlBD,GADDC,EACSA,EAEAhB,KAAKC,KAAKgB,KAEtBjB,KAAKK,IAAIG,KAAK,cAAcU,KAAKH,GACjCf,KAAKmB,mBACLnB,KAAKK,IAAIe,IAAK,QAASjB,KAAKkB,IAAI,IAAKlB,KAAKC,IAAKJ,KAAKK,IAAIC,QAASN,KAAKE,iBAG1EiB,iBAAkB,WACTnB,KAAKC,KAAKqB,YACXtB,KAAKK,IAAIkB,SAAU,mBAEnBvB,KAAKK,IAAImB,YAAa,oBAI9Bd,aAAc,WACV,MAAOe,GAAE,+BAGbC,eAAgB,SAAUC,GACtB3B,KAAKE,aAAeC,KAAKC,IAAKJ,KAAKE,aAAcyB,IAGrDC,QAAS,WACL5B,KAAKO,UAAUsB,OAAQJ,EAAG,8BAG9BK,aAAc,SAAUC,EAAOC,GAC3B,GAAIC,IAAa,CACXD,KACFA,EAAOhC,KAAKyB,EAAG,WAGfQ,GAAa,EAEjB,IAAIC,GAAelC,KAAKY,cAAemB,EAAMd,MACzCkB,EAA0C,sBAApBJ,EAAMK,WAAuC3C,EAAc4C,4BAA8B5C,EAAc6C,iBAKjI,KAJIJ,GAAoBA,YAAwBC,KAC5CD,EAAaK,GAAGC,SAASC,UACzBP,EAAe,MAEbA,EAKC,CACH,GAAIM,GAAWN,EAAaK,GAAGC,QAC/BA,GAASE,OAAQX,GACjBS,EAASG,gCAPTT,GAAe,GAAIC,IACflC,KAAMD,KAAKC,KACX8B,MAAOA,GAOf/B,MAAKY,cAAemB,EAAMd,MAASiB,CACnC,IAAIU,GAAkBV,EAAaK,GAC/BM,EAAY,GAAInD,GAAUoD,eAC1BF,gBAAiBA,EACjBb,MAAOA,EACPgB,SAAU/C,KACViC,WAAYA,IAEZe,EAAKH,EAAUxC,GAEnB,OADA2B,GAAKH,OAAQmB,EAAGC,QAASf,EAAagB,qBAC/BhB,GAGXiB,cAAe,SAAUC,GACrB,GAAIjB,GAAsBiB,EAAkB,WAAI3D,EAAc4D,6BAA+B5D,EAAc6D,mBACvGpB,EAAe,GAAIC,IACnBlC,KAAMD,KAAKC,KACXmD,OAAQA,IAERG,EAAa,GAAI7D,GAAU8D,gBAC3BJ,OAAUA,EACVR,gBAAmBV,EAAaK,GAChCQ,SAAY/C,MAEhBA,MAAKO,UAAUsB,OAAQ0B,EAAWlD,IAAIwB,OAAQK,EAAagB,sBAG/DO,iBAAkB,SAAUL,GACxB,GAAIM,GAAiB1D,KAAKC,KAAK0D,iBAAkBP,EAAOnC,KACxDyC,GAAehB,OAAQU"}
\ No newline at end of file
diff --git a/static/maps/mvc/workflow/workflow-view.js.map b/static/maps/mvc/workflow/workflow-view.js.map
index 29e6d1f76fd..27284bad95a 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","ToolsForm","async_save_text","reset_tool_search","initValue","tool_menu_frame","$","contents","length","document","this","removeClass","find","hide","show","each","attr","hasClass","search_input","val","EditorFormView","Backbone","View","extend","initialize","options","merge","$el","workflowView","node","html","setElement","id","after","_genericStepAttributesTemplate","ajaxForm","type","dataType","success","data","workflow","active_form_has_changes","update_field_data","showWorkflowParameters","beforeSubmit","push","name","value","tool_state","form","change","submit","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","text","message","errors","addClass","errlist","i","v","appendTo","append","stored","Ok","unbind","click","focus","select","keyup","lastValue","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","load_workflow","cache","from_simple","upgrade_message","upgrade_messages","k","parseInt","nodes","vv","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","wrap","last_expanded","slideUp","slideDown","rename_async","annotate_async","remove_all","cv","cc","add_node_for_tool","title","create_node","get_new_module_info","tool_id","global","init_field_data","error","m","status","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","cls","$container","$current","formView","isJSON","scrollTop","isSubType","child","prebuildNode","title_text","f","scrollLeft","b","tmp","buttons","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","ToolsForm","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","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","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","load_workflow","cache","from_simple","upgrade_message","upgrade_messages","k","parseInt","nodes","vv","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","wrap","last_expanded","slideUp","slideDown","rename_async","annotate_async","remove_all","cv","cc","_moduleInitAjax","request_data","get_new_module_info","global","init_field_data","error","m","status","add_node_for_tool","title","create_node","content_id","add_node_for_subworkflow","subworkflow_id","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","cls","$container","$current","formView","isJSON","scrollTop","isSubType","child","$newNodeElement","title_text","$f","$title","scrollLeft","$b","prebuildNode","tmp","buttons","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-manager.js b/static/scripts/mvc/workflow/workflow-manager.js
index 2bbfa9d4f99..b648ac54704 100644
--- a/static/scripts/mvc/workflow/workflow-manager.js
+++ b/static/scripts/mvc/workflow/workflow-manager.js
@@ -1,2 +1,2 @@
-define(["mvc/workflow/workflow-connector"],function(a){function b(a,b){this.app=a,this.canvas_container=b,this.id_counter=0,this.nodes={},this.name=null,this.has_changes=!1,this.active_form_has_changes=!1}return $.extend(b.prototype,{create_node:function(a,b,c){var d=this.app.prebuildNode(a,b,c);return this.add_node(d),this.fit_canvas_to_nodes(),this.app.canvas_manager.draw_overview(),this.activate_node(d),d},add_node:function(a){a.id=this.id_counter,a.element.attr("id","wf-node-step-"+a.id),this.id_counter++,this.nodes[a.id]=a,this.has_changes=!0,a.workflow=this},remove_node:function(a){this.active_node==a&&this.clear_active_node(),delete this.nodes[a.id],this.has_changes=!0},remove_all:function(){wf=this,$.each(this.nodes,function(a,b){b.destroy(),wf.remove_node(b)})},rectify_workflow_outputs:function(){var a=!1,b=!1;if($.each(this.nodes,function(c,d){d.workflow_outputs&&d.workflow_outputs.length>0&&(a=!0),$.each(d.post_job_actions,function(a,c){"HideDatasetAction"===c.action_type&&(b=!0)})}),a!==!1||b!==!1){var c=this;$.each(this.nodes,function(b,d){if("tool"===d.type){var e=!1;null==d.post_job_actions&&(d.post_job_actions={},e=!0);var f=[];$.each(d.post_job_actions,function(a,b){"HideDatasetAction"==b.action_type&&f.push(a)}),f.length>0&&$.each(f,function(a,b){e=!0,delete d.post_job_actions[b]}),a&&$.each(d.output_terminals,function(a,b){var c=!d.isWorkflowOutput(b.name);if(c===!0){e=!0;var f={action_type:"HideDatasetAction",output_name:b.name,action_arguments:{}};d.post_job_actions["HideDatasetAction"+b.name]=null,d.post_job_actions["HideDatasetAction"+b.name]=f}}),c.active_node==d&&e===!0&&c.reload_active_node()}})}},to_simple:function(){var a={};return $.each(this.nodes,function(b,c){var d={};$.each(c.input_terminals,function(a,b){d[b.name]=null;var c=[];$.each(b.connectors,function(a,e){c[a]={id:e.handle1.node.id,output_name:e.handle1.name},d[b.name]=c})});var e={};c.post_job_actions&&$.each(c.post_job_actions,function(a,b){var c={action_type:b.action_type,output_name:b.output_name,action_arguments:b.action_arguments};e[b.action_type+b.output_name]=null,e[b.action_type+b.output_name]=c}),c.workflow_outputs||(c.workflow_outputs=[]);var f={id:c.id,type:c.type,tool_id:c.tool_id,tool_state:c.tool_state,tool_errors:c.tool_errors,input_connections:d,position:$(c.element).position(),annotation:c.annotation,post_job_actions:c.post_job_actions,uuid:c.uuid,label:c.label,workflow_outputs:c.workflow_outputs};a[c.id]=f}),{steps:a}},from_simple:function(b){wf=this;var c=0;wf.name=b.name;var d=!1;$.each(b.steps,function(a,b){var e=wf.app.prebuildNode(b.type,b.name,b.tool_id);e.init_field_data(b),b.position&&e.element.css({top:b.position.top,left:b.position.left}),e.id=b.id,wf.nodes[e.id]=e,c=Math.max(c,parseInt(a)),d||"tool"!==e.type||(e.workflow_outputs.length>0?d=!0:$.each(e.post_job_actions,function(a,b){"HideDatasetAction"===b.action_type&&(d=!0)}))}),wf.id_counter=c+1,$.each(b.steps,function(b,c){var e=wf.nodes[b];$.each(c.input_connections,function(b,c){c&&($.isArray(c)||(c=[c]),$.each(c,function(c,d){var f=wf.nodes[d.id],g=new a;g.connect(f.output_terminals[d.output_name],e.input_terminals[b]),g.redraw()}))}),d&&"tool"===e.type&&$.each(e.output_terminals,function(a,b){void 0===e.post_job_actions["HideDatasetAction"+b.name]&&(e.addWorkflowOutput(b.name),callout=$(e.element).find(".callout."+b.name),callout.find("img").attr("src",Galaxy.root+"static/images/fugue/asterisk-small.png"),wf.has_changes=!0)})})},check_changes_in_active_form:function(){this.active_form_has_changes&&(this.has_changes=!0,$("#right-content").find("form").submit(),this.active_form_has_changes=!1)},reload_active_node:function(){if(this.active_node){var a=this.active_node;this.clear_active_node(),this.activate_node(a)}},clear_active_node:function(){this.active_node&&(this.active_node.make_inactive(),this.active_node=null),this.app.showToolForm("No node selected
",{id:"no-node"})},activate_node:function(a){this.active_node!=a&&(this.check_changes_in_active_form(),this.clear_active_node(),this.app.showToolForm(a.form_html,a),a.make_active(),this.active_node=a)},node_changed:function(a,b){this.has_changes=!0,this.active_node==a&&b&&(this.check_changes_in_active_form(),this.app.showToolForm(a.form_html,a))},layout:function(){this.check_changes_in_active_form(),this.has_changes=!0;var a={},b={};for($.each(this.nodes,function(c){void 0===a[c]&&(a[c]=0),void 0===b[c]&&(b[c]=[])}),$.each(this.nodes,function(c,d){$.each(d.input_terminals,function(c,e){$.each(e.connectors,function(c,e){var f=e.handle1.node;a[d.id]+=1,b[f.id].push(d.id)})})}),node_ids_by_level=[];;){level_parents=[];for(var c in a)0==a[c]&&level_parents.push(c);if(0==level_parents.length)break;node_ids_by_level.push(level_parents);for(var d in level_parents){var e=level_parents[d];delete a[e];for(var f in b[e])a[b[e][f]]-=1}}if(!a.length){var g=this.nodes,h=80;v_pad=30;var i=h;$.each(node_ids_by_level,function(a,b){b.sort(function(a,b){return $(g[a].element).position().top-$(g[b].element).position().top});var c=0,d=v_pad;$.each(b,function(a,b){var e=g[b],f=$(e.element);$(f).css({top:d,left:i}),c=Math.max(c,$(f).width()),d+=$(f).height()+v_pad}),i+=c+h}),$.each(g,function(a,b){b.redraw()})}},bounds_for_all_nodes:function(){var a,b=1/0,c=-(1/0),d=1/0,f=-(1/0);return $.each(this.nodes,function(g,h){e=$(h.element),a=e.position(),b=Math.min(b,a.left),c=Math.max(c,a.left+e.width()),d=Math.min(d,a.top),f=Math.max(f,a.top+e.width())}),{xmin:b,xmax:c,ymin:d,ymax:f}},fit_canvas_to_nodes:function(){function a(a,b){return Math.ceil(a/b)*b}function b(a,b){return b>a||a>3*b?(new_pos=(Math.ceil(a%b/b)+1)*b,-(a-new_pos)):0}var c=this.bounds_for_all_nodes(),d=this.canvas_container.position(),e=this.canvas_container.parent(),f=b(c.xmin,100),g=b(c.ymin,100);f=Math.max(f,d.left),g=Math.max(g,d.top);var h=d.left-f,i=d.top-g,j=a(c.xmax+100,100)+f,k=a(c.ymax+100,100)+g;j=Math.max(j,-h+e.width()),k=Math.max(k,-i+e.height()),this.canvas_container.css({left:h,top:i,width:j,height:k}),this.canvas_container.children().each(function(){var a=$(this).position();$(this).css("left",a.left+f),$(this).css("top",a.top+g)})}}),b});
+define(["mvc/workflow/workflow-connector","libs/toastr"],function(a,b){function c(a,b){this.app=a,this.canvas_container=b,this.id_counter=0,this.nodes={},this.name=null,this.has_changes=!1,this.active_form_has_changes=!1,this.nodeLabels={}}return $.extend(c.prototype,{canLabelNodeWith:function(a){return a?!(a in this.nodeLabels):!0},registerNodeLabel:function(a){a&&(this.nodeLabels[a]=!0)},unregisterNodeLabel:function(a){a&&delete this.nodeLabels[a]},updateNodeLabel:function(a,c){a&&this.unregisterNodeLabel(a),this.canLabelNodeWith(c)||b.warning("Workflow contains duplicate node labels "+c+". This must be fixed before it can be saved."),c&&this.registerNodeLabel(c)},attemptUpdateNodeLabel:function(a,b){return this.canLabelNodeWith(b)?(a.setLabel(b),!0):!1},create_node:function(a,b,c){var d=this.app.prebuildNode(a,b,c);return this.add_node(d),this.fit_canvas_to_nodes(),this.app.canvas_manager.draw_overview(),this.activate_node(d),d},add_node:function(a){a.id=this.id_counter,a.element.attr("id","wf-node-step-"+a.id),this.id_counter++,this.nodes[a.id]=a,this.has_changes=!0,a.workflow=this},remove_node:function(a){this.active_node==a&&this.clear_active_node(),delete this.nodes[a.id],this.has_changes=!0},remove_all:function(){wf=this,$.each(this.nodes,function(a,b){b.destroy(),wf.remove_node(b)})},rectify_workflow_outputs:function(){var a=!1,b=!1;if($.each(this.nodes,function(c,d){d.workflow_outputs&&d.workflow_outputs.length>0&&(a=!0),$.each(d.post_job_actions,function(a,c){"HideDatasetAction"===c.action_type&&(b=!0)})}),a!==!1||b!==!1){var c=this;$.each(this.nodes,function(b,d){if("tool"===d.type){var e=!1;null==d.post_job_actions&&(d.post_job_actions={},e=!0);var f=[];$.each(d.post_job_actions,function(a,b){"HideDatasetAction"==b.action_type&&f.push(a)}),f.length>0&&$.each(f,function(a,b){e=!0,delete d.post_job_actions[b]}),a&&$.each(d.output_terminals,function(a,b){var c=!d.isWorkflowOutput(b.name);if(c===!0){e=!0;var f={action_type:"HideDatasetAction",output_name:b.name,action_arguments:{}};d.post_job_actions["HideDatasetAction"+b.name]=null,d.post_job_actions["HideDatasetAction"+b.name]=f}}),c.active_node==d&&e===!0&&c.reload_active_node()}})}},to_simple:function(){var a={};return $.each(this.nodes,function(b,c){var d={};$.each(c.input_terminals,function(a,b){d[b.name]=null;var c=[];$.each(b.connectors,function(a,e){c[a]={id:e.handle1.node.id,output_name:e.handle1.name},d[b.name]=c})});var e={};c.post_job_actions&&$.each(c.post_job_actions,function(a,b){var c={action_type:b.action_type,output_name:b.output_name,action_arguments:b.action_arguments};e[b.action_type+b.output_name]=null,e[b.action_type+b.output_name]=c}),c.workflow_outputs||(c.workflow_outputs=[]);var f={id:c.id,type:c.type,tool_id:c.content_id,tool_state:c.tool_state,tool_errors:c.tool_errors,input_connections:d,position:$(c.element).position(),annotation:c.annotation,post_job_actions:c.post_job_actions,uuid:c.uuid,label:c.label,workflow_outputs:c.workflow_outputs};a[c.id]=f}),{steps:a}},from_simple:function(b){wf=this;var c=0;wf.name=b.name;var d=!1;$.each(b.steps,function(a,b){var e=wf.app.prebuildNode(b.type,b.name,b.tool_id);e.init_field_data(b),b.position&&e.element.css({top:b.position.top,left:b.position.left}),e.id=b.id,wf.nodes[e.id]=e,c=Math.max(c,parseInt(a)),d||"tool"!==e.type||(e.workflow_outputs.length>0?d=!0:$.each(e.post_job_actions,function(a,b){"HideDatasetAction"===b.action_type&&(d=!0)}))}),wf.id_counter=c+1,$.each(b.steps,function(b,c){var e=wf.nodes[b];$.each(c.input_connections,function(b,c){c&&($.isArray(c)||(c=[c]),$.each(c,function(c,d){var f=wf.nodes[d.id],g=new a;g.connect(f.output_terminals[d.output_name],e.input_terminals[b]),g.redraw()}))}),d&&"tool"===e.type&&$.each(e.output_terminals,function(a,b){void 0===e.post_job_actions["HideDatasetAction"+b.name]&&(e.addWorkflowOutput(b.name),callout=$(e.element).find(".callout."+b.name),callout.find("img").attr("src",Galaxy.root+"static/images/fugue/asterisk-small.png"),wf.has_changes=!0)})})},check_changes_in_active_form:function(){this.active_form_has_changes&&(this.has_changes=!0,$("#right-content").find("form").submit(),this.active_form_has_changes=!1)},reload_active_node:function(){if(this.active_node){var a=this.active_node;this.clear_active_node(),this.activate_node(a)}},clear_active_node:function(){this.active_node&&(this.active_node.make_inactive(),this.active_node=null),this.app.showToolForm("No node selected
",{id:"no-node"})},activate_node:function(a){this.active_node!=a&&(this.check_changes_in_active_form(),this.clear_active_node(),this.app.showToolForm(a.form_html,a),a.make_active(),this.active_node=a)},node_changed:function(a,b){this.has_changes=!0,this.active_node==a&&b&&(this.check_changes_in_active_form(),this.app.showToolForm(a.form_html,a))},layout:function(){this.check_changes_in_active_form(),this.has_changes=!0;var a={},b={};for($.each(this.nodes,function(c){void 0===a[c]&&(a[c]=0),void 0===b[c]&&(b[c]=[])}),$.each(this.nodes,function(c,d){$.each(d.input_terminals,function(c,e){$.each(e.connectors,function(c,e){var f=e.handle1.node;a[d.id]+=1,b[f.id].push(d.id)})})}),node_ids_by_level=[];;){level_parents=[];for(var c in a)0==a[c]&&level_parents.push(c);if(0==level_parents.length)break;node_ids_by_level.push(level_parents);for(var d in level_parents){var e=level_parents[d];delete a[e];for(var f in b[e])a[b[e][f]]-=1}}if(!a.length){var g=this.nodes,h=80;v_pad=30;var i=h;$.each(node_ids_by_level,function(a,b){b.sort(function(a,b){return $(g[a].element).position().top-$(g[b].element).position().top});var c=0,d=v_pad;$.each(b,function(a,b){var e=g[b],f=$(e.element);$(f).css({top:d,left:i}),c=Math.max(c,$(f).width()),d+=$(f).height()+v_pad}),i+=c+h}),$.each(g,function(a,b){b.redraw()})}},bounds_for_all_nodes:function(){var a,b=1/0,c=-(1/0),d=1/0,f=-(1/0);return $.each(this.nodes,function(g,h){e=$(h.element),a=e.position(),b=Math.min(b,a.left),c=Math.max(c,a.left+e.width()),d=Math.min(d,a.top),f=Math.max(f,a.top+e.width())}),{xmin:b,xmax:c,ymin:d,ymax:f}},fit_canvas_to_nodes:function(){function a(a,b){return Math.ceil(a/b)*b}function b(a,b){return b>a||a>3*b?(new_pos=(Math.ceil(a%b/b)+1)*b,-(a-new_pos)):0}var c=this.bounds_for_all_nodes(),d=this.canvas_container.position(),e=this.canvas_container.parent(),f=b(c.xmin,100),g=b(c.ymin,100);f=Math.max(f,d.left),g=Math.max(g,d.top);var h=d.left-f,i=d.top-g,j=a(c.xmax+100,100)+f,k=a(c.ymax+100,100)+g;j=Math.max(j,-h+e.width()),k=Math.max(k,-i+e.height()),this.canvas_container.css({left:h,top:i,width:j,height:k}),this.canvas_container.children().each(function(){var a=$(this).position();$(this).css("left",a.left+f),$(this).css("top",a.top+g)})}}),c});
//# sourceMappingURL=../../../maps/mvc/workflow/workflow-manager.js.map
\ No newline at end of file
diff --git a/static/scripts/mvc/workflow/workflow-node.js b/static/scripts/mvc/workflow/workflow-node.js
index c91dbe18b4d..046aff233e0 100644
--- a/static/scripts/mvc/workflow/workflow-node.js
+++ b/static/scripts/mvc/workflow/workflow-node.js
@@ -1,2 +1,2 @@
-define(["mvc/workflow/workflow-view-node"],function(a){var b=Backbone.Model.extend({initialize:function(a,b){this.app=a,this.element=b.element,this.input_terminals={},this.output_terminals={},this.tool_errors={},this.workflow_outputs=[]},getWorkflowOutput:function(a){return _.findWhere(this.workflow_outputs,{output_name:a})},isWorkflowOutput:function(a){return void 0!=this.getWorkflowOutput(a)},removeWorkflowOutput:function(a){for(;this.isWorkflowOutput(a);)this.workflow_outputs.splice(this.getWorkflowOutput(a),1)},addWorkflowOutput:function(a){this.isWorkflowOutput(a)||this.workflow_outputs.push({output_name:a})},connectedOutputTerminals:function(){return this._connectedTerminals(this.output_terminals)},_connectedTerminals:function(a){var b=[];return $.each(a,function(a,c){c.connectors.length>0&&b.push(c)}),b},hasConnectedOutputTerminals:function(){var a=this.output_terminals;for(var b in a)if(a[b].connectors.length>0)return!0;return!1},connectedMappedInputTerminals:function(){return this._connectedMappedTerminals(this.input_terminals)},hasConnectedMappedInputTerminals:function(){var a=this.input_terminals;for(var b in a){var c=a[b];if(c.connectors.length>0&&c.isMappedOver())return!0}return!1},_connectedMappedTerminals:function(a){var b=[];return $.each(a,function(a,c){var d=c.mapOver();d.isCollection&&c.connectors.length>0&&b.push(c)}),b},mappedInputTerminals:function(){return this._mappedTerminals(this.input_terminals)},_mappedTerminals:function(a){var b=[];return $.each(a,function(a,c){var d=c.mapOver();d.isCollection&&b.push(c)}),b},hasMappedOverInputTerminals:function(){var a=!1;return _.each(this.input_terminals,function(b){var c=b.mapOver();c.isCollection&&(a=!0)}),a},redraw:function(){$.each(this.input_terminals,function(a,b){b.redraw()}),$.each(this.output_terminals,function(a,b){b.redraw()})},destroy:function(){$.each(this.input_terminals,function(a,b){b.destroy()}),$.each(this.output_terminals,function(a,b){b.destroy()}),this.app.workflow.remove_node(this),$(this.element).remove()},make_active:function(){$(this.element).addClass("toolForm-active")},make_inactive:function(){var a=this.element.get(0);!function(b){b.removeChild(a),b.appendChild(a)}(a.parentNode),$(a).removeClass("toolForm-active")},init_field_data:function(b){b.type&&(this.type=b.type),this.name=b.name,this.form_html=b.form_html,this.tool_state=b.tool_state,this.tool_errors=b.tool_errors,this.tooltip=b.tooltip?b.tooltip:"",this.annotation=b.annotation,this.post_job_actions=b.post_job_actions?b.post_job_actions:{},this.label=b.label,this.uuid=b.uuid,this.workflow_outputs=b.workflow_outputs?b.workflow_outputs:[];var c=this,d=new a({el:this.element[0],node:c});c.nodeView=d,$.each(b.data_inputs,function(a,b){d.addDataInput(b)}),b.data_inputs.length>0&&b.data_outputs.length>0&&d.addRule(),$.each(b.data_outputs,function(a,b){d.addDataOutput(b)}),d.render(),this.app.workflow.node_changed(this,!0)},update_field_data:function(a){var b=this;if(nodeView=b.nodeView,this.tool_state=a.tool_state,this.form_html=a.form_html,this.tool_errors=a.tool_errors,this.annotation=a.annotation,"post_job_actions"in a){var c=$.parseJSON(a.post_job_actions);this.post_job_actions=c?c:{}}b.nodeView.renderToolErrors();var d=nodeView.$("div.inputs"),e=nodeView.newInputsDiv(),f={};_.each(a.data_inputs,function(a){var c=b.nodeView.addDataInput(a,e);f[a.name]=c}),_.each(_.difference(_.values(nodeView.terminalViews),_.values(f)),function(a){a.el.terminal.destroy()}),nodeView.terminalViews=f,1==a.data_outputs.length&&"collection_type"in a.data_outputs[0]&&nodeView.updateDataOutput(a.data_outputs[0]),d.replaceWith(e),this.markChanged(),this.redraw()},error:function(a){var b=$(this.element).find(".toolFormBody");b.find("div").remove();var c=""+a+"
";this.form_html=c,b.html(c),this.app.workflow.node_changed(this)},markChanged:function(){this.app.workflow.node_changed(this)}});return b});
+define(["mvc/workflow/workflow-view-node"],function(a){var b=Backbone.Model.extend({initialize:function(a,b){this.app=a,this.element=b.element,this.input_terminals={},this.output_terminals={},this.tool_errors={},this.workflow_outputs=[]},getWorkflowOutput:function(a){return _.findWhere(this.workflow_outputs,{output_name:a})},isWorkflowOutput:function(a){return void 0!=this.getWorkflowOutput(a)},removeWorkflowOutput:function(a){for(;this.isWorkflowOutput(a);)this.workflow_outputs.splice(this.getWorkflowOutput(a),1)},addWorkflowOutput:function(a){this.isWorkflowOutput(a)||this.workflow_outputs.push({output_name:a})},connectedOutputTerminals:function(){return this._connectedTerminals(this.output_terminals)},_connectedTerminals:function(a){var b=[];return $.each(a,function(a,c){c.connectors.length>0&&b.push(c)}),b},hasConnectedOutputTerminals:function(){var a=this.output_terminals;for(var b in a)if(a[b].connectors.length>0)return!0;return!1},connectedMappedInputTerminals:function(){return this._connectedMappedTerminals(this.input_terminals)},hasConnectedMappedInputTerminals:function(){var a=this.input_terminals;for(var b in a){var c=a[b];if(c.connectors.length>0&&c.isMappedOver())return!0}return!1},_connectedMappedTerminals:function(a){var b=[];return $.each(a,function(a,c){var d=c.mapOver();d.isCollection&&c.connectors.length>0&&b.push(c)}),b},mappedInputTerminals:function(){return this._mappedTerminals(this.input_terminals)},_mappedTerminals:function(a){var b=[];return $.each(a,function(a,c){var d=c.mapOver();d.isCollection&&b.push(c)}),b},hasMappedOverInputTerminals:function(){var a=!1;return _.each(this.input_terminals,function(b){var c=b.mapOver();c.isCollection&&(a=!0)}),a},redraw:function(){$.each(this.input_terminals,function(a,b){b.redraw()}),$.each(this.output_terminals,function(a,b){b.redraw()})},destroy:function(){$.each(this.input_terminals,function(a,b){b.destroy()}),$.each(this.output_terminals,function(a,b){b.destroy()}),this.app.workflow.remove_node(this),$(this.element).remove()},make_active:function(){$(this.element).addClass("toolForm-active")},make_inactive:function(){var a=this.element.get(0);!function(b){b.removeChild(a),b.appendChild(a)}(a.parentNode),$(a).removeClass("toolForm-active")},setLabel:function(a){this.app.workflow.updateNodeLabel(this.label,a),this.label=a||null},init_field_data:function(b){b.type&&(this.type=b.type),this.name=b.name,this.form_html=b.form_html,this.tool_state=b.tool_state,this.tool_errors=b.tool_errors,this.tooltip=b.tooltip?b.tooltip:"",this.annotation=b.annotation,this.post_job_actions=b.post_job_actions?b.post_job_actions:{},this.setLabel(b.label),this.uuid=b.uuid,this.workflow_outputs=b.workflow_outputs?b.workflow_outputs:[];var c=this,d=new a({el:this.element[0],node:c});c.nodeView=d,$.each(b.data_inputs,function(a,b){d.addDataInput(b)}),b.data_inputs.length>0&&b.data_outputs.length>0&&d.addRule(),$.each(b.data_outputs,function(a,b){d.addDataOutput(b)}),d.render(),this.app.workflow.node_changed(this,!0)},update_field_data:function(a){var b=this;if(nodeView=b.nodeView,this.tool_state=a.tool_state,this.form_html=a.form_html,this.tool_errors=a.tool_errors,this.annotation=a.annotation,this.setLabel(a.label),"post_job_actions"in a){var c=$.parseJSON(a.post_job_actions);this.post_job_actions=c?c:{}}b.nodeView.renderToolErrors();var d=nodeView.$("div.inputs"),e=nodeView.newInputsDiv(),f={};_.each(a.data_inputs,function(a){var c=b.nodeView.addDataInput(a,e);f[a.name]=c}),_.each(_.difference(_.values(nodeView.terminalViews),_.values(f)),function(a){a.el.terminal.destroy()}),nodeView.terminalViews=f,b.nodeView.render(),1==a.data_outputs.length&&"collection_type"in a.data_outputs[0]&&nodeView.updateDataOutput(a.data_outputs[0]),d.replaceWith(e),this.markChanged(),this.redraw()},error:function(a){var b=$(this.element).find(".toolFormBody");b.find("div").remove();var c=""+a+"
";this.form_html=c,b.html(c),this.app.workflow.node_changed(this)},markChanged:function(){this.app.workflow.node_changed(this)}});return b});
//# sourceMappingURL=../../../maps/mvc/workflow/workflow-node.js.map
\ No newline at end of file
diff --git a/static/scripts/mvc/workflow/workflow-view-node.js b/static/scripts/mvc/workflow/workflow-view-node.js
index 14b00a490da..86e681d2ab8 100644
--- a/static/scripts/mvc/workflow/workflow-view-node.js
+++ b/static/scripts/mvc/workflow/workflow-view-node.js
@@ -1,2 +1,2 @@
-define(["mvc/workflow/workflow-view-terminals","mvc/workflow/workflow-view-data"],function(a,b){return Backbone.View.extend({initialize:function(a){this.node=a.node,this.output_width=Math.max(150,this.$el.width()),this.tool_body=this.$el.find(".toolFormBody"),this.tool_body.find("div").remove(),this.newInputsDiv().appendTo(this.tool_body),this.terminalViews={},this.outputTerminlViews={}},render:function(){this.renderToolErrors(),this.$el.css("width",Math.min(250,Math.max(this.$el.width(),this.output_width)))},renderToolErrors:function(){this.node.tool_errors?this.$el.addClass("tool-node-error"):this.$el.removeClass("tool-node-error")},newInputsDiv:function(){return $("
")},updateMaxWidth:function(a){this.output_width=Math.max(this.output_width,a)},addRule:function(){this.tool_body.append($("
"))},addDataInput:function(c,d){var e=!0;d||(d=this.$(".inputs"),e=!1);var f=this.terminalViews[c.name],g="dataset_collection"==c.input_type?a.InputCollectionTerminalView:a.InputTerminalView;if(!f||f instanceof g||(f.el.terminal.destroy(),f=null),f){var h=f.el.terminal;h.update(c),h.destroyInvalidConnections()}else f=new g({node:this.node,input:c});this.terminalViews[c.name]=f;var i=f.el,j=new b.DataInputView({terminalElement:i,input:c,nodeView:this,skipResize:e}),k=j.$el;return d.append(k.prepend(f.terminalElements())),f},addDataOutput:function(c){var d=c.collection?a.OutputCollectionTerminalView:a.OutputTerminalView,e=new d({node:this.node,output:c}),f=new b.DataOutputView({output:c,terminalElement:e.el,nodeView:this});this.tool_body.append(f.$el.append(e.terminalElements()))},updateDataOutput:function(a){var b=this.node.output_terminals[a.name];b.update(a)}})});
+define(["mvc/workflow/workflow-view-terminals","mvc/workflow/workflow-view-data"],function(a,b){return Backbone.View.extend({initialize:function(a){this.node=a.node,this.output_width=Math.max(150,this.$el.width()),this.tool_body=this.$el.find(".toolFormBody"),this.tool_body.find("div").remove(),this.newInputsDiv().appendTo(this.tool_body),this.terminalViews={},this.outputTerminlViews={}},render:function(){var a,b=this.node.label;a=b?b:this.node.name,this.$el.find(".nodeTitle").text(a),this.renderToolErrors(),this.$el.css("width",Math.min(250,Math.max(this.$el.width(),this.output_width)))},renderToolErrors:function(){this.node.tool_errors?this.$el.addClass("tool-node-error"):this.$el.removeClass("tool-node-error")},newInputsDiv:function(){return $("
")},updateMaxWidth:function(a){this.output_width=Math.max(this.output_width,a)},addRule:function(){this.tool_body.append($("
"))},addDataInput:function(c,d){var e=!0;d||(d=this.$(".inputs"),e=!1);var f=this.terminalViews[c.name],g="dataset_collection"==c.input_type?a.InputCollectionTerminalView:a.InputTerminalView;if(!f||f instanceof g||(f.el.terminal.destroy(),f=null),f){var h=f.el.terminal;h.update(c),h.destroyInvalidConnections()}else f=new g({node:this.node,input:c});this.terminalViews[c.name]=f;var i=f.el,j=new b.DataInputView({terminalElement:i,input:c,nodeView:this,skipResize:e}),k=j.$el;return d.append(k.prepend(f.terminalElements())),f},addDataOutput:function(c){var d=c.collection?a.OutputCollectionTerminalView:a.OutputTerminalView,e=new d({node:this.node,output:c}),f=new b.DataOutputView({output:c,terminalElement:e.el,nodeView:this});this.tool_body.append(f.$el.append(e.terminalElements()))},updateDataOutput:function(a){var b=this.node.output_terminals[a.name];b.update(a)}})});
//# sourceMappingURL=../../../maps/mvc/workflow/workflow-view-node.js.map
\ 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 514217500e9..8949e169a71 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/tools-form-workflow","utils/async-save-text"],function(a,b,c,d,e,f,g){function h(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 EditorFormView=Backbone.View.extend({initialize:function(b){this.options=a.merge(b,{});var c=$("
"),d=b.workflowView,e=b.node;b.html&&c.html(b.html),this.setElement(c),e&&"no-node"!=e.id&&(c.find(".toolForm:first").after(this._genericStepAttributesTemplate(e)),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:"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'
"},_annotationTemplate:function(a){return''}}),Backbone.View.extend({initialize:function(a){function c(){j.workflow.layout(),j.workflow.fit_canvas_to_nodes(),j.scroll_to_nodes(),j.canvas_manager.draw_overview()}function e(){j.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 i(){$.jStorage.set("overview-off",!0),$("#overview-border").css("right","20000px"),$("#close-viewport").css("background-position","12px 0px")}var j=b.app=this;this.options=a,this.urls=a&&a.urls||{},this.active_ajax_call=!1;var k=function(){j.workflow.check_changes_in_active_form(),workflow&&j.workflow.has_changes?(do_close=function(){window.onbeforeunload=void 0,window.document.location=j.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=j.urls.workflow_index},l=function(a,b){if(show_message("Saving workflow","progress"),j.workflow.check_changes_in_active_form(),!j.workflow.has_changes)return hide_modal(),void(b&&b());j.workflow.rectify_workflow_outputs();var c=function(a){$.ajax({url:j.urls.save_workflow,type:"POST",data:{id:j.options.id,workflow_data:function(){return JSON.stringify(j.workflow.to_simple())},_:"true"},dataType:"json",success:function(b){var c=$("
").text(b.message);if(b.errors){c.addClass("warningmark");var d=$("");$.each(b.errors,function(a,b){$(" ").text(b).appendTo(d)}),c.append(d)}else c.addClass("donemark");j.workflow.name=b.name,j.workflow.has_changes=!1,j.workflow.stored=!0,j.showWorkflowParameters(),b.errors?window.show_modal("Saving workflow",c,{Ok:hide_modal}):(a&&a(),hide_modal())}})};j.active_ajax_call?$(document).bind("ajaxStop.save_workflow",function(){$(document).unbind("ajaxStop.save_workflow"),c(),$(document).unbind("ajaxStop.save_workflow"),j.active_ajax_call=!1}):c(b)};$("#tool-search-query").click(function(){$(this).focus(),$(this).select()}).keyup(function(){if($(this).css("font-style","normal"),this.value.length<3)h(!1);else if(this.value!=this.lastValue){$(this).addClass("search_active");var a=this.value;this.timer&&clearTimeout(this.timer),$("#search-spinner").show(),this.timer=setTimeout(function(){$.get(j.urls.tool_search,{q:a},function(a){if($("#search-no-results").hide(),$(".toolSectionWrapper").hide(),$(".toolSectionWrapper").find(".toolTitle").hide(),0!=a.length){var b=$.map(a,function(a){return"link-"+a});$(b).each(function(a,b){$("[id='"+b+"']").parent().addClass("search_match"),$("[id='"+b+"']").parent().show().parent().parent().show().parent().show()}),$(".toolPanelLabel").each(function(){for(var a=$(this),b=a.next(),c=!0;0!==b.length&&b.hasClass("toolTitle");){if(b.is(":visible")){c=!1;break}b=b.next()}c&&a.hide()})}else $("#search-no-results").show();$("#search-spinner").hide()},"json")},400)}this.lastValue=this.value}),this.canvas_manager=b.canvas_manager=new d(this,$("#canvas-viewport"),$("#overview")),this.reset(),this.datatypes=JSON.parse($.ajax({url:Galaxy.root+"api/datatypes",async:!1}).responseText),this.datatypes_mapping=JSON.parse($.ajax({url:Galaxy.root+"api/datatypes/mapping",async:!1}).responseText),this.ext_to_type=this.datatypes_mapping.ext_to_class_name,this.type_to_type=this.datatypes_mapping.class_to_classes,$.ajax({url:j.urls.load_workflow,data:{id:j.options.id,_:"true"},dataType:"json",cache:!1,success:function(a){j.reset(),j.workflow.from_simple(a),j.workflow.has_changes=!1,j.workflow.fit_canvas_to_nodes(),j.scroll_to_nodes(),j.canvas_manager.draw_overview(),upgrade_message="",$.each(a.upgrade_messages,function(a,b){upgrade_message+="Step "+(parseInt(a,10)+1)+": "+j.workflow.nodes[a].name+"",$.each(b,function(a,b){upgrade_message+=""+b+" "}),upgrade_message+=" "}),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.",{Continue:hide_modal}):hide_modal(),j.showWorkflowParameters()},beforeSubmit:function(){show_message("Loading workflow","progress")}}),$(document).ajaxStart(function(){j.active_ajax_call=!0,$(document).bind("ajaxStop.global",function(){j.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=j.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")?i():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")?i():f()}),window.onbeforeunload=function(){return workflow&&j.workflow.has_changes?"There are unsaved changes to your workflow which will be lost.":void 0},$("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)})}),g("workflow-name","workflow-name",j.urls.rename_async,"new_name"),$("#workflow-tag").click(function(){return $(".tag-area").click(),!1}),g("workflow-annotation","workflow-annotation",j.urls.annotate_async,"new_annotation",25,!0,4)},reset:function(){this.workflow&&this.workflow.remove_all(),this.workflow=b.workflow=new c(this,$("#canvas-container"))},scroll_to_nodes:function(){var a,b,c=$("#canvas-viewport"),d=$("#canvas-container");b=d.width().toolForm:last>.toolFormTitle>.buttons").click(function(){action_to_rem=$(this).closest(".toolForm",".action_tag").children(".action_tag:first").text(),$(this).closest(".toolForm").remove(),delete c.workflow.active_node.post_job_actions[action_to_rem],c.workflow.active_form_has_changes=!0})},display_pja_list:function(){return pja_list},display_file_list:function(a){addlist="";for(var b in a.output_terminals)addlist+=""+b+" ";return addlist+=" ",addlist},new_pja:function(a,b,c){if(void 0===c.post_job_actions&&(c.post_job_actions={}),void 0===c.post_job_actions[a+b]){var d={};return d.action_type=a,d.output_name=b,c.post_job_actions[a+b]=null,c.post_job_actions[a+b]=d,display_pja(d,c),this.workflow.active_form_has_changes=!0,!0}return!1},showWorkflowParameters:function(){var a=/\$\{.+?\}/g,b=[],c=$("#workflow-parameters-container"),d=$("#workflow-parameters-box"),e="",f=[];$.each(this.workflow.nodes,function(c,d){var e=d.form_html.match(a);e&&(f=f.concat(e)),d.post_job_actions&&($.each(d.post_job_actions,function(b,c){c.action_arguments&&$.each(c.action_arguments,function(b,c){var d=c.match(a);d&&(f=f.concat(d))})}),f&&$.each(f,function(a,c){-1===$.inArray(c,b)&&b.push(c)}))}),b&&0!==b.length?($.each(b,function(a,b){e+=""+b.substring(2,b.length-1)+"
"}),c.html(e),d.show()):(c.html(e),d.hide())},showToolForm:function(b,c){var d="right-content",e=d+"-"+c.id,g=$("#"+d),h=g.find("#"+e);if(h.length>0&&0==h.find(".section-row").length&&h.remove(),0==g.find("#"+e).length){var i=$('
'),j=null;if("tool"==c.type&&a.isJSON(b)){var k=JSON.parse(b);k.node=c,k.datatypes=this.datatypes,j=new f.View(k)}else{var k={html:b,node:c,workflowView:this};j=new EditorFormView(k)}i.append(j.$el),g.append(i)}$("."+d).hide(),g.find("#"+e).show(),g.show(),g.scrollTop()},isSubType:function(a,b){return a=this.ext_to_type[a],b=this.ext_to_type[b],this.type_to_type[a]&&b in this.type_to_type[a]},prebuildNode:function(a,b,c){var d=this,f=$("
"),g=new e(this,{element:f});g.type=a,"tool"==a&&(g.tool_id=c);var h=$(""+b+"
");f.append(h),f.css("left",$(window).scrollLeft()+20),f.css("top",$(window).scrollTop()+20);var i=$("
"),j=" loading tool info...
";i.append(j),g.form_html=j,f.append(i);var k=$("
");k.append($("
").addClass("fa-icon-button fa fa-times").click(function(){g.destroy()})),f.appendTo("#canvas-container");var l=$("#canvas-container").position(),m=$("#canvas-container").parent(),n=f.width(),o=f.height();return f.css({left:-l.left+m.width()/2-n/2,top:-l.top+m.height()/2-o/2}),k.prependTo(h),n+=k.width()+10,f.css("width",n),$(f).bind("dragstart",function(){d.workflow.activate_node(g)}).bind("dragend",function(){d.workflow.node_changed(this),d.workflow.fit_canvas_to_nodes(),d.canvas_manager.draw_overview()}).bind("dragclickonly",function(){d.workflow.activate_node(g)}).bind("drag",function(a,b){var c=$(this).offsetParent().offset(),d=b.offsetX-c.left,e=b.offsetY-c.top;$(this).css({left:d,top:e}),$(this).find(".terminal").each(function(){this.terminal.redraw()})}),g}})});
+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/tools-form-workflow","utils/async-save-text","libs/toastr","ui/editable-text"],function(a,b,c,d,e,f,g,h){function i(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",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)):(h.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:"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'
"},_annotationTemplate:function(a){return''}}),Backbone.View.extend({initialize:function(a){function c(){j.workflow.layout(),j.workflow.fit_canvas_to_nodes(),j.scroll_to_nodes(),j.canvas_manager.draw_overview()}function e(){j.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 h(){$.jStorage.set("overview-off",!0),$("#overview-border").css("right","20000px"),$("#close-viewport").css("background-position","12px 0px")}var j=b.app=this;this.options=a,this.urls=a&&a.urls||{},this.active_ajax_call=!1;var k=function(){j.workflow.check_changes_in_active_form(),workflow&&j.workflow.has_changes?(do_close=function(){window.onbeforeunload=void 0,window.document.location=j.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=j.urls.workflow_index},l=function(a,b){if(show_message("Saving workflow","progress"),j.workflow.check_changes_in_active_form(),!j.workflow.has_changes)return hide_modal(),void(b&&b());j.workflow.rectify_workflow_outputs();var c=function(a){$.ajax({url:j.urls.save_workflow,type:"POST",data:{id:j.options.id,workflow_data:function(){return JSON.stringify(j.workflow.to_simple())},_:"true"},dataType:"json",success:function(b){var c=$("
").text(b.message);if(b.errors){c.addClass("warningmark");var d=$("");$.each(b.errors,function(a,b){$(" ").text(b).appendTo(d)}),c.append(d)}else c.addClass("donemark");j.workflow.name=b.name,j.workflow.has_changes=!1,j.workflow.stored=!0,j.showWorkflowParameters(),b.errors?window.show_modal("Saving workflow",c,{Ok:hide_modal}):(a&&a(),hide_modal())}})};j.active_ajax_call?$(document).bind("ajaxStop.save_workflow",function(){$(document).unbind("ajaxStop.save_workflow"),c(),$(document).unbind("ajaxStop.save_workflow"),j.active_ajax_call=!1}):c(b)};$("#tool-search-query").click(function(){$(this).focus(),$(this).select()}).keyup(function(){if($(this).css("font-style","normal"),this.value.length<3)i(!1);else if(this.value!=this.lastValue){$(this).addClass("search_active");var a=this.value;this.timer&&clearTimeout(this.timer),$("#search-spinner").show(),this.timer=setTimeout(function(){$.get(j.urls.tool_search,{q:a},function(a){if($("#search-no-results").hide(),$(".toolSectionWrapper").hide(),$(".toolSectionWrapper").find(".toolTitle").hide(),0!=a.length){var b=$.map(a,function(a){return"link-"+a});$(b).each(function(a,b){$("[id='"+b+"']").parent().addClass("search_match"),$("[id='"+b+"']").parent().show().parent().parent().show().parent().show()}),$(".toolPanelLabel").each(function(){for(var a=$(this),b=a.next(),c=!0;0!==b.length&&b.hasClass("toolTitle");){if(b.is(":visible")){c=!1;break}b=b.next()}c&&a.hide()})}else $("#search-no-results").show();$("#search-spinner").hide()},"json")},400)}this.lastValue=this.value}),this.canvas_manager=b.canvas_manager=new d(this,$("#canvas-viewport"),$("#overview")),this.reset(),this.datatypes=JSON.parse($.ajax({url:Galaxy.root+"api/datatypes",async:!1}).responseText),this.datatypes_mapping=JSON.parse($.ajax({url:Galaxy.root+"api/datatypes/mapping",async:!1}).responseText),this.ext_to_type=this.datatypes_mapping.ext_to_class_name,this.type_to_type=this.datatypes_mapping.class_to_classes,$.ajax({url:j.urls.load_workflow,data:{id:j.options.id,_:"true"},dataType:"json",cache:!1,success:function(a){j.reset(),j.workflow.from_simple(a),j.workflow.has_changes=!1,j.workflow.fit_canvas_to_nodes(),j.scroll_to_nodes(),j.canvas_manager.draw_overview(),upgrade_message="",$.each(a.upgrade_messages,function(a,b){upgrade_message+="Step "+(parseInt(a,10)+1)+": "+j.workflow.nodes[a].name+"",$.each(b,function(a,b){upgrade_message+=""+b+" "}),upgrade_message+=" "}),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.",{Continue:hide_modal}):hide_modal(),j.showWorkflowParameters()},beforeSubmit:function(){show_message("Loading workflow","progress")}}),$(document).ajaxStart(function(){j.active_ajax_call=!0,$(document).bind("ajaxStop.global",function(){j.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=j.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")?h():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")?h():f()}),window.onbeforeunload=function(){return workflow&&j.workflow.has_changes?"There are unsaved changes to your workflow which will be lost.":void 0},$("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)})}),g("workflow-name","workflow-name",j.urls.rename_async,"new_name"),$("#workflow-tag").click(function(){return $(".tag-area").click(),!1}),g("workflow-annotation","workflow-annotation",j.urls.annotate_async,"new_annotation",25,!0,4)},reset:function(){this.workflow&&this.workflow.remove_all(),this.workflow=b.workflow=new c(this,$("#canvas-container"))},scroll_to_nodes:function(){var a,b,c=$("#canvas-viewport"),d=$("#canvas-container");b=d.width().toolForm:last>.toolFormTitle>.buttons").click(function(){action_to_rem=$(this).closest(".toolForm",".action_tag").children(".action_tag:first").text(),$(this).closest(".toolForm").remove(),delete c.workflow.active_node.post_job_actions[action_to_rem],c.workflow.active_form_has_changes=!0})},display_pja_list:function(){return pja_list},display_file_list:function(a){addlist="";for(var b in a.output_terminals)addlist+=""+b+" ";return addlist+=" ",addlist},new_pja:function(a,b,c){if(void 0===c.post_job_actions&&(c.post_job_actions={}),void 0===c.post_job_actions[a+b]){var d={};return d.action_type=a,d.output_name=b,c.post_job_actions[a+b]=null,c.post_job_actions[a+b]=d,display_pja(d,c),this.workflow.active_form_has_changes=!0,!0}return!1},showWorkflowParameters:function(){var a=/\$\{.+?\}/g,b=[],c=$("#workflow-parameters-container"),d=$("#workflow-parameters-box"),e="",f=[];$.each(this.workflow.nodes,function(c,d){var e=d.form_html.match(a);e&&(f=f.concat(e)),d.post_job_actions&&($.each(d.post_job_actions,function(b,c){c.action_arguments&&$.each(c.action_arguments,function(b,c){var d=c.match(a);d&&(f=f.concat(d))})}),f&&$.each(f,function(a,c){-1===$.inArray(c,b)&&b.push(c)}))}),b&&0!==b.length?($.each(b,function(a,b){e+=""+b.substring(2,b.length-1)+"
"}),c.html(e),d.show()):(c.html(e),d.hide())},showToolForm:function(b,c){var d="right-content",e=d+"-"+c.id,g=$("#"+d),h=g.find("#"+e);if(h.length>0&&0==h.find(".section-row").length&&h.remove(),0==g.find("#"+e).length){var i=$('
'),j=null;if("tool"==c.type&&a.isJSON(b)){var k=JSON.parse(b);k.node=c,k.datatypes=this.datatypes,j=new f.View(k)}else{var k={html:b,node:c,workflowView:this};j=new EditorFormView(k)}i.append(j.$el),g.append(i)}$("."+d).hide(),g.find("#"+e).show(),g.show(),g.scrollTop()},isSubType:function(a,b){return a=this.ext_to_type[a],b=this.ext_to_type[b],this.type_to_type[a]&&b in this.type_to_type[a]},$newNodeElement:function(a,b){var c=$("
"),d=$(""+b+"
");add_node_icon(d.find(".nodeTitle"),a),c.append(d),c.css("left",$(window).scrollLeft()+20),c.css("top",$(window).scrollTop()+20);var e=$("
");return c.append(e),c},prebuildNode:function(a,b,c){var d=this,f=this.$newNodeElement(a,b),g=new e(this,{element:f});g.type=a,g.content_id=c;var h=" loading tool info...
";f.find(".toolFormBody").append(h),g.form_html=h;var i=$("
");i.append($("
").addClass("fa-icon-button fa fa-times").click(function(){g.destroy()})),f.appendTo("#canvas-container");var j=$("#canvas-container").position(),k=$("#canvas-container").parent(),l=f.width(),m=f.height();return f.css({left:-j.left+k.width()/2-l/2,top:-j.top+k.height()/2-m/2}),i.prependTo(f.find(".toolFormTitle")),l+=i.width()+10,f.css("width",l),f.bind("dragstart",function(){d.workflow.activate_node(g)}).bind("dragend",function(){d.workflow.node_changed(this),d.workflow.fit_canvas_to_nodes(),d.canvas_manager.draw_overview()}).bind("dragclickonly",function(){d.workflow.activate_node(g)}).bind("drag",function(a,b){var c=$(this).offsetParent().offset(),d=b.offsetX-c.left,e=b.offsetY-c.top;$(this).css({left:d,top:e}),$(this).find(".terminal").each(function(){this.terminal.redraw()})}),g}})});
//# sourceMappingURL=../../../maps/mvc/workflow/workflow-view.js.map
\ No newline at end of file
diff --git a/templates/webapps/galaxy/workflow/editor_generic_form.mako b/templates/webapps/galaxy/workflow/editor_generic_form.mako
index 5f744fdf4bf..32ad4600af2 100644
--- a/templates/webapps/galaxy/workflow/editor_generic_form.mako
+++ b/templates/webapps/galaxy/workflow/editor_generic_form.mako
@@ -1,12 +1,31 @@