' +
'
' +
'' +
'
' +
'
';
-
- // return input element
return tmp;
}
});
-});
+});
\ No newline at end of file
diff --git a/client/galaxy/scripts/mvc/form/form-section.js b/client/galaxy/scripts/mvc/form/form-section.js
index c4a344e58ca..f306604d0ca 100644
--- a/client/galaxy/scripts/mvc/form/form-section.js
+++ b/client/galaxy/scripts/mvc/form/form-section.js
@@ -316,6 +316,7 @@ define(['utils/utils',
// create input field wrapper
var input_element = new InputElement(this.app, {
+ name : input_def.name,
label : input_def.label || input_def.name,
value : input_def.value,
default_value : input_def.default_value,
@@ -348,4 +349,4 @@ define(['utils/utils',
return {
View: View
};
-});
+});
\ No newline at end of file
diff --git a/client/galaxy/scripts/mvc/form/form-view.js b/client/galaxy/scripts/mvc/form/form-view.js
index c6ea1a61624..add567a665c 100644
--- a/client/galaxy/scripts/mvc/form/form-view.js
+++ b/client/galaxy/scripts/mvc/form/form-view.js
@@ -206,12 +206,8 @@ define(['utils/utils', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc',
inputs : this.options.inputs
});
- // switch to classic tool form mako if the form definition is incompatible
- if (this.incompatible) {
- this.$el.hide();
- $('#tool-form-classic').show();
- return;
- }
+ // remove tooltips
+ $( '.tooltip' ).remove();
// create portlet
this.portlet = new Portlet.View({
@@ -245,4 +241,4 @@ define(['utils/utils', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc',
console.debug('tools-form-base::initialize() - Completed.');
}
});
-});
+});
\ No newline at end of file
diff --git a/client/galaxy/scripts/mvc/tools/tools-form-base.js b/client/galaxy/scripts/mvc/tools/tools-form-base.js
index 5f4406d5bc2..1dd7002d314 100644
--- a/client/galaxy/scripts/mvc/tools/tools-form-base.js
+++ b/client/galaxy/scripts/mvc/tools/tools-form-base.js
@@ -44,6 +44,9 @@ define(['utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view',
}
}, this.options);
+ // allow option customization
+ this.options.customize && this.options.customize( this.options );
+
// create form
this.form = new Form(this.options);
@@ -65,20 +68,19 @@ define(['utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view',
this.options.id = options.id;
this.options.version = options.version;
- if (options.job_id) {
+ if ( options.job_id ) {
build_url = Galaxy.root + 'api/jobs/' + options.job_id + '/build_for_rerun';
} else {
- // construct url
var build_url = Galaxy.root + 'api/tools/' + options.id + '/build?';
- if (options.dataset_id) {
- build_url += 'dataset_id=' + options.dataset_id;
- } else {
+ if ( options.version ) {
build_url += 'tool_version=' + options.version + '&';
- var loc = top.location.href;
- var pos = loc.indexOf('?');
- if (loc.indexOf('tool_id=') != -1 && pos !== -1) {
- build_url += loc.slice(pos + 1);
- }
+ }
+ if ( Galaxy.params && Galaxy.params.tool_id == options.id ) {
+ _.each( Galaxy.params, function ( item, key ) {
+ if ( [ 'tool_version', 'tool_id' ].indexOf( key ) == -1 ) {
+ build_url += key + '=' + item + '&';
+ }
+ } );
}
}
@@ -117,18 +119,23 @@ define(['utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view',
// show error
var error_message = response.error || response.err_msg || 'Uncaught error.';
- if (self.form == undefined){
- self.form = new Form();
- }
- Galaxy.modal.show({
- title : 'Tool cannot be executed',
- body : error_message,
- buttons : {
- 'Close' : function() {
- Galaxy.modal.hide();
+ if ( self.$el.is(':empty') ) {
+ self.$el.prepend((new Ui.Message({
+ message : error_message,
+ status : 'danger',
+ persistent : true
+ })).$el);
+ } else {
+ Galaxy.modal.show({
+ title : 'Tool request failed',
+ body : error_message,
+ buttons : {
+ 'Close' : function() {
+ Galaxy.modal.hide();
+ }
}
- }
- });
+ });
+ }
}
});
},
@@ -350,4 +357,4 @@ define(['utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view',
}
}
});
-});
+});
\ No newline at end of file
diff --git a/client/galaxy/scripts/mvc/tools/tools-form.js b/client/galaxy/scripts/mvc/tools/tools-form.js
index f678789dc26..745c6e2ff26 100644
--- a/client/galaxy/scripts/mvc/tools/tools-form.js
+++ b/client/galaxy/scripts/mvc/tools/tools-form.js
@@ -2,53 +2,50 @@
This is the regular tool form.
*/
define(['utils/utils', 'mvc/ui/ui-misc', 'mvc/tools/tools-form-base', 'mvc/tools/tools-jobs'],
- function(Utils, Ui, ToolFormBase, ToolJobs) {
-
- // create form view
+ function( Utils, Ui, ToolFormBase, ToolJobs ) {
var View = ToolFormBase.extend({
- // initialize
- initialize: function(options) {
- // execute button
+ initialize: function( options ) {
var self = this;
- var execute = new Ui.Button({
- icon : 'fa-check',
- tooltip : 'Execute: ' + options.name,
- title : 'Execute',
- cls : 'btn btn-primary',
- floating : 'clear',
- onclick : function() {
- execute.wait();
- self.form.portlet.disable();
- ToolJobs.submit(self.form, self.options, function() {
- execute.unwait();
- self.form.portlet.enable();
- });
+ ToolFormBase.prototype.initialize.call( this, Utils.merge({
+ customize: function( options ) {
+ // build execute button
+ options.buttons = {
+ execute : execute_btn = new Ui.Button({
+ icon : 'fa-check',
+ tooltip : 'Execute: ' + options.name + ' (' + options.version + ')',
+ title : 'Execute',
+ cls : 'btn btn-primary',
+ floating : 'clear',
+ onclick : function() {
+ execute_btn.wait();
+ self.form.portlet.disable();
+ ToolJobs.submit( self.form, options, function() {
+ execute_btn.unwait();
+ self.form.portlet.enable();
+ } );
+ }
+ })
+ };
+
+ // remap feature
+ if ( options.job_id && options.job_remap ) {
+ options.inputs[ 'rerun_remap_job_id' ] = {
+ label : 'Resume dependencies from this job',
+ name : 'rerun_remap_job_id',
+ type : 'select',
+ display : 'radio',
+ ignore : '__ignore__',
+ value : '__ignore__',
+ options : [ [ 'Yes', options.job_id ], [ 'No', '__ignore__' ] ],
+ help : 'The previous run of this tool failed and other tools were waiting for it to finish successfully. Use this option to resume those tools using the new output(s) of this tool run.'
+ }
+ }
}
- });
- // add remap button
- if (options.job_id && options.job_remap) {
- options.inputs['rerun_remap_job_id'] = {
- label : 'Resume dependencies from this job',
- name : 'rerun_remap_job_id',
- type : 'select',
- display : 'radio',
- ignore : '__ignore__',
- value : '__ignore__',
- options : [['Yes', options.job_id], ['No', '__ignore__']],
- help : 'The previous run of this tool failed and other tools were waiting for it to finish successfully. Use this option to resume those tools using the new output(s) of this tool run.'
- }
- }
- // create options dictionary
- options = Utils.merge(options, {
- buttons : {
- execute : execute
- }
- });
- ToolFormBase.prototype.initialize.call(this, options);
+ }, options ) );
}
});
return {
View: View
};
-});
+});
\ No newline at end of file
diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py
index 8c9ab61ffd5..081a289791c 100755
--- a/lib/galaxy/tools/__init__.py
+++ b/lib/galaxy/tools/__init__.py
@@ -451,7 +451,7 @@ class Tool( object, Dictifiable ):
requires_setting_metadata = True
default_tool_action = DefaultToolAction
dict_collection_visible_keys = ( 'id', 'name', 'version', 'description' )
- default_template = 'tool_form.mako'
+ default_template = ''
def __init__( self, config_file, tool_source, app, guid=None, repository_id=None, allow_code_files=True ):
"""Load a tool from the config named by `config_file`"""
@@ -2328,15 +2328,11 @@ class Tool( object, Dictifiable ):
return tool_dict
- def to_json(self, trans, kwd={}, is_workflow=False):
+ def to_json(self, trans, kwd={}, job=None, is_workflow=False):
"""
Recursively creates a tool dictionary containing repeats, dynamic options and updated states.
"""
- job_id = kwd.get('__job_id__', None)
- dataset_id = kwd.get('__dataset_id__', None)
history_id = kwd.get('history_id', None)
-
- # history id
history = None
try:
if history_id is not None:
@@ -2351,34 +2347,6 @@ class Tool( object, Dictifiable ):
log.exception('tools::to_json - %s.' % error)
return { 'error': error }
- # load job details if provided
- job = None
- if job_id:
- try:
- job_id = trans.security.decode_id( job_id )
- job = trans.sa_session.query( trans.app.model.Job ).get( job_id )
- except Exception, exception:
- trans.response.status = 500
- log.error('Failed to retrieve job.')
- return { 'error': 'Failed to retrieve job.' }
- elif dataset_id:
- try:
- dataset_id = trans.security.decode_id( dataset_id )
- data = trans.sa_session.query( trans.app.model.HistoryDatasetAssociation ).get( dataset_id )
- if not ( trans.user_is_admin() or trans.app.security_agent.can_access_dataset( trans.get_current_user_roles(), data.dataset ) ):
- trans.response.status = 500
- log.error('User has no access to dataset.')
- return { 'error': 'User has no access to dataset.' }
- job = data.creating_job
- if not job:
- trans.response.status = 500
- log.error('Creating job not found.')
- return { 'error': 'Creating job not found.' }
- except Exception, exception:
- trans.response.status = 500
- log.error('Failed to get job information.')
- return { 'error': 'Failed to get job information.' }
-
# load job parameters into incoming
tool_message = ''
if job:
@@ -2668,6 +2636,7 @@ class Tool( object, Dictifiable ):
# add additional properties
tool_model.update({
+ 'id' : self.id,
'help' : tool_help,
'citations' : tool_citations,
'biostar_url' : trans.app.config.biostar_url,
@@ -2677,7 +2646,9 @@ class Tool( object, Dictifiable ):
'requirements' : tool_requirements,
'errors' : state_errors,
'state_inputs' : state_inputs,
- 'job_remap' : self._get_job_remap(job)
+ 'job_id' : trans.security.encode_id( job.id ) if job else None,
+ 'job_remap' : self._get_job_remap( job ),
+ 'history_id' : trans.security.encode_id( history.id )
})
# check for errors
diff --git a/lib/galaxy/webapps/galaxy/api/jobs.py b/lib/galaxy/webapps/galaxy/api/jobs.py
index 0bb5c690fa6..f7ac3c2431b 100644
--- a/lib/galaxy/webapps/galaxy/api/jobs.py
+++ b/lib/galaxy/webapps/galaxy/api/jobs.py
@@ -204,12 +204,10 @@ class JobController( BaseAPIController, UsesLibraryMixinItems ):
job = self.__get_job(trans, id)
if not job:
raise exceptions.ObjectNotFound("Could not access job with id '%s'" % id)
- tool_id = job.tool_id
- tool_version = job.tool_version
- tool = self.app.toolbox.get_tool( tool_id, tool_version )
+ tool = self.app.toolbox.get_tool( job.tool_id, job.tool_version )
if not tool.is_workflow_compatible:
- raise exceptions.ConfigDoesNotAllowException( "Tool '%s' cannot be rerun." % ( tool_id ) )
- return tool.to_json(trans, kwd={'__job_id__' : id})
+ raise exceptions.ConfigDoesNotAllowException( "Tool '%s' cannot be rerun." % ( job.tool_id ) )
+ return tool.to_json(trans, {}, job=job)
def __dictify_associations( self, trans, *association_lists ):
rval = []
diff --git a/lib/galaxy/webapps/galaxy/controllers/tool_runner.py b/lib/galaxy/webapps/galaxy/controllers/tool_runner.py
index 63c2d478611..0231f02750c 100644
--- a/lib/galaxy/webapps/galaxy/controllers/tool_runner.py
+++ b/lib/galaxy/webapps/galaxy/controllers/tool_runner.py
@@ -12,13 +12,7 @@ from galaxy import web
from galaxy.tools import DefaultToolState
from galaxy.tools import DataSourceTool
from galaxy.tools.actions import upload_common
-from galaxy.tools.parameters import params_to_incoming
-from galaxy.tools.parameters import visit_input_values
-from galaxy.tools.parameters.basic import DataToolParameter
-from galaxy.tools.parameters.basic import DataCollectionToolParameter
-from galaxy.tools.parameters.basic import UnvalidatedValue
from galaxy.util.bunch import Bunch
-from galaxy.util.hash_util import is_hashable
from galaxy.web import error, url_for
from galaxy.web.base.controller import BaseUIController
@@ -55,94 +49,21 @@ class ToolRunner( BaseUIController ):
return self.get_toolbox().get_tool_components( tool_id, tool_version, get_loaded_tools_by_lineage, set_selected )
@web.expose
- def index( self, trans, tool_id=None, from_noframe=None, **kwd ):
- # No tool id passed, redirect to main page
+ def index( self, trans, tool_id=None, **kwd ):
if tool_id is None:
return trans.response.send_redirect( url_for( controller="root", action="welcome" ) )
- # When the tool form is initially loaded, the received kwd will not include a 'refresh'
- # entry (which only is included when another option is selected in the tool_version_select_field),
- # so the default selected option should be the most recent version of the tool. The following
- # check will mae sure this occurs.
- refreshed_on_change = kwd.get( 'refresh', False )
- tool_version_select_field, tools, tool = self.__get_tool_components( tool_id,
- tool_version=None,
- get_loaded_tools_by_lineage=False,
- set_selected=refreshed_on_change )
- # No tool matching the tool id, display an error (shouldn't happen)
- if not tool or not tool.allow_user_access( trans.user ):
- log.error( "index called with tool id '%s' but no such tool exists", tool_id )
- trans.log_event( "Tool id '%s' does not exist" % tool_id )
- trans.response.status = 404
- return trans.show_error_message("Tool '%s' does not exist." % ( escape(tool_id) ))
- if tool.require_login and not trans.user:
- message = "You must be logged in to use this tool."
- status = "info"
- redirect = url_for( controller='tool_runner', action='index', tool_id=tool_id, **kwd )
- return trans.response.send_redirect( url_for( controller='user',
- action='login',
- cntrller='user',
- message=message,
- status=status,
- redirect=redirect ) )
-
- def _validated_params_for( kwd ):
- params = galaxy.util.Params( kwd, sanitize=False ) # Sanitize parameters when substituting into command line via input wrappers
- # do param translation here, used by datasource tools
- if tool.input_translator:
- tool.input_translator.translate( params )
- return params
-
- params = _validated_params_for( kwd )
- # We may be visiting Galaxy for the first time ( e.g., sending data from UCSC ),
- # so make sure to create a new history if we've never had one before.
- history = tool.get_default_history_by_trans( trans, create=True )
- try:
- template, vars = tool.handle_input( trans, params.__dict__ )
- except KeyError:
- # This error indicates (or at least can indicate) there was a
- # problem with the stored tool_state - it is incompatible with
- # this variant of the tool - possibly because the tool changed
- # or because the tool version changed.
- del kwd[ "tool_state" ]
- params = _validated_params_for( kwd )
- template, vars = tool.handle_input( trans, params.__dict__ )
- if len( params ) > 0:
- trans.log_event( "Tool params: %s" % ( str( params ) ), tool_id=tool_id )
- add_frame = AddFrameData()
- add_frame.debug = trans.debug
- if from_noframe is not None:
- add_frame.wiki_url = trans.app.config.wiki_url
- add_frame.from_noframe = True
- return trans.fill_template( template,
- history=history,
- toolbox=self.get_toolbox(),
- tool_version_select_field=tool_version_select_field,
- tool=tool,
- util=galaxy.util,
- add_frame=add_frame,
- form_input_auto_focus=True,
- **vars )
+ else:
+ return trans.response.send_redirect( url_for( controller="root", tool_id=tool_id ) )
@web.expose
- def rerun( self, trans, id=None, from_noframe=None, job_id=None, **kwd ):
+ def rerun( self, trans, id=None, job_id=None, **kwd ):
"""
Given a HistoryDatasetAssociation id, find the job and that created
the dataset, extract the parameters, and display the appropriate tool
form with parameters already filled in.
"""
- if job_id:
- try:
- job_id = trans.security.decode_id( job_id )
- job = trans.sa_session.query( trans.app.model.Job ).get( job_id )
- except:
- error( "Invalid value for 'job_id' parameter" )
- if not trans.user_is_admin():
- for data_assoc in job.output_datasets:
- # only allow rerunning if user is allowed access to the dataset.
- if not trans.app.security_agent.can_access_dataset( trans.get_current_user_roles(), data_assoc.dataset.dataset ):
- error( "You are not allowed to rerun this job" )
- param_error_text = "Failed to get parameters for job id %d " % job_id
- else:
+
+ if job_id is None:
if not id:
error( "'id' parameter is required" )
try:
@@ -160,135 +81,11 @@ class ToolRunner( BaseUIController ):
error( "You are not allowed to access this dataset" )
# Get the associated job, if any.
job = data.creating_job
- if not job:
- raise Exception("Failed to get job information for dataset hid %d" % data.hid)
- param_error_text = "Failed to get parameters for dataset id %d " % data.id
- # Get the tool object
- tool_id = job.tool_id
- tool_version = job.tool_version
- try:
- tool_version_select_field, tools, tool = self.__get_tool_components( tool_id,
- tool_version=tool_version,
- get_loaded_tools_by_lineage=False,
- set_selected=True )
- if ( tool.id == job.tool_id or tool.old_id == job.tool_id ) and tool.version == job.tool_version:
- tool_id_version_message = ''
- elif tool.id == job.tool_id:
- if job.tool_version is None:
- # For some reason jobs don't always keep track of the tool version.
- tool_id_version_message = ''
- else:
- tool_id_version_message = 'This job was initially run with tool version "%s", which is not currently available. ' % job.tool_version
- if len( tools ) > 1:
- tool_id_version_message += 'You can rerun the job with the selected tool or choose another derivation of the tool.'
- else:
- tool_id_version_message += 'You can rerun the job with this tool version, which is a derivation of the original tool.'
+ if job:
+ job_id = trans.security.encode_id( job.id )
else:
- if len( tools ) > 1:
- tool_id_version_message = 'This job was initially run with tool version "%s", which is not currently available. ' % job.tool_version
- tool_id_version_message += 'You can rerun the job with the selected tool or choose another derivation of the tool.'
- else:
- tool_id_version_message = 'This job was initially run with tool id "%s", version "%s", which is not ' % ( job.tool_id, job.tool_version )
- tool_id_version_message += 'currently available. You can rerun the job with this tool, which is a derivation of the original tool.'
- assert tool is not None, 'Requested tool has not been loaded.'
- except:
- # This is expected so not an exception.
- tool_id_version_message = ''
- error( "This dataset was created by an obsolete tool (%s). Can't re-run." % tool_id )
- if not tool.allow_user_access( trans.user ):
- error( "The requested tool is unknown." )
- # Can't rerun upload, external data sources, et cetera. Workflow compatible will proxy this for now
- if not tool.is_workflow_compatible:
- error( "The '%s' tool does not currently support rerunning." % tool.name )
- # Get the job's parameters
- try:
- params_objects = job.get_param_values( trans.app, ignore_errors=True )
- except:
- raise Exception( param_error_text )
- upgrade_messages = tool.check_and_update_param_values( params_objects, trans, update_values=False )
- # Need to remap dataset parameters. Job parameters point to original
- # dataset used; parameter should be the analygous dataset in the
- # current history.
- history = trans.get_history()
- hda_source_dict = {} # Mapping from HDA in history to source HDAs.
- for hda in history.datasets:
- source_hda = hda.copied_from_history_dataset_association
- while source_hda: # should this check library datasets as well?
- # FIXME: could be multiple copies of a hda in a single history, this does a better job of matching on cloned histories,
- # but is still less than perfect when eg individual datasets are copied between histories
- if source_hda not in hda_source_dict or source_hda.hid == hda.hid:
- hda_source_dict[ source_hda ] = hda
- source_hda = source_hda.copied_from_history_dataset_association
- # Ditto for dataset collections.
- hdca_source_dict = {}
- for hdca in history.dataset_collections:
- source_hdca = hdca.copied_from_history_dataset_collection_association
- while source_hdca:
- if source_hdca not in hdca_source_dict or source_hdca.hid == hdca.hid:
- hdca_source_dict[ source_hdca ] = hdca
- source_hdca = source_hdca.copied_from_history_dataset_collection_association
-
- # Unpack unvalidated values to strings, they'll be validated when the
- # form is submitted (this happens when re-running a job that was
- # initially run by a workflow)
- # This needs to be done recursively through grouping parameters
- def rerun_callback( input, value, prefixed_name, prefixed_label ):
- if isinstance( value, UnvalidatedValue ):
- try:
- return input.to_html_value( value.value, trans.app )
- except Exception, e:
- # Need to determine when (if ever) the to_html_value call could fail.
- log.debug( "Failed to use input.to_html_value to determine value of unvalidated parameter, defaulting to string: %s" % ( e ) )
- return str( value )
- if isinstance( input, DataToolParameter ):
- if isinstance(value, list):
- values = []
- for val in value:
- if is_hashable( val ):
- if val in history.datasets:
- values.append( val )
- elif val in hda_source_dict:
- values.append( hda_source_dict[ val ])
- return values
- if is_hashable( value ) and value not in history.datasets and value in hda_source_dict:
- return hda_source_dict[ value ]
- elif isinstance( input, DataCollectionToolParameter ):
- if is_hashable( value ) and value not in history.dataset_collections and value in hdca_source_dict:
- return hdca_source_dict[ value ]
-
- visit_input_values( tool.inputs, params_objects, rerun_callback )
- # Create a fake tool_state for the tool, with the parameters values
- state = tool.new_state( trans )
- state.inputs = params_objects
- # If the job failed and has dependencies, allow dependency remap
- if job.state == job.states.ERROR:
- try:
- if [ hda.dependent_jobs for hda in [ jtod.dataset for jtod in job.output_datasets ] if hda.dependent_jobs ]:
- state.rerun_remap_job_id = trans.app.security.encode_id(job.id)
- except:
- # Job has no outputs?
- pass
- # create an incoming object from the original job's dataset-modified param objects
- incoming = {}
- params_to_incoming( incoming, tool.inputs, params_objects, trans.app )
- incoming[ "tool_state" ] = galaxy.util.object_to_string( state.encode( tool, trans.app ) )
- template, vars = tool.handle_input( trans, incoming, old_errors=upgrade_messages ) # update new state with old parameters
- # Is the "add frame" stuff neccesary here?
- add_frame = AddFrameData()
- add_frame.debug = trans.debug
- if from_noframe is not None:
- add_frame.wiki_url = trans.app.config.wiki_url
- add_frame.from_noframe = True
- return trans.fill_template( template,
- history=history,
- toolbox=self.get_toolbox(),
- tool_version_select_field=tool_version_select_field,
- tool=tool,
- job=job,
- util=galaxy.util,
- add_frame=add_frame,
- tool_id_version_message=tool_id_version_message,
- **vars )
+ raise Exception("Failed to get job information for dataset hid %d" % data.hid)
+ return trans.response.send_redirect( url_for( controller="root", job_id=job_id ) )
@web.expose
def data_source_redirect( self, trans, tool_id=None ):
diff --git a/static/maps/mvc/app/app-analysis.js.map b/static/maps/mvc/app/app-analysis.js.map
index 46adcab3f26..ebc7b0fbf0c 100644
--- a/static/maps/mvc/app/app-analysis.js.map
+++ b/static/maps/mvc/app/app-analysis.js.map
@@ -1 +1 @@
-{"version":3,"file":"app-analysis.js","sources":["../../../src/mvc/app/app-analysis.js"],"names":["define","Utils","Tools","Upload","Ui","optionsMenu","HistoryPanel","CenterPanel","Backbone","View","extend","initialize","options","this","merge","setElement","_template","params","$","prop","Galaxy","root","tool_id","param","workflow_id","m_c","m_a","config","require_login","user","id","self","on","show","empty","hide","galaxy_main","contentWindow","trigger","fullpath","location","pathname","search","hash","display","$el","scrollTop","append","LeftPanel","tool_search","ToolSearch","spinner_url","search_url","hidden","tools","ToolCollection","toolbox","tool_panel","ToolPanel","layout","toolbox_in_panel","tool_panel_view","ToolPanelView","model","toolPanel","get","size","render","prepend","_templateTool","title","href","i","stored_workflow_menu_entries","m","stored_workflow","name","encoded_stored_workflow_id","click","parent","handle_minwidth_hint","attr","upload","components","header","buttons","RightPanel","buttonRefresh","ButtonLink","cls","icon","onclick","top","currHistoryPanel","loadCurrentHistory","buttonOptions","target","buttonViewMulti","body","historyOptionsMenu","anonymous","purgeAllowed","allow_user_dataset_purge","CurrentHistoryPanel","el","linkTarget","$scrollContainer","connectToQuotaMeter","quotaMeter","listenToGalaxy","left","center","right"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"app-analysis.js","sources":["../../../src/mvc/app/app-analysis.js"],"names":["define","Utils","Tools","Upload","Ui","optionsMenu","HistoryPanel","ToolsForm","CenterPanel","Backbone","View","extend","initialize","options","this","merge","setElement","_template","self","$","on","location","contentWindow","host","show","empty","hide","Galaxy","trigger","fullpath","pathname","search","hash","params","tool_id","job_id","id","display","$el","prop","root","workflow_id","m_c","m_a","config","require_login","user","scrollTop","append","LeftPanel","tool_search","ToolSearch","spinner_url","search_url","hidden","tools","ToolCollection","toolbox","tool_panel","ToolPanel","layout","toolbox_in_panel","tool_panel_view","ToolPanelView","model","toolPanel","get","size","render","prepend","_templateTool","title","href","i","stored_workflow_menu_entries","m","stored_workflow","name","encoded_stored_workflow_id","click","parent","handle_minwidth_hint","attr","upload","components","header","buttons","RightPanel","buttonRefresh","ButtonLink","cls","icon","onclick","top","currHistoryPanel","loadCurrentHistory","buttonOptions","target","buttonViewMulti","body","historyOptionsMenu","anonymous","purgeAllowed","allow_user_dataset_purge","CurrentHistoryPanel","el","linkTarget","$scrollContainer","connectToQuotaMeter","quotaMeter","listenToGalaxy","left","center","right"],"mappings":"AAAAA,QAAQ,cAAe,YAAa,yBAA0B,iBACtD,2BAA4B,yCAA0C,wBAC1E,SAAUC,EAAOC,EAAOC,EAAQC,EAAIC,EAAaC,EAAcC,GAG/D,GAAIC,GAAcC,SAASC,KAAKC,QAC5BC,WAAY,SAAUC,GAClBC,KAAKD,QAAUZ,EAAMc,MAAOF,MAC5BC,KAAKE,WAAYF,KAAKG,YACtB,IAAIC,GAAOJ,IACXA,MAAKK,EAAG,gBAAiBC,GAAI,OAAQ,WACjC,GAAIC,GAAWP,KAAKQ,eAAiBR,KAAKQ,cAAcD,QACnDA,IAAYA,EAASE,OACtBJ,EAAGL,MAAOU,OACVN,EAAKC,EAAG,iBAAkBM,QAAQC,OAClCC,OAAOC,QAAS,oBACZC,SAAUR,EAASS,SAAWT,EAASU,OAASV,EAASW,KACzDF,SAAUT,EAASS,SACnBC,OAAUV,EAASU,OACnBC,KAAUX,EAASW,SAI/B,IAAIC,GAASd,EAAER,UAAYgB,OAAOM,OAC7BA,GAAOC,SAAWD,EAAOE,QAC1BF,EAAOC,UAAaD,EAAOG,GAAKH,EAAOC,SACvCpB,KAAKuB,QAAS,GAAM9B,GAAUG,KAAMuB,GAAWK,MAE/CxB,KAAKK,EAAG,gBAAiBoB,KAAM,MAAOZ,OAAOa,MACvCP,EAAOQ,aAAiB,mBAAqBR,EAAOQ,aACpDR,EAAOS,KAAST,EAAOS,IAAM,IAAMT,EAAOU,KAC1ChB,OAAOiB,OAAOC,gBAAkBlB,OAAOmB,KAAKV,IAAM,cACpD,kBAIZC,QAAS,SAAUC,GACfxB,KAAKK,EAAG,gBAAiBO,OACzBZ,KAAKK,EAAG,iBAAkBM,QAAQsB,UAAW,GAAIC,OAAQV,GAAMd,QAEnEP,UAAW,WACP,MAAQ,ySAQZgC,EAAYxC,SAASC,KAAKC,QAC1BC,WAAY,SAAUC,GAIlB,GAHAC,KAAKD,QAAUZ,EAAMc,MAAOF,MAC5BC,KAAKE,WAAYF,KAAKG,aAEjBU,OAAOmB,KAAKV,KAAOT,OAAOiB,OAAOC,cAAgB,CAClD,GAAIK,GAAc,GAAIhD,GAAMiD,YACxBC,YAAcvC,EAAQuC,YACtBC,WAAcxC,EAAQwC,WACtBC,QAAc,IAEdC,EAAQ,GAAIrD,GAAMsD,eAAgB3C,EAAQ4C,SAC1CC,EAAa,GAAIxD,GAAMyD,WACvBT,YAAcA,EACdK,MAAcA,EACdK,OAAc/C,EAAQgD,kBAE1BC,iBAAkB,GAAI5D,GAAM6D,eAAgBC,MAAON,IAGnD/B,OAAOsC,UAAYP,EAGfA,EAAWQ,IAAK,UAAWC,OAAS,IACpCL,gBAAgBM,SAChBtD,KAAKK,EAAG,aAAcK,QAE1BV,KAAKwB,IAAI+B,QAASP,gBAAgBxB,KAGlCxB,KAAKK,EAAG,uBAAwB6B,OAAQlC,KAAKwD,eACzCC,MAAU,gBACVC,KAAU,0BAEd,KAAM,GAAIC,KAAK5D,GAAQ6D,6BAA+B,CAClD,GAAIC,GAAI9D,EAAQ6D,6BAA8BD,EAC9C3D,MAAKK,EAAG,uBAAwB6B,OAAQlC,KAAKwD,eACzCC,MAAQI,EAAEC,gBAAgBC,KAC1BL,KAAQ,mBAAqBG,EAAEG,8BAKvChE,KAAKK,EAAG,kBAAmB4D,MAAO,WACzBC,OAAOC,sBACRD,OAAOC,qBAAsB9D,EAAGL,MAAOoE,KAAM,kBAKrDvD,OAAOwD,OAAS,GAAIhF,GAAQU,GAG5BC,KAAKsE,YACDC,QACId,MAAU,QACVe,SAAY3D,OAAOwD,YAMnCb,cAAe,SAAUzD,GACrB,MAAQ,mCACkBc,OAAOa,KAAO3B,EAAQ2D,KAAO,0BAA4B3D,EAAQ0D,MAAQ,cAIvGtD,UAAW,WACP,MAAQ,2cAmBZsE,EAAa9E,SAASC,KAAKC,QAC3BC,WAAY,SAASC,GACjBC,KAAKD,QAAUZ,EAAMc,MAAOF,MAC5BC,KAAKE,WAAYF,KAAKG,YAGtB,IAAIuE,GAAgB,GAAIpF,GAAGqF,YACvBrD,GAAU,yBACVmC,MAAU,kBACVmB,IAAU,sBACVC,KAAU,gBACVC,QAAU,WACFC,IAAIlE,QAAUkE,IAAIlE,OAAOmE,kBACzBD,IAAIlE,OAAOmE,iBAAiBC,wBAIpCC,EAAgB,GAAI5F,GAAGqF,YACvBrD,GAAU,yBACVmC,MAAU,kBACVmB,IAAU,sBACVO,OAAU,cACVN,KAAU,YACVnB,KAAU7C,OAAOa,KAAO,yBAExB0D,EAAkB,GAAI9F,GAAGqF,YACzBrD,GAAU,4BACVmC,MAAU,qBACVmB,IAAU,sBACVC,KAAU,gBACVnB,KAAU7C,OAAOa,KAAO,yBAI5B1B,MAAKsE,YACDC,QACId,MAAU,UACVmB,IAAU,uBACVJ,SAAYE,EAAeQ,EAAeE,IAE9CC,MACIT,IAAU,kCAKlB/D,OAAOyE,mBAAqB/F,EAAa2F,EAAc1D,KACnD+D,WAAgB1E,OAAOmB,KAAKV,GAC5BkE,aAAe3E,OAAOiB,OAAO2D,yBAC7B/D,KAAeb,OAAOa,OAI1Bb,OAAOmE,iBAAmB,GAAIxF,GAAakG,qBACvCC,GAAkB3F,KAAKwB,IACvBgE,aAAkB3E,OAAOiB,OAAO2D,yBAChCG,WAAkB,cAClBC,iBAAkB,WAAY,MAAO7F,MAAKwB,IAAI0C,YAElDrD,OAAOmE,iBAAiBc,oBAAqBjF,OAAOkF,YACpDlF,OAAOmE,iBAAiBgB,eAAgBnF,QACxCA,OAAOmE,iBAAiBC,sBAI5B9E,UAAW,WACP,MAAO,4DAIf,QACI8F,KAAU9D,EACV+D,OAAUxG,EACVyG,MAAU1B"}
\ No newline at end of file
diff --git a/static/maps/mvc/app/app-view.js.map b/static/maps/mvc/app/app-view.js.map
index fee8b422b03..8dedaec966a 100644
--- a/static/maps/mvc/app/app-view.js.map
+++ b/static/maps/mvc/app/app-view.js.map
@@ -1 +1 @@
-{"version":3,"file":"app-view.js","sources":["../../../src/mvc/app/app-view.js"],"names":["define","Utils","Masthead","Menu","Frame","Portlet","Ui","Modal","QuotaMeter","Analysis","Backbone","View","extend","initialize","options","this","merge","params","setElement","_template","Galaxy","app","$","append","$el","ensure_dd_helper","$container","parent","attr","addClass","message_box_visible","show","show_inactivity_warning","masthead","GalaxyMasthead","modal","frame","GalaxyFrame","menu","GalaxyMenu","config","quotaMeter","UserQuotaMeter","model","user","el","render","_buildPanels","display","target","remove","panels","Views","panel_ids","i","id","view","components","header","title","cls","buttons","body","$panel","_templatePanel","find","html","Panel","center","panel","drag","toggle","right","message_box_class","message_box_content","inactivity_box_content","root"],"mappings":"AAGAA,QAAQ,cAAe,kBAAmB,cAAe,eACjD,oBAAqB,iBAAkB,kBACvC,2BAA4B,wBAChC,SAAUC,EAAOC,EAAUC,EAAMC,EAAOC,EAASC,EAAIC,EAAOC,EAAYC,GACxE,MAAOC,UAASC,KAAKC,QACjBC,WAAY,SAAUC,GAClBC,KAAKD,QAAUb,EAAMe,MAAOF,MAC5BC,KAAKE,OAAUF,KAAKD,QAAQG,OAC5BF,KAAKG,WAAYH,KAAKI,UAAWL,IAGjCM,OAAOC,IAAMN,KAGbO,EAAG,QAASC,OAAQR,KAAKS,KACzBC,kBAGA,IAAIC,GAAaJ,EAAGP,KAAKS,IAAIG,UAAWC,KAAM,SAAU,MAAOC,SAAU,eACpEd,MAAKD,QAAQgB,sBACdJ,EAAWG,SAAU,mBACrBd,KAAKO,EAAG,eAAgBS,QAEvBhB,KAAKD,QAAQkB,0BACdN,EAAWG,SAAU,sBACrBd,KAAKO,EAAG,gBAAiBS,QAIvBX,OAAOa,WACTb,OAAOa,SAAW,GAAI/B,GAASgC,eAAgBpB,GAC/CM,OAAOe,MAAQ,GAAI5B,GAAMI,KACzBS,OAAOgB,MAAQ,GAAIhC,GAAMiC,YAGzBjB,OAAOkB,KAAO,GAAInC,GAAKoC,YACnBN,SAAcb,OAAOa,SACrBO,OAAc1B,IAKlBM,OAAOqB,WAAa,GAAIjC,GAAWkC,gBAC/BC,MAAcvB,OAAOwB,KACrBC,GAAczB,OAAOa,SAASX,EAAG,4BAClCwB,UAIP/B,KAAKgC,aAActC,EAAUK,IAIjCkC,QAAS,SAAWxB,EAAKyB,GAErB3B,EAAG,8BAA+B4B,SAClCnC,KAAKoC,QAAUpC,KAAKoC,OAAQF,GAAU,UAAWD,QAASxB,IAI9DuB,aAAc,SAAUK,EAAOtC,GAC3BC,KAAKoC,SACL,IAAIE,IAAc,OAAQ,SAAU,QACpC,KAAM,GAAIC,KAAKD,GAAY,CACvB,GAAIE,GAAKF,EAAWC,GAChBE,EAAOzC,KAAKoC,OAAQI,GAAO,GAAIH,GAAOG,GAAMzC,EAChD,IAAW,UAANyC,EACDxC,KAAKO,EAAE,WAAWC,OAAQiC,EAAKhC,SAC5B,CACH,GAAIiC,GAAaxD,EAAMe,MAAOwC,EAAKC,YAC/BC,QACIC,MAAU,GACVC,IAAU,GACVC,YAEJC,MACIF,IAAU,MAGdG,EAASzC,EAAGP,KAAKiD,eAAgBT,GACrCQ,GAAOE,KAAK,sBAAsBC,KAAMT,EAAWC,OAAOC,OAC1DI,EAAOE,KAAK,+BAA+BpC,SAAU4B,EAAWC,OAAOE,IACvE,KAAM,GAAIN,KAAKG,GAAWC,OAAOG,QAC7BE,EAAOE,KAAK,yBAAyB1C,OAAQkC,EAAWC,OAAOG,QAASP,GAAI9B,IAEhFuC,GAAOE,KAAK,uBAAuBpC,SAAU4B,EAAWK,KAAKF,KAAMrC,OAAQiC,EAAKhC,IAChF,EAAY,GAAI2C,QACZC,OAAUrD,KAAKO,EAAG,WAClB+C,MAAUN,EACVO,KAAUP,EAAOE,KAAK,iCACtBM,OAAUR,EAAOE,KAAK,2CACtBO,MAAgB,SAANjB,IAEdxC,KAAKS,IAAID,OAAQwC,MAM7BC,eAAgB,SAAUT,GACtB,MAAQ,YAAcA,EAAK,mSASqBA,EAAK,sCAOzDpC,UAAW,WACP,MAAQ,wJAE2CC,OAAOoB,OAAOiC,kBAAoB,oCACrErD,OAAOoB,OAAOkC,oBAClB,oFAEItD,OAAOoB,OAAOmC,uBACV,aAAevD,OAAOwD,KAAO"}
\ No newline at end of file
+{"version":3,"file":"app-view.js","sources":["../../../src/mvc/app/app-view.js"],"names":["define","Utils","Masthead","Menu","Frame","Portlet","Ui","Modal","QuotaMeter","Analysis","Backbone","View","extend","initialize","options","this","merge","setElement","_template","Galaxy","app","params","router","Router","$","append","$el","ensure_dd_helper","$container","parent","attr","addClass","message_box_visible","show","show_inactivity_warning","masthead","GalaxyMasthead","modal","frame","GalaxyFrame","menu","GalaxyMenu","config","quotaMeter","UserQuotaMeter","model","user","el","render","_buildPanels","display","target","remove","panels","Views","panel_ids","i","id","view","components","header","title","cls","buttons","body","$panel","_templatePanel","find","html","Panel","center","panel","drag","toggle","right","message_box_class","message_box_content","inactivity_box_content","root"],"mappings":"AAGAA,QAAQ,cAAe,kBAAmB,cAAe,eACjD,oBAAqB,iBAAkB,kBACvC,2BAA4B,wBAChC,SAAUC,EAAOC,EAAUC,EAAMC,EAAOC,EAASC,EAAIC,EAAOC,EAAYC,GACxE,MAAOC,UAASC,KAAKC,QACjBC,WAAY,SAAUC,GAClBC,KAAKD,QAAUb,EAAMe,MAAOF,MAC5BC,KAAKE,WAAYF,KAAKG,UAAWJ,IAGjCK,OAAOC,IAAML,KAGbI,OAAOE,OAASN,KAAKD,QAAQO,OAG7BF,OAAOG,OAAS,GAAIZ,UAASa,OAG7BC,EAAG,QAASC,OAAQV,KAAKW,KACzBC,kBAGA,IAAIC,GAAaJ,EAAGT,KAAKW,IAAIG,UAAWC,KAAM,SAAU,MAAOC,SAAU,eACpEhB,MAAKD,QAAQkB,sBACdJ,EAAWG,SAAU,mBACrBhB,KAAKS,EAAG,eAAgBS,QAEvBlB,KAAKD,QAAQoB,0BACdN,EAAWG,SAAU,sBACrBhB,KAAKS,EAAG,gBAAiBS,QAIvBd,OAAOgB,WACThB,OAAOgB,SAAW,GAAIjC,GAASkC,eAAgBtB,GAC/CK,OAAOkB,MAAQ,GAAI9B,GAAMI,KACzBQ,OAAOmB,MAAQ,GAAIlC,GAAMmC,YAGzBpB,OAAOqB,KAAO,GAAIrC,GAAKsC,YACnBN,SAAchB,OAAOgB,SACrBO,OAAc5B,IAKlBK,OAAOwB,WAAa,GAAInC,GAAWoC,gBAC/BC,MAAc1B,OAAO2B,KACrBC,GAAc5B,OAAOgB,SAASX,EAAG,4BAClCwB,UAIPjC,KAAKkC,aAAcxC,EAAUK,IAIjCoC,QAAS,SAAWxB,EAAKyB,GAErB3B,EAAG,8BAA+B4B,SAClCrC,KAAKsC,QAAUtC,KAAKsC,OAAQF,GAAU,UAAWD,QAASxB,IAI9DuB,aAAc,SAAUK,EAAOxC,GAC3BC,KAAKsC,SACL,IAAIE,IAAc,OAAQ,SAAU,QACpC,KAAM,GAAIC,KAAKD,GAAY,CACvB,GAAIE,GAAKF,EAAWC,GAChBE,EAAO3C,KAAKsC,OAAQI,GAAO,GAAIH,GAAOG,GAAM3C,EAChD,IAAW,UAAN2C,EACD1C,KAAKS,EAAE,WAAWC,OAAQiC,EAAKhC,SAC5B,CACH,GAAIiC,GAAa1D,EAAMe,MAAO0C,EAAKC,YAC/BC,QACIC,MAAU,GACVC,IAAU,GACVC,YAEJC,MACIF,IAAU,MAGdG,EAASzC,EAAGT,KAAKmD,eAAgBT,GACrCQ,GAAOE,KAAK,sBAAsBC,KAAMT,EAAWC,OAAOC,OAC1DI,EAAOE,KAAK,+BAA+BpC,SAAU4B,EAAWC,OAAOE,IACvE,KAAM,GAAIN,KAAKG,GAAWC,OAAOG,QAC7BE,EAAOE,KAAK,yBAAyB1C,OAAQkC,EAAWC,OAAOG,QAASP,GAAI9B,IAEhFuC,GAAOE,KAAK,uBAAuBpC,SAAU4B,EAAWK,KAAKF,KAAMrC,OAAQiC,EAAKhC,IAChF,EAAY,GAAI2C,QACZC,OAAUvD,KAAKS,EAAG,WAClB+C,MAAUN,EACVO,KAAUP,EAAOE,KAAK,iCACtBM,OAAUR,EAAOE,KAAK,2CACtBO,MAAgB,SAANjB,IAEd1C,KAAKW,IAAID,OAAQwC,MAM7BC,eAAgB,SAAUT,GACtB,MAAQ,YAAcA,EAAK,mSASqBA,EAAK,sCAOzDvC,UAAW,WACP,MAAQ,wJAE2CC,OAAOuB,OAAOiC,kBAAoB,oCACrExD,OAAOuB,OAAOkC,oBAClB,oFAEIzD,OAAOuB,OAAOmC,uBACV,aAAe1D,OAAO2D,KAAO"}
\ No newline at end of file
diff --git a/static/maps/mvc/form/form-input.js.map b/static/maps/mvc/form/form-input.js.map
index a7c7c96b5f6..3cd23c051d2 100644
--- a/static/maps/mvc/form/form-input.js.map
+++ b/static/maps/mvc/form/form-input.js.map
@@ -1 +1 @@
-{"version":3,"file":"form-input.js","sources":["../../../src/mvc/form/form-input.js"],"names":["define","Backbone","View","extend","initialize","app","options","this","text_enable","text_disable","cls_enable","cls_disable","field","default_value","setElement","_template","$field","$el","find","$optional","$optional_icon","$error_text","$error","prepend","collapsed","collapsible","value","JSON","stringify","collapsible_value","_refresh","self","on","trigger","error","text","html","show","addClass","reset","hide","removeClass","_tooltip","fadeIn","title","cls","length","tooltip","placement","attr","tmp","label","help","argument","indexOf"],"mappings":"AAGAA,UAAW,WACP,MAAOC,UAASC,KAAKC,QACjBC,WAAY,SAASC,EAAKC,GAEtBC,KAAKF,IAAMA,EAGXE,KAAKC,YAAiBH,EAAIC,QAAQE,aAAe,SACjDD,KAAKE,aAAiBJ,EAAIC,QAAQG,cAAgB,UAClDF,KAAKG,WAAiBL,EAAIC,QAAQI,YAAc,4BAChDH,KAAKI,YAAiBN,EAAIC,QAAQK,aAAe,0BAGjDJ,KAAKK,MAAQN,EAAQM,MACrBL,KAAKM,cAAgBP,EAAQO,cAG7BN,KAAKO,WAAWP,KAAKQ,UAAUT,IAG/BC,KAAKS,OAAST,KAAKU,IAAIC,KAAK,wBAC5BX,KAAKY,UAAYZ,KAAKU,IAAIC,KAAK,2BAC/BX,KAAKa,eAAiBb,KAAKU,IAAIC,KAAK,2BAA2BA,KAAK,SACpEX,KAAKc,YAAcd,KAAKU,IAAIC,KAAK,6BACjCX,KAAKe,OAASf,KAAKU,IAAIC,KAAK,wBAG5BX,KAAKS,OAAOO,QAAQhB,KAAKK,MAAMK,KAG/BV,KAAKK,MAAMY,UAAalB,EAAQmB,aAAenB,EAAQoB,OAC/BC,KAAKC,UAAUtB,EAAQoB,QAAUC,KAAKC,UAAUtB,EAAQuB,mBAGhFtB,KAAKuB,UAGL,IAAIC,GAAOxB,IACXA,MAAKY,UAAUa,GAAG,QAAS,WAEvBD,EAAKnB,MAAMY,WAAaO,EAAKnB,MAAMY,UAGnCO,EAAKD,WAGLC,EAAK1B,IAAI4B,QAAQ,aAMzBC,MAAO,SAASC,GACZ5B,KAAKc,YAAYe,KAAKD,GACtB5B,KAAKe,OAAOe,OACZ9B,KAAKU,IAAIqB,SAAS,aAKtBC,MAAO,WACHhC,KAAKe,OAAOkB,OACZjC,KAAKU,IAAIwB,YAAY,aAKzBX,SAAU,WAENvB,KAAKa,eAAeqB,cAAcH,SAAS,QAGtC/B,KAAKK,MAAMY,WAOZjB,KAAKS,OAAOwB,OACZjC,KAAKmC,SAASnC,KAAKC,YAAaD,KAAKG,YACrCH,KAAKK,MAAMc,OAASnB,KAAKK,MAAMc,MAAMnB,KAAKM,iBAP1CN,KAAKS,OAAO2B,OAAO,QACnBpC,KAAKmC,SAASnC,KAAKE,aAAcF,KAAKI,aACtCJ,KAAKF,IAAI4B,QAAQ,YAWzBS,SAAU,SAASE,EAAOC,GAClBtC,KAAKY,UAAU2B,QACfvC,KAAKa,eAAekB,SAASO,GACTE,SAAUC,UAAW,WACrBC,KAAK,sBAAuBL,GAC5BG,QAAQ,YAAYA,QAAQ,SAMxDhC,UAAW,SAAST,GAEhB,GAAI4C,GAAQ,8LAkCZ,OA1BIA,IADA5C,EAAQmB,YACQ,wDAC0BnB,EAAQ6C,MAClC,SAET7C,EAAQ6C,MAInBD,GAAgB,0CAIhBA,GAAoB,mCAChB5C,EAAQ8C,OACRF,GAAoB5C,EAAQ8C,KACxB9C,EAAQ+C,UAAkE,IAAtD/C,EAAQ8C,KAAKE,QAAQ,IAAMhD,EAAQ+C,SAAW,OAClEH,GAAO,KAAO5C,EAAQ+C,SAAW,MAGzCH,GAAoB,SAGpBA,GAAgB"}
\ No newline at end of file
+{"version":3,"file":"form-input.js","sources":["../../../src/mvc/form/form-input.js"],"names":["define","Backbone","View","extend","initialize","app","options","this","text_enable","text_disable","cls_enable","cls_disable","field","default_value","setElement","_template","$field","$el","find","$optional","$optional_icon","$error_text","$error","prepend","collapsed","collapsible","value","JSON","stringify","collapsible_value","_refresh","self","on","trigger","error","text","html","show","addClass","reset","hide","removeClass","_tooltip","fadeIn","title","cls","length","tooltip","placement","attr","tmp","name","label","help","argument","indexOf"],"mappings":"AAGAA,UAAW,WACP,MAAOC,UAASC,KAAKC,QACjBC,WAAY,SAASC,EAAKC,GAEtBC,KAAKF,IAAMA,EAGXE,KAAKC,YAAiBH,EAAIC,QAAQE,aAAe,SACjDD,KAAKE,aAAiBJ,EAAIC,QAAQG,cAAgB,UAClDF,KAAKG,WAAiBL,EAAIC,QAAQI,YAAc,4BAChDH,KAAKI,YAAiBN,EAAIC,QAAQK,aAAe,0BAGjDJ,KAAKK,MAAQN,EAAQM,MACrBL,KAAKM,cAAgBP,EAAQO,cAG7BN,KAAKO,WAAWP,KAAKQ,UAAUT,IAG/BC,KAAKS,OAAST,KAAKU,IAAIC,KAAK,wBAC5BX,KAAKY,UAAYZ,KAAKU,IAAIC,KAAK,2BAC/BX,KAAKa,eAAiBb,KAAKU,IAAIC,KAAK,2BAA2BA,KAAK,SACpEX,KAAKc,YAAcd,KAAKU,IAAIC,KAAK,6BACjCX,KAAKe,OAASf,KAAKU,IAAIC,KAAK,wBAG5BX,KAAKS,OAAOO,QAAQhB,KAAKK,MAAMK,KAG/BV,KAAKK,MAAMY,UAAalB,EAAQmB,aAAenB,EAAQoB,OAC/BC,KAAKC,UAAUtB,EAAQoB,QAAUC,KAAKC,UAAUtB,EAAQuB,mBAGhFtB,KAAKuB,UAGL,IAAIC,GAAOxB,IACXA,MAAKY,UAAUa,GAAG,QAAS,WAEvBD,EAAKnB,MAAMY,WAAaO,EAAKnB,MAAMY,UAGnCO,EAAKD,WAGLC,EAAK1B,IAAI4B,QAAQ,aAMzBC,MAAO,SAASC,GACZ5B,KAAKc,YAAYe,KAAKD,GACtB5B,KAAKe,OAAOe,OACZ9B,KAAKU,IAAIqB,SAAS,aAKtBC,MAAO,WACHhC,KAAKe,OAAOkB,OACZjC,KAAKU,IAAIwB,YAAY,aAKzBX,SAAU,WAENvB,KAAKa,eAAeqB,cAAcH,SAAS,QAGtC/B,KAAKK,MAAMY,WAOZjB,KAAKS,OAAOwB,OACZjC,KAAKmC,SAASnC,KAAKC,YAAaD,KAAKG,YACrCH,KAAKK,MAAMc,OAASnB,KAAKK,MAAMc,MAAMnB,KAAKM,iBAP1CN,KAAKS,OAAO2B,OAAO,QACnBpC,KAAKmC,SAASnC,KAAKE,aAAcF,KAAKI,aACtCJ,KAAKF,IAAI4B,QAAQ,YAWzBS,SAAU,SAASE,EAAOC,GAClBtC,KAAKY,UAAU2B,QACfvC,KAAKa,eAAekB,SAASO,GACTE,SAAUC,UAAW,WACrBC,KAAK,sBAAuBL,GAC5BG,QAAQ,YAAYA,QAAQ,SAMxDhC,UAAW,SAAST,GAChB,GAAI4C,GAAQ,gDAAkD5C,EAAQ6C,KAAO,6JAwB7E,OAlBID,IADA5C,EAAQmB,YACQ,wDAC0BnB,EAAQ8C,MAClC,SAET9C,EAAQ8C,MAEnBF,GAAgB,0CAEhBA,GAAoB,mCAChB5C,EAAQ+C,OACRH,GAAoB5C,EAAQ+C,KACxB/C,EAAQgD,UAAkE,IAAtDhD,EAAQ+C,KAAKE,QAAQ,IAAMjD,EAAQgD,SAAW,OAClEJ,GAAO,KAAO5C,EAAQgD,SAAW,MAGzCJ,GAAoB,SACpBA,GAAgB"}
\ No newline at end of file
diff --git a/static/maps/mvc/form/form-section.js.map b/static/maps/mvc/form/form-section.js.map
index 5e294c6e43e..e21e3a8f227 100644
--- a/static/maps/mvc/form/form-section.js.map
+++ b/static/maps/mvc/form/form-section.js.map
@@ -1 +1 @@
-{"version":3,"file":"form-section.js","sources":["../../../src/mvc/form/form-section.js"],"names":["define","Utils","Table","Ui","Portlet","Repeat","InputElement","Parameters","View","Backbone","extend","initialize","app","options","this","inputs","cls","cls_tr","table","parameters","setElement","$el","render","delAll","i","add","input","input_def","jQuery","id","uid","input_list","type","_addConditional","_addRepeat","_addSection","_addRow","self","test_param","field","onchange","value","selectedCase","data","matchCase","cases","case_def","section_id","section_row","get","nonhidden","j","hidden","fadeIn","hide","trigger","sub_section_id","sub_section","addClass","append","create","block_index","repeat","ondel","del","title","title_new","min","max","onnew","n_min","n_cache","_","size","cache","Math","input_element","label","help","button_visible","ButtonIcon","icon","tooltip","portlet","operations","$","html","visible","$content","$header","css","on","setIcon","input_id","find","length","expanded","field_list","name","default_value","collapsible","collapsible_value","argument","element_list"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"form-section.js","sources":["../../../src/mvc/form/form-section.js"],"names":["define","Utils","Table","Ui","Portlet","Repeat","InputElement","Parameters","View","Backbone","extend","initialize","app","options","this","inputs","cls","cls_tr","table","parameters","setElement","$el","render","delAll","i","add","input","input_def","jQuery","id","uid","input_list","type","_addConditional","_addRepeat","_addSection","_addRow","self","test_param","field","onchange","value","selectedCase","data","matchCase","cases","case_def","section_id","section_row","get","nonhidden","j","hidden","fadeIn","hide","trigger","sub_section_id","sub_section","addClass","append","create","block_index","repeat","ondel","del","title","title_new","min","max","onnew","n_min","n_cache","_","size","cache","Math","input_element","label","help","button_visible","ButtonIcon","icon","tooltip","portlet","operations","$","html","visible","$content","$header","css","on","setIcon","input_id","find","length","expanded","field_list","name","default_value","collapsible","collapsible_value","argument","element_list"],"mappings":"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"}
\ No newline at end of file
diff --git a/static/maps/mvc/form/form-view.js.map b/static/maps/mvc/form/form-view.js.map
index e5a6d5d87a9..09a71c665b7 100644
--- a/static/maps/mvc/form/form-view.js.map
+++ b/static/maps/mvc/form/form-view.js.map
@@ -1 +1 @@
-{"version":3,"file":"form-view.js","sources":["../../../src/mvc/form/form-view.js"],"names":["define","Utils","Portlet","Ui","FormSection","FormData","Backbone","View","extend","initialize","options","this","optionsDefault","is_workflow","initial_errors","cls","merge","console","debug","galaxy","parent","Galaxy","modal","Modal","setElement","_build","update","new_model","self","data","matchModel","input_id","node","input","input_list","_","isEqual","field","field_list","new_options","indexOf","type","i","opt","length","push","label","value","trigger","wait","active","is_dynamic","unwait","reciept","$el","empty","append","highlight","message","silent","input_element","element_list","error","top","$panel","parents","filter","$","css","first","animate","scrollTop","offset","errors","error_messages","matchResponse","off","_renderForm","create","current_check","checksum","on","new_check","onchange","reset","Message","section","inputs","incompatible","hide","show","portlet","icon","title","operations","buttons","addClass","persistent","status"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"form-view.js","sources":["../../../src/mvc/form/form-view.js"],"names":["define","Utils","Portlet","Ui","FormSection","FormData","Backbone","View","extend","initialize","options","this","optionsDefault","is_workflow","initial_errors","cls","merge","galaxy","parent","Galaxy","modal","Modal","setElement","_build","update","new_model","self","data","matchModel","input_id","node","input","input_list","_","isEqual","field","field_list","new_options","indexOf","type","i","opt","length","push","label","value","trigger","wait","active","is_dynamic","unwait","reciept","$el","empty","append","highlight","message","silent","input_element","element_list","error","top","$panel","parents","filter","$","css","first","animate","scrollTop","offset","errors","error_messages","matchResponse","off","_renderForm","create","current_check","checksum","on","new_check","onchange","reset","Message","section","inputs","remove","portlet","icon","title","operations","buttons","addClass","persistent","status"],"mappings":"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"}
\ No newline at end of file
diff --git a/static/maps/mvc/tools/tools-form-base.js.map b/static/maps/mvc/tools/tools-form-base.js.map
index a49309e9b04..e2c7e48764c 100644
--- a/static/maps/mvc/tools/tools-form-base.js.map
+++ b/static/maps/mvc/tools/tools-form-base.js.map
@@ -1 +1 @@
-{"version":3,"file":"tools-form-base.js","sources":["../../../src/mvc/tools/tools-form-base.js"],"names":["define","Utils","Deferred","Ui","Form","ToolTemplate","CitationModel","CitationView","Backbone","View","extend","initialize","options","this","merge","setElement","deferred","inputs","_buildForm","_buildModel","self","icon","title","name","description","version","operations","_operations","onchange","reset","execute","_updateModel","form","_footer","$el","empty","append","hide_message","id","job_id","build_url","Galaxy","root","dataset_id","loc","top","location","href","pos","indexOf","slice","process_id","register","request","type","url","success","new_model","message","update","status","persistent","done","console","debug","error","response","error_message","err_msg","undefined","modal","show","body","buttons","Close","hide","model_url","update_url","current_state","tool_id","tool_version","$","data","create","wait","versions_button","ButtonMenu","narrow","tooltip","is_workflow","versions","length","i","addMenu","onclick","replace","menu_button","biostar_url","window","open","prompt","origin","user","get","requirements","visible","sharable_url","menu","help","citations","$citations","ToolCitationCollection","citation_list_view","CitationListView","el","collection","render","fetch"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"tools-form-base.js","sources":["../../../src/mvc/tools/tools-form-base.js"],"names":["define","Utils","Deferred","Ui","Form","ToolTemplate","CitationModel","CitationView","Backbone","View","extend","initialize","options","this","merge","setElement","deferred","inputs","_buildForm","_buildModel","self","icon","title","name","description","version","operations","_operations","onchange","reset","execute","_updateModel","customize","form","_footer","$el","empty","append","hide_message","id","job_id","build_url","Galaxy","root","params","tool_id","_","each","item","key","indexOf","process_id","register","request","type","url","success","new_model","message","update","status","persistent","done","error","response","error_message","err_msg","is","prepend","Message","modal","show","body","buttons","Close","hide","model_url","update_url","current_state","tool_version","$","data","create","wait","versions_button","ButtonMenu","narrow","tooltip","is_workflow","versions","length","i","addMenu","onclick","replace","menu_button","biostar_url","window","open","prompt","location","origin","user","get","href","requirements","visible","sharable_url","menu","help","citations","$citations","ToolCitationCollection","citation_list_view","CitationListView","el","collection","render","fetch"],"mappings":"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"}
\ No newline at end of file
diff --git a/static/maps/mvc/tools/tools-form.js.map b/static/maps/mvc/tools/tools-form.js.map
index 6149f395898..2b587a0046e 100644
--- a/static/maps/mvc/tools/tools-form.js.map
+++ b/static/maps/mvc/tools/tools-form.js.map
@@ -1 +1 @@
-{"version":3,"file":"tools-form.js","sources":["../../../src/mvc/tools/tools-form.js"],"names":["define","Utils","Ui","ToolFormBase","ToolJobs","View","extend","initialize","options","self","this","execute","Button","icon","tooltip","name","title","cls","floating","onclick","wait","form","portlet","disable","submit","unwait","enable","job_id","job_remap","inputs","label","type","display","ignore","value","help","merge","buttons","prototype","call"],"mappings":"AAGAA,QAAQ,cAAe,iBAAkB,4BAA6B,wBAClE,SAASC,EAAOC,EAAIC,EAAcC,GAGlC,GAAIC,GAAOF,EAAaG,QAEpBC,WAAY,SAASC,GAEjB,GAAIC,GAAOC,KACPC,EAAU,GAAIT,GAAGU,QACjBC,KAAW,WACXC,QAAW,YAAcN,EAAQO,KACjCC,MAAW,UACXC,IAAW,kBACXC,SAAW,QACXC,QAAW,WACPR,EAAQS,OACRX,EAAKY,KAAKC,QAAQC,UAClBnB,EAASoB,OAAOf,EAAKY,KAAMZ,EAAKD,QAAS,WACrCG,EAAQc,SACRhB,EAAKY,KAAKC,QAAQI,aAK1BlB,GAAQmB,QAAUnB,EAAQoB,YAC1BpB,EAAQqB,OAA2B,oBAC/BC,MAAc,oCACdf,KAAc,qBACdgB,KAAc,SACdC,QAAc,QACdC,OAAc,aACdC,MAAc,aACd1B,UAAgB,MAAOA,EAAQmB,SAAU,KAAM,eAC/CQ,KAAc,qLAItB3B,EAAUP,EAAMmC,MAAM5B,GAClB6B,SACI1B,QAAUA,KAGlBR,EAAamC,UAAU/B,WAAWgC,KAAK7B,KAAMF,KAIrD,QACIH,KAAMA"}
\ No newline at end of file
+{"version":3,"file":"tools-form.js","sources":["../../../src/mvc/tools/tools-form.js"],"names":["define","Utils","Ui","ToolFormBase","ToolJobs","View","extend","initialize","options","self","this","prototype","call","merge","customize","buttons","execute","execute_btn","Button","icon","tooltip","name","version","title","cls","floating","onclick","wait","form","portlet","disable","submit","unwait","enable","job_id","job_remap","inputs","label","type","display","ignore","value","help"],"mappings":"AAGAA,QAAQ,cAAe,iBAAkB,4BAA6B,wBAClE,SAAUC,EAAOC,EAAIC,EAAcC,GACnC,GAAIC,GAAOF,EAAaG,QACpBC,WAAY,SAAUC,GAClB,GAAIC,GAAOC,IACXP,GAAaQ,UAAUJ,WAAWK,KAAMF,KAAMT,EAAMY,OAChDC,UAAW,SAAUN,GAEjBA,EAAQO,SACJC,QAAUC,YAAc,GAAIf,GAAGgB,QAC3BC,KAAW,WACXC,QAAW,YAAcZ,EAAQa,KAAO,KAAOb,EAAQc,QAAU,IACjEC,MAAW,UACXC,IAAW,kBACXC,SAAW,QACXC,QAAW,WACPT,YAAYU,OACZlB,EAAKmB,KAAKC,QAAQC,UAClB1B,EAAS2B,OAAQtB,EAAKmB,KAAMpB,EAAS,WACjCS,YAAYe,SACZvB,EAAKmB,KAAKC,QAAQI,eAO7BzB,EAAQ0B,QAAU1B,EAAQ2B,YAC3B3B,EAAQ4B,OAA6B,oBACjCC,MAAc,oCACdhB,KAAc,qBACdiB,KAAc,SACdC,QAAc,QACdC,OAAc,aACdC,MAAc,aACdjC,UAAkB,MAAOA,EAAQ0B,SAAY,KAAM,eACnDQ,KAAc,uLAI3BlC,MAIX,QACIH,KAAMA"}
\ No newline at end of file
diff --git a/static/scripts/mvc/app/app-analysis.js b/static/scripts/mvc/app/app-analysis.js
index 7824ad2b134..f31d88fb43e 100644
--- a/static/scripts/mvc/app/app-analysis.js
+++ b/static/scripts/mvc/app/app-analysis.js
@@ -1,2 +1,2 @@
-define(["utils/utils","mvc/tools","mvc/upload/upload-view","mvc/ui/ui-misc","mvc/history/options-menu","mvc/history/history-panel-edit-current"],function(a,b,c,d,e,f){var g=Backbone.View.extend({initialize:function(b){this.options=a.merge(b,{}),this.setElement(this._template());var c=this.options.params;this.$("#galaxy_main").prop("src",Galaxy.root+(c.tool_id&&"tool_runner?"+$.param(c)||c.workflow_id&&"workflow/run?id="+c.workflow_id||c.m_c&&c.m_c+"/"+c.m_a||Galaxy.config.require_login&&!Galaxy.user.id&&"user/login"||"root/welcome"));var d=this;this.$("#galaxy_main").on("load",function(){$(this).show(),d.$("#center-panel").empty().hide();var a=this.contentWindow;a&&Galaxy.trigger("galaxy_main:load",{fullpath:a.location.pathname+a.location.search+a.location.hash,pathname:a.location.pathname,search:a.location.search,hash:a.location.hash})})},display:function(a){this.$("#galaxy_main").hide(),this.$("#center-panel").empty().scrollTop(0).append(a).show()},_template:function(){return'
'}}),h=Backbone.View.extend({initialize:function(d){if(this.options=a.merge(d,{}),this.setElement(this._template()),Galaxy.user.id||!Galaxy.config.require_login){var e=new b.ToolSearch({spinner_url:d.spinner_url,search_url:d.search_url,hidden:!1}),f=new b.ToolCollection(d.toolbox),g=new b.ToolPanel({tool_search:e,tools:f,layout:d.toolbox_in_panel});tool_panel_view=new b.ToolPanelView({model:g}),Galaxy.toolPanel=g,g.get("layout").size()>0&&(tool_panel_view.render(),this.$(".toolMenu").show()),this.$el.prepend(tool_panel_view.$el),this.$("#internal-workflows").append(this._templateTool({title:"All workflows",href:"workflow/list_for_run"}));for(var h in d.stored_workflow_menu_entries){var i=d.stored_workflow_menu_entries[h];this.$("#internal-workflows").append(this._templateTool({title:i.stored_workflow.name,href:"workflow/run?id="+i.encoded_stored_workflow_id}))}this.$("a[minsizehint]").click(function(){parent.handle_minwidth_hint&&parent.handle_minwidth_hint($(this).attr("minsizehint"))}),Galaxy.upload=new c(d),this.components={header:{title:"Tools",buttons:[Galaxy.upload]}}}},_templateTool:function(a){return'
"},_template:function(){return''}}),i=Backbone.View.extend({initialize:function(b){this.options=a.merge(b,{}),this.setElement(this._template());var c=new d.ButtonLink({id:"history-refresh-button",title:"Refresh history",cls:"panel-header-button",icon:"fa fa-refresh",onclick:function(){top.Galaxy&&top.Galaxy.currHistoryPanel&&top.Galaxy.currHistoryPanel.loadCurrentHistory()}}),g=new d.ButtonLink({id:"history-options-button",title:"History options",cls:"panel-header-button",target:"galaxy_main",icon:"fa fa-cog",href:Galaxy.root+"root/history_options"}),h=new d.ButtonLink({id:"history-view-multi-button",title:"View all histories",cls:"panel-header-button",icon:"fa fa-columns",href:Galaxy.root+"history/view_multiple"});this.components={header:{title:"History",cls:"history-panel-header",buttons:[c,g,h]},body:{cls:"unified-panel-body-background"}},Galaxy.historyOptionsMenu=e(g.$el,{anonymous:!Galaxy.user.id,purgeAllowed:Galaxy.config.allow_user_dataset_purge,root:Galaxy.root}),Galaxy.currHistoryPanel=new f.CurrentHistoryPanel({el:this.$el,purgeAllowed:Galaxy.config.allow_user_dataset_purge,linkTarget:"galaxy_main",$scrollContainer:function(){return this.$el.parent()}}),Galaxy.currHistoryPanel.connectToQuotaMeter(Galaxy.quotaMeter),Galaxy.currHistoryPanel.listenToGalaxy(Galaxy),Galaxy.currHistoryPanel.loadCurrentHistory()},_template:function(){return'
'}});return{left:h,center:g,right:i}});
+define(["utils/utils","mvc/tools","mvc/upload/upload-view","mvc/ui/ui-misc","mvc/history/options-menu","mvc/history/history-panel-edit-current","mvc/tools/tools-form"],function(a,b,c,d,e,f,g){var h=Backbone.View.extend({initialize:function(b){this.options=a.merge(b,{}),this.setElement(this._template());var c=this;this.$("#galaxy_main").on("load",function(){var a=this.contentWindow&&this.contentWindow.location;a&&a.host&&($(this).show(),c.$("#center-panel").empty().hide(),Galaxy.trigger("galaxy_main:load",{fullpath:a.pathname+a.search+a.hash,pathname:a.pathname,search:a.search,hash:a.hash}))});var d=$.extend({},Galaxy.params);d.tool_id||d.job_id?(d.tool_id&&(d.id=d.tool_id),this.display(new g.View(d).$el)):this.$("#galaxy_main").prop("src",Galaxy.root+(d.workflow_id&&"workflow/run?id="+d.workflow_id||d.m_c&&d.m_c+"/"+d.m_a||Galaxy.config.require_login&&!Galaxy.user.id&&"user/login"||"root/welcome"))},display:function(a){this.$("#galaxy_main").hide(),this.$("#center-panel").empty().scrollTop(0).append(a).show()},_template:function(){return'
'}}),i=Backbone.View.extend({initialize:function(d){if(this.options=a.merge(d,{}),this.setElement(this._template()),Galaxy.user.id||!Galaxy.config.require_login){var e=new b.ToolSearch({spinner_url:d.spinner_url,search_url:d.search_url,hidden:!1}),f=new b.ToolCollection(d.toolbox),g=new b.ToolPanel({tool_search:e,tools:f,layout:d.toolbox_in_panel});tool_panel_view=new b.ToolPanelView({model:g}),Galaxy.toolPanel=g,g.get("layout").size()>0&&(tool_panel_view.render(),this.$(".toolMenu").show()),this.$el.prepend(tool_panel_view.$el),this.$("#internal-workflows").append(this._templateTool({title:"All workflows",href:"workflow/list_for_run"}));for(var h in d.stored_workflow_menu_entries){var i=d.stored_workflow_menu_entries[h];this.$("#internal-workflows").append(this._templateTool({title:i.stored_workflow.name,href:"workflow/run?id="+i.encoded_stored_workflow_id}))}this.$("a[minsizehint]").click(function(){parent.handle_minwidth_hint&&parent.handle_minwidth_hint($(this).attr("minsizehint"))}),Galaxy.upload=new c(d),this.components={header:{title:"Tools",buttons:[Galaxy.upload]}}}},_templateTool:function(a){return'
"},_template:function(){return''}}),j=Backbone.View.extend({initialize:function(b){this.options=a.merge(b,{}),this.setElement(this._template());var c=new d.ButtonLink({id:"history-refresh-button",title:"Refresh history",cls:"panel-header-button",icon:"fa fa-refresh",onclick:function(){top.Galaxy&&top.Galaxy.currHistoryPanel&&top.Galaxy.currHistoryPanel.loadCurrentHistory()}}),g=new d.ButtonLink({id:"history-options-button",title:"History options",cls:"panel-header-button",target:"galaxy_main",icon:"fa fa-cog",href:Galaxy.root+"root/history_options"}),h=new d.ButtonLink({id:"history-view-multi-button",title:"View all histories",cls:"panel-header-button",icon:"fa fa-columns",href:Galaxy.root+"history/view_multiple"});this.components={header:{title:"History",cls:"history-panel-header",buttons:[c,g,h]},body:{cls:"unified-panel-body-background"}},Galaxy.historyOptionsMenu=e(g.$el,{anonymous:!Galaxy.user.id,purgeAllowed:Galaxy.config.allow_user_dataset_purge,root:Galaxy.root}),Galaxy.currHistoryPanel=new f.CurrentHistoryPanel({el:this.$el,purgeAllowed:Galaxy.config.allow_user_dataset_purge,linkTarget:"galaxy_main",$scrollContainer:function(){return this.$el.parent()}}),Galaxy.currHistoryPanel.connectToQuotaMeter(Galaxy.quotaMeter),Galaxy.currHistoryPanel.listenToGalaxy(Galaxy),Galaxy.currHistoryPanel.loadCurrentHistory()},_template:function(){return'
'}});return{left:i,center:h,right:j}});
//# sourceMappingURL=../../../maps/mvc/app/app-analysis.js.map
\ No newline at end of file
diff --git a/static/scripts/mvc/app/app-view.js b/static/scripts/mvc/app/app-view.js
index add017f056e..4b36a314e13 100644
--- a/static/scripts/mvc/app/app-view.js
+++ b/static/scripts/mvc/app/app-view.js
@@ -1,2 +1,2 @@
-define(["utils/utils","galaxy.masthead","galaxy.menu","galaxy.frame","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/ui/ui-modal","mvc/user/user-quotameter","mvc/app/app-analysis"],function(a,b,c,d,e,f,g,h,i){return Backbone.View.extend({initialize:function(e){this.options=a.merge(e,{}),this.params=this.options.params,this.setElement(this._template(e)),Galaxy.app=this,$("body").append(this.$el),ensure_dd_helper();var f=$(this.$el.parent()).attr("scroll","no").addClass("full-content");this.options.message_box_visible&&(f.addClass("has-message-box"),this.$("#messagebox").show()),this.options.show_inactivity_warning&&(f.addClass("has-inactivity-box"),this.$("#inactivebox").show()),Galaxy.masthead||(Galaxy.masthead=new b.GalaxyMasthead(e),Galaxy.modal=new g.View,Galaxy.frame=new d.GalaxyFrame,Galaxy.menu=new c.GalaxyMenu({masthead:Galaxy.masthead,config:e}),Galaxy.quotaMeter=new h.UserQuotaMeter({model:Galaxy.user,el:Galaxy.masthead.$(".quota-meter-container")}).render()),this._buildPanels(i,e)},display:function(a,b){$(".select2-hidden-accessible").remove(),this.panels&&this.panels[b||"center"].display(a)},_buildPanels:function(b,c){this.panels=[];var d=["left","center","right"];for(var e in d){var f=d[e],g=this.panels[f]=new b[f](c);if("center"==f)this.$("#center").append(g.$el);else{var h=a.merge(g.components,{header:{title:"",cls:"",buttons:[]},body:{cls:""}}),i=$(this._templatePanel(f));i.find(".panel-header-text").html(h.header.title),i.find(".unified-panel-header-inner").addClass(h.header.cls);for(var e in h.header.buttons)i.find(".panel-header-buttons").append(h.header.buttons[e].$el);i.find(".unified-panel-body").addClass(h.body.cls).append(g.$el);{new Panel({center:this.$("#center"),panel:i,drag:i.find(".unified-panel-footer > .drag"),toggle:i.find(".unified-panel-footer > .panel-collapse"),right:"right"==f})}this.$el.append(i)}}},_templatePanel:function(a){return'
'},_template:function(){return'
'+Galaxy.config.message_box_content+'
'}})});
+define(["utils/utils","galaxy.masthead","galaxy.menu","galaxy.frame","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/ui/ui-modal","mvc/user/user-quotameter","mvc/app/app-analysis"],function(a,b,c,d,e,f,g,h,i){return Backbone.View.extend({initialize:function(e){this.options=a.merge(e,{}),this.setElement(this._template(e)),Galaxy.app=this,Galaxy.params=this.options.params,Galaxy.router=new Backbone.Router,$("body").append(this.$el),ensure_dd_helper();var f=$(this.$el.parent()).attr("scroll","no").addClass("full-content");this.options.message_box_visible&&(f.addClass("has-message-box"),this.$("#messagebox").show()),this.options.show_inactivity_warning&&(f.addClass("has-inactivity-box"),this.$("#inactivebox").show()),Galaxy.masthead||(Galaxy.masthead=new b.GalaxyMasthead(e),Galaxy.modal=new g.View,Galaxy.frame=new d.GalaxyFrame,Galaxy.menu=new c.GalaxyMenu({masthead:Galaxy.masthead,config:e}),Galaxy.quotaMeter=new h.UserQuotaMeter({model:Galaxy.user,el:Galaxy.masthead.$(".quota-meter-container")}).render()),this._buildPanels(i,e)},display:function(a,b){$(".select2-hidden-accessible").remove(),this.panels&&this.panels[b||"center"].display(a)},_buildPanels:function(b,c){this.panels=[];var d=["left","center","right"];for(var e in d){var f=d[e],g=this.panels[f]=new b[f](c);if("center"==f)this.$("#center").append(g.$el);else{var h=a.merge(g.components,{header:{title:"",cls:"",buttons:[]},body:{cls:""}}),i=$(this._templatePanel(f));i.find(".panel-header-text").html(h.header.title),i.find(".unified-panel-header-inner").addClass(h.header.cls);for(var e in h.header.buttons)i.find(".panel-header-buttons").append(h.header.buttons[e].$el);i.find(".unified-panel-body").addClass(h.body.cls).append(g.$el);{new Panel({center:this.$("#center"),panel:i,drag:i.find(".unified-panel-footer > .drag"),toggle:i.find(".unified-panel-footer > .panel-collapse"),right:"right"==f})}this.$el.append(i)}}},_templatePanel:function(a){return'
'},_template:function(){return'
'+Galaxy.config.message_box_content+'
'}})});
//# sourceMappingURL=../../../maps/mvc/app/app-view.js.map
\ No newline at end of file
diff --git a/static/scripts/mvc/form/form-input.js b/static/scripts/mvc/form/form-input.js
index 076cd0680fe..ebfb3a7bbaf 100644
--- a/static/scripts/mvc/form/form-input.js
+++ b/static/scripts/mvc/form/form-input.js
@@ -1,2 +1,2 @@
-define([],function(){return Backbone.View.extend({initialize:function(a,b){this.app=a,this.text_enable=a.options.text_enable||"Enable",this.text_disable=a.options.text_disable||"Disable",this.cls_enable=a.options.cls_enable||"fa fa-caret-square-o-down",this.cls_disable=a.options.cls_disable||"fa fa-caret-square-o-up",this.field=b.field,this.default_value=b.default_value,this.setElement(this._template(b)),this.$field=this.$el.find(".ui-table-form-field"),this.$optional=this.$el.find(".ui-table-form-optional"),this.$optional_icon=this.$el.find(".ui-table-form-optional").find(".icon"),this.$error_text=this.$el.find(".ui-table-form-error-text"),this.$error=this.$el.find(".ui-table-form-error"),this.$field.prepend(this.field.$el),this.field.collapsed=b.collapsible&&b.value&&JSON.stringify(b.value)==JSON.stringify(b.collapsible_value),this._refresh();var c=this;this.$optional.on("click",function(){c.field.collapsed=!c.field.collapsed,c._refresh(),c.app.trigger("change")})},error:function(a){this.$error_text.html(a),this.$error.show(),this.$el.addClass("ui-error")},reset:function(){this.$error.hide(),this.$el.removeClass("ui-error")},_refresh:function(){this.$optional_icon.removeClass().addClass("icon"),this.field.collapsed?(this.$field.hide(),this._tooltip(this.text_enable,this.cls_enable),this.field.value&&this.field.value(this.default_value)):(this.$field.fadeIn("fast"),this._tooltip(this.text_disable,this.cls_disable),this.app.trigger("change"))},_tooltip:function(a,b){this.$optional.length&&this.$optional_icon.addClass(b).tooltip({placement:"bottom"}).attr("data-original-title",a).tooltip("fixTitle").tooltip("hide")},_template:function(a){var b='
"}})});
+define([],function(){return Backbone.View.extend({initialize:function(a,b){this.app=a,this.text_enable=a.options.text_enable||"Enable",this.text_disable=a.options.text_disable||"Disable",this.cls_enable=a.options.cls_enable||"fa fa-caret-square-o-down",this.cls_disable=a.options.cls_disable||"fa fa-caret-square-o-up",this.field=b.field,this.default_value=b.default_value,this.setElement(this._template(b)),this.$field=this.$el.find(".ui-table-form-field"),this.$optional=this.$el.find(".ui-table-form-optional"),this.$optional_icon=this.$el.find(".ui-table-form-optional").find(".icon"),this.$error_text=this.$el.find(".ui-table-form-error-text"),this.$error=this.$el.find(".ui-table-form-error"),this.$field.prepend(this.field.$el),this.field.collapsed=b.collapsible&&b.value&&JSON.stringify(b.value)==JSON.stringify(b.collapsible_value),this._refresh();var c=this;this.$optional.on("click",function(){c.field.collapsed=!c.field.collapsed,c._refresh(),c.app.trigger("change")})},error:function(a){this.$error_text.html(a),this.$error.show(),this.$el.addClass("ui-error")},reset:function(){this.$error.hide(),this.$el.removeClass("ui-error")},_refresh:function(){this.$optional_icon.removeClass().addClass("icon"),this.field.collapsed?(this.$field.hide(),this._tooltip(this.text_enable,this.cls_enable),this.field.value&&this.field.value(this.default_value)):(this.$field.fadeIn("fast"),this._tooltip(this.text_disable,this.cls_disable),this.app.trigger("change"))},_tooltip:function(a,b){this.$optional.length&&this.$optional_icon.addClass(b).tooltip({placement:"bottom"}).attr("data-original-title",a).tooltip("fixTitle").tooltip("hide")},_template:function(a){var b='
"}})});
//# sourceMappingURL=../../../maps/mvc/form/form-input.js.map
\ No newline at end of file
diff --git a/static/scripts/mvc/form/form-section.js b/static/scripts/mvc/form/form-section.js
index ab7900e0827..a4e770695e0 100644
--- a/static/scripts/mvc/form/form-section.js
+++ b/static/scripts/mvc/form/form-section.js
@@ -1,2 +1,2 @@
-define(["utils/utils","mvc/ui/ui-table","mvc/ui/ui-misc","mvc/ui/ui-portlet","mvc/form/form-repeat","mvc/form/form-input","mvc/form/form-parameters"],function(a,b,c,d,e,f,g){var h=Backbone.View.extend({initialize:function(a,c){this.app=a,this.inputs=c.inputs,c.cls="ui-table-plain",c.cls_tr="section-row",this.table=new b.View(c),this.parameters=new g(a,c),this.setElement(this.table.$el),this.render()},render:function(){this.table.delAll();for(var a in this.inputs)this.add(this.inputs[a])},add:function(b){var c=jQuery.extend(!0,{},b);c.id=b.id=a.uid(),this.app.input_list[c.id]=c;var d=c.type;switch(d){case"conditional":this._addConditional(c);break;case"repeat":this._addRepeat(c);break;case"section":this._addSection(c);break;default:this._addRow(c)}},_addConditional:function(a){var b=this;a.test_param.id=a.id;var c=this._addRow(a.test_param);c.options.onchange=function(c){var d=b.app.data.matchCase(a,c);for(var e in a.cases){var f=a.cases[e],g=a.id+"-section-"+e,h=b.table.get(g),i=!1;for(var j in f.inputs)if(!f.inputs[j].hidden){i=!0;break}e==d&&i?h.fadeIn("fast"):h.hide()}b.app.trigger("change")};for(var d in a.cases){var e=a.id+"-section-"+d,f=new h(this.app,{inputs:a.cases[d].inputs});f.$el.addClass("ui-table-section"),this.table.add(f.$el),this.table.append(e)}c.trigger("change")},_addRepeat:function(a){function b(b){var e=a.id+"-section-"+d++,f=new h(c.app,{inputs:b});g.add({id:e,$el:f.$el,ondel:function(){g.del(e),c.app.trigger("change")}})}for(var c=this,d=0,g=new e.View({title:a.title,title_new:a.title,min:a.min,max:a.max,onnew:function(){b(a.inputs),c.app.trigger("change")}}),i=a.min,j=_.size(a.cache),k=0;k
k?a.cache[k]:a.inputs,b(l)}var m=new f(this.app,{label:a.title,help:a.help,field:g});this.table.add(m.$el),this.table.append(a.id)},_addSection:function(a){var b=this,e=new h(b.app,{inputs:a.inputs}),f=new c.ButtonIcon({icon:"fa-eye-slash",tooltip:"Show/hide section",cls:"ui-button-icon-plain"}),g=new d.View({title:a.title,cls:"ui-portlet-section",operations:{button_visible:f}});g.append(e.$el),g.append($("").addClass("ui-table-form-info").html(a.help));var i=!1;g.$content.hide(),g.$header.css("cursor","pointer"),g.$header.on("click",function(){i?(i=!1,g.$content.hide(),f.setIcon("fa-eye-slash")):(i=!0,g.$content.fadeIn("fast"),f.setIcon("fa-eye"))}),this.app.on("expand",function(a){g.$el.find("#"+a).length>0&&!i&&g.$header.trigger("click")}),a.expanded&&g.$header.trigger("click"),this.table.add(g.$el),this.table.append(a.id)},_addRow:function(a){var b=a.id,c=this.parameters.create(a);this.app.field_list[b]=c;var d=new f(this.app,{label:a.label||a.name,value:a.value,default_value:a.default_value,collapsible:a.collapsible,collapsible_value:a.collapsible_value,help:a.help,argument:a.argument,field:c});return this.app.element_list[b]=d,this.table.add(d.$el),this.table.append(b),a.hidden&&this.table.get(b).hide(),c}});return{View:h}});
+define(["utils/utils","mvc/ui/ui-table","mvc/ui/ui-misc","mvc/ui/ui-portlet","mvc/form/form-repeat","mvc/form/form-input","mvc/form/form-parameters"],function(a,b,c,d,e,f,g){var h=Backbone.View.extend({initialize:function(a,c){this.app=a,this.inputs=c.inputs,c.cls="ui-table-plain",c.cls_tr="section-row",this.table=new b.View(c),this.parameters=new g(a,c),this.setElement(this.table.$el),this.render()},render:function(){this.table.delAll();for(var a in this.inputs)this.add(this.inputs[a])},add:function(b){var c=jQuery.extend(!0,{},b);c.id=b.id=a.uid(),this.app.input_list[c.id]=c;var d=c.type;switch(d){case"conditional":this._addConditional(c);break;case"repeat":this._addRepeat(c);break;case"section":this._addSection(c);break;default:this._addRow(c)}},_addConditional:function(a){var b=this;a.test_param.id=a.id;var c=this._addRow(a.test_param);c.options.onchange=function(c){var d=b.app.data.matchCase(a,c);for(var e in a.cases){var f=a.cases[e],g=a.id+"-section-"+e,h=b.table.get(g),i=!1;for(var j in f.inputs)if(!f.inputs[j].hidden){i=!0;break}e==d&&i?h.fadeIn("fast"):h.hide()}b.app.trigger("change")};for(var d in a.cases){var e=a.id+"-section-"+d,f=new h(this.app,{inputs:a.cases[d].inputs});f.$el.addClass("ui-table-section"),this.table.add(f.$el),this.table.append(e)}c.trigger("change")},_addRepeat:function(a){function b(b){var e=a.id+"-section-"+d++,f=new h(c.app,{inputs:b});g.add({id:e,$el:f.$el,ondel:function(){g.del(e),c.app.trigger("change")}})}for(var c=this,d=0,g=new e.View({title:a.title,title_new:a.title,min:a.min,max:a.max,onnew:function(){b(a.inputs),c.app.trigger("change")}}),i=a.min,j=_.size(a.cache),k=0;kk?a.cache[k]:a.inputs,b(l)}var m=new f(this.app,{label:a.title,help:a.help,field:g});this.table.add(m.$el),this.table.append(a.id)},_addSection:function(a){var b=this,e=new h(b.app,{inputs:a.inputs}),f=new c.ButtonIcon({icon:"fa-eye-slash",tooltip:"Show/hide section",cls:"ui-button-icon-plain"}),g=new d.View({title:a.title,cls:"ui-portlet-section",operations:{button_visible:f}});g.append(e.$el),g.append($("").addClass("ui-table-form-info").html(a.help));var i=!1;g.$content.hide(),g.$header.css("cursor","pointer"),g.$header.on("click",function(){i?(i=!1,g.$content.hide(),f.setIcon("fa-eye-slash")):(i=!0,g.$content.fadeIn("fast"),f.setIcon("fa-eye"))}),this.app.on("expand",function(a){g.$el.find("#"+a).length>0&&!i&&g.$header.trigger("click")}),a.expanded&&g.$header.trigger("click"),this.table.add(g.$el),this.table.append(a.id)},_addRow:function(a){var b=a.id,c=this.parameters.create(a);this.app.field_list[b]=c;var d=new f(this.app,{name:a.name,label:a.label||a.name,value:a.value,default_value:a.default_value,collapsible:a.collapsible,collapsible_value:a.collapsible_value,help:a.help,argument:a.argument,field:c});return this.app.element_list[b]=d,this.table.add(d.$el),this.table.append(b),a.hidden&&this.table.get(b).hide(),c}});return{View:h}});
//# sourceMappingURL=../../../maps/mvc/form/form-section.js.map
\ No newline at end of file
diff --git a/static/scripts/mvc/form/form-view.js b/static/scripts/mvc/form/form-view.js
index 9d0e22fa385..c63981f81ab 100644
--- a/static/scripts/mvc/form/form-view.js
+++ b/static/scripts/mvc/form/form-view.js
@@ -1,2 +1,2 @@
-define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/form/form-section","mvc/form/form-data"],function(a,b,c,d,e){return Backbone.View.extend({initialize:function(b){this.optionsDefault={is_workflow:!1,initial_errors:!1,cls:"ui-portlet-limited"},this.options=a.merge(b,this.optionsDefault),console.debug(this.options);var d=parent.Galaxy;this.modal=d&&d.modal?d.modal:new c.Modal.View,this.setElement(""),this._build()},update:function(a){var b=this;this.data.matchModel(a,function(a,c){var d=b.input_list[a];if(d&&d.options&&!_.isEqual(d.options,c.options)){d.options=c.options;var e=b.field_list[a];if(e.update){var f=[];if(-1!=["data","data_collection","drill_down"].indexOf(d.type))f=d.options;else for(var g in c.options){var h=c.options[g];h.length>2&&f.push({label:h[0],value:h[1]})}e.update(f),e.trigger("change"),console.debug("Updating options for "+a)}}})},wait:function(a){for(var b in this.input_list){var c=this.field_list[b],d=this.input_list[b];d.is_dynamic&&c.wait&&c.unwait&&(a?c.wait():c.unwait())}},reciept:function(a){this.$el.empty(),this.$el.append(a)},highlight:function(a,b,c){var d=this.element_list[a];if(d&&(d.error(b||"Please verify this parameter."),this.trigger("expand",a),!c))if(self==top){var e=this.$el.parents().filter(function(){return"auto"==$(this).css("overflow")}).first();e.animate({scrollTop:e.scrollTop()+d.$el.offset().top-50},500)}else $("html, body").animate({scrollTop:d.$el.offset().top-20},500)},errors:function(a){if(this.trigger("reset"),a&&a.errors){var b=this.data.matchResponse(a.errors);for(var c in this.element_list){{this.element_list[c]}b[c]&&this.highlight(c,b[c],!0)}}},_build:function(){var a=this;this.off("change"),this.off("reset"),this.field_list={},this.input_list={},this.element_list={},this.data=new e(this),this._renderForm(),this.data.create(),this.options.initial_errors&&this.errors(this.options);var b=this.data.checksum();this.on("change",function(){var c=a.data.checksum();c!=b&&(b=c,a.options.onchange&&a.options.onchange())}),this.on("reset",function(){for(var a in this.element_list)this.element_list[a].reset()})},_renderForm:function(){return this.message=new c.Message,this.section=new d.View(this,{inputs:this.options.inputs}),this.incompatible?(this.$el.hide(),void $("#tool-form-classic").show()):(this.portlet=new b.View({icon:"fa-wrench",title:this.options.title,cls:this.options.cls,operations:this.options.operations,buttons:this.options.buttons}),this.portlet.append(this.message.$el.addClass("ui-margin-top")),this.portlet.append(this.section.$el),this.$el.empty(),this.$el.append(this.portlet.$el),this.options.message&&this.message.update({persistent:!0,status:"warning",message:this.options.message}),void console.debug("tools-form-base::initialize() - Completed."))}})});
+define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/form/form-section","mvc/form/form-data"],function(a,b,c,d,e){return Backbone.View.extend({initialize:function(b){this.optionsDefault={is_workflow:!1,initial_errors:!1,cls:"ui-portlet-limited"},this.options=a.merge(b,this.optionsDefault);var d=parent.Galaxy;this.modal=d&&d.modal?d.modal:new c.Modal.View,this.setElement(""),this._build()},update:function(a){var b=this;this.data.matchModel(a,function(a,c){var d=b.input_list[a];if(d&&d.options&&!_.isEqual(d.options,c.options)){d.options=c.options;var e=b.field_list[a];if(e.update){var f=[];if(-1!=["data","data_collection","drill_down"].indexOf(d.type))f=d.options;else for(var g in c.options){var h=c.options[g];h.length>2&&f.push({label:h[0],value:h[1]})}e.update(f),e.trigger("change")}}})},wait:function(a){for(var b in this.input_list){var c=this.field_list[b],d=this.input_list[b];d.is_dynamic&&c.wait&&c.unwait&&(a?c.wait():c.unwait())}},reciept:function(a){this.$el.empty(),this.$el.append(a)},highlight:function(a,b,c){var d=this.element_list[a];if(d&&(d.error(b||"Please verify this parameter."),this.trigger("expand",a),!c))if(self==top){var e=this.$el.parents().filter(function(){return"auto"==$(this).css("overflow")}).first();e.animate({scrollTop:e.scrollTop()+d.$el.offset().top-50},500)}else $("html, body").animate({scrollTop:d.$el.offset().top-20},500)},errors:function(a){if(this.trigger("reset"),a&&a.errors){var b=this.data.matchResponse(a.errors);for(var c in this.element_list){{this.element_list[c]}b[c]&&this.highlight(c,b[c],!0)}}},_build:function(){var a=this;this.off("change"),this.off("reset"),this.field_list={},this.input_list={},this.element_list={},this.data=new e(this),this._renderForm(),this.data.create(),this.options.initial_errors&&this.errors(this.options);var b=this.data.checksum();this.on("change",function(){var c=a.data.checksum();c!=b&&(b=c,a.options.onchange&&a.options.onchange())}),this.on("reset",function(){for(var a in this.element_list)this.element_list[a].reset()})},_renderForm:function(){this.message=new c.Message,this.section=new d.View(this,{inputs:this.options.inputs}),$(".tooltip").remove(),this.portlet=new b.View({icon:"fa-wrench",title:this.options.title,cls:this.options.cls,operations:this.options.operations,buttons:this.options.buttons}),this.portlet.append(this.message.$el.addClass("ui-margin-top")),this.portlet.append(this.section.$el),this.$el.empty(),this.$el.append(this.portlet.$el),this.options.message&&this.message.update({persistent:!0,status:"warning",message:this.options.message})}})});
//# sourceMappingURL=../../../maps/mvc/form/form-view.js.map
\ No newline at end of file
diff --git a/static/scripts/mvc/tools/tools-form-base.js b/static/scripts/mvc/tools/tools-form-base.js
index da10226a9aa..7b5c4177b69 100644
--- a/static/scripts/mvc/tools/tools-form-base.js
+++ b/static/scripts/mvc/tools/tools-form-base.js
@@ -1,2 +1,2 @@
-define(["utils/utils","utils/deferred","mvc/ui/ui-misc","mvc/form/form-view","mvc/tools/tools-template","mvc/citation/citation-model","mvc/citation/citation-view"],function(a,b,c,d,e,f,g){return Backbone.View.extend({initialize:function(c){this.options=a.merge(c,{}),this.setElement(""),this.deferred=new b,c.inputs?this._buildForm(c):this._buildModel(c,!0)},_buildForm:function(b){var c=this;this.options=a.merge(b,this.options),this.options=a.merge({icon:"fa-wrench",title:""+b.name+" "+b.description+" (Galaxy Tool Version "+b.version+")",operations:this._operations(),onchange:function(){c.deferred.reset(),c.deferred.execute(function(){c._updateModel()})}},this.options),this.form=new d(this.options),this._footer(),this.$el.empty(),this.$el.append(this.form.$el)},_buildModel:function(b,c){var e=this;if(this.options.id=b.id,this.options.version=b.version,b.job_id)f=Galaxy.root+"api/jobs/"+b.job_id+"/build_for_rerun";else{var f=Galaxy.root+"api/tools/"+b.id+"/build?";if(b.dataset_id)f+="dataset_id="+b.dataset_id;else{f+="tool_version="+b.version+"&";var g=top.location.href,h=g.indexOf("?");-1!=g.indexOf("tool_id=")&&-1!==h&&(f+=g.slice(h+1))}}var i=this.deferred.register();a.request({type:"GET",url:f,success:function(a){e._buildForm(a.tool_model||a),!c&&e.form.message.update({status:"success",message:"Now you are using '"+e.options.name+"' version "+e.options.version+".",persistent:!1}),e.deferred.done(i),console.debug("tools-form::initialize() - Initial tool model ready."),console.debug(a)},error:function(a){e.deferred.done(i),console.debug("tools-form::initialize() - Initial tool model request failed."),console.debug(a);var b=a.error||a.err_msg||"Uncaught error.";void 0==e.form&&(e.form=new d),Galaxy.modal.show({title:"Tool cannot be executed",body:b,buttons:{Close:function(){Galaxy.modal.hide()}}})}})},_updateModel:function(){var b=this.options.update_url||Galaxy.root+"api/tools/"+this.options.id+"/build",c=this,d=this.form,e={tool_id:this.options.id,tool_version:this.options.version,inputs:$.extend(!0,{},c.form.data.create())};d.wait(!0);var f=this.deferred.register();console.debug("tools-form-base::_updateModel() - Sending current state (see below)."),console.debug(e),a.request({type:"POST",url:b,data:e,success:function(a){c.form.update(a.tool_model||a),c.options.update&&c.options.update(a),d.wait(!1),console.debug("tools-form-base::_updateModel() - Received new model (see below)."),console.debug(a),c.deferred.done(f)},error:function(a){c.deferred.done(f),console.debug("tools-form-base::_updateModel() - Refresh request failed."),console.debug(a)}})},_operations:function(){var a=this,b=this.options,d=new c.ButtonMenu({icon:"fa-cubes",title:!b.narrow&&"Versions"||null,tooltip:"Select another tool version"});if(!b.is_workflow&&b.versions&&b.versions.length>1)for(var f in b.versions){var g=b.versions[f];g!=b.version&&d.addMenu({title:"Switch to "+g,version:g,icon:"fa-cube",onclick:function(){var c=b.id.replace(b.version,this.version),d=this.version;a.deferred.reset(),a.deferred.execute(function(){a._buildModel({id:c,version:d})})}})}else d.$el.hide();var h=new c.ButtonMenu({icon:"fa-caret-down",title:!b.narrow&&"Options"||null,tooltip:"View available options"});return b.biostar_url&&(h.addMenu({icon:"fa-question-circle",title:"Question?",tooltip:"Ask a question about this tool (Biostar)",onclick:function(){window.open(b.biostar_url+"/p/new/post/")}}),h.addMenu({icon:"fa-search",title:"Search",tooltip:"Search help for this tool (Biostar)",onclick:function(){window.open(b.biostar_url+"/local/search/page/?q="+b.name)}})),h.addMenu({icon:"fa-share",title:"Share",tooltip:"Share this tool",onclick:function(){prompt("Copy to clipboard: Ctrl+C, Enter",window.location.origin+Galaxy.root+"root?tool_id="+b.id)}}),Galaxy.user&&Galaxy.user.get("is_admin")&&h.addMenu({icon:"fa-download",title:"Download",tooltip:"Download this tool",onclick:function(){window.location.href=Galaxy.root+"api/tools/"+b.id+"/download"}}),b.requirements&&b.requirements.length>0&&h.addMenu({icon:"fa-info-circle",title:"Requirements",tooltip:"Display tool requirements",onclick:function(){this.visible?(this.visible=!1,a.form.message.update({message:""})):(this.visible=!0,a.form.message.update({persistent:!0,message:e.requirements(b),status:"info"}))}}),b.sharable_url&&h.addMenu({icon:"fa-external-link",title:"See in Tool Shed",tooltip:"Access the repository",onclick:function(){window.open(b.sharable_url)}}),{menu:h,versions:d}},_footer:function(){var a=this.options;if(""!=a.help&&this.form.$el.append(e.help(a)),a.citations){var b=$(""),c=new f.ToolCitationCollection;c.tool_id=a.id;var d=new g.CitationListView({el:b,collection:c});d.render(),c.fetch(),this.form.$el.append(b)}}})});
+define(["utils/utils","utils/deferred","mvc/ui/ui-misc","mvc/form/form-view","mvc/tools/tools-template","mvc/citation/citation-model","mvc/citation/citation-view"],function(a,b,c,d,e,f,g){return Backbone.View.extend({initialize:function(c){this.options=a.merge(c,{}),this.setElement(""),this.deferred=new b,c.inputs?this._buildForm(c):this._buildModel(c,!0)},_buildForm:function(b){var c=this;this.options=a.merge(b,this.options),this.options=a.merge({icon:"fa-wrench",title:""+b.name+" "+b.description+" (Galaxy Tool Version "+b.version+")",operations:this._operations(),onchange:function(){c.deferred.reset(),c.deferred.execute(function(){c._updateModel()})}},this.options),this.options.customize&&this.options.customize(this.options),this.form=new d(this.options),this._footer(),this.$el.empty(),this.$el.append(this.form.$el)},_buildModel:function(b,d){var e=this;if(this.options.id=b.id,this.options.version=b.version,b.job_id)f=Galaxy.root+"api/jobs/"+b.job_id+"/build_for_rerun";else{var f=Galaxy.root+"api/tools/"+b.id+"/build?";b.version&&(f+="tool_version="+b.version+"&"),Galaxy.params&&Galaxy.params.tool_id==b.id&&_.each(Galaxy.params,function(a,b){-1==["tool_version","tool_id"].indexOf(b)&&(f+=b+"="+a+"&")})}var g=this.deferred.register();a.request({type:"GET",url:f,success:function(a){e._buildForm(a.tool_model||a),!d&&e.form.message.update({status:"success",message:"Now you are using '"+e.options.name+"' version "+e.options.version+".",persistent:!1}),e.deferred.done(g)},error:function(a){e.deferred.done(g);var b=a.error||a.err_msg||"Uncaught error.";e.$el.is(":empty")?e.$el.prepend(new c.Message({message:b,status:"danger",persistent:!0}).$el):Galaxy.modal.show({title:"Tool request failed",body:b,buttons:{Close:function(){Galaxy.modal.hide()}}})}})},_updateModel:function(){var b=this.options.update_url||Galaxy.root+"api/tools/"+this.options.id+"/build",c=this,d=this.form,e={tool_id:this.options.id,tool_version:this.options.version,inputs:$.extend(!0,{},c.form.data.create())};d.wait(!0);var f=this.deferred.register();a.request({type:"POST",url:b,data:e,success:function(a){c.form.update(a.tool_model||a),c.options.update&&c.options.update(a),d.wait(!1),c.deferred.done(f)},error:function(a){c.deferred.done(f)}})},_operations:function(){var a=this,b=this.options,d=new c.ButtonMenu({icon:"fa-cubes",title:!b.narrow&&"Versions"||null,tooltip:"Select another tool version"});if(!b.is_workflow&&b.versions&&b.versions.length>1)for(var f in b.versions){var g=b.versions[f];g!=b.version&&d.addMenu({title:"Switch to "+g,version:g,icon:"fa-cube",onclick:function(){var c=b.id.replace(b.version,this.version),d=this.version;a.deferred.reset(),a.deferred.execute(function(){a._buildModel({id:c,version:d})})}})}else d.$el.hide();var h=new c.ButtonMenu({icon:"fa-caret-down",title:!b.narrow&&"Options"||null,tooltip:"View available options"});return b.biostar_url&&(h.addMenu({icon:"fa-question-circle",title:"Question?",tooltip:"Ask a question about this tool (Biostar)",onclick:function(){window.open(b.biostar_url+"/p/new/post/")}}),h.addMenu({icon:"fa-search",title:"Search",tooltip:"Search help for this tool (Biostar)",onclick:function(){window.open(b.biostar_url+"/local/search/page/?q="+b.name)}})),h.addMenu({icon:"fa-share",title:"Share",tooltip:"Share this tool",onclick:function(){prompt("Copy to clipboard: Ctrl+C, Enter",window.location.origin+Galaxy.root+"root?tool_id="+b.id)}}),Galaxy.user&&Galaxy.user.get("is_admin")&&h.addMenu({icon:"fa-download",title:"Download",tooltip:"Download this tool",onclick:function(){window.location.href=Galaxy.root+"api/tools/"+b.id+"/download"}}),b.requirements&&b.requirements.length>0&&h.addMenu({icon:"fa-info-circle",title:"Requirements",tooltip:"Display tool requirements",onclick:function(){this.visible?(this.visible=!1,a.form.message.update({message:""})):(this.visible=!0,a.form.message.update({persistent:!0,message:e.requirements(b),status:"info"}))}}),b.sharable_url&&h.addMenu({icon:"fa-external-link",title:"See in Tool Shed",tooltip:"Access the repository",onclick:function(){window.open(b.sharable_url)}}),{menu:h,versions:d}},_footer:function(){var a=this.options;if(""!=a.help&&this.form.$el.append(e.help(a)),a.citations){var b=$(""),c=new f.ToolCitationCollection;c.tool_id=a.id;var d=new g.CitationListView({el:b,collection:c});d.render(),c.fetch(),this.form.$el.append(b)}}})});
//# sourceMappingURL=../../../maps/mvc/tools/tools-form-base.js.map
\ No newline at end of file
diff --git a/static/scripts/mvc/tools/tools-form.js b/static/scripts/mvc/tools/tools-form.js
index 66cb20ec426..d7b952222c8 100644
--- a/static/scripts/mvc/tools/tools-form.js
+++ b/static/scripts/mvc/tools/tools-form.js
@@ -1,2 +1,2 @@
-define(["utils/utils","mvc/ui/ui-misc","mvc/tools/tools-form-base","mvc/tools/tools-jobs"],function(a,b,c,d){var e=c.extend({initialize:function(e){var f=this,g=new b.Button({icon:"fa-check",tooltip:"Execute: "+e.name,title:"Execute",cls:"btn btn-primary",floating:"clear",onclick:function(){g.wait(),f.form.portlet.disable(),d.submit(f.form,f.options,function(){g.unwait(),f.form.portlet.enable()})}});e.job_id&&e.job_remap&&(e.inputs.rerun_remap_job_id={label:"Resume dependencies from this job",name:"rerun_remap_job_id",type:"select",display:"radio",ignore:"__ignore__",value:"__ignore__",options:[["Yes",e.job_id],["No","__ignore__"]],help:"The previous run of this tool failed and other tools were waiting for it to finish successfully. Use this option to resume those tools using the new output(s) of this tool run."}),e=a.merge(e,{buttons:{execute:g}}),c.prototype.initialize.call(this,e)}});return{View:e}});
+define(["utils/utils","mvc/ui/ui-misc","mvc/tools/tools-form-base","mvc/tools/tools-jobs"],function(a,b,c,d){var e=c.extend({initialize:function(e){var f=this;c.prototype.initialize.call(this,a.merge({customize:function(a){a.buttons={execute:execute_btn=new b.Button({icon:"fa-check",tooltip:"Execute: "+a.name+" ("+a.version+")",title:"Execute",cls:"btn btn-primary",floating:"clear",onclick:function(){execute_btn.wait(),f.form.portlet.disable(),d.submit(f.form,a,function(){execute_btn.unwait(),f.form.portlet.enable()})}})},a.job_id&&a.job_remap&&(a.inputs.rerun_remap_job_id={label:"Resume dependencies from this job",name:"rerun_remap_job_id",type:"select",display:"radio",ignore:"__ignore__",value:"__ignore__",options:[["Yes",a.job_id],["No","__ignore__"]],help:"The previous run of this tool failed and other tools were waiting for it to finish successfully. Use this option to resume those tools using the new output(s) of this tool run."})}},e))}});return{View:e}});
//# sourceMappingURL=../../../maps/mvc/tools/tools-form.js.map
\ No newline at end of file
diff --git a/templates/webapps/galaxy/tool_form.mako b/templates/webapps/galaxy/tool_form.mako
deleted file mode 100644
index 12b6d78e1dd..00000000000
--- a/templates/webapps/galaxy/tool_form.mako
+++ /dev/null
@@ -1,26 +0,0 @@
-<%inherit file="/base.mako"/>
-
-${h.js("libs/bibtex", "libs/jquery/jquery-ui")}
-${h.css('base', 'jquery-ui/smoothness/jquery-ui')}
-
-<%
- ## TEMPORARY: create tool dictionary in mako while both tool forms are in use.
- ## This avoids making two separate requests since the classic form requires the mako anyway.
- params = dict(trans.request.params)
- params['__dataset_id__'] = params.get('id', None)
- params['__job_id__'] = params.get('job_id', None)
- self.form_config = tool.to_json(trans, params)
- self.form_config.update({
- 'id' : tool.id,
- 'job_id' : trans.security.encode_id( job.id ) if job else None,
- 'history_id' : trans.security.encode_id( trans.history.id )
- })
-%>
-
\ No newline at end of file
diff --git a/test/unit/tools/test_execution.py b/test/unit/tools/test_execution.py
index cab7989e85b..e7d4ec38778 100644
--- a/test/unit/tools/test_execution.py
+++ b/test/unit/tools/test_execution.py
@@ -399,13 +399,13 @@ class ToolExecutionTestCase( TestCase, tools_support.UsesApp, tools_support.Uses
return hdca
def __assert_rerenders_tool_without_errors( self, template, template_vars ):
- assert template == "tool_form.mako"
+ assert template == ""
self.__assert_no_errors( template_vars )
state = template_vars[ "tool_state" ]
return state
def __assert_exeuted( self, template, template_vars ):
- if template == "tool_form.mako":
+ if template == "":
self.__assert_no_errors( template_vars )
self.assertEquals(
template,
@@ -414,7 +414,7 @@ class ToolExecutionTestCase( TestCase, tools_support.UsesApp, tools_support.Uses
)
def __assert_no_errors( self, template_vars ):
- assert "errors" in template_vars, "tool_form.mako rendered without errors defintion."
+ assert "errors" in template_vars, "Tool form rendered without error definition."
errors = template_vars[ "errors" ]
assert not errors, "Template rendered unexpected errors - %s" % errors