diff --git a/client/galaxy/scripts/mvc/library/library-dataset-view.js b/client/galaxy/scripts/mvc/library/library-dataset-view.js index bd16d475e7f..53c6d30eb6f 100644 --- a/client/galaxy/scripts/mvc/library/library-dataset-view.js +++ b/client/galaxy/scripts/mvc/library/library-dataset-view.js @@ -741,7 +741,7 @@ var LibraryDatasetView = Backbone.View.extend({ <% } %> <% if (item.get("message")) { %> - Message + Description <%= _.escape(item.get("message")) %> <% } %> diff --git a/client/galaxy/scripts/mvc/library/library-folderlist-view.js b/client/galaxy/scripts/mvc/library/library-folderlist-view.js index 55d210fb633..f55714b96cb 100644 --- a/client/galaxy/scripts/mvc/library/library-folderlist-view.js +++ b/client/galaxy/scripts/mvc/library/library-folderlist-view.js @@ -25,7 +25,9 @@ var FolderListView = Backbone.View.extend({ "click .folder_row": "selectClickedRow", "click .sort-folder-name": "sortColumnClicked", "click .sort-folder-file_ext": "sortColumnClicked", - "click .sort-folder-description": "sortColumnClicked", + "click .sort-folder-message": "sortColumnClicked", + "click .sort-folder-update_time": "sortColumnClicked", + "click .sort-folder-raw_size": "sortColumnClicked", "click .sort-folder-state": "sortColumnClicked" }, @@ -337,10 +339,11 @@ var FolderListView = Backbone.View.extend({ }, renderSortIcon: function() { + $('[class*="sort-icon"]') + .removeClass("fa-sort-alpha-desc") + .removeClass("fa-sort-alpha-asc"); + if (this.current_sort_order === "asc") { - $('[class*="sort-icon"]') - .removeClass("fa-sort-alpha-desc") - .removeClass("fa-sort-alpha-asc"); $(`.sort-icon-${this.current_sort_key}`).addClass("fa-sort-alpha-asc"); } else { $(`.sort-icon-${this.current_sort_key}`).addClass("fa-sort-alpha-desc"); @@ -484,22 +487,27 @@ var FolderListView = Backbone.View.extend({ Name - + - Description - + Description + Data Type - + + + + Size + + + + Time Updated (UTC) + - Size - Time Updated (UTC) State - + diff --git a/client/galaxy/scripts/mvc/library/library-model.js b/client/galaxy/scripts/mvc/library/library-model.js index 3143f0b6c2e..3d9e594e448 100644 --- a/client/galaxy/scripts/mvc/library/library-model.js +++ b/client/galaxy/scripts/mvc/library/library-model.js @@ -55,7 +55,7 @@ var Libraries = Backbone.Collection.extend({ }, sortLibraries: function(sort_key, sort_order) { - this.comparator = mod_util.generateLibraryComparator(sort_key, sort_order); + this.comparator = mod_util.generateComparator(sort_key, sort_order); this.sort(); } }); @@ -77,7 +77,7 @@ var Folder = Backbone.Collection.extend({ model: LibraryItem, sortFolder: function(sort_key, sort_order) { - this.comparator = mod_util.generateFolderComparator(sort_key, sort_order); + this.comparator = mod_util.generateComparator(sort_key, sort_order); this.sort(); } }); diff --git a/client/galaxy/scripts/mvc/library/library-util.js b/client/galaxy/scripts/mvc/library/library-util.js index 17e830e5152..c4d546c4b25 100644 --- a/client/galaxy/scripts/mvc/library/library-util.js +++ b/client/galaxy/scripts/mvc/library/library-util.js @@ -6,7 +6,7 @@ * @param {str} sort_order order to sort by (asc, desc) * @return {function} two-argument comparator function */ -var generateFolderComparator = (sort_key, sort_order) => (itemA, itemB) => { +var generateComparator = (sort_key, sort_order) => (itemA, itemB) => { if (itemA.get("type") === itemB.get("type")) { if (!itemA.has(sort_key) && !itemB.has(sort_key)) { return 0; @@ -15,12 +15,24 @@ var generateFolderComparator = (sort_key, sort_order) => (itemA, itemB) => { } else if (!itemB.has(sort_key)) { return -1; } - if (itemA.get(sort_key).toLowerCase() > itemB.get(sort_key).toLowerCase()) { + var comparable_itemA_key; + var comparable_itemB_key; + if (typeof itemA.get(sort_key) === "number") { + comparable_itemA_key = itemA.get(sort_key); + comparable_itemB_key = itemB.get(sort_key); + } + else + { + comparable_itemA_key = itemA.get(sort_key).toLowerCase(); + comparable_itemB_key = itemB.get(sort_key).toLowerCase(); + } + if ( comparable_itemA_key > comparable_itemB_key) { return sort_order === "asc" ? 1 : -1; } - if (itemB.get(sort_key).toLowerCase() > itemA.get(sort_key).toLowerCase()) { + if (comparable_itemB_key > comparable_itemA_key) { return sort_order === "asc" ? -1 : 1; } + return 0; // equal } else { if (itemA.get("type") === "folder") { @@ -29,22 +41,6 @@ var generateFolderComparator = (sort_key, sort_order) => (itemA, itemB) => { 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 = (sort_key, sort_order) => (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 -}; export default { - generateFolderComparator: generateFolderComparator, - generateLibraryComparator: generateLibraryComparator + generateComparator: generateComparator }; diff --git a/lib/galaxy/webapps/galaxy/api/folder_contents.py b/lib/galaxy/webapps/galaxy/api/folder_contents.py index 890b9d2ba74..a7ecc98481d 100644 --- a/lib/galaxy/webapps/galaxy/api/folder_contents.py +++ b/lib/galaxy/webapps/galaxy/api/folder_contents.py @@ -105,8 +105,8 @@ class FolderContentsController(BaseAPIController, UsesLibraryMixin, UsesLibraryM # Can user manage the permissions on the dataset? can_manage = is_admin or (trans.user and trans.app.security_agent.can_manage_dataset(current_user_roles, content_item.library_dataset_dataset_association.dataset)) - - nice_size = util.nice_size(int(content_item.library_dataset_dataset_association.get_size())) + raw_size = int(content_item.library_dataset_dataset_association.get_size()) + nice_size = util.nice_size(raw_size) library_dataset_dict = content_item.to_dict() encoded_ldda_id = trans.security.encode_id(content_item.library_dataset_dataset_association.id) @@ -117,6 +117,7 @@ class FolderContentsController(BaseAPIController, UsesLibraryMixin, UsesLibraryM can_manage=can_manage, state=library_dataset_dict['state'], file_size=nice_size, + raw_size=raw_size, ldda_id=encoded_ldda_id)) if content_item.library_dataset_dataset_association.message: return_item.update(dict(message=content_item.library_dataset_dataset_association.message))