Files
galaxy/static/scripts/packed/mvc/grid/grid-view.js
T

1 line
8.3 KiB
JavaScript

jQuery.ajaxSettings.traditional=true;define(["mvc/grid/grid-model","mvc/grid/grid-template","mvc/ui/popup-menu"],function(c,b,a){return Backbone.View.extend({grid:null,initialize:function(d){this.setElement("#grid-container");if(d.use_panels){$("#center").css({padding:"10px",overflow:"auto"})}this.init_grid(d)},handle_refresh:function(d){if(d){if($.inArray("history",d)>-1){if(top.Galaxy&&top.Galaxy.currHistoryPanel){top.Galaxy.currHistoryPanel.loadCurrentHistory()}}}},init_grid:function(g){this.grid=new c(g);var f=this.grid.attributes;this.handle_refresh(f.refresh_frames);var e=this.grid.get("url_base");e=e.replace(/^.*\/\/[^\/]+/,"");this.grid.set("url_base",e);this.$el.html(b.grid(f));this.$el.find("#grid-table-header").html(b.header(f));this.$el.find("#grid-table-body").html(b.body(f));this.$el.find("#grid-table-footer").html(b.footer(f));if(f.message){this.$el.find("#grid-message").html(b.message(f));var d=this;if(f.use_hide_message){setTimeout(function(){d.$el.find("#grid-message").html("")},5000)}}this.init_grid_elements();this.init_grid_controls();init_refresh_on_change()},init_grid_controls:function(){var d=this;this.$el.find(".operation-button").each(function(){$(this).off();$(this).click(function(){d.submit_operation(this,operation.confirm);return false})});this.$el.find("input[type=text]").each(function(){$(this).off();$(this).click(function(){$(this).select()}).keyup(function(){$(this).css("font-style","normal")})});this.$el.find(".sort-link").each(function(){$(this).off();$(this).click(function(){d.set_sort_condition($(this).attr("sort_key"));return false})});this.$el.find(".text-filter-form").each(function(){$(this).off();$(this).submit(function(){var h=$(this).attr("column_key");var g=$("#input-"+h+"-filter");var i=g.val();g.val("");d.add_filter_condition(h,i);return false})});this.$el.find(".text-filter-val > a").each(function(){$(this).off();$(this).click(function(){$(this).parent().remove();d.remove_filter_condition($(this).attr("filter_key"),$(this).attr("filter_val"));return false})});this.$el.find(".categorical-filter > a").each(function(){$(this).off();$(this).click(function(){d.set_categorical_filter($(this).attr("filter_key"),$(this).attr("filter_val"));return false})});var f=this.$el.find("#input-tags-filter");if(f.length){f.autocomplete(this.grid.history_tag_autocomplete_url,{selectFirst:false,autoFill:false,highlight:false,mustMatch:false})}var e=this.$el.find("#input-name-filter");if(e.length){e.autocomplete(this.grid.history_name_autocomplete_url,{selectFirst:false,autoFill:false,highlight:false,mustMatch:false})}this.$el.find(".advanced-search-toggle").each(function(){$(this).off();$(this).click(function(){d.$el.find("#standard-search").slideToggle("fast");d.$el.find("#advanced-search").slideToggle("fast");return false})});this.$el.find("#check_all").off();this.$el.find("#check_all").on("click",function(){d.check_all_items()})},init_grid_elements:function(){this.$el.find(".grid").each(function(){var j=$(this).find("input.grid-row-select-checkbox");var i=$(this).find("span.grid-selected-count");var s=function(){i.text($(j).filter(":checked").length)};$(j).each(function(){$(this).change(s)});s()});if(this.$el.find(".community_rating_star").length!==0){this.$el.find(".community_rating_star").rating({})}var r=this.grid.attributes;var q=this;this.$el.find(".page-link > a").each(function(){$(this).click(function(){q.set_page($(this).attr("page_num"));return false})});this.$el.find(".use-inbound").each(function(){$(this).click(function(i){q.execute({href:$(this).attr("href"),inbound:true});return false})});this.$el.find(".use-outbound").each(function(){$(this).click(function(i){q.execute({href:$(this).attr("href")});return false})});var g=r.items.length;if(g==0){return}for(var l in r.items){var p=r.items[l];var m=this.$el.find("#grid-"+l+"-popup");m.off();var e=new a(m);for(var k in r.operations){var f=r.operations[k];var n=f.label;var d=p.operation_config[n];var h=p.encode_id;if(d.allowed&&f.allow_popup){var o={html:f.label,href:d.url_args,target:d.target,confirmation_text:f.confirm,inbound:f.inbound};o.func=function(s){s.preventDefault();var j=$(s.target).html();var i=this.findItemByHtml(j);q.execute(i)};e.addItem(o)}}}},add_filter_condition:function(f,h){if(h===""){return false}this.grid.add_filter(f,h,true);var g=$(b.filter_element(f,h));var e=this;g.click(function(){$(this).remove();e.remove_filter_condition(f,h)});var d=this.$el.find("#"+f+"-filtering-criteria");d.append(g);this.go_page_one();this.execute()},remove_filter_condition:function(d,e){this.grid.remove_filter(d,e);this.go_page_one();this.execute()},set_sort_condition:function(h){var g=this.grid.get("sort_key");var f=h;if(g.indexOf(h)!==-1){if(g.substring(0,1)!=="-"){f="-"+h}}this.$el.find(".sort-arrow").remove();var e=(f.substring(0,1)=="-")?"&uarr;":"&darr;";var d=$("<span>"+e+"</span>").addClass("sort-arrow");this.$el.find("#"+h+"-header").append(d);this.grid.set("sort_key",f);this.go_page_one();this.execute()},set_categorical_filter:function(f,h){var e=this.grid.get("categorical_filters")[f],g=this.grid.get("filters")[f];var d=this;this.$el.find("."+f+"-filter").each(function(){var l=$.trim($(this).text());var j=e[l];var k=j[f];if(k==h){$(this).empty();$(this).addClass("current-filter");$(this).append(l)}else{if(k==g){$(this).empty();var i=$('<a href="#">'+l+"</a>");i.click(function(){d.set_categorical_filter(f,k)});$(this).removeClass("current-filter");$(this).append(i)}}});this.grid.add_filter(f,h);this.go_page_one();this.execute()},set_page:function(d){var e=this;this.$el.find(".page-link").each(function(){var j=$(this).attr("id"),h=parseInt(j.split("-")[2],10),f=e.grid.get("cur_page"),i;if(h===d){i=$(this).children().text();$(this).empty();$(this).addClass("inactive-link");$(this).text(i)}else{if(h===f){i=$(this).text();$(this).empty();$(this).removeClass("inactive-link");var g=$('<a href="#">'+i+"</a>");g.click(function(){e.set_page(h)});$(this).append(g)}}});if(d==="all"){this.grid.set("cur_page",d)}else{this.grid.set("cur_page",parseInt(d,10))}this.execute()},submit_operation:function(e,h){var f=$(e).val();var g=this.$el.find('input[name="id"]:checked').length;if(!g>0){return false}var d=[];this.$el.find("input[name=id]:checked").each(function(){d.push($(this).val())});this.execute({operation:f,id:d,confirmation_text:h});return true},check_all_items:function(){var d=document.getElementById("check_all"),e=document.getElementsByTagName("input"),g=0,f;if(d.checked===true){for(f=0;f<e.length;f++){if(e[f].name.indexOf("id")!==-1){e[f].checked=true;g++}}}else{for(f=0;f<e.length;f++){if(e[f].name.indexOf("id")!==-1){e[f].checked=false}}}this.init_grid_elements()},go_page_one:function(){var d=this.grid.get("cur_page");if(d!==null&&d!==undefined&&d!=="all"){this.grid.set("cur_page",1)}},execute:function(m){var g=null;var f=null;var h=null;var d=null;var l=null;if(m){f=m.href;h=m.operation;g=m.id;d=m.confirmation_text;l=m.inbound;if(f!==undefined&&f.indexOf("operation=")!=-1){var k=f.split("?");if(k.length>1){var j=k[1];var e=j.split("&");for(var i=0;i<e.length;i++){if(e[i].indexOf("operation")!=-1){h=e[i].split("=")[1];h=h.replace(/\+/g," ")}else{if(e[i].indexOf("id")!=-1){g=e[i].split("=")[1]}}}}}}if(h&&g){if(d&&d!=""&&d!="None"&&d!="null"){if(!confirm(d)){return false}}h=h.toLowerCase();this.grid.set({operation:h,item_ids:g});if(this.grid.can_async_op(h)){this.update_grid()}else{this.go_to(l,f)}return false}if(f){this.go_to(l,f);return false}if(this.grid.get("async")){this.update_grid()}else{this.go_to(l,f)}return false},go_to:function(g,e){var f=this.grid.get("async");this.grid.set("async",false);advanced_search=this.$el.find("#advanced-search").is(":visible");this.grid.set("advanced_search",advanced_search);if(!e){e=this.grid.get("url_base")+"?"+$.param(this.grid.get_url_data())}this.grid.set({operation:undefined,item_ids:undefined,async:f});if(g){var d=$(".grid-header").closest(".inbound");if(d.length!==0){d.load(e);return}}window.location=e},update_grid:function(){var e=(this.grid.get("operation")?"POST":"GET");this.$el.find(".loading-elt-overlay").show();var d=this;$.ajax({type:e,url:d.grid.get("url_base"),data:d.grid.get_url_data(),error:function(f){alert("Grid refresh failed")},success:function(f){var h=d.grid.get("embedded");var i=d.grid.get("insert");var g=$.parseJSON(f);g.embedded=h;g.insert=i;d.init_grid(g);d.$el.find(".loading-elt-overlay").hide()},complete:function(){d.grid.set({operation:undefined,item_ids:undefined})}})}})});