Files
galaxy/static/scripts/mvc/dataset/dataset-choice.js
T
2015-11-19 20:34:32 -05:00

2 lines
4.7 KiB
JavaScript

define(["mvc/dataset/dataset-model","mvc/dataset/dataset-list","mvc/ui/ui-modal","mvc/base-mvc","utils/localization"],function(a,b,c,d,e){function f(a,b,c){function d(a,b){for(var c in b)if(b.hasOwnProperty(c)&&a[c]!==b[c])return!1;return!0}return a.filter(function(a){return console.debug(a),!a.deleted&&a.visible&&(!c||void 0===a.collection_type)&&d(a,b)})}var g="dataset",h=function(d,g){function h(){l.resolve(j.getSelectedModels().map(function(a){return a.toJSON()}))}g=_.defaults(g||{},{datasetsOnly:!0,where:{state:"ok"},multiselect:!1,selected:[]}),g.title=g.title||e(g.multiselect?"Choose datasets:":"Choose a dataset:");var i,j,k,l=jQuery.Deferred(),m=g.filter||f;return d=m(d,g.where,g.datasetsOnly),d.length?(g.multiselect&&(k={},k[e("Ok")]=h),i=new c.View({height:"auto",buttons:k,closing_events:!0,closing_callback:function(){l.resolve(null)},body:['<div class="list-panel"></div>'].join("")}),i.$(".modal-header").remove(),i.$(".modal-footer").css("margin-top","0px"),j=new b.DatasetList({title:g.title,subtitle:g.subtitle||e(["Click the checkboxes on the right to select datasets. ","Click the datasets names to see their details. "].join("")),el:i.$body.find(".list-panel"),selecting:!0,selected:g.selected,collection:new a.DatasetAssociationCollection(d)}),j.once("rendered:initial",function(){i.show(),i.$el.addClass("dataset-choice-modal")}),g.multiselect||(j.on("rendered",function(){j.$(".list-actions").hide()}),j.on("view:selected",function(a){l.resolve([a.model.toJSON()])})),j.render(0),l.always(function(){i.hide()})):l.reject("No matches found")},i=Backbone.View.extend(d.LoggableMixin).extend({_logNamespace:g,className:"dataset-choice",initialize:function(a){this.debug(this+"(DatasetChoice).initialize:",a),this.label=void 0!==a.label?e(a.label):"",this.where=a.where,this.datasetsOnly=void 0!==a.datasetsOnly?a.datasetsOnly:!0,this.datasetJSON=a.datasetJSON||[],this.selected=a.selected||[],this._setUpListeners()},_setUpListeners:function(){},render:function(){var a=this.toJSON();return this.$el.html(this._template(a)),this.$(".selected").replaceWith(this._renderSelected(a)),this},_template:function(a){return _.template(["<label>",'<span class="prompt"><%- label %></span>','<div class="selected"></div>',"</label>"].join(""))(a)},_renderSelected:function(a){return $(a.selected.length?_.template(['<div class="selected">','<span class="title"><%- selected.hid %>: <%- selected.name %></span>','<span class="subtitle">',"<i><%- selected.misc_blurb %></i>","<i>",e("format")+": ","<%- selected.file_ext %></i>","<i><%- selected.misc_info %></i>","</span>","</div>"].join(""),{variable:"selected"})(a.selected[0]):['<span class="none-selected-msg">(',e("click to select a dataset"),")</span>"].join(""))},toJSON:function(){var a=this;return{label:a.label,datasets:a.datasetJSON,selected:_.compact(_.map(a.selected,function(b){return _.findWhere(a.datasetJSON,{id:b})}))}},events:{click:"chooseWithModal"},chooseWithModal:function(){var a=this;return this._createModal().done(function(b){b?(a.selected=_.pluck(b,"id"),a.trigger("selected",a,b),a.render()):a.trigger("cancelled",a)}).fail(function(){a.trigger("error",a,arguments)})},_createModal:function(){return new h(this.datasetJSON,this._getModalOptions())},_getModalOptions:function(){return{title:this.label,multiselect:!1,selected:this.selected,where:this.where,datasetsOnly:this.datasetsOnly}},toString:function(){return"DatasetChoice("+this.selected+")"}}),j=i.extend({className:i.prototype.className+" multi",cells:{hid:e("History #"),name:e("Name"),misc_blurb:e("Summary"),file_ext:e("Format"),genome_build:e("Genome"),tags:e("Tags"),annotation:e("Annotation")},initialize:function(a){this.showHeaders=void 0!==a.showHeaders?a.showHeaders:!0,this.cells=a.cells||this.cells,i.prototype.initialize.call(this,a)},_renderSelected:function(a){return $(a.selected.length?_.template(['<table class="selected">',"<% if( json.showHeaders ){ %>","<thead><tr>","<% _.map( json.cells, function( val, key ){ %>","<th><%- val %></th>","<% }); %>","</tr></thead>","<% } %>","<tbody>","<% _.map( json.selected, function( selected ){ %>","<tr>","<% _.map( json.cells, function( val, key ){ %>",'<td class="cell-<%- key %>"><%- selected[ key ] %></td>',"<% }) %>","</tr>","<% }); %>","</tbody>","</table>"].join(""),{variable:"json"})(a):['<span class="none-selected-msg">(',e("click to select a dataset"),")</span>"].join(""))},toJSON:function(){return _.extend(i.prototype.toJSON.call(this),{showHeaders:this.showHeaders,cells:this.cells})},_getModalOptions:function(){return _.extend(i.prototype._getModalOptions.call(this),{multiselect:!0})},toString:function(){return"DatasetChoice("+this.selected+")"}});return{DatasetChoiceModal:h,DatasetChoice:i,MultiDatasetChoice:j}});
//# sourceMappingURL=../../../maps/mvc/dataset/dataset-choice.js.map