start work on new lirbary comparators

This commit is contained in:
Martin Cech
2017-10-26 16:16:34 -04:00
parent 9b3d217a2e
commit 5a276ec3e6
18 changed files with 281 additions and 258 deletions
+137 -100
View File
@@ -12,106 +12,143 @@ var AdminPanel = Backbone.View.extend({
this.model = new Backbone.Model({
title: _l("Administration")
});
this.categories = new Backbone.Collection([{
title : "Server",
items : [ {
title : "Data types registry",
url : "admin/view_datatypes_registry"
},{
title : "Data tables registry",
url : "admin/view_tool_data_tables"
},{
title : "Data libraries",
url : "library_admin/browse_libraries"
},{
title : "Display applications",
url : "admin/display_applications"
},{
title : "Manage jobs",
url : "admin/jobs"
},{
title : "Local data",
url : "data_manager"
} ]
},{
title : "User Management",
items : [ {
title : "Users",
url : "admin/users",
target : "__use_router__"
},{
title : "Quotas",
url : "admin/quotas",
target : "__use_router__",
enabled : self.config.enable_quotas
},{
title : "Groups",
url : "admin/groups",
target : "__use_router__"
},{
title : "Roles",
url : "admin/roles",
target : "__use_router__"
},{
title : "Forms",
url : "admin/forms",
target : "__use_router__"
},{
title : "API keys",
url : "userskeys/all_users"
},{
title : "Impersonate a user",
url : "admin/impersonate",
enabled : self.config.allow_user_impersonation
}]
},{
title : "Tools and Tool Shed",
items : [ {
title : "Search Tool Shed",
url : "admin_toolshed/browse_tool_sheds",
enabled : self.settings.is_tool_shed_installed
},{
title : "Search Tool Shed (Beta)",
url : "admin_toolshed/browse_toolsheds",
enabled : self.settings.is_tool_shed_installed && self.config.enable_beta_ts_api_install
},{
title : "Monitor installing repositories",
url : "admin_toolshed/monitor_repository_installation?installing_repository_ids=" + self.settings.installing_repository_ids,
enabled : self.settings.installing_repository_ids
},{
title : "Manage installed tools",
url : "admin/repositories",
enabled : self.settings.is_repo_installed,
target : "__use_router__"
},{
title : "Reset metadata",
url : "admin_toolshed/reset_metadata_on_selected_installed_repositories",
enabled : self.settings.is_repo_installed
},{
title : "Download local tool",
url : "admin/package_tool"
},{
title : "Tool lineage",
url : "admin/tool_versions",
target : "__use_router__"
},{
title : "Reload a tool\"s configuration",
url : "admin/reload_tool"
},{
title : "Review tool migration stages",
url : "admin/review_tool_migration_stages"
},{
title : "View Tool Error Logs",
url : "admin/tool_errors"
},{
title : "Manage Display Whitelist",
url : "admin/sanitize_whitelist"
},{
title : "Manage Tool Dependencies",
url : "admin/manage_tool_dependencies"
} ]
}]);
this.setElement( this._template() );
this.categories = new Backbone.Collection([
{
title: "Server",
items: [
{
title: "Data types registry",
url: "admin/view_datatypes_registry"
},
{
title: "Data tables registry",
url: "admin/view_tool_data_tables"
},
{
title: "Data libraries",
url: "library_admin/browse_libraries"
},
{
title: "Display applications",
url: "admin/display_applications"
},
{
title: "Manage jobs",
url: "admin/jobs"
},
{
title: "Local data",
url: "data_manager"
}
]
},
{
title: "User Management",
items: [
{
title: "Users",
url: "admin/users",
target: "__use_router__"
},
{
title: "Quotas",
url: "admin/quotas",
target: "__use_router__",
enabled: self.config.enable_quotas
},
{
title: "Groups",
url: "admin/groups",
target: "__use_router__"
},
{
title: "Roles",
url: "admin/roles",
target: "__use_router__"
},
{
title: "Forms",
url: "admin/forms",
target: "__use_router__"
},
{
title: "API keys",
url: "userskeys/all_users"
},
{
title: "Impersonate a user",
url: "admin/impersonate",
enabled: self.config.allow_user_impersonation
}
]
},
{
title: "Tools and Tool Shed",
items: [
{
title: "Search Tool Shed",
url: "admin_toolshed/browse_tool_sheds",
enabled: self.settings.is_tool_shed_installed
},
{
title: "Search Tool Shed (Beta)",
url: "admin_toolshed/browse_toolsheds",
enabled:
self.settings.is_tool_shed_installed &&
self.config.enable_beta_ts_api_install
},
{
title: "Monitor installing repositories",
url:
"admin_toolshed/monitor_repository_installation?installing_repository_ids=" +
self.settings.installing_repository_ids,
enabled: self.settings.installing_repository_ids
},
{
title: "Manage installed tools",
url: "admin/repositories",
enabled: self.settings.is_repo_installed,
target: "__use_router__"
},
{
title: "Reset metadata",
url:
"admin_toolshed/reset_metadata_on_selected_installed_repositories",
enabled: self.settings.is_repo_installed
},
{
title: "Download local tool",
url: "admin/package_tool"
},
{
title: "Tool lineage",
url: "admin/tool_versions",
target: "__use_router__"
},
{
title: 'Reload a tool"s configuration',
url: "admin/reload_tool"
},
{
title: "Review tool migration stages",
url: "admin/review_tool_migration_stages"
},
{
title: "View Tool Error Logs",
url: "admin/tool_errors"
},
{
title: "Manage Display Whitelist",
url: "admin/sanitize_whitelist"
},
{
title: "Manage Tool Dependencies",
url: "admin/manage_tool_dependencies"
}
]
}
]);
this.setElement(this._template());
},
render: function() {
@@ -24,13 +24,16 @@ define(
folderContainer: null,
sort: "asc",
current_sort_order: "asc",
current_sort_key: "name",
events: {
"click #select-all-checkboxes": "selectAll",
"click .dataset_row": "selectClickedRow",
"click .folder_row": "selectClickedRow",
"click .sort-folder-link": "sortColumnClicked"
"click .sort-folder-name": "sortColumnClicked",
"click .sort-folder-datatype": "sortColumnClicked"
},
collection: null,
@@ -139,7 +142,7 @@ define(
.metadata.parent_library_id,
id: this.options.id,
upper_folder_id: upper_folder_id,
order: this.sort
order: this.current_sort_order
})
);
@@ -226,7 +229,7 @@ define(
addAll: function(models) {
_.each(models, function(model) {
Galaxy.libraries.folderListView.collection.add(model, {
sort: false
current_sort_order: false
});
});
$("#center [data-toggle]").tooltip();
@@ -318,37 +321,29 @@ define(
}
},
/** User clicked the table heading = he wants to sort stuff */
sortColumnClicked: function(event) {
event.preventDefault();
if (this.sort === "asc") {
this.sortFolder("name", "desc");
this.sort = "desc";
} else {
this.sortFolder("name", "asc");
this.sort = "asc";
this.current_sort_order =
this.current_sort_order === "asc" ? "desc" : "asc";
console.log('this.current_sort_order');
console.log(this.current_sort_order);
if (event.currentTarget.className === "sort-folder-name") {
this.collection.sortFolder("name", this.current_sort_order);
this.current_sort_key = "name";
} else if (
event.currentTarget.className === "sort-folder-datatype"
) {
this.collection.sortFolder(
"file_ext",
this.current_sort_order
);
this.current_sort_key = "datatype";
}
console.log('this.current_sort_key');
console.log(this.current_sort_key);
this.renderSortIcon();
},
/**
* Sorts the underlying collection according to the parameters received.
* Currently supports only sorting by name.
*/
sortFolder: function(sort_by, order) {
// default to asc sort by name
if (sort_by === "undefined" && order === "undefined") {
return this.collection.sortByNameAsc();
}
if (sort_by === "name") {
if (order === "asc") {
return this.collection.sortByNameAsc();
} else if (order === "desc") {
return this.collection.sortByNameDesc();
}
}
},
/**
* User clicked the checkbox in the table heading
* @param {context} event
@@ -435,14 +430,17 @@ define(
},
renderSortIcon: function() {
if (this.sort === "asc") {
$(".sort-icon")
if (this.current_sort_order === "asc") {
$('[class*="sort-icon"]')
.removeClass("fa-sort-alpha-desc")
.addClass("fa-sort-alpha-asc");
.removeClass("fa-sort-alpha-asc");
$(".sort-icon" + "-" + this.current_sort_key).addClass(
"fa-sort-alpha-asc"
);
} else {
$(".sort-icon")
.removeClass("fa-sort-alpha-asc")
.addClass("fa-sort-alpha-desc");
$(".sort-icon" + "-" + this.current_sort_key).addClass(
"fa-sort-alpha-desc"
);
}
},
@@ -466,9 +464,10 @@ define(
"<thead>",
'<th class="button_heading"></th>',
'<th style="text-align: center; width: 20px; " title="Check to select all datasets"><input id="select-all-checkboxes" style="margin: 0;" type="checkbox"></th>',
'<th><a class="sort-folder-link" title="Click to reverse order" href="#">name</a> <span title="Sorted alphabetically" class="sort-icon fa fa-sort-alpha-<%- order %>"></span></th>',
'<th><a class="sort-folder-name" title="Click to reverse order" href="#">name</a> <span title="Sorted alphabetically" class="sort-icon-name fa fa-sort-alpha-<%- order %>"></span></th>',
'<th style="width:20%;">description</th>',
'<th style="width:5%;">data type</th>',
'<th style="width:5%;"><a class="sort-folder-datatype" title="Click to reverse order" href="#">data type</a> <span title="Sorted alphabetically" class="sort-icon-datatype fa"></span></th>',
// '<th style="width:5%;">data type</th>',
'<th style="width:10%;">size</th>',
'<th style="width:160px;">time updated (UTC)</th>',
'<th style="width:5%;">state</th> ',
@@ -136,7 +136,10 @@ define(
Galaxy.libraries.folderListView.collection.add(
updated_dataset
);
Galaxy.libraries.folderListView.collection.sortByNameAsc();
Galaxy.libraries.folderListView.collection.sortFolder(
"name",
"asc"
);
mod_toastr.success(
"Dataset undeleted. Click this to see it.",
"",
@@ -190,7 +193,10 @@ define(
Galaxy.libraries.folderListView.collection.add(
updated_folder
);
Galaxy.libraries.folderListView.collection.sortByNameAsc();
Galaxy.libraries.folderListView.collection.sortFolder(
"name",
"asc"
);
mod_toastr.success("Folder undeleted.");
},
error: function(model, response) {
@@ -251,12 +251,12 @@ define(
if (
Galaxy.libraries.preferences.get("sort_order") === "asc"
) {
this.collection.sortByNameAsc();
this.collection.sortLibraries("name", "asc");
} else if (
Galaxy.libraries.preferences.get("sort_order") ===
"desc"
) {
this.collection.sortByNameDesc();
this.collection.sortLibraries("name", "desc");
}
}
},
@@ -1,4 +1,4 @@
define([], function() {
define(["mvc/library/library-util"], function(mod_util) {
// ============================================================================
// LIBRARY RELATED MODELS
@@ -22,10 +22,6 @@ define([], function() {
model: Library,
sort_key: "name", // default
sort_order: null, // default
initialize: function(options) {
options = options || {};
},
@@ -60,50 +56,12 @@ define([], function() {
return filteredLibraries;
},
/** Sort collection by library name (ascending) and return the sorted
* collection
*/
sortByNameAsc: function() {
this.comparator = function(libraryA, libraryB) {
if (
libraryA.get("name").toLowerCase() >
libraryB.get("name").toLowerCase()
) {
return 1; // after
}
if (
libraryB.get("name").toLowerCase() >
libraryA.get("name").toLowerCase()
) {
return -1; // before
}
return 0; // equal
};
sortLibraries: function(sort_key, sort_order) {
this.comparator = mod_util.generateLibraryComparator(
sort_key,
sort_order
);
this.sort();
return this;
},
/** Sort collection by library name (descending) and return the sorted
* collection
*/
sortByNameDesc: function() {
this.comparator = function(libraryA, libraryB) {
if (
libraryA.get("name").toLowerCase() >
libraryB.get("name").toLowerCase()
) {
return -1; // before
}
if (
libraryB.get("name").toLowerCase() >
libraryA.get("name").toLowerCase()
) {
return 1; // after
}
return 0; // equal
};
this.sort();
return this;
}
});
@@ -123,66 +81,12 @@ define([], function() {
var Folder = Backbone.Collection.extend({
model: LibraryItem,
/** Sort collection by item name (ascending) and return the sorted
* collection. Folders go before datasets.
*/
sortByNameAsc: function() {
this.comparator = function(itemA, itemB) {
if (itemA.get("type") === itemB.get("type")) {
if (
itemA.get("name").toLowerCase() >
itemB.get("name").toLowerCase()
) {
return 1; // after
}
if (
itemB.get("name").toLowerCase() >
itemA.get("name").toLowerCase()
) {
return -1; // before
}
return 0; // equal
} else {
if (itemA.get("type") === "folder") {
return -1; // folder is always before dataset
} else {
return 1;
}
}
};
sortFolder: function(sort_key, sort_order) {
this.comparator = mod_util.generateFolderComparator(
sort_key,
sort_order
);
this.sort();
return this;
},
/** Sort collection by item name (descending) and return the sorted
* collection. Folders go before datasets.
*/
sortByNameDesc: function() {
this.comparator = function(itemA, itemB) {
if (itemA.get("type") === itemB.get("type")) {
if (
itemA.get("name").toLowerCase() >
itemB.get("name").toLowerCase()
) {
return -1; // after
}
if (
itemB.get("name").toLowerCase() >
itemA.get("name").toLowerCase()
) {
return 1; // before
}
return 0; // equal
} else {
if (itemA.get("type") === "folder") {
return -1; // folder is always before dataset
} else {
return 1;
}
}
};
this.sort();
return this;
}
});
@@ -0,0 +1,74 @@
define([], function() {
/**
* Create alphabetical based two-argument comparator
* that takes into account that Folder > Dataset
* @param {str} sort_key key to sort by
* @param {str} sort_order order to sort by (asc, desc)
* @return {function} two-argument comparator function
*/
var generateFolderComparator = function(sort_key, sort_order) {
return function(itemA, itemB) {
if (itemA.get("type") === itemB.get("type")) {
if(sort_key === "file_ext"){
var a_has = itemA.hasOwnProperty("file_ext") && itemA.get("file_ext");
var b_has = itemB.hasOwnProperty("file_ext") && itemB.get("file_ext");
if (!(a_has && b_has)){
if (a_has && !b_has){
return -1;
}
if (!a_has && b_has){
return 1;
}
return 0;
}
}
if (
itemA.get(sort_key).toLowerCase() >
itemB.get(sort_key).toLowerCase()
) {
return sort_order === "asc" ? 1 : -1;
}
if (
itemB.get(sort_key).toLowerCase() >
itemA.get(sort_key).toLowerCase()
) {
return sort_order === "asc" ? -1 : 1;
}
return 0; // equal
} else {
if (itemA.get("type") === "folder") {
return -1; // folder is always before dataset
} else {
return 1;
}
}
};
};
/**
* Create alphabetical based two-argument comparator
* @param {str} sort_key key to sort by
* @param {str} sort_order order to sort by (asc, desc)
* @return {function} two-argument comparator function
*/
var generateLibraryComparator = function(sort_key, sort_order) {
return function(libraryA, libraryB) {
if (
libraryA.get(sort_key).toLowerCase() >
libraryB.get(sort_key).toLowerCase()
) {
return sort_order === "asc" ? 1 : -1;
}
if (
libraryB.get(sort_key).toLowerCase() >
libraryA.get(sort_key).toLowerCase()
) {
return sort_order === "asc" ? -1 : 1;
}
return 0; // equal
};
};
return {
generateFolderComparator: generateFolderComparator,
generateLibraryComparator: generateLibraryComparator
};
});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"version":3,"sources":["mvc/library/library-util.js"],"names":["define","generateFolderComparator","sort_key","sort_order","itemA","itemB","get","hasOwnProperty","a_has","b_has","toLowerCase","generateLibraryComparator","libraryB","libraryA"],"mappings":"aAAAA,UAAW,WAqEP,OACIC,yBA9D2B,SAASC,EAAUC,GAC9C,OAAO,SAASC,EAAOC,GADvBJ,GAAAA,EAAAA,IAAAA,UAA2BI,EAA3BJ,IAAAA,QAAAA,CACO,GAAgBI,aAAhBH,EAAuB,CACtBE,IAAME,EAANF,EAAsBC,eAAU,aAASD,EAAAE,IAAA,YACtCJ,EAAAA,EAAaK,eAAW,aAAAF,EAAAC,IAAA,YACvB,IAAIE,IAAQJ,EACRK,OAAAA,IAAcF,GACHE,GAEPD,GAAAC,EACH,EAEG,EAGP,OACJL,EAAAE,IAAAJ,GAAAQ,cAEGN,EAAME,IAAIJ,GAAUQ,cAIvB,QAAAP,EAAA,GAAA,EAMAE,EAAAC,IAAAJ,GAAAQ,cACDN,EAAUE,IAAAJ,GAAAQ,cAEgB,QAAhBJ,GAAV,EAAoC,EAE7B,EAEN,MAAA,WAAAF,EAAAE,IAAA,SACJ,EAnCT,IA+DIK,0BAZK,SAAAT,EAAAC,GACD,OAAA,SACIS,EAAaV,GAGb,OACHW,EAAAP,IAAAJ,GAAAQ,cACDE,EAAUN,IAAAJ,GAAAQ,cAdlB,QAAAP,EAAA,GAAA,EAmBIQ,EAAAA,IAAAA,GAA2BA,cAF/BE,EAAAP,IAAAJ,GAAAQ,cALkC,QAAfP,GAAwB,EAAI,EAEhC","file":"../../../scripts/mvc/library/library-util.js","sourcesContent":["define([], function() {\n /**\n * Create alphabetical based two-argument comparator\n * that takes into account that Folder > Dataset\n * @param {str} sort_key key to sort by\n * @param {str} sort_order order to sort by (asc, desc)\n * @return {function} two-argument comparator function\n */\n var generateFolderComparator = function(sort_key, sort_order) {\n return function(itemA, itemB) {\n if (itemA.get(\"type\") === itemB.get(\"type\")) {\n if(sort_key === \"file_ext\"){\n var a_has = itemA.hasOwnProperty(\"file_ext\") && itemA.get(\"file_ext\");\n var b_has = itemB.hasOwnProperty(\"file_ext\") && itemB.get(\"file_ext\");\n if (!(a_has && b_has)){\n if (a_has && !b_has){\n return -1;\n }\n if (!a_has && b_has){\n return 1;\n }\n return 0;\n }\n }\n if (\n itemA.get(sort_key).toLowerCase() >\n itemB.get(sort_key).toLowerCase()\n ) {\n return sort_order === \"asc\" ? 1 : -1;\n }\n if (\n itemB.get(sort_key).toLowerCase() >\n itemA.get(sort_key).toLowerCase()\n ) {\n return sort_order === \"asc\" ? -1 : 1;\n }\n return 0; // equal\n } else {\n if (itemA.get(\"type\") === \"folder\") {\n return -1; // folder is always before dataset\n } else {\n return 1;\n }\n }\n };\n };\n /**\n * Create alphabetical based two-argument comparator\n * @param {str} sort_key key to sort by\n * @param {str} sort_order order to sort by (asc, desc)\n * @return {function} two-argument comparator function\n */\n var generateLibraryComparator = function(sort_key, sort_order) {\n return function(libraryA, libraryB) {\n if (\n libraryA.get(sort_key).toLowerCase() >\n libraryB.get(sort_key).toLowerCase()\n ) {\n return sort_order === \"asc\" ? 1 : -1;\n }\n if (\n libraryB.get(sort_key).toLowerCase() >\n libraryA.get(sort_key).toLowerCase()\n ) {\n return sort_order === \"asc\" ? -1 : 1;\n }\n return 0; // equal\n };\n };\n return {\n generateFolderComparator: generateFolderComparator,\n generateLibraryComparator: generateLibraryComparator\n };\n});\n"]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
"use strict";define(["libs/toastr","mvc/library/library-model","mvc/library/library-libraryrow-view","libs/underscore"],function(e,r,i,t){return{LibraryListView:Backbone.View.extend({el:"#libraries_element",events:{"click .sort-libraries-link":"sort_clicked"},defaults:{page_count:null,show_page:null,all_fetched:!1},initialize:function(i){this.options=t.defaults(this.options||{},i,this.defaults);var s=this;this.modal=null,this.collection=new r.Libraries,this.collection.url=this.collection.urlRoot+"?deleted=false",this.collection.fetch({success:function(){s.render()},error:function(r,i){void 0!==i.responseJSON?e.error(i.responseJSON.err_msg):e.error("An error occurred.")}})},render:function(e){this.options=t.extend(this.options,e),this.setElement("#libraries_element");var r=this.templateLibraryList(),i=null,s=null,l=function(e){return!0===e.get("public")};if($(".tooltip").hide(),void 0!==e&&(s=void 0!==e.models?e.models:null),null!==this.collection&&null===s)this.sortLibraries(),i=Galaxy.libraries.preferences.get("with_deleted")?this.collection.models:this.collection.where({deleted:!1}),Galaxy.libraries.preferences.get("without_restricted")&&(i=t.filter(i,l));else if(null!==s){if(Galaxy.libraries.preferences.get("with_deleted"))i=s;else{i=t.filter(s,function(e){return!1===e.get("deleted")})}Galaxy.libraries.preferences.get("without_restricted")&&(i=t.filter(i,l))}else i=[];(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.options.total_libraries_count=i.length;var o=Galaxy.libraries.preferences.get("library_page_size")*(this.options.show_page-1);this.options.page_count=Math.ceil(this.options.total_libraries_count/Galaxy.libraries.preferences.get("library_page_size")),this.options.total_libraries_count>0&&o<this.options.total_libraries_count?(i=i.slice(o,o+Galaxy.libraries.preferences.get("library_page_size")),this.options.libraries_shown=i.length,Galaxy.libraries.preferences.get("library_page_size")*this.options.show_page>this.options.total_libraries_count+Galaxy.libraries.preferences.get("library_page_size")&&(i=[]),this.$el.html(r({length:1,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options),this.renderRows(i)):(this.$el.html(r({length:0,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options)),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},fetchDeleted:function(){if(this.options.all_fetched)this.render();else{var r=this;this.collection.url=this.collection.urlRoot+"?deleted=true",this.collection.fetch({remove:!1,success:function(){r.options.all_fetched=!0,r.render()},error:function(r,i){void 0!==i.responseJSON?e.error(i.responseJSON.err_msg):e.error("An error occurred.")}})}},renderRows:function(e){for(var r=0;r<e.length;r++){var i=e[r];this.renderOne({library:i})}},renderOne:function(e){var r=e.library,t=new i.LibraryRowView(r);this.$el.find("#library_list_body").append(t.el)},sort_clicked:function(){"asc"===Galaxy.libraries.preferences.get("sort_order")?Galaxy.libraries.preferences.set({sort_order:"desc"}):Galaxy.libraries.preferences.set({sort_order:"asc"}),this.render()},sortLibraries:function(){"name"===Galaxy.libraries.preferences.get("sort_by")&&("asc"===Galaxy.libraries.preferences.get("sort_order")?this.collection.sortByNameAsc():"desc"===Galaxy.libraries.preferences.get("sort_order")&&this.collection.sortByNameDesc())},searchLibraries:function(e){if(""!==$.trim(e)){var r=null;r=this.collection.search(e),this.options.searching=!0,this.render({models:r,show_page:1})}else this.options.searching=!1,this.render()},templateLibraryList:function(){return t.template(['<div class="library_container table-responsive">',"<% if(length === 0) { %>","<% if(search_term.length > 0) { %>","<div>","There are no libraries matching your search. Try different keyword.","</div>","<% } else{ %>","<div>","There are no libraries visible to you here. If you expected some to show up please consult the",' <a href="https://galaxyproject.org/data-libraries/#permissions" target="_blank">library security wikipage</a>',' or visit the <a href="https://biostar.usegalaxy.org/" target="_blank">Galaxy support site</a>.',"</div>","<% }%>","<% } else{ %>",'<table class="grid table table-condensed">',"<thead>",'<th style="width:30%;">','<a class="sort-libraries-link" title="Click to reverse order" href="#">',"name","</a>",'<span title="Sorted alphabetically" class="fa fa-sort-alpha-<%- order %>"/>',"</th>",'<th style="width:22%;">description</th>','<th style="width:22%;">synopsis</th> ','<th style="width:26%;"></th>',"</thead>",'<tbody id="library_list_body">',"</tbody>","</table>","<% }%>","</div>"].join(""))}})}});
"use strict";define(["libs/toastr","mvc/library/library-model","mvc/library/library-libraryrow-view","libs/underscore"],function(e,r,i,t){return{LibraryListView:Backbone.View.extend({el:"#libraries_element",events:{"click .sort-libraries-link":"sort_clicked"},defaults:{page_count:null,show_page:null,all_fetched:!1},initialize:function(i){this.options=t.defaults(this.options||{},i,this.defaults);var s=this;this.modal=null,this.collection=new r.Libraries,this.collection.url=this.collection.urlRoot+"?deleted=false",this.collection.fetch({success:function(){s.render()},error:function(r,i){void 0!==i.responseJSON?e.error(i.responseJSON.err_msg):e.error("An error occurred.")}})},render:function(e){this.options=t.extend(this.options,e),this.setElement("#libraries_element");var r=this.templateLibraryList(),i=null,s=null,l=function(e){return!0===e.get("public")};if($(".tooltip").hide(),void 0!==e&&(s=void 0!==e.models?e.models:null),null!==this.collection&&null===s)this.sortLibraries(),i=Galaxy.libraries.preferences.get("with_deleted")?this.collection.models:this.collection.where({deleted:!1}),Galaxy.libraries.preferences.get("without_restricted")&&(i=t.filter(i,l));else if(null!==s){if(Galaxy.libraries.preferences.get("with_deleted"))i=s;else{i=t.filter(s,function(e){return!1===e.get("deleted")})}Galaxy.libraries.preferences.get("without_restricted")&&(i=t.filter(i,l))}else i=[];(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.options.total_libraries_count=i.length;var o=Galaxy.libraries.preferences.get("library_page_size")*(this.options.show_page-1);this.options.page_count=Math.ceil(this.options.total_libraries_count/Galaxy.libraries.preferences.get("library_page_size")),this.options.total_libraries_count>0&&o<this.options.total_libraries_count?(i=i.slice(o,o+Galaxy.libraries.preferences.get("library_page_size")),this.options.libraries_shown=i.length,Galaxy.libraries.preferences.get("library_page_size")*this.options.show_page>this.options.total_libraries_count+Galaxy.libraries.preferences.get("library_page_size")&&(i=[]),this.$el.html(r({length:1,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options),this.renderRows(i)):(this.$el.html(r({length:0,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options)),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},fetchDeleted:function(){if(this.options.all_fetched)this.render();else{var r=this;this.collection.url=this.collection.urlRoot+"?deleted=true",this.collection.fetch({remove:!1,success:function(){r.options.all_fetched=!0,r.render()},error:function(r,i){void 0!==i.responseJSON?e.error(i.responseJSON.err_msg):e.error("An error occurred.")}})}},renderRows:function(e){for(var r=0;r<e.length;r++){var i=e[r];this.renderOne({library:i})}},renderOne:function(e){var r=e.library,t=new i.LibraryRowView(r);this.$el.find("#library_list_body").append(t.el)},sort_clicked:function(){"asc"===Galaxy.libraries.preferences.get("sort_order")?Galaxy.libraries.preferences.set({sort_order:"desc"}):Galaxy.libraries.preferences.set({sort_order:"asc"}),this.render()},sortLibraries:function(){"name"===Galaxy.libraries.preferences.get("sort_by")&&("asc"===Galaxy.libraries.preferences.get("sort_order")?this.collection.sortLibraries("name","asc"):"desc"===Galaxy.libraries.preferences.get("sort_order")&&this.collection.sortLibraries("name","desc"))},searchLibraries:function(e){if(""!==$.trim(e)){var r=null;r=this.collection.search(e),this.options.searching=!0,this.render({models:r,show_page:1})}else this.options.searching=!1,this.render()},templateLibraryList:function(){return t.template(['<div class="library_container table-responsive">',"<% if(length === 0) { %>","<% if(search_term.length > 0) { %>","<div>","There are no libraries matching your search. Try different keyword.","</div>","<% } else{ %>","<div>","There are no libraries visible to you here. If you expected some to show up please consult the",' <a href="https://galaxyproject.org/data-libraries/#permissions" target="_blank">library security wikipage</a>',' or visit the <a href="https://biostar.usegalaxy.org/" target="_blank">Galaxy support site</a>.',"</div>","<% }%>","<% } else{ %>",'<table class="grid table table-condensed">',"<thead>",'<th style="width:30%;">','<a class="sort-libraries-link" title="Click to reverse order" href="#">',"name","</a>",'<span title="Sorted alphabetically" class="fa fa-sort-alpha-<%- order %>"/>',"</th>",'<th style="width:22%;">description</th>','<th style="width:22%;">synopsis</th> ','<th style="width:26%;"></th>',"</thead>",'<tbody id="library_list_body">',"</tbody>","</table>","<% }%>","</div>"].join(""))}})}});
//# sourceMappingURL=../../../maps/mvc/library/library-librarylist-view.js.map
+1 -1
View File
@@ -1,2 +1,2 @@
"use strict";define([],function(){var e=Backbone.Model.extend({urlRoot:Galaxy.root+"api/libraries/",isVisible:function(e){var t=!0;return!e&&this.get("deleted")&&(t=!1),t}}),t=Backbone.Collection.extend({urlRoot:Galaxy.root+"api/libraries",model:e,sort_key:"name",sort_order:null,initialize:function(e){e=e||{}},search:function(e){if(""==e)return this;var t=e.toLowerCase();return this.filter(function(e){return-1!==e.get("name").toLowerCase().indexOf(t)})},getVisible:function(e,o){return o=o||[],new t(this.filter(function(t){return t.isVisible(e)}))},sortByNameAsc:function(){return this.comparator=function(e,t){return e.get("name").toLowerCase()>t.get("name").toLowerCase()?1:t.get("name").toLowerCase()>e.get("name").toLowerCase()?-1:0},this.sort(),this},sortByNameDesc:function(){return this.comparator=function(e,t){return e.get("name").toLowerCase()>t.get("name").toLowerCase()?-1:t.get("name").toLowerCase()>e.get("name").toLowerCase()?1:0},this.sort(),this}}),o=Backbone.Model.extend({}),r=o.extend({urlRoot:Galaxy.root+"api/libraries/datasets/"}),n=o.extend({urlRoot:Galaxy.root+"api/folders/"}),a=Backbone.Collection.extend({model:o,sortByNameAsc:function(){return this.comparator=function(e,t){return e.get("type")===t.get("type")?e.get("name").toLowerCase()>t.get("name").toLowerCase()?1:t.get("name").toLowerCase()>e.get("name").toLowerCase()?-1:0:"folder"===e.get("type")?-1:1},this.sort(),this},sortByNameDesc:function(){return this.comparator=function(e,t){return e.get("type")===t.get("type")?e.get("name").toLowerCase()>t.get("name").toLowerCase()?-1:t.get("name").toLowerCase()>e.get("name").toLowerCase()?1:0:"folder"===e.get("type")?-1:1},this.sort(),this}}),i=Backbone.Model.extend({defaults:{folder:new a,urlRoot:Galaxy.root+"api/folders/",id:"unknown"},parse:function(e){this.get("folder").reset();for(var t=0;t<e.folder_contents.length;t++)if("folder"===e.folder_contents[t].type){var o=new n(e.folder_contents[t]);this.get("folder").add(o)}else if("file"===e.folder_contents[t].type){var a=new r(e.folder_contents[t]);this.get("folder").add(a)}else Galaxy.emit.error("Unknown folder item type encountered while parsing response.");return e}}),s=Backbone.Model.extend({urlRoot:Galaxy.root+"api/histories/"}),l=Backbone.Collection.extend({urlRoot:Galaxy.root+"api/histories/",initialize:function(e){this.id=e.id},url:function(){return this.urlRoot+this.id+"/contents"},model:s}),d=Backbone.Model.extend({urlRoot:Galaxy.root+"api/histories/"}),u=Backbone.Collection.extend({url:Galaxy.root+"api/histories",model:d}),c=Backbone.Model.extend({urlRoot:Galaxy.root+"api/remote_files"});return{Library:e,Libraries:t,Item:r,Ldda:r,FolderAsModel:n,Folder:a,FolderContainer:i,HistoryItem:s,HistoryContents:l,GalaxyHistory:d,GalaxyHistories:u,Jstree:c}});
"use strict";define(["mvc/library/library-util"],function(e){var o=Backbone.Model.extend({urlRoot:Galaxy.root+"api/libraries/",isVisible:function(e){var o=!0;return!e&&this.get("deleted")&&(o=!1),o}}),t=Backbone.Collection.extend({urlRoot:Galaxy.root+"api/libraries",model:o,initialize:function(e){e=e||{}},search:function(e){if(""==e)return this;var o=e.toLowerCase();return this.filter(function(e){return-1!==e.get("name").toLowerCase().indexOf(o)})},getVisible:function(e,o){return o=o||[],new t(this.filter(function(o){return o.isVisible(e)}))},sortLibraries:function(o,t){this.comparator=e.generateLibraryComparator(o,t),this.sort()}}),r=Backbone.Model.extend({}),i=r.extend({urlRoot:Galaxy.root+"api/libraries/datasets/"}),n=r.extend({urlRoot:Galaxy.root+"api/folders/"}),a=Backbone.Collection.extend({model:r,sortFolder:function(o,t){this.comparator=e.generateFolderComparator(o,t),this.sort()}}),l=Backbone.Model.extend({defaults:{folder:new a,urlRoot:Galaxy.root+"api/folders/",id:"unknown"},parse:function(e){this.get("folder").reset();for(var o=0;o<e.folder_contents.length;o++)if("folder"===e.folder_contents[o].type){var t=new n(e.folder_contents[o]);this.get("folder").add(t)}else if("file"===e.folder_contents[o].type){var r=new i(e.folder_contents[o]);this.get("folder").add(r)}else Galaxy.emit.error("Unknown folder item type encountered while parsing response.");return e}}),s=Backbone.Model.extend({urlRoot:Galaxy.root+"api/histories/"}),d=Backbone.Collection.extend({urlRoot:Galaxy.root+"api/histories/",initialize:function(e){this.id=e.id},url:function(){return this.urlRoot+this.id+"/contents"},model:s}),c=Backbone.Model.extend({urlRoot:Galaxy.root+"api/histories/"}),u=Backbone.Collection.extend({url:Galaxy.root+"api/histories",model:c}),f=Backbone.Model.extend({urlRoot:Galaxy.root+"api/remote_files"});return{Library:o,Libraries:t,Item:i,Ldda:i,FolderAsModel:n,Folder:a,FolderContainer:l,HistoryItem:s,HistoryContents:d,GalaxyHistory:c,GalaxyHistories:u,Jstree:f}});
//# sourceMappingURL=../../../maps/mvc/library/library-model.js.map
@@ -0,0 +1,2 @@
"use strict";define([],function(){return{generateFolderComparator:function(e,t){return function(r,o){if(r.get("type")===o.get("type")){if("file_ext"===e){var a=r.hasOwnProperty("file_ext")&&r.get("file_ext"),n=o.hasOwnProperty("file_ext")&&o.get("file_ext");if(!a||!n)return a&&!n?-1:!a&&n?1:0}return r.get(e).toLowerCase()>o.get(e).toLowerCase()?"asc"===t?1:-1:o.get(e).toLowerCase()>r.get(e).toLowerCase()?"asc"===t?-1:1:0}return"folder"===r.get("type")?-1:1}},generateLibraryComparator:function(e,t){return function(r,o){return r.get(e).toLowerCase()>o.get(e).toLowerCase()?"asc"===t?1:-1:o.get(e).toLowerCase()>r.get(e).toLowerCase()?"asc"===t?-1:1:0}}}});
//# sourceMappingURL=../../../maps/mvc/library/library-util.js.map