mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #115 from guerler/revise_validation
Revise late validation of tool parameters
This commit is contained in:
@@ -84,7 +84,7 @@ define(['utils/utils',
|
||||
/** Data input field
|
||||
*/
|
||||
_fieldData: function(input_def) {
|
||||
if (!this.app.options.is_dynamic) {
|
||||
if (this.app.options.is_workflow) {
|
||||
input_def.info = 'Data input \'' + input_def.name + '\' (' + Utils.textify(input_def.extensions.toString()) + ')';
|
||||
input_def.value = null;
|
||||
return this._fieldHidden(input_def);
|
||||
@@ -107,7 +107,7 @@ define(['utils/utils',
|
||||
*/
|
||||
_fieldSelect: function (input_def) {
|
||||
// show text field in if dynamic fields are disabled e.g. in workflow editor
|
||||
if (!this.app.options.is_dynamic && input_def.is_dynamic) {
|
||||
if (input_def.options.length == 0 && this.app.options.is_workflow) {
|
||||
return this._fieldText(input_def);
|
||||
}
|
||||
|
||||
@@ -157,10 +157,10 @@ define(['utils/utils',
|
||||
*/
|
||||
_fieldDrilldown: function (input_def) {
|
||||
// show text field in if dynamic fields are disabled e.g. in workflow editor
|
||||
if (!this.app.options.is_dynamic && input_def.is_dynamic) {
|
||||
if (input_def.options.length == 0 && this.app.options.is_workflow) {
|
||||
return this._fieldText(input_def);
|
||||
}
|
||||
|
||||
|
||||
// create drill down field
|
||||
var self = this;
|
||||
return new Ui.Drilldown.View({
|
||||
@@ -185,13 +185,16 @@ define(['utils/utils',
|
||||
if (!Utils.validate(input_def.value)) {
|
||||
input_def.value = '';
|
||||
} else {
|
||||
if (input_def.value instanceof Array) {
|
||||
input_def.value = value.toString();
|
||||
} else {
|
||||
input_def.value = String(input_def.value).replace(/[\[\]'"\s]/g, '');
|
||||
if (input_def.multiple) {
|
||||
input_def.value = input_def.value.replace(/,/g, '\n');
|
||||
if ($.isArray(input_def.value)) {
|
||||
var str_value = '';
|
||||
for (var i in input_def.value) {
|
||||
str_value += String(input_def.value[i]);
|
||||
if (!input_def.multiple) {
|
||||
break;
|
||||
}
|
||||
str_value += '\n';
|
||||
}
|
||||
input_def.value = str_value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@ define(['utils/utils', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc',
|
||||
initialize: function(options) {
|
||||
// options
|
||||
this.optionsDefault = {
|
||||
// uses dynamic fields instead of text fields
|
||||
is_dynamic : true,
|
||||
// uses workflow editor mode i.e. text instead of select fields
|
||||
is_workflow : false,
|
||||
// shows form in narrow view mode
|
||||
narrow : false,
|
||||
// shows errors on start
|
||||
|
||||
@@ -24,7 +24,7 @@ define(['utils/utils', 'mvc/tools/tools-form-base'],
|
||||
text_disable : 'Set at Runtime',
|
||||
|
||||
// configure workflow style
|
||||
is_dynamic : false,
|
||||
is_workflow : true,
|
||||
narrow : true,
|
||||
initial_errors : true,
|
||||
cls : 'ui-portlet-narrow',
|
||||
@@ -37,13 +37,6 @@ define(['utils/utils', 'mvc/tools/tools-form-base'],
|
||||
}
|
||||
});
|
||||
|
||||
// declare fields as optional
|
||||
Utils.deepeach(options.inputs, function(item) {
|
||||
if (item.type) {
|
||||
item.optional = (['data', 'data_hidden', 'hidden', 'repeat', 'conditional']).indexOf(item.type) == -1;
|
||||
}
|
||||
});
|
||||
|
||||
// declare conditional fields as not optional
|
||||
Utils.deepeach(options.inputs, function(item) {
|
||||
if (item.type) {
|
||||
|
||||
@@ -2257,7 +2257,7 @@ class Tool( object, Dictifiable ):
|
||||
|
||||
return tool_dict
|
||||
|
||||
def to_json (self, trans, kwd={}, is_dynamic=True):
|
||||
def to_json (self, trans, kwd={}, is_workflow=False):
|
||||
"""
|
||||
Recursively creates a tool dictionary containing repeats, dynamic options and updated states.
|
||||
"""
|
||||
@@ -2369,7 +2369,7 @@ class Tool( object, Dictifiable ):
|
||||
error = 'State validation failed.'
|
||||
|
||||
# skip dynamic fields if deactivated
|
||||
if not is_dynamic and input.is_dynamic:
|
||||
if is_workflow and input.is_dynamic:
|
||||
return [value, None]
|
||||
|
||||
# validate value content
|
||||
@@ -2463,29 +2463,31 @@ class Tool( object, Dictifiable ):
|
||||
elif input.type == 'section':
|
||||
iterate( tool_dict['inputs'], input.inputs, group_state, other_values )
|
||||
else:
|
||||
# create input dictionary, try to pass other_values if to_dict function supports it e.g. dynamic options
|
||||
# identify name
|
||||
input_name = tool_dict.get('name')
|
||||
|
||||
# expand input dictionary incl. repeats and dynamic_parameters
|
||||
try:
|
||||
tool_dict = input.to_dict(trans, other_values=other_values)
|
||||
except Exception:
|
||||
log.exception('tools::to_json() - Skipping parameter expansion for %s.' % input_name)
|
||||
pass
|
||||
|
||||
# identify name
|
||||
input_name = tool_dict.get('name')
|
||||
if input_name:
|
||||
# backup default value
|
||||
try:
|
||||
tool_dict['default_value'] = input.get_initial_value(trans, other_values)
|
||||
except Exception:
|
||||
# get initial value failed due to improper late validation
|
||||
tool_dict['default_value'] = None
|
||||
pass
|
||||
# backup default value
|
||||
try:
|
||||
tool_dict['default_value'] = input.get_initial_value(trans, other_values)
|
||||
except Exception:
|
||||
log.exception('tools::to_json() - Getting initial value failed %s.' % input_name)
|
||||
# get initial value failed due to improper late validation
|
||||
tool_dict['default_value'] = None
|
||||
pass
|
||||
|
||||
# update input value from tool state
|
||||
tool_dict['value'] = state_inputs.get(input_name, tool_dict['default_value'])
|
||||
# update input value from tool state
|
||||
tool_dict['value'] = state_inputs.get(input_name, tool_dict['default_value'])
|
||||
|
||||
# sanitize values
|
||||
sanitize(tool_dict, 'value')
|
||||
sanitize(tool_dict, 'default_value')
|
||||
# sanitize values
|
||||
sanitize(tool_dict, 'value')
|
||||
sanitize(tool_dict, 'default_value')
|
||||
|
||||
# backup final input dictionary
|
||||
group_inputs[input_index] = tool_dict
|
||||
|
||||
@@ -64,12 +64,10 @@ def check_param( trans, param, incoming_value, param_values, source='html' ):
|
||||
value = param.from_html( value, trans, param_values )
|
||||
else:
|
||||
value = param.from_json( value, trans, param_values )
|
||||
# Only validate if late validation is not needed
|
||||
if not param.need_late_validation( trans, param_values ):
|
||||
# Allow the value to be converted if necessary
|
||||
filtered_value = param.filter_value( value, trans, param_values )
|
||||
# Then do any further validation on the value
|
||||
param.validate( filtered_value, trans.history )
|
||||
# Allow the value to be converted if necessary
|
||||
filtered_value = param.filter_value( value, trans, param_values )
|
||||
# Then do any further validation on the value
|
||||
param.validate( filtered_value, trans.history )
|
||||
elif value is None and isinstance( param, SelectToolParameter ):
|
||||
# An empty select list or column list
|
||||
param.validate( value, trans.history )
|
||||
|
||||
@@ -203,10 +203,7 @@ class ToolParameter( object, Dictifiable ):
|
||||
for validator in self.validators:
|
||||
validator.validate( value, history )
|
||||
|
||||
def need_late_validation( self, trans, context ):
|
||||
return False
|
||||
|
||||
def to_dict( self, trans, view='collection', value_mapper=None ):
|
||||
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
|
||||
""" to_dict tool parameter. This can be overridden by subclasses. """
|
||||
tool_dict = super( ToolParameter, self ).to_dict()
|
||||
#TODO: wrapping html as it causes a lot of errors on subclasses - needs histories, etc.
|
||||
@@ -290,7 +287,7 @@ class TextToolParameter( ToolParameter ):
|
||||
def get_initial_value( self, trans, context, history=None ):
|
||||
return self.value
|
||||
|
||||
def to_dict( self, trans, view='collection', value_mapper=None ):
|
||||
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
|
||||
d = super(TextToolParameter, self).to_dict(trans)
|
||||
d['area'] = self.area
|
||||
d['size'] = self.size
|
||||
@@ -495,7 +492,7 @@ class BooleanToolParameter( ToolParameter ):
|
||||
else:
|
||||
return self.falsevalue
|
||||
|
||||
def to_dict( self, trans, view='collection', value_mapper=None ):
|
||||
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
|
||||
d = super(BooleanToolParameter, self).to_dict(trans)
|
||||
d['value'] = self.checked
|
||||
d['truevalue'] = self.truevalue
|
||||
@@ -705,7 +702,7 @@ class BaseURLToolParameter( ToolParameter ):
|
||||
# BaseURLToolParameters are ultimately "hidden" parameters
|
||||
return None
|
||||
|
||||
def to_dict( self, trans, view='collection', value_mapper=None ):
|
||||
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
|
||||
d = super( BaseURLToolParameter, self ).to_dict( trans )
|
||||
d['value'] = self.get_value( trans )
|
||||
return d
|
||||
@@ -852,9 +849,9 @@ class SelectToolParameter( ToolParameter ):
|
||||
def get_html_field( self, trans=None, value=None, context={} ):
|
||||
# Dynamic options are not yet supported in workflow, allow
|
||||
# specifying the value as text for now.
|
||||
if self.need_late_validation( trans, context ):
|
||||
if value is not None:
|
||||
assert isinstance( value, UnvalidatedValue ), "Late validation needed for '%s', but provided value (%s) is not of type UnvalidatedValue (%s)." % ( self.name, value, type( value ) )
|
||||
options = list(self.get_options( trans, context ))
|
||||
if len(list(options)) == 0 and (trans is None or trans.workflow_building_mode):
|
||||
if isinstance( value, UnvalidatedValue ):
|
||||
value = value.value
|
||||
if self.multiple:
|
||||
if value is None:
|
||||
@@ -870,7 +867,6 @@ class SelectToolParameter( ToolParameter ):
|
||||
# We could have an unvalidated value here when e.g. running a workflow.
|
||||
value = [ val.value if isinstance( val, UnvalidatedValue ) else val for val in value ]
|
||||
field = form_builder.SelectField( self.name, self.multiple, self.display, self.refresh_on_change, refresh_on_change_values=self.refresh_on_change_values )
|
||||
options = self.get_options( trans, context )
|
||||
for text, optval, selected in options:
|
||||
if isinstance( optval, UnvalidatedValue ):
|
||||
optval = optval.value
|
||||
@@ -881,7 +877,8 @@ class SelectToolParameter( ToolParameter ):
|
||||
return field
|
||||
|
||||
def from_html( self, value, trans=None, context={} ):
|
||||
if self.need_late_validation( trans, context ):
|
||||
legal_values = self.get_legal_values( trans, context )
|
||||
if len(list(legal_values)) == 0 and (trans is None or trans.workflow_building_mode):
|
||||
if self.multiple:
|
||||
# While it is generally allowed that a select value can be '',
|
||||
# we do not allow this to be the case in a dynamically
|
||||
@@ -896,7 +893,6 @@ class SelectToolParameter( ToolParameter ):
|
||||
# use \r\n to separate lines.
|
||||
value = value.split()
|
||||
return UnvalidatedValue( value )
|
||||
legal_values = self.get_legal_values( trans, context )
|
||||
if not legal_values and self.optional:
|
||||
return None
|
||||
if not legal_values:
|
||||
@@ -963,61 +959,12 @@ class SelectToolParameter( ToolParameter ):
|
||||
return UnvalidatedValue( value["value"] )
|
||||
return super( SelectToolParameter, self ).value_from_basic( value, app, ignore_errors=ignore_errors )
|
||||
|
||||
def need_late_validation( self, trans, context ):
|
||||
"""
|
||||
Determine whether we need to wait to validate this parameters value
|
||||
given the current state. For parameters with static options this is
|
||||
always false (can always validate immediately). For parameters with
|
||||
dynamic options, we need to check whether the other parameters which
|
||||
determine what options are valid have been set. For the old style
|
||||
dynamic options which do not specify dependencies, this is always true
|
||||
(must validate at runtime).
|
||||
"""
|
||||
# Option list is statically defined, never need late validation
|
||||
if not self.is_dynamic:
|
||||
return False
|
||||
# Old style dynamic options, no dependency information so there isn't
|
||||
# a lot we can do: if we're dealing with workflows, have to assume
|
||||
# late validation no matter what.
|
||||
if self.dynamic_options is not None and ( trans is None or trans.workflow_building_mode ):
|
||||
return True
|
||||
# If we got this far, we can actually look at the dependencies
|
||||
# to see if their values will not be available until runtime.
|
||||
for dep_name in self.get_dependencies():
|
||||
# This may not be completely correct, but it's possible to go
|
||||
# through the layers indicated below without assigning dep_value,
|
||||
# which is even worse. TODO fix it?
|
||||
dep_value = None
|
||||
if dep_name in context:
|
||||
dep_value = context[ dep_name ]
|
||||
else:
|
||||
# Quick hack to check deeper in the context.
|
||||
# TODO: Context should really be scoped and the correct subset passed along.
|
||||
# This happens specifically in all the GATK tools, the way the reference genome is handled.
|
||||
for layer in context.itervalues():
|
||||
if isinstance( layer, dict ) and self.name in layer and dep_name in layer:
|
||||
dep_value = layer[dep_name]
|
||||
# Dependency on a dataset that does not yet exist
|
||||
if isinstance( dep_value, DummyDataset ):
|
||||
return True
|
||||
# Dependency on a value that has not been checked
|
||||
if isinstance( dep_value, UnvalidatedValue ):
|
||||
return True
|
||||
# Dependency on a value that does not yet exist
|
||||
if isinstance( dep_value, RuntimeValue ):
|
||||
return True
|
||||
#dataset not ready yet
|
||||
if hasattr( self, 'ref_input' ) and isinstance( dep_value, self.tool.app.model.HistoryDatasetAssociation ) and ( dep_value.is_pending or not dep_value.datatype.matches_any( self.ref_input.formats ) ):
|
||||
return True
|
||||
# Dynamic, but all dependenceis are known and have values
|
||||
return False
|
||||
|
||||
def get_initial_value( self, trans, context, history=None ):
|
||||
# More working around dynamic options for workflow
|
||||
if self.need_late_validation( trans, context ):
|
||||
options = list( self.get_options( trans, context ) )
|
||||
if len(options) == 0 and (trans is None or trans.workflow_building_mode):
|
||||
# Really the best we can do?
|
||||
return UnvalidatedValue( None )
|
||||
options = list( self.get_options( trans, context ) )
|
||||
value = [ optval for _, optval, selected in options if selected ]
|
||||
if len( value ) == 0:
|
||||
if not self.multiple and options:
|
||||
@@ -1143,7 +1090,7 @@ class GenomeBuildParameter( SelectToolParameter ):
|
||||
def get_legal_values( self, trans, other_values ):
|
||||
return set( dbkey for dbkey, _ in self._get_dbkey_names( trans=trans ) )
|
||||
|
||||
def to_dict( self, trans, view='collection', value_mapper=None ):
|
||||
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
|
||||
# skip SelectToolParameter (the immediate parent) bc we need to get options in a different way here
|
||||
d = ToolParameter.to_dict( self, trans )
|
||||
|
||||
@@ -1266,8 +1213,12 @@ class ColumnListParameter( SelectToolParameter ):
|
||||
return []
|
||||
column_list = None
|
||||
for dataset in util.listify( dataset ):
|
||||
# Handle columns not available.
|
||||
if not dataset.metadata.columns:
|
||||
unavailable = False
|
||||
if not hasattr(dataset, 'metadata'):
|
||||
unavailable = True
|
||||
elif not dataset.metadata.columns:
|
||||
unavailable = True
|
||||
if unavailable:
|
||||
default_column_list = []
|
||||
if self.accept_default:
|
||||
default_column_list.append( self.default_value or '1' )
|
||||
@@ -1327,9 +1278,6 @@ class ColumnListParameter( SelectToolParameter ):
|
||||
|
||||
def get_initial_value( self, trans, context, history=None ):
|
||||
if self.default_value is not None:
|
||||
# dataset not ready / in workflow / etc
|
||||
if self.need_late_validation( trans, context ):
|
||||
return UnvalidatedValue( self.default_value )
|
||||
return self.default_value
|
||||
return SelectToolParameter.get_initial_value( self, trans, context )
|
||||
|
||||
@@ -1339,33 +1287,6 @@ class ColumnListParameter( SelectToolParameter ):
|
||||
def get_dependencies( self ):
|
||||
return [ self.data_ref ]
|
||||
|
||||
def need_late_validation( self, trans, context ):
|
||||
if super( ColumnListParameter, self ).need_late_validation( trans, context ):
|
||||
return True
|
||||
if self.data_ref not in context:
|
||||
return False
|
||||
# Get the selected dataset if selected
|
||||
referent = context[ self.data_ref ]
|
||||
if getattr( referent, 'history_content_type', None ) == "dataset_collection":
|
||||
# TODO: also check datasets have been populated.
|
||||
referent = referent.collection.dataset_instances
|
||||
|
||||
datasets = util.listify( referent )
|
||||
for dataset in datasets:
|
||||
if dataset:
|
||||
# Check if metadata is available
|
||||
if not hasattr(dataset, 'metadata'):
|
||||
return True
|
||||
|
||||
# Check if the dataset does not have the expected metadata for columns
|
||||
if not dataset.metadata.columns:
|
||||
# Only allow late validation if the dataset is not yet ready
|
||||
# (since we have reason to expect the metadata to be ready eventually)
|
||||
if dataset.is_pending or not dataset.datatype.matches_any( self.ref_input.formats ):
|
||||
return True
|
||||
# No late validation
|
||||
return False
|
||||
|
||||
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
|
||||
# call parent to_dict
|
||||
d = super( ColumnListParameter, self ).to_dict( trans, other_values=other_values)
|
||||
@@ -1569,9 +1490,9 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
|
||||
def get_html_field( self, trans=None, value=None, other_values={} ):
|
||||
# Dynamic options are not yet supported in workflow, allow
|
||||
# specifying the value as text for now.
|
||||
if self.need_late_validation( trans, other_values ):
|
||||
if value is not None:
|
||||
assert isinstance( value, UnvalidatedValue ), "Late validation needed for '%s', but provided value (%s) is not of type UnvalidatedValue (%s)." % ( self.name, value, type( value ) )
|
||||
options = self.get_options( trans, value, other_values )
|
||||
if len(list(options)) == 0 and (trans is None or trans.workflow_building_mode):
|
||||
if isinstance( value, UnvalidatedValue ):
|
||||
value = value.value
|
||||
if self.multiple:
|
||||
if value is None:
|
||||
@@ -1581,10 +1502,11 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
|
||||
return form_builder.TextArea( self.name, value=value )
|
||||
else:
|
||||
return form_builder.TextField( self.name, value=(value or "") )
|
||||
return form_builder.DrillDownField( self.name, self.multiple, self.display, self.refresh_on_change, self.get_options( trans, value, other_values ), value, refresh_on_change_values=self.refresh_on_change_values )
|
||||
return form_builder.DrillDownField( self.name, self.multiple, self.display, self.refresh_on_change, options, value, refresh_on_change_values=self.refresh_on_change_values )
|
||||
|
||||
def from_html( self, value, trans=None, other_values={} ):
|
||||
if self.need_late_validation( trans, other_values ):
|
||||
legal_values = self.get_legal_values( trans, other_values )
|
||||
if len(list(legal_values)) == 0 and (trans is None or trans.workflow_building_mode):
|
||||
if self.multiple:
|
||||
if value == '': # No option selected
|
||||
value = None
|
||||
@@ -1600,7 +1522,6 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
|
||||
if not( self.repeat ) and len( value ) > 1:
|
||||
assert self.multiple, "Multiple values provided but parameter %s is not expecting multiple values" % self.name
|
||||
rval = []
|
||||
legal_values = self.get_legal_values( trans, other_values )
|
||||
assert legal_values, "Parameter %s requires a value, but has no legal values defined" % self.name
|
||||
for val in value:
|
||||
if val not in legal_values:
|
||||
@@ -1656,11 +1577,11 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
|
||||
initial_values.append( option['value'] )
|
||||
recurse_options( initial_values, option['options'] )
|
||||
# More working around dynamic options for workflow
|
||||
if self.need_late_validation( trans, context ):
|
||||
# Really the best we can do?
|
||||
options = self.get_options( trans=trans, other_values=context )
|
||||
if len(list(options)) == 0 and (trans is None or trans.workflow_building_mode):
|
||||
return UnvalidatedValue( None )
|
||||
initial_values = []
|
||||
recurse_options( initial_values, self.get_options( trans=trans, other_values=context ) )
|
||||
recurse_options( initial_values, options )
|
||||
if len( initial_values ) == 0:
|
||||
initial_values = None
|
||||
return initial_values
|
||||
@@ -2120,11 +2041,6 @@ class DataToolParameter( BaseDataToolParameter ):
|
||||
else:
|
||||
validator.validate( value, history )
|
||||
|
||||
def need_late_validation( self, trans, context ):
|
||||
if trans is None or trans.workflow_building_mode:
|
||||
return True
|
||||
return False
|
||||
|
||||
def get_dependencies( self ):
|
||||
"""
|
||||
Get the *names* of the other params this param depends on.
|
||||
|
||||
@@ -331,7 +331,7 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn
|
||||
} )
|
||||
|
||||
# create tool model and default tool state (if missing)
|
||||
tool_model = module.tool.to_json(trans, tool_inputs, is_dynamic=False)
|
||||
tool_model = module.tool.to_json(trans, tool_inputs, is_workflow=True)
|
||||
module.state.inputs = copy.deepcopy(tool_model['state_inputs'])
|
||||
return {
|
||||
'tool_model' : tool_model,
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"form-parameters.js","sources":["../../../src/mvc/form/form-parameters.js"],"names":["define","Utils","Ui","SelectContent","SelectLibrary","ColorPicker","Backbone","Model","extend","types","text","select","data_column","genomebuild","data","data_collection","integer","float","boolean","drill_down","color","hidden","hidden_data","baseurl","library_data","initialize","app","this","create","input_def","undefined","value","default_value","field","fieldClass","type","call","incompatible","options","_fieldSelect","_fieldText","console","debug","_fieldData","is_dynamic","info","name","textify","extensions","toString","_fieldHidden","self","View","id","optional","multiple","onchange","trigger","error_text","i","option","push","label","SelectClass","Select","display","Checkbox","Radio","searchable","_fieldDrilldown","Drilldown","area","validate","Array","String","replace","Input","_fieldSlider","Slider","precise","min","max","Hidden","_fieldBoolean","RadioButton","_fieldColor","_fieldLibrary"],"mappings":"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"}
|
||||
{"version":3,"file":"form-parameters.js","sources":["../../../src/mvc/form/form-parameters.js"],"names":["define","Utils","Ui","SelectContent","SelectLibrary","ColorPicker","Backbone","Model","extend","types","text","select","data_column","genomebuild","data","data_collection","integer","float","boolean","drill_down","color","hidden","hidden_data","baseurl","library_data","initialize","app","this","create","input_def","undefined","value","default_value","field","fieldClass","type","call","incompatible","options","_fieldSelect","_fieldText","console","debug","_fieldData","is_workflow","info","name","textify","extensions","toString","_fieldHidden","self","View","id","optional","multiple","onchange","trigger","length","error_text","i","option","push","label","SelectClass","Select","display","Checkbox","Radio","searchable","_fieldDrilldown","Drilldown","area","validate","$","isArray","str_value","String","Input","_fieldSlider","Slider","precise","min","max","Hidden","_fieldBoolean","RadioButton","_fieldColor","_fieldLibrary"],"mappings":"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"}
|
||||
@@ -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_dynamic","narrow","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","unwait","reciept","$el","empty","append","highlight","message","silent","input_element","element_list","error","$","animate","scrollTop","offset","top","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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"}
|
||||
{"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","narrow","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","$","animate","scrollTop","offset","top","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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"}
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"tools-form-workflow.js","sources":["../../../src/mvc/tools/tools-form-workflow.js"],"names":["define","Utils","ToolFormBase","View","extend","initialize","options","this","node","workflow","active_node","console","debug","post_job_actions","merge","text_enable","text_disable","is_dynamic","narrow","initial_errors","cls","update_url","galaxy_config","root","update","data","self","update_field_data","form","errors","tool_model","deepeach","inputs","item","type","optional","indexOf","test_param","get","url","cache","success","datatypes","_makeSections","prototype","call","uid","label","name","area","help","value","annotation","output_id","output_terminals","Object","keys","String","Boolean","ignore","payload","host","window","location","i","_makeSection","visit","head","head_list","push","input","action","argument","p_id","p","d","j","expand","action_arguments","slice","extensions","key",1,"sort","a","b","unshift","input_config","title"],"mappings":"AAGAA,QAAQ,cAAe,6BACnB,SAASC,EAAOC,GAGhB,GAAIC,GAAOD,EAAaE,QACpBC,WAAY,SAASC,GAGjB,GADAC,KAAKC,KAAOC,SAASC,aAChBH,KAAKC,KAEN,WADAG,SAAQC,MAAM,0EAKlBL,MAAKM,iBAAmBN,KAAKC,KAAKK,qBAGlCP,EAAUL,EAAMa,MAAMR,GAElBS,YAAkB,iBAClBC,aAAkB,iBAGlBC,YAAkB,EAClBC,QAAkB,EAClBC,gBAAkB,EAClBC,IAAkB,oBAGlBC,WAAkBC,cAAcC,KAAO,6BACvCC,OAAkB,SAASC,GACvBC,EAAKlB,KAAKmB,kBAAkBF,GAC5BC,EAAKE,KAAKC,OAAOJ,GAAQA,EAAKK,eAKtC7B,EAAM8B,SAASzB,EAAQ0B,OAAQ,SAASC,GAChCA,EAAKC,OACLD,EAAKE,SAA8F,KAAjF,OAAQ,cAAe,SAAU,SAAU,eAAgBC,QAAQH,EAAKC,SAKlGjC,EAAM8B,SAASzB,EAAQ0B,OAAQ,SAASC,GAChCA,EAAKC,MACY,eAAbD,EAAKC,OACLD,EAAKI,WAAWF,UAAW,IAMvC,IAAIT,GAAOnB,IACXN,GAAMqC,KACFC,IAAUjB,cAAcC,KAAO,gBAC/BiB,OAAU,EACVC,QAAU,SAASC,GACfhB,EAAKgB,UAAYA,EACjBhB,EAAKiB,cAAcrC,EAAQ0B,QAC3B9B,EAAa0C,UAAUvC,WAAWwC,KAAKnB,EAAMpB,OAOzDqC,cAAe,SAASX,GAEpBA,EAAO/B,EAAM6C,QACTC,MAAU,qBACVC,KAAU,aACVd,KAAU,OACVe,MAAU,EACVC,KAAU,+EACVC,MAAU5C,KAAKC,KAAK4C,WAIxB,IAAIC,GAAY9C,KAAKC,KAAK8C,kBAAoBC,OAAOC,KAAKjD,KAAKC,KAAK8C,kBAAkB,EACtF,IAAID,EAAW,CAEXrB,EAAO/B,EAAM6C,QACTE,KAAc,QAAUK,EAAY,gBACpCN,MAAc,qBACdb,KAAc,UACdiB,MAAcM,OAAOC,QAAQnD,KAAKM,iBAAiB,cAAgBwC,KACnEM,OAAc,QACdT,KAAc,iEACdU,SACIC,KAAUC,OAAOC,SAASF,OAKlC7B,EAAO/B,EAAM6C,QACTE,KAAc,QAAUK,EAAY,8BACpCN,MAAc,iBACdb,KAAc,UACdiB,MAAcM,OAAOC,QAAQnD,KAAKM,iBAAiB,4BAA8BwC,KACjFM,OAAc,QACdT,KAAc,6EAIlB,KAAK,GAAIc,KAAKzD,MAAKC,KAAK8C,iBACpBtB,EAAO/B,EAAM6C,OAASvC,KAAK0D,aAAaD,KAOpDC,aAAc,SAASZ,GAuGnB,QAASa,GAAOC,EAAMC,GAClBA,EAAYA,MACZA,EAAUC,KAAKF,EACf,KAAK,GAAIH,KAAKG,GAAKnC,OAAQ,CACvB,GAAIsC,GAAQH,EAAKnC,OAAOgC,EACxB,IAAIM,EAAMC,OAAQ,CAQd,GANAD,EAAMtB,KAAO,QAAUK,EAAY,KAAOiB,EAAMC,OAC5CD,EAAME,WACNF,EAAMtB,MAAQ,KAAOsB,EAAME,UAI3BF,EAAMV,QACN,IAAK,GAAIa,KAAQH,GAAMV,QAAS,CAC5B,GAAIc,GAAIJ,EAAMV,QAAQa,EACtBH,GAAMV,QAAQU,EAAMtB,KAAO,KAAOyB,GAAQC,QACnCA,GAKf,GAAIC,GAAIjD,EAAKb,iBAAiByD,EAAMC,OAASlB,EAC7C,IAAIsB,EAAG,CAEH,IAAK,GAAIC,KAAKR,GACVA,EAAUQ,GAAGC,QAAS,CAKtBP,GAAMnB,MADNmB,EAAME,SACQG,EAAEG,kBAAoBH,EAAEG,iBAAiBR,EAAME,WAAaF,EAAMnB,MAElE,QAKtBmB,EAAMtC,QACNkC,EAAMI,EAAOF,EAAUW,MAAM,KA5IzC,GAAIC,KACJ,KAAKC,MAAO1E,MAAKmC,UACbsC,EAAWX,MACP,EAAI9D,KAAKmC,UAAUuC,KACnBC,EAAI3E,KAAKmC,UAAUuC,MAK3BD,GAAWG,KAAK,SAASC,EAAGC,GACxB,MAAOD,GAAErC,MAAQsC,EAAEtC,MAAQ,EAAIqC,EAAErC,MAAQsC,EAAEtC,MAAQ,GAAK,IAI5DiC,EAAWM,SACP,EAAI,YACJJ,EAAI,cAERF,EAAWM,SACP,EAAI,WACJJ,EAAI,aAERF,EAAWM,SACP,EAAI,kBACJJ,EAAI,aAIR,IAAIK,IACAC,MAAU,iBAAoBnC,EAAY,IAC1CnB,KAAU,UACVF,SACIuC,OAAc,sBACdC,SAAc,UACdzB,MAAc,iBACdb,KAAc,OACdiB,MAAc,GACdQ,OAAc,GACdT,KAAc,+JAEdqB,OAAc,uBACdC,SAAc,UACdzB,MAAc,kBACdb,KAAc,SACdyB,OAAc,YACdR,MAAc,YACd7C,QAAc0E,EACd9B,KAAc,+EAEdqB,OAAc,mBACdC,SAAc,OACdzB,MAAc,OACdb,KAAc,OACdiB,MAAc,GACdQ,OAAc,GACdT,KAAc,+CAEdsC,MAAU,iBACVtD,KAAU,UACVF,SACIuC,OAAc,kBACdC,SAAc,WACdzB,MAAc,eACdb,KAAc,UACdiB,MAAc,GACdQ,OAAc,KAEdY,OAAc,kBACdC,SAAc,WACdzB,MAAc,eACdb,KAAc,UACdiB,MAAc,GACdQ,OAAc,KAEdY,OAAc,kBACdC,SAAc,SACdzB,MAAc,aACdb,KAAc,UACdiB,MAAc,GACdQ,OAAc,KAEdY,OAAc,kBACdC,SAAc,YACdzB,MAAc,gBACdb,KAAc,UACdiB,MAAc,GACdQ,OAAc,KAEdY,OAAc,kBACdC,SAAc,UACdzB,MAAc,cACdb,KAAc,UACdiB,MAAc,GACdQ,OAAc,KAElBT,KAAU,8FAKdxB,EAAOnB,IA+CX,OAHA2D,GAAMqB,GAGCA,IAIf,QACIpF,KAAMA"}
|
||||
{"version":3,"file":"tools-form-workflow.js","sources":["../../../src/mvc/tools/tools-form-workflow.js"],"names":["define","Utils","ToolFormBase","View","extend","initialize","options","this","node","workflow","active_node","console","debug","post_job_actions","merge","text_enable","text_disable","is_workflow","narrow","initial_errors","cls","update_url","galaxy_config","root","update","data","self","update_field_data","form","errors","tool_model","deepeach","inputs","item","type","test_param","optional","get","url","cache","success","datatypes","_makeSections","prototype","call","uid","label","name","area","help","value","annotation","output_id","output_terminals","Object","keys","String","Boolean","ignore","payload","host","window","location","i","_makeSection","visit","head","head_list","push","input","action","argument","p_id","p","d","j","expand","action_arguments","slice","extensions","key",1,"sort","a","b","unshift","input_config","title"],"mappings":"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"}
|
||||
@@ -1,2 +1,2 @@
|
||||
define(["utils/utils","mvc/ui/ui-misc","mvc/form/form-select-content","mvc/ui/ui-select-library","mvc/ui/ui-color-picker"],function(a,b,c,d,e){return Backbone.Model.extend({types:{text:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider","float":"_fieldSlider","boolean":"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary"},initialize:function(a){this.app=a},create:function(a){void 0===a.value&&(a.value=null),void 0===a.default_value&&(a.default_value=a.value);var b=null,c=this.types[a.type];return c&&"function"==typeof this[c]&&(b=this[c].call(this,a)),b||(this.app.incompatible=!0,b=a.options?this._fieldSelect(a):this._fieldText(a),console.debug("tools-form::_addRow() : Auto matched field type ("+a.type+").")),void 0!==a.value&&b.value(a.value),b},_fieldData:function(b){if(!this.app.options.is_dynamic)return b.info="Data input '"+b.name+"' ("+a.textify(b.extensions.toString())+")",b.value=null,this._fieldHidden(b);var d=this;return new c.View(this.app,{id:"field-"+b.id,extensions:b.extensions,optional:b.optional,multiple:b.multiple,type:b.type,data:b.options,onchange:function(){d.app.trigger("change")}})},_fieldSelect:function(a){if(!this.app.options.is_dynamic&&a.is_dynamic)return this._fieldText(a);"data_column"==a.type&&(a.error_text="Missing columns in referenced dataset.");var c=[];for(var d in a.options){var e=a.options[d];c.push({label:e[0],value:e[1]})}var f=b.Select;switch(a.display){case"checkboxes":f=b.Checkbox;break;case"radio":f=b.Radio}var g=this;return new f.View({id:"field-"+a.id,data:c,error_text:a.error_text||"No options available",optional:a.optional&&null===a.default_value,multiple:a.multiple,optional:a.optional,searchable:a.searchable,onchange:function(){g.app.trigger("change")}})},_fieldDrilldown:function(a){if(!this.app.options.is_dynamic&&a.is_dynamic)return this._fieldText(a);var c=this;return new b.Drilldown.View({id:"field-"+a.id,data:a.options,display:a.display,onchange:function(){c.app.trigger("change")}})},_fieldText:function(c){c.options&&(c.area=c.multiple,a.validate(c.value)?c.value instanceof Array?c.value=value.toString():(c.value=String(c.value).replace(/[\[\]'"\s]/g,""),c.multiple&&(c.value=c.value.replace(/,/g,"\n"))):c.value="");var d=this;return new b.Input({id:"field-"+c.id,area:c.area,onchange:function(){d.app.trigger("change")}})},_fieldSlider:function(a){var c=this;return new b.Slider.View({id:"field-"+a.id,precise:"float"==a.type,min:a.min,max:a.max,onchange:function(){c.app.trigger("change")}})},_fieldHidden:function(a){return new b.Hidden({id:"field-"+a.id,info:a.info})},_fieldBoolean:function(a){var c=this;return new b.RadioButton.View({id:"field-"+a.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:function(){c.app.trigger("change")}})},_fieldColor:function(a){var b=this;return new e({id:"field-"+a.id,onchange:function(){b.app.trigger("change")}})},_fieldLibrary:function(a){var b=this;return new d.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:function(){b.app.trigger("change")}})}})});
|
||||
define(["utils/utils","mvc/ui/ui-misc","mvc/form/form-select-content","mvc/ui/ui-select-library","mvc/ui/ui-color-picker"],function(a,b,c,d,e){return Backbone.Model.extend({types:{text:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider","float":"_fieldSlider","boolean":"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary"},initialize:function(a){this.app=a},create:function(a){void 0===a.value&&(a.value=null),void 0===a.default_value&&(a.default_value=a.value);var b=null,c=this.types[a.type];return c&&"function"==typeof this[c]&&(b=this[c].call(this,a)),b||(this.app.incompatible=!0,b=a.options?this._fieldSelect(a):this._fieldText(a),console.debug("tools-form::_addRow() : Auto matched field type ("+a.type+").")),void 0!==a.value&&b.value(a.value),b},_fieldData:function(b){if(this.app.options.is_workflow)return b.info="Data input '"+b.name+"' ("+a.textify(b.extensions.toString())+")",b.value=null,this._fieldHidden(b);var d=this;return new c.View(this.app,{id:"field-"+b.id,extensions:b.extensions,optional:b.optional,multiple:b.multiple,type:b.type,data:b.options,onchange:function(){d.app.trigger("change")}})},_fieldSelect:function(a){if(0==a.options.length&&this.app.options.is_workflow)return this._fieldText(a);"data_column"==a.type&&(a.error_text="Missing columns in referenced dataset.");var c=[];for(var d in a.options){var e=a.options[d];c.push({label:e[0],value:e[1]})}var f=b.Select;switch(a.display){case"checkboxes":f=b.Checkbox;break;case"radio":f=b.Radio}var g=this;return new f.View({id:"field-"+a.id,data:c,error_text:a.error_text||"No options available",optional:a.optional&&null===a.default_value,multiple:a.multiple,optional:a.optional,searchable:a.searchable,onchange:function(){g.app.trigger("change")}})},_fieldDrilldown:function(a){if(0==a.options.length&&this.app.options.is_workflow)return this._fieldText(a);var c=this;return new b.Drilldown.View({id:"field-"+a.id,data:a.options,display:a.display,onchange:function(){c.app.trigger("change")}})},_fieldText:function(c){if(c.options)if(c.area=c.multiple,a.validate(c.value)){if($.isArray(c.value)){var d="";for(var e in c.value){if(d+=String(c.value[e]),!c.multiple)break;d+="\n"}c.value=d}}else c.value="";var f=this;return new b.Input({id:"field-"+c.id,area:c.area,onchange:function(){f.app.trigger("change")}})},_fieldSlider:function(a){var c=this;return new b.Slider.View({id:"field-"+a.id,precise:"float"==a.type,min:a.min,max:a.max,onchange:function(){c.app.trigger("change")}})},_fieldHidden:function(a){return new b.Hidden({id:"field-"+a.id,info:a.info})},_fieldBoolean:function(a){var c=this;return new b.RadioButton.View({id:"field-"+a.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:function(){c.app.trigger("change")}})},_fieldColor:function(a){var b=this;return new e({id:"field-"+a.id,onchange:function(){b.app.trigger("change")}})},_fieldLibrary:function(a){var b=this;return new d.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:function(){b.app.trigger("change")}})}})});
|
||||
//# sourceMappingURL=../../../maps/mvc/form/form-parameters.js.map
|
||||
@@ -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_dynamic:!0,narrow:!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("<div/>"),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];d&&(d.error(b||"Please verify this parameter."),c||$("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,narrow:!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("<div/>"),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];d&&(d.error(b||"Please verify this parameter."),c||$("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."))}})});
|
||||
//# sourceMappingURL=../../../maps/mvc/form/form-view.js.map
|
||||
@@ -1,2 +1,2 @@
|
||||
define(["utils/utils","mvc/tools/tools-form-base"],function(a,b){var c=b.extend({initialize:function(c){if(this.node=workflow.active_node,!this.node)return void console.debug("FAILED - tools-form-workflow:initialize() - Node not found in workflow.");this.post_job_actions=this.node.post_job_actions||{},c=a.merge(c,{text_enable:"Set in Advance",text_disable:"Set at Runtime",is_dynamic:!1,narrow:!0,initial_errors:!0,cls:"ui-portlet-narrow",update_url:galaxy_config.root+"api/workflows/build_module",update:function(a){d.node.update_field_data(a),d.form.errors(a&&a.tool_model)}}),a.deepeach(c.inputs,function(a){a.type&&(a.optional=-1==["data","data_hidden","hidden","repeat","conditional"].indexOf(a.type))}),a.deepeach(c.inputs,function(a){a.type&&"conditional"==a.type&&(a.test_param.optional=!1)});var d=this;a.get({url:galaxy_config.root+"api/datatypes",cache:!0,success:function(a){d.datatypes=a,d._makeSections(c.inputs),b.prototype.initialize.call(d,c)}})},_makeSections:function(b){b[a.uid()]={label:"Annotation / Notes",name:"annotation",type:"text",area:!0,help:"Add an annotation or note for this step. It will be shown with the workflow.",value:this.node.annotation};var c=this.node.output_terminals&&Object.keys(this.node.output_terminals)[0];if(c){b[a.uid()]={name:"pja__"+c+"__EmailAction",label:"Email notification",type:"boolean",value:String(Boolean(this.post_job_actions["EmailAction"+c])),ignore:"false",help:"An email notification will be send when the job has completed.",payload:{host:window.location.host}},b[a.uid()]={name:"pja__"+c+"__DeleteIntermediatesAction",label:"Output cleanup",type:"boolean",value:String(Boolean(this.post_job_actions["DeleteIntermediatesAction"+c])),ignore:"false",help:"Delete intermediate outputs if they are not used as input for another job."};for(var d in this.node.output_terminals)b[a.uid()]=this._makeSection(d)}},_makeSection:function(a){function b(c,d){d=d||[],d.push(c);for(var f in c.inputs){var g=c.inputs[f];if(g.action){if(g.name="pja__"+a+"__"+g.action,g.argument&&(g.name+="__"+g.argument),g.payload)for(var h in g.payload){var i=g.payload[h];g.payload[g.name+"__"+h]=i,delete i}var j=e.post_job_actions[g.action+a];if(j){for(var k in d)d[k].expand=!0;g.value=g.argument?j.action_arguments&&j.action_arguments[g.argument]||g.value:"true"}}g.inputs&&b(g,d.slice(0))}}var c=[];for(key in this.datatypes)c.push({0:this.datatypes[key],1:this.datatypes[key]});c.sort(function(a,b){return a.label>b.label?1:a.label<b.label?-1:0}),c.unshift({0:"Sequences",1:"Sequences"}),c.unshift({0:"Roadmaps",1:"Roadmaps"}),c.unshift({0:"Leave unchanged",1:"__empty__"});var d={title:"Add Actions: '"+a+"'",type:"section",inputs:[{action:"RenameDatasetAction",argument:"newname",label:"Rename dataset",type:"text",value:"",ignore:"",help:'This action will rename the result dataset. Click <a href="https://wiki.galaxyproject.org/Learn/AdvancedWorkflow/Variables">here</a> for more information.'},{action:"ChangeDatatypeAction",argument:"newtype",label:"Change datatype",type:"select",ignore:"__empty__",value:"__empty__",options:c,help:"This action will change the datatype of the output to the indicated value."},{action:"TagDatasetAction",argument:"tags",label:"Tags",type:"text",value:"",ignore:"",help:"This action will set tags for the dataset."},{title:"Assign columns",type:"section",inputs:[{action:"ColumnSetAction",argument:"chromCol",label:"Chrom column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"startCol",label:"Start column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"endCol",label:"End column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"strandCol",label:"Strand column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"nameCol",label:"Name column",type:"integer",value:"",ignore:""}],help:"This action will set column assignments in the output dataset. Blank fields are ignored."}]},e=this;return b(d),d}});return{View:c}});
|
||||
define(["utils/utils","mvc/tools/tools-form-base"],function(a,b){var c=b.extend({initialize:function(c){if(this.node=workflow.active_node,!this.node)return void console.debug("FAILED - tools-form-workflow:initialize() - Node not found in workflow.");this.post_job_actions=this.node.post_job_actions||{},c=a.merge(c,{text_enable:"Set in Advance",text_disable:"Set at Runtime",is_workflow:!0,narrow:!0,initial_errors:!0,cls:"ui-portlet-narrow",update_url:galaxy_config.root+"api/workflows/build_module",update:function(a){d.node.update_field_data(a),d.form.errors(a&&a.tool_model)}}),a.deepeach(c.inputs,function(a){a.type&&"conditional"==a.type&&(a.test_param.optional=!1)});var d=this;a.get({url:galaxy_config.root+"api/datatypes",cache:!0,success:function(a){d.datatypes=a,d._makeSections(c.inputs),b.prototype.initialize.call(d,c)}})},_makeSections:function(b){b[a.uid()]={label:"Annotation / Notes",name:"annotation",type:"text",area:!0,help:"Add an annotation or note for this step. It will be shown with the workflow.",value:this.node.annotation};var c=this.node.output_terminals&&Object.keys(this.node.output_terminals)[0];if(c){b[a.uid()]={name:"pja__"+c+"__EmailAction",label:"Email notification",type:"boolean",value:String(Boolean(this.post_job_actions["EmailAction"+c])),ignore:"false",help:"An email notification will be send when the job has completed.",payload:{host:window.location.host}},b[a.uid()]={name:"pja__"+c+"__DeleteIntermediatesAction",label:"Output cleanup",type:"boolean",value:String(Boolean(this.post_job_actions["DeleteIntermediatesAction"+c])),ignore:"false",help:"Delete intermediate outputs if they are not used as input for another job."};for(var d in this.node.output_terminals)b[a.uid()]=this._makeSection(d)}},_makeSection:function(a){function b(c,d){d=d||[],d.push(c);for(var f in c.inputs){var g=c.inputs[f];if(g.action){if(g.name="pja__"+a+"__"+g.action,g.argument&&(g.name+="__"+g.argument),g.payload)for(var h in g.payload){var i=g.payload[h];g.payload[g.name+"__"+h]=i,delete i}var j=e.post_job_actions[g.action+a];if(j){for(var k in d)d[k].expand=!0;g.value=g.argument?j.action_arguments&&j.action_arguments[g.argument]||g.value:"true"}}g.inputs&&b(g,d.slice(0))}}var c=[];for(key in this.datatypes)c.push({0:this.datatypes[key],1:this.datatypes[key]});c.sort(function(a,b){return a.label>b.label?1:a.label<b.label?-1:0}),c.unshift({0:"Sequences",1:"Sequences"}),c.unshift({0:"Roadmaps",1:"Roadmaps"}),c.unshift({0:"Leave unchanged",1:"__empty__"});var d={title:"Add Actions: '"+a+"'",type:"section",inputs:[{action:"RenameDatasetAction",argument:"newname",label:"Rename dataset",type:"text",value:"",ignore:"",help:'This action will rename the result dataset. Click <a href="https://wiki.galaxyproject.org/Learn/AdvancedWorkflow/Variables">here</a> for more information.'},{action:"ChangeDatatypeAction",argument:"newtype",label:"Change datatype",type:"select",ignore:"__empty__",value:"__empty__",options:c,help:"This action will change the datatype of the output to the indicated value."},{action:"TagDatasetAction",argument:"tags",label:"Tags",type:"text",value:"",ignore:"",help:"This action will set tags for the dataset."},{title:"Assign columns",type:"section",inputs:[{action:"ColumnSetAction",argument:"chromCol",label:"Chrom column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"startCol",label:"Start column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"endCol",label:"End column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"strandCol",label:"Strand column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"nameCol",label:"Name column",type:"integer",value:"",ignore:""}],help:"This action will set column assignments in the output dataset. Blank fields are ignored."}]},e=this;return b(d),d}});return{View:c}});
|
||||
//# sourceMappingURL=../../../maps/mvc/tools/tools-form-workflow.js.map
|
||||
@@ -8,7 +8,7 @@
|
||||
from galaxy.tools.parameters import params_to_incoming
|
||||
incoming = {}
|
||||
params_to_incoming( incoming, tool.inputs, module.state.inputs, trans.app, to_html=False)
|
||||
self.form_config = tool.to_json(trans, incoming, is_dynamic=False)
|
||||
self.form_config = tool.to_json(trans, incoming, is_workflow=True)
|
||||
self.form_config.update({
|
||||
'id' : tool.id,
|
||||
'job_id' : trans.security.encode_id( job.id ) if job else None,
|
||||
|
||||
@@ -7,31 +7,42 @@ from .test_parameter_parsing import BaseParameterTestCase
|
||||
|
||||
class SelectToolParameterTestCase( BaseParameterTestCase ):
|
||||
|
||||
def test_dep_dummy_datasets_need_late_validation( self ):
|
||||
def test_validated_values( self ):
|
||||
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
|
||||
assert self.param.need_late_validation( self.trans, { "input_bam": basic.DummyDataset() } )
|
||||
try:
|
||||
self.param.from_html("42", self.trans, { "input_bam": model.HistoryDatasetAssociation() })
|
||||
except ValueError, err:
|
||||
assert str(err) == "An invalid option was selected for my_name, '42', please verify."
|
||||
return
|
||||
assert False
|
||||
|
||||
def test_dep_runtime_values_need_late_validation( self ):
|
||||
def test_validated_values_missing_dependency( self ):
|
||||
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
|
||||
assert self.param.need_late_validation( self.trans, { "input_bam": basic.RuntimeValue() } )
|
||||
try:
|
||||
self.param.from_html("42", self.trans)
|
||||
except AssertionError, err:
|
||||
assert str(err) == "Required dependency 'input_bam' not found in incoming values"
|
||||
return
|
||||
assert False
|
||||
|
||||
def test_dep_unvalidated_values_need_late_validation( self ):
|
||||
def test_unvalidated_values( self ):
|
||||
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
|
||||
assert self.param.need_late_validation( self.trans, { "input_bam": basic.UnvalidatedValue( "42" ) } )
|
||||
self.trans.workflow_building_mode = True
|
||||
assert self.param.from_html("42", self.trans).value == "42"
|
||||
|
||||
def test_dep_real_datasets_no_late_validation( self ):
|
||||
def test_validated_datasets( self ):
|
||||
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
|
||||
assert not self.param.need_late_validation( self.trans, { "input_bam": model.HistoryDatasetAssociation() } )
|
||||
try:
|
||||
self.param.from_html( model.HistoryDatasetAssociation(), self.trans, { "input_bam": basic.RuntimeValue() } )
|
||||
except ValueError, err:
|
||||
assert str(err) == "Parameter my_name requires a value, but has no legal values defined."
|
||||
return
|
||||
assert False
|
||||
|
||||
def test_nested_context_validation_needed( self ):
|
||||
def test_unvalidated_datasets( self ):
|
||||
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
|
||||
# Data ref currently must be same level, if not at top level.
|
||||
assert self.param.need_late_validation( self.trans, { "reference_source": { "my_name": "42", "input_bam": basic.RuntimeValue() } } )
|
||||
|
||||
def test_nested_context_validation_not_needed( self ):
|
||||
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
|
||||
# Data ref currently must be same level, if not at top level.
|
||||
assert not self.param.need_late_validation( self.trans, { "reference_source": { "my_name": "42", "input_bam": model.HistoryDatasetAssociation() } } )
|
||||
self.trans.workflow_building_mode = True
|
||||
assert isinstance( self.param.from_html( model.HistoryDatasetAssociation(), self.trans, { "input_bam": basic.RuntimeValue() } ).value, model.HistoryDatasetAssociation )
|
||||
|
||||
def test_filter_param_value( self ):
|
||||
self.options_xml = '''<options from_data_table="test_table"><filter type="param_value" ref="input_bam" column="0" /></options>'''
|
||||
|
||||
Reference in New Issue
Block a user