Files
galaxy/static/scripts/mvc/ui/ui-list.js
T
2015-04-24 04:35:19 -04:00

2 lines
2.3 KiB
JavaScript

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'<div class="ui-list"><div class="ui-margin-top"><span class="ui-list-button"/><span class="ui-list-select"/></div><div class="ui-list-message"/><div class="ui-list-portlet"/></div>'},_templateRow:function(a){return'<div id="'+a.id+'" class="ui-list-id"><span class="ui-list-delete fa fa-trash"/><span class="ui-list-name">'+a.name+"</span></div>"}});return{View:d}});
//# sourceMappingURL=../../../maps/mvc/ui/ui-list.js.map