diff --git a/client/galaxy/scripts/mvc/form/form-parameters.js b/client/galaxy/scripts/mvc/form/form-parameters.js index 030f3594a50..0ddcc484898 100644 --- a/client/galaxy/scripts/mvc/form/form-parameters.js +++ b/client/galaxy/scripts/mvc/form/form-parameters.js @@ -5,8 +5,9 @@ define(['utils/utils', 'mvc/ui/ui-misc', 'mvc/form/form-select-content', 'mvc/ui/ui-select-library', + 'mvc/ui/ui-select-ftp', 'mvc/ui/ui-color-picker'], - function(Utils, Ui, SelectContent, SelectLibrary, ColorPicker) { + function(Utils, Ui, SelectContent, SelectLibrary, SelectFtp, ColorPicker) { // create form view return Backbone.Model.extend({ @@ -26,9 +27,10 @@ define(['utils/utils', 'hidden' : '_fieldHidden', 'hidden_data' : '_fieldHidden', 'baseurl' : '_fieldHidden', - 'library_data' : '_fieldLibrary' + 'library_data' : '_fieldLibrary', + 'ftpfile' : '_fieldFtp' }, - + // initialize initialize: function(app, options) { this.app = app; @@ -53,7 +55,7 @@ define(['utils/utils', if (fieldClass && typeof(this[fieldClass]) === 'function') { field = this[fieldClass].call(this, input_def); } - + // identify field type if (!field) { // flag @@ -172,7 +174,7 @@ define(['utils/utils', } }); }, - + /** Text input field */ _fieldText: function(input_def) { @@ -272,6 +274,20 @@ define(['utils/utils', self.app.trigger('change'); } }); + }, + + /** FTP file field + */ + _fieldFtp: function(input_def) { + var self = this; + return new SelectFtp.View({ + id : 'field-' + input_def.id, + optional : input_def.optional, + multiple : input_def.multiple, + onchange : function() { + self.app.trigger('change'); + } + }); } }); diff --git a/client/galaxy/scripts/mvc/ui/ui-list.js b/client/galaxy/scripts/mvc/ui/ui-list.js index 4a15dd99aec..8f7e4625cb3 100644 --- a/client/galaxy/scripts/mvc/ui/ui-list.js +++ b/client/galaxy/scripts/mvc/ui/ui-list.js @@ -50,10 +50,21 @@ var View = Backbone.View.extend({ this.portlet.empty(); if ($.isArray(val)) { for (var i in val) { - this.add({ - id : val[i].id, - name : val[i].name - }); + var v = val[i]; + var v_id = null; + var v_name = null; + if ($.type(v) != 'string') { + v_id = v.id; + v_name = v.name; + } else { + v_id = v_name = v; + } + if (v_id != null) { + this.add({ + id : v_id, + name : v_name + }); + } } } this._refresh(); @@ -66,13 +77,16 @@ var View = Backbone.View.extend({ name : $(this).find('.ui-list-name').html() }); }); + if (lst.length == 0) { + return null; + } return lst; }, /** Add row */ add: function(options) { var self = this; - if (this.$('#' + options.id).length === 0) { + if (this.$('[id="' + options.id + '"]').length === 0) { if (Utils.validate(options.id)) { var $el = $(this._templateRow({ id : options.id, diff --git a/client/galaxy/scripts/mvc/ui/ui-select-ftp.js b/client/galaxy/scripts/mvc/ui/ui-select-ftp.js new file mode 100644 index 00000000000..3f01cbac20b --- /dev/null +++ b/client/galaxy/scripts/mvc/ui/ui-select-ftp.js @@ -0,0 +1,53 @@ +// dependencies +define(['utils/utils', 'mvc/ui/ui-list'], + function(Utils, List) { + +/** + * FTP file selector + */ +var View = Backbone.View.extend({ + // initialize + initialize : function(options) { + // link this + var self = this; + + // create ui-list view to keep track of selected ftp files + this.ftpfile_list = new List.View({ + name : 'file', + optional : options.optional, + multiple : options.multiple, + onchange : function() { + options.onchange && options.onchange(self.value()); + } + }); + + // create elements + this.setElement(this.ftpfile_list.$el); + + // initial fetch of ftps + Utils.get({ + url : galaxy_config.root + 'api/remote_files', + success : function(response) { + var data = []; + for (var i in response) { + data.push({ + value : response[i]['path'], + label : response[i]['path'] + }); + } + self.ftpfile_list.update(data); + } + }); + }, + + /** Return/Set currently selected ftp datasets */ + value: function(val) { + return this.ftpfile_list.value(val); + } +}); + +return { + View: View +} + +}); diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index ccd37e7569f..9cadedc04fe 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -587,6 +587,14 @@ class FTPFileToolParameter( ToolParameter ): """ input_source = ensure_input_source(input_source) ToolParameter.__init__( self, tool, input_source ) + self.multiple = input_source.get_bool( 'multiple', True ) + self.user_ftp_dir = '' + + def get_initial_value( self, trans, context, history=None ): + if not trans is None: + if not trans.user is None: + self.user_ftp_dir = "%s/" % trans.user_ftp_dir + return None @property def visible( self ): @@ -601,28 +609,45 @@ class FTPFileToolParameter( ToolParameter ): user_ftp_dir = trans.user_ftp_dir return form_builder.FTPFileField( self.name, user_ftp_dir, trans.app.config.ftp_upload_site, value=value ) + def to_param_dict_string( self, value, other_values={} ): + if value is '': + return 'None' + lst = [ '%s%s' % (self.user_ftp_dir, dataset) for dataset in value ] + if self.multiple: + return lst + else: + return lst[ 0 ] + def from_html( self, value, trans=None, other_values={} ): - try: - assert type( value ) is list - except: - value = [ value ] - return value + return self.to_python( value, trans.app, validate=True ) def to_string( self, value, app ): - if value in [ None, '' ]: - return None - elif isinstance( value, unicode ) or isinstance( value, str ) or isinstance( value, list ): - return value + return self.to_python( value, app ) - def to_python( self, value, app ): - if value is None: - return None - elif isinstance( value, unicode ) or isinstance( value, str ) or isinstance( value, list ): - return value - - def get_initial_value( self, trans, context, history=None ): - return None + def to_python( self, value, app, validate=False ): + if validate and self.tool.app.config.ftp_upload_dir is None: + raise ValueError( "The FTP directory is not configured." ) + if not isinstance( value, list ): + value = [ value ] + lst = [] + for val in value: + if val is None: + lst = [] + break + if isinstance( val, dict ): + lst.append( val[ 'name' ] ) + else: + lst.append( val ) + if len( lst ) == 0: + if not self.optional and validate: + raise ValueError( "Please select a valid FTP file." ) + return '' + return lst + def to_dict( self, trans, view='collection', value_mapper=None, other_values=None ): + d = super( FTPFileToolParameter, self ).to_dict( trans ) + d['multiple'] = self.multiple + return d class HiddenToolParameter( ToolParameter ): """ diff --git a/static/maps/mvc/form/form-parameters.js.map b/static/maps/mvc/form/form-parameters.js.map index 93c6937a9c6..3f2f81e9e05 100644 --- a/static/maps/mvc/form/form-parameters.js.map +++ b/static/maps/mvc/form/form-parameters.js.map @@ -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_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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"} \ No newline at end of file +{"version":3,"file":"form-parameters.js","sources":["../../../src/mvc/form/form-parameters.js"],"names":["define","Utils","Ui","SelectContent","SelectLibrary","SelectFtp","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","ftpfile","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","_fieldFtp"],"mappings":"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"} \ No newline at end of file diff --git a/static/maps/mvc/ui/ui-list.js.map b/static/maps/mvc/ui/ui-list.js.map new file mode 100644 index 00000000000..c881f781e2b --- /dev/null +++ b/static/maps/mvc/ui/ui-list.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ui-list.js","sources":["../../../src/mvc/ui/ui-list.js"],"names":["define","Utils","Portlet","Ui","View","Backbone","extend","initialize","options","self","this","name","multiple","message","Message","cls","portlet","select","Select","optional","button","ButtonIcon","icon","floating","tooltip","onclick","add","id","value","text","setElement","_template","$","append","$el","val","undefined","empty","isArray","i","v","v_id","v_name","type","_refresh","lst","each","push","prop","find","html","length","validate","_templateRow","on","remove","addClass","removeClass","update","status","disable","show","enable","hide","onchange"],"mappings":"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"} \ No newline at end of file diff --git a/static/maps/mvc/ui/ui-select-ftp.js.map b/static/maps/mvc/ui/ui-select-ftp.js.map new file mode 100644 index 00000000000..31cb7c09e4c --- /dev/null +++ b/static/maps/mvc/ui/ui-select-ftp.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ui-select-ftp.js","sources":["../../../src/mvc/ui/ui-select-ftp.js"],"names":["define","Utils","List","View","Backbone","extend","initialize","options","self","this","ftpfile_list","name","optional","multiple","onchange","value","setElement","$el","get","url","galaxy_config","root","success","response","data","i","push","label","update","val"],"mappings":"AACAA,QAAQ,cAAe,kBACf,SAASC,EAAOC,GAKxB,GAAIC,GAAOC,SAASD,KAAKE,QAErBC,WAAa,SAASC,GAElB,GAAIC,GAAOC,IAGXA,MAAKC,aAAe,GAAIR,GAAKC,MACzBQ,KAAc,OACdC,SAAcL,EAAQK,SACtBC,SAAcN,EAAQM,SACtBC,SAAc,WACVP,EAAQO,UAAYP,EAAQO,SAASN,EAAKO,YAKlDN,KAAKO,WAAWP,KAAKC,aAAaO,KAGlChB,EAAMiB,KACFC,IAAUC,cAAcC,KAAO,mBAC/BC,QAAU,SAASC,GACf,GAAIC,KACJ,KAAK,GAAIC,KAAKF,GACVC,EAAKE,MACDX,MAAUQ,EAASE,GAAS,KAC5BE,MAAUJ,EAASE,GAAS,MAGpCjB,GAAKE,aAAakB,OAAOJ,OAMrCT,MAAO,SAASc,GACZ,MAAOpB,MAAKC,aAAaK,MAAMc,KAIvC,QACI1B,KAAMA"} \ No newline at end of file diff --git a/static/scripts/mvc/form/form-parameters.js b/static/scripts/mvc/form/form-parameters.js index c06442cc54e..dedf7bdee81 100644 --- a/static/scripts/mvc/form/form-parameters.js +++ b/static/scripts/mvc/form/form-parameters.js @@ -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_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")}})}})}); +define(["utils/utils","mvc/ui/ui-misc","mvc/form/form-select-content","mvc/ui/ui-select-library","mvc/ui/ui-select-ftp","mvc/ui/ui-color-picker"],function(a,b,c,d,e,f){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",ftpfile:"_fieldFtp"},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 f({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")}})},_fieldFtp:function(a){var b=this;return new e.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 \ No newline at end of file diff --git a/static/scripts/mvc/ui/ui-list.js b/static/scripts/mvc/ui/ui-list.js index 28ad76b38f6..5ba8893a25a 100644 --- a/static/scripts/mvc/ui/ui-list.js +++ b/static/scripts/mvc/ui/ui-list.js @@ -1,2 +1,2 @@ -define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc"],function(a,b,c){var d=Backbone.View.extend({initialize:function(a){var d=this;this.options=a,this.name=a.name||"element",this.multiple=a.multiple||!1,this.message=new c.Message({cls:"ui-margin-top"}),this.portlet=new b.View({cls:"ui-portlet-section"}),this.select=new c.Select.View({optional:a.optional}),this.button=new c.ButtonIcon({icon:"fa fa-sign-in",floating:"left",tooltip:"Insert new "+this.name,onclick:function(){d.add({id:d.select.value(),name:d.select.text()})}}),this.setElement(this._template(a)),this.$(".ui-list-message").append(this.message.$el),this.$(".ui-list-portlet").append(this.portlet.$el),this.$(".ui-list-button").append(this.button.$el),this.$(".ui-list-select").append(this.select.$el)},value:function(a){if(void 0!==a){if(this.portlet.empty(),$.isArray(a))for(var b in a)this.add({id:a[b].id,name:a[b].name});this._refresh()}var c=[];return this.$(".ui-list-id").each(function(){c.push({id:$(this).prop("id"),name:$(this).find(".ui-list-name").html()})}),c},add:function(b){var c=this;if(0===this.$("#"+b.id).length)if(a.validate(b.id)){var d=$(this._templateRow({id:b.id,name:b.name}));d.on("click",function(){d.remove(),c._refresh()}),d.on("mouseover",function(){d.addClass("portlet-highlight")}),d.on("mouseout",function(){d.removeClass("portlet-highlight")}),this.portlet.append(d),this._refresh()}else this.message.update({message:"Please select a valid "+this.name+".",status:"danger"});else this.message.update({message:"This "+this.name+" is already in the list."})},update:function(a){this.select.update(a)},_refresh:function(){this.$(".ui-list-id").length>0?(!this.multiple&&this.button.disable(),this.$(".ui-list-portlet").show()):(this.button.enable(),this.$(".ui-list-portlet").hide()),this.options.onchange&&this.options.onchange()},_template:function(){return'
'},_templateRow:function(a){return'
'+a.name+"
"}});return{View:d}}); +define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc"],function(a,b,c){var d=Backbone.View.extend({initialize:function(a){var d=this;this.options=a,this.name=a.name||"element",this.multiple=a.multiple||!1,this.message=new c.Message({cls:"ui-margin-top"}),this.portlet=new b.View({cls:"ui-portlet-section"}),this.select=new c.Select.View({optional:a.optional}),this.button=new c.ButtonIcon({icon:"fa fa-sign-in",floating:"left",tooltip:"Insert new "+this.name,onclick:function(){d.add({id:d.select.value(),name:d.select.text()})}}),this.setElement(this._template(a)),this.$(".ui-list-message").append(this.message.$el),this.$(".ui-list-portlet").append(this.portlet.$el),this.$(".ui-list-button").append(this.button.$el),this.$(".ui-list-select").append(this.select.$el)},value:function(a){if(void 0!==a){if(this.portlet.empty(),$.isArray(a))for(var b in a){var c=a[b],d=null,e=null;"string"!=$.type(c)?(d=c.id,e=c.name):d=e=c,null!=d&&this.add({id:d,name:e})}this._refresh()}var f=[];return this.$(".ui-list-id").each(function(){f.push({id:$(this).prop("id"),name:$(this).find(".ui-list-name").html()})}),0==f.length?null:f},add:function(b){var c=this;if(0===this.$('[id="'+b.id+'"]').length)if(a.validate(b.id)){var d=$(this._templateRow({id:b.id,name:b.name}));d.on("click",function(){d.remove(),c._refresh()}),d.on("mouseover",function(){d.addClass("portlet-highlight")}),d.on("mouseout",function(){d.removeClass("portlet-highlight")}),this.portlet.append(d),this._refresh()}else this.message.update({message:"Please select a valid "+this.name+".",status:"danger"});else this.message.update({message:"This "+this.name+" is already in the list."})},update:function(a){this.select.update(a)},_refresh:function(){this.$(".ui-list-id").length>0?(!this.multiple&&this.button.disable(),this.$(".ui-list-portlet").show()):(this.button.enable(),this.$(".ui-list-portlet").hide()),this.options.onchange&&this.options.onchange()},_template:function(){return'
'},_templateRow:function(a){return'
'+a.name+"
"}});return{View:d}}); //# sourceMappingURL=../../../maps/mvc/ui/ui-list.js.map \ No newline at end of file diff --git a/static/scripts/mvc/ui/ui-select-ftp.js b/static/scripts/mvc/ui/ui-select-ftp.js new file mode 100644 index 00000000000..aa09cc7fcc3 --- /dev/null +++ b/static/scripts/mvc/ui/ui-select-ftp.js @@ -0,0 +1,2 @@ +define(["utils/utils","mvc/ui/ui-list"],function(a,b){var c=Backbone.View.extend({initialize:function(c){var d=this;this.ftpfile_list=new b.View({name:"file",optional:c.optional,multiple:c.multiple,onchange:function(){c.onchange&&c.onchange(d.value())}}),this.setElement(this.ftpfile_list.$el),a.get({url:galaxy_config.root+"api/remote_files",success:function(a){var b=[];for(var c in a)b.push({value:a[c].path,label:a[c].path});d.ftpfile_list.update(b)}})},value:function(a){return this.ftpfile_list.value(a)}});return{View:c}}); +//# sourceMappingURL=../../../maps/mvc/ui/ui-select-ftp.js.map \ No newline at end of file