diff --git a/client/galaxy/scripts/mvc/library/library-folderlist-view.js b/client/galaxy/scripts/mvc/library/library-folderlist-view.js index 4d7bfa86b65..513656cabf7 100644 --- a/client/galaxy/scripts/mvc/library/library-folderlist-view.js +++ b/client/galaxy/scripts/mvc/library/library-folderlist-view.js @@ -24,13 +24,18 @@ 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-file_ext": "sortColumnClicked", + "click .sort-folder-description": "sortColumnClicked", + "click .sort-folder-state": "sortColumnClicked" }, collection: null, @@ -139,7 +144,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 +231,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 +323,21 @@ 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"; + this.current_sort_key = event.currentTarget.className.replace( + "sort-folder-", + "" + ); + this.collection.sortFolder( + this.current_sort_key, + this.current_sort_order + ); 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 +424,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,12 +458,12 @@ define( "", '', '', - 'name ', - 'description', - 'data type', + 'name ', + 'description ', + 'data type ', 'size', 'time updated (UTC)', - 'state ', + 'state ', ' ', "", '', diff --git a/client/galaxy/scripts/mvc/library/library-folderrow-view.js b/client/galaxy/scripts/mvc/library/library-folderrow-view.js index 8a391714ce4..c4b379c26b4 100644 --- a/client/galaxy/scripts/mvc/library/library-folderrow-view.js +++ b/client/galaxy/scripts/mvc/library/library-folderrow-view.js @@ -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) { @@ -306,12 +312,12 @@ define( "", '<%- content_item.get("description") %>', "", - "", "<% } else if(edit_mode){ %>", '', '', "<% } %>", "folder", + "", "", '<%= _.escape(content_item.get("update_time")) %>', "", diff --git a/client/galaxy/scripts/mvc/library/library-librarylist-view.js b/client/galaxy/scripts/mvc/library/library-librarylist-view.js index 322d2a1b4bb..89e18983757 100644 --- a/client/galaxy/scripts/mvc/library/library-librarylist-view.js +++ b/client/galaxy/scripts/mvc/library/library-librarylist-view.js @@ -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"); } } }, diff --git a/client/galaxy/scripts/mvc/library/library-model.js b/client/galaxy/scripts/mvc/library/library-model.js index ad2d0a0c3f6..d012828b187 100644 --- a/client/galaxy/scripts/mvc/library/library-model.js +++ b/client/galaxy/scripts/mvc/library/library-model.js @@ -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; } }); diff --git a/client/galaxy/scripts/mvc/library/library-util.js b/client/galaxy/scripts/mvc/library/library-util.js new file mode 100644 index 00000000000..f4c332729db --- /dev/null +++ b/client/galaxy/scripts/mvc/library/library-util.js @@ -0,0 +1,68 @@ +define([], function() { + /** + * Create alphabetical based two-argument comparator + * that takes into account that Folder comes before Dataset. + * If sort_key is not present it is set to ''. + * @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 (!itemA.has(sort_key) && !itemB.has(sort_key)) { + return 0; + } else if (!itemA.has(sort_key)) { + return 1; + } else if (!itemB.has(sort_key)) { + return -1; + } + 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 + } + 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 + }; +}); diff --git a/static/maps/mvc/library/library-folderlist-view.js.map b/static/maps/mvc/library/library-folderlist-view.js.map index 98b94d40337..d69ef4c9b5b 100644 --- a/static/maps/mvc/library/library-folderlist-view.js.map +++ b/static/maps/mvc/library/library-folderlist-view.js.map @@ -1 +1 @@ -{"version":3,"sources":["mvc/library/library-folderlist-view.js"],"names":["define","FolderListView","el","progress","folderContainer","mod_utils","sort","mod_library_model","events","mod_library_dataset_view","Backbone","View","extend","progressStep","include_deleted","show_page","click #select-all-checkboxes","click .dataset_row","click .folder_row","click .sort-folder-link","collection","defaults","page_count","initialize","options","this","fetchFolder","_","rowViews","Folder","renderOne","listenTo","rePaint","fetch","that","error","mod_toastr","response","responseJSON","onclick","FolderContainer","id","attributes","urlRoot","Galaxy","url","success","folder_container","template","render","model","err_msg","path","length","library_router","back","parent_library_id","upper_folder_id","libraries","templateFolder","$","paginate","metadata","full_path","total_items_count","ceil","items_to_render","order","items_shown","folderToolbarView","reset","dataset_id","row","renderAll","checkEmptiness","models","tooltip","css","postRender","fetched_metadata","Math","preferences","get","page_start","each","slice","contains_file_or_folder","set","find","removeAllRows","addAll","folderListView","add","sortColumnClicked","preventDefault","findWhere","type","sortFolder","configureElements","sort_by","rowView","mod_library_folderrow_view","FolderRowView","checked","after","removeOne","$el","filter","data","checkbox","source","target","makeWhiteRow","makeDarkRow","show","hide","$row","event","removeClass","addClass","renderSortIcon","sortByNameAsc","sortByNameDesc","selectAll","selected","closest","selectClickedRow","localName","join"],"mappings":"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","file":"../../../scripts/mvc/library/library-folderlist-view.js","sourcesContent":["define(\n [\n \"layout/masthead\",\n \"utils/utils\",\n \"libs/toastr\",\n \"mvc/library/library-model\",\n \"mvc/library/library-folderrow-view\",\n \"mvc/library/library-dataset-view\"\n ],\n function(\n mod_masthead,\n mod_utils,\n mod_toastr,\n mod_library_model,\n mod_library_folderrow_view,\n mod_library_dataset_view\n ) {\n var FolderListView = Backbone.View.extend({\n el: \"#folder_items_element\",\n // progress percentage\n progress: 0,\n // progress rate per one item\n progressStep: 1,\n\n folderContainer: null,\n\n sort: \"asc\",\n\n events: {\n \"click #select-all-checkboxes\": \"selectAll\",\n \"click .dataset_row\": \"selectClickedRow\",\n \"click .folder_row\": \"selectClickedRow\",\n \"click .sort-folder-link\": \"sortColumnClicked\"\n },\n\n collection: null,\n\n defaults: {\n include_deleted: false,\n page_count: null,\n show_page: null\n },\n\n /**\n * Initialize and fetch the folder from the server.\n * @param {object} options an object with options\n */\n initialize: function(options) {\n this.options = _.defaults(\n this.options || {},\n this.defaults,\n options\n );\n this.modal = null;\n // map of folder item ids to item views = cache\n this.rowViews = {};\n\n // create a collection of folder items for this view\n this.collection = new mod_library_model.Folder();\n\n // start to listen if someone modifies the collection\n this.listenTo(this.collection, \"add\", this.renderOne);\n this.listenTo(this.collection, \"remove\", this.removeOne);\n this.listenTo(this.collection, \"sort\", this.rePaint);\n this.listenTo(this.collection, \"reset\", this.rePaint);\n\n this.fetchFolder();\n },\n\n fetchFolder: function(options) {\n var options = options || {};\n this.options.include_deleted = options.include_deleted;\n var that = this;\n\n this.folderContainer = new mod_library_model.FolderContainer({\n id: this.options.id\n });\n this.folderContainer.url =\n this.folderContainer.attributes.urlRoot +\n this.options.id +\n \"/contents\";\n\n if (this.options.include_deleted) {\n this.folderContainer.url =\n this.folderContainer.url + \"?include_deleted=true\";\n }\n this.folderContainer.fetch({\n success: function(folder_container) {\n that.folder_container = folder_container;\n that.render();\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(\n response.responseJSON.err_msg +\n \" Click this to go back.\",\n \"\",\n {\n onclick: function() {\n Galaxy.libraries.library_router.back();\n }\n }\n );\n } else {\n mod_toastr.error(\n \"An error occurred. Click this to go back.\",\n \"\",\n {\n onclick: function() {\n Galaxy.libraries.library_router.back();\n }\n }\n );\n }\n }\n });\n },\n\n render: function(options) {\n this.options = _.extend(this.options, options);\n var template = this.templateFolder();\n $(\".tooltip\").hide();\n\n // find the upper id in the full path\n var path = this.folderContainer.attributes.metadata.full_path;\n var upper_folder_id;\n if (path.length === 1) {\n // the library is above us\n upper_folder_id = 0;\n } else {\n upper_folder_id = path[path.length - 2][0];\n }\n\n this.$el.html(\n template({\n path: this.folderContainer.attributes.metadata\n .full_path,\n parent_library_id: this.folderContainer.attributes\n .metadata.parent_library_id,\n id: this.options.id,\n upper_folder_id: upper_folder_id,\n order: this.sort\n })\n );\n\n // when dataset_id is present render its details too\n if (this.options.dataset_id) {\n var row = _.findWhere(that.rowViews, {\n id: this.options.dataset_id\n });\n if (row) {\n row.showDatasetDetails();\n } else {\n mod_toastr.error(\n \"Requested dataset not found. Showing folder instead.\"\n );\n }\n } else {\n if (\n this.options.show_page === null ||\n this.options.show_page < 1\n ) {\n this.options.show_page = 1;\n }\n this.paginate();\n }\n $(\"#center [data-toggle]\").tooltip();\n $(\"#center\").css(\"overflow\", \"auto\");\n },\n\n paginate: function(options) {\n this.options = _.extend(this.options, options);\n\n if (\n this.options.show_page === null ||\n this.options.show_page < 1\n ) {\n this.options.show_page = 1;\n }\n this.options.total_items_count = this.folder_container.get(\n \"folder\"\n ).models.length;\n this.options.page_count = Math.ceil(\n this.options.total_items_count /\n Galaxy.libraries.preferences.get(\"folder_page_size\")\n );\n var page_start =\n Galaxy.libraries.preferences.get(\"folder_page_size\") *\n (this.options.show_page - 1);\n var items_to_render = null;\n items_to_render = this.folder_container\n .get(\"folder\")\n .models.slice(\n page_start,\n page_start +\n Galaxy.libraries.preferences.get(\"folder_page_size\")\n );\n this.options.items_shown = items_to_render.length;\n // User requests page with no items\n if (\n Galaxy.libraries.preferences.get(\"folder_page_size\") *\n this.options.show_page >\n this.options.total_items_count +\n Galaxy.libraries.preferences.get(\"folder_page_size\")\n ) {\n items_to_render = [];\n }\n Galaxy.libraries.folderToolbarView.renderPaginator(\n this.options\n );\n this.collection.reset(items_to_render);\n },\n\n rePaint: function(options) {\n this.options = _.extend(this.options, options);\n this.removeAllRows();\n this.renderAll();\n this.checkEmptiness();\n },\n\n /**\n * Adds all given models to the collection.\n * @param {array of Item or FolderAsModel} array of models that should\n * be added to the view's collection.\n */\n addAll: function(models) {\n _.each(models, function(model) {\n Galaxy.libraries.folderListView.collection.add(model, {\n sort: false\n });\n });\n $(\"#center [data-toggle]\").tooltip();\n this.checkEmptiness();\n this.postRender();\n },\n\n /**\n * Call this after all models are added to the collection\n * to ensure that the folder toolbar will show proper options\n * and that event will be bound on all subviews.\n */\n postRender: function() {\n var fetched_metadata = this.folderContainer.attributes.metadata;\n fetched_metadata.contains_file_or_folder =\n typeof this.collection.findWhere({ type: \"file\" }) !==\n \"undefined\" ||\n typeof this.collection.findWhere({ type: \"folder\" }) !==\n \"undefined\";\n Galaxy.libraries.folderToolbarView.configureElements(\n fetched_metadata\n );\n },\n\n /**\n * Iterates this view's collection and calls the render\n * function for each. Also binds the hover behavior.\n */\n renderAll: function() {\n var that = this;\n _.each(this.collection.models.reverse(), function(model) {\n that.renderOne(model);\n });\n this.postRender();\n },\n\n /**\n * Creates a view for the given model and adds it to the folder view.\n * @param {Item or FolderAsModel} model of the view that will be rendered\n */\n renderOne: function(model) {\n this.options.contains_file_or_folder = true;\n //if (model.get('type') !== 'folder'){\n // model.set('readable_size', this.size_to_string(model.get('file_size')));\n //}\n model.set(\"folder_id\", this.id);\n var rowView = new mod_library_folderrow_view.FolderRowView({\n model: model\n });\n\n // save new rowView to cache\n this.rowViews[model.get(\"id\")] = rowView;\n\n this.$el.find(\"#first_folder_item\").after(rowView.el);\n },\n\n /**\n * Remove the view of the given model from the DOM.\n * @param {Item or FolderAsModel} model of the view that will be removed\n */\n removeOne: function(model) {\n this.$el\n .find(\"tr\")\n .filter(function() {\n return (\n $(this).data(\"id\") &&\n $(this).data(\"id\") === model.id\n );\n })\n .remove();\n },\n\n /**\n * Remove all dataset and folder row elements from the DOM.\n */\n removeAllRows: function() {\n $(\".library-row\").remove();\n },\n\n /** Checks whether the list is empty and adds/removes the message */\n checkEmptiness: function() {\n if (\n this.$el.find(\".dataset_row\").length === 0 &&\n this.$el.find(\".folder_row\").length === 0\n ) {\n this.$el.find(\".empty-folder-message\").show();\n } else {\n this.$el.find(\".empty-folder-message\").hide();\n }\n },\n\n /** User clicked the table heading = he wants to sort stuff */\n sortColumnClicked: function(event) {\n event.preventDefault();\n if (this.sort === \"asc\") {\n this.sortFolder(\"name\", \"desc\");\n this.sort = \"desc\";\n } else {\n this.sortFolder(\"name\", \"asc\");\n this.sort = \"asc\";\n }\n this.renderSortIcon();\n },\n\n /**\n * Sorts the underlying collection according to the parameters received.\n * Currently supports only sorting by name.\n */\n sortFolder: function(sort_by, order) {\n // default to asc sort by name\n if (sort_by === \"undefined\" && order === \"undefined\") {\n return this.collection.sortByNameAsc();\n }\n if (sort_by === \"name\") {\n if (order === \"asc\") {\n return this.collection.sortByNameAsc();\n } else if (order === \"desc\") {\n return this.collection.sortByNameDesc();\n }\n }\n },\n\n /**\n * User clicked the checkbox in the table heading\n * @param {context} event\n */\n selectAll: function(event) {\n var selected = event.target.checked;\n that = this;\n // Iterate each checkbox\n $(\":checkbox\", \"#folder_list_body\").each(function() {\n this.checked = selected;\n var $row = $(this).closest(\"tr\");\n // Change color of selected/unselected\n if (selected) {\n that.makeDarkRow($row);\n } else {\n that.makeWhiteRow($row);\n }\n });\n },\n\n /**\n * Check checkbox if user clicks on the whole row or\n * on the checkbox itself\n */\n selectClickedRow: function(event) {\n var checkbox = \"\";\n var $row;\n var source;\n $row = $(event.target).closest(\"tr\");\n if (event.target.localName === \"input\") {\n checkbox = event.target;\n source = \"input\";\n } else if (event.target.localName === \"td\") {\n checkbox = $row.find(\":checkbox\")[0];\n source = \"td\";\n }\n if (checkbox.checked) {\n if (source === \"td\") {\n checkbox.checked = \"\";\n this.makeWhiteRow($row);\n } else if (source === \"input\") {\n this.makeDarkRow($row);\n }\n } else {\n if (source === \"td\") {\n checkbox.checked = \"selected\";\n this.makeDarkRow($row);\n } else if (source === \"input\") {\n this.makeWhiteRow($row);\n }\n }\n },\n\n makeDarkRow: function($row) {\n $row.removeClass(\"light\").addClass(\"dark\");\n $row\n .find(\"a\")\n .removeClass(\"light\")\n .addClass(\"dark\");\n $row\n .find(\".fa-file-o\")\n .removeClass(\"fa-file-o\")\n .addClass(\"fa-file\");\n $row\n .find(\".fa-folder-o\")\n .removeClass(\"fa-folder-o\")\n .addClass(\"fa-folder\");\n },\n\n makeWhiteRow: function($row) {\n $row.removeClass(\"dark\").addClass(\"light\");\n $row\n .find(\"a\")\n .removeClass(\"dark\")\n .addClass(\"light\");\n $row\n .find(\".fa-file\")\n .removeClass(\"fa-file\")\n .addClass(\"fa-file-o\");\n $row\n .find(\".fa-folder\")\n .removeClass(\"fa-folder\")\n .addClass(\"fa-folder-o\");\n },\n\n renderSortIcon: function() {\n if (this.sort === \"asc\") {\n $(\".sort-icon\")\n .removeClass(\"fa-sort-alpha-desc\")\n .addClass(\"fa-sort-alpha-asc\");\n } else {\n $(\".sort-icon\")\n .removeClass(\"fa-sort-alpha-asc\")\n .addClass(\"fa-sort-alpha-desc\");\n }\n },\n\n templateFolder: function() {\n return _.template(\n [\n // BREADCRUMBS\n '
    ',\n '
  1. Libraries
  2. ',\n \"<% _.each(path, function(path_item) { %>\",\n \"<% if (path_item[0] != id) { %>\",\n '
  3. \"><%- path_item[1] %>
  4. ',\n \"<% } else { %>\",\n '
  5. <%- path_item[1] %>
  6. ',\n \"<% } %>\",\n \"<% }); %>\",\n \"
\",\n\n // FOLDER CONTENT\n '\" class=\"grid table table-condensed\">',\n \"\",\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n ' ',\n ' ',\n \"\",\n '',\n '',\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"
name \">descriptiondata typesizetime updated (UTC)state
\",\n '\" title=\"Go to parent folder\" class=\"btn_open_folder btn btn-default btn-xs\">..',\n \"
\",\n '
',\n \"This folder is either empty or you do not have proper access permissions to see the contents. If you expected something to show up\",\n ' please consult the library security wikipage',\n ' or visit the Galaxy support site.',\n \"
\"\n ].join(\"\")\n );\n }\n });\n\n return {\n FolderListView: FolderListView\n };\n }\n);\n"]} \ No newline at end of file +{"version":3,"sources":["mvc/library/library-folderlist-view.js"],"names":["define","FolderListView","el","progress","folderContainer","mod_utils","current_sort_order","mod_library_model","current_sort_key","mod_library_dataset_view","Backbone","View","extend","progressStep","collection","defaults","page_count","show_page","click .dataset_row","click .folder_row","click .sort-folder-name","click .sort-folder-file_ext","click .sort-folder-description","click .sort-folder-state","include_deleted","initialize","options","this","fetchFolder","_","rowViews","Folder","renderOne","listenTo","rePaint","fetch","that","error","mod_toastr","response","responseJSON","onclick","FolderContainer","id","attributes","urlRoot","Galaxy","url","success","folder_container","template","render","model","err_msg","path","length","library_router","back","parent_library_id","upper_folder_id","libraries","templateFolder","$","paginate","metadata","full_path","total_items_count","ceil","items_to_render","order","items_shown","folderToolbarView","reset","dataset_id","row","renderAll","checkEmptiness","models","tooltip","css","postRender","fetched_metadata","Math","preferences","get","page_start","each","slice","contains_file_or_folder","set","find","removeAllRows","addAll","folderListView","add","sortColumnClicked","event","renderSortIcon","sortFolder","findWhere","configureElements","checked","reverse","$row","closest","selected","selectClickedRow","checkbox","mod_library_folderrow_view","FolderRowView","target","rowView","$el","after","removeOne","makeWhiteRow","makeDarkRow","filter","source","data","remove","removeClass","addClass","show","hide","preventDefault","currentTarget","className","replace","selectAll","localName","join"],"mappings":"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","file":"../../../scripts/mvc/library/library-folderlist-view.js","sourcesContent":["define(\n [\n \"layout/masthead\",\n \"utils/utils\",\n \"libs/toastr\",\n \"mvc/library/library-model\",\n \"mvc/library/library-folderrow-view\",\n \"mvc/library/library-dataset-view\"\n ],\n function(\n mod_masthead,\n mod_utils,\n mod_toastr,\n mod_library_model,\n mod_library_folderrow_view,\n mod_library_dataset_view\n ) {\n var FolderListView = Backbone.View.extend({\n el: \"#folder_items_element\",\n // progress percentage\n progress: 0,\n // progress rate per one item\n progressStep: 1,\n\n folderContainer: null,\n\n current_sort_order: \"asc\",\n\n current_sort_key: \"name\",\n\n events: {\n \"click #select-all-checkboxes\": \"selectAll\",\n \"click .dataset_row\": \"selectClickedRow\",\n \"click .folder_row\": \"selectClickedRow\",\n \"click .sort-folder-name\": \"sortColumnClicked\",\n \"click .sort-folder-file_ext\": \"sortColumnClicked\",\n \"click .sort-folder-description\": \"sortColumnClicked\",\n \"click .sort-folder-state\": \"sortColumnClicked\"\n },\n\n collection: null,\n\n defaults: {\n include_deleted: false,\n page_count: null,\n show_page: null\n },\n\n /**\n * Initialize and fetch the folder from the server.\n * @param {object} options an object with options\n */\n initialize: function(options) {\n this.options = _.defaults(\n this.options || {},\n this.defaults,\n options\n );\n this.modal = null;\n // map of folder item ids to item views = cache\n this.rowViews = {};\n\n // create a collection of folder items for this view\n this.collection = new mod_library_model.Folder();\n\n // start to listen if someone modifies the collection\n this.listenTo(this.collection, \"add\", this.renderOne);\n this.listenTo(this.collection, \"remove\", this.removeOne);\n this.listenTo(this.collection, \"sort\", this.rePaint);\n this.listenTo(this.collection, \"reset\", this.rePaint);\n\n this.fetchFolder();\n },\n\n fetchFolder: function(options) {\n var options = options || {};\n this.options.include_deleted = options.include_deleted;\n var that = this;\n\n this.folderContainer = new mod_library_model.FolderContainer({\n id: this.options.id\n });\n this.folderContainer.url =\n this.folderContainer.attributes.urlRoot +\n this.options.id +\n \"/contents\";\n\n if (this.options.include_deleted) {\n this.folderContainer.url =\n this.folderContainer.url + \"?include_deleted=true\";\n }\n this.folderContainer.fetch({\n success: function(folder_container) {\n that.folder_container = folder_container;\n that.render();\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(\n response.responseJSON.err_msg +\n \" Click this to go back.\",\n \"\",\n {\n onclick: function() {\n Galaxy.libraries.library_router.back();\n }\n }\n );\n } else {\n mod_toastr.error(\n \"An error occurred. Click this to go back.\",\n \"\",\n {\n onclick: function() {\n Galaxy.libraries.library_router.back();\n }\n }\n );\n }\n }\n });\n },\n\n render: function(options) {\n this.options = _.extend(this.options, options);\n var template = this.templateFolder();\n $(\".tooltip\").hide();\n\n // find the upper id in the full path\n var path = this.folderContainer.attributes.metadata.full_path;\n var upper_folder_id;\n if (path.length === 1) {\n // the library is above us\n upper_folder_id = 0;\n } else {\n upper_folder_id = path[path.length - 2][0];\n }\n\n this.$el.html(\n template({\n path: this.folderContainer.attributes.metadata\n .full_path,\n parent_library_id: this.folderContainer.attributes\n .metadata.parent_library_id,\n id: this.options.id,\n upper_folder_id: upper_folder_id,\n order: this.current_sort_order\n })\n );\n\n // when dataset_id is present render its details too\n if (this.options.dataset_id) {\n var row = _.findWhere(that.rowViews, {\n id: this.options.dataset_id\n });\n if (row) {\n row.showDatasetDetails();\n } else {\n mod_toastr.error(\n \"Requested dataset not found. Showing folder instead.\"\n );\n }\n } else {\n if (\n this.options.show_page === null ||\n this.options.show_page < 1\n ) {\n this.options.show_page = 1;\n }\n this.paginate();\n }\n $(\"#center [data-toggle]\").tooltip();\n $(\"#center\").css(\"overflow\", \"auto\");\n },\n\n paginate: function(options) {\n this.options = _.extend(this.options, options);\n\n if (\n this.options.show_page === null ||\n this.options.show_page < 1\n ) {\n this.options.show_page = 1;\n }\n this.options.total_items_count = this.folder_container.get(\n \"folder\"\n ).models.length;\n this.options.page_count = Math.ceil(\n this.options.total_items_count /\n Galaxy.libraries.preferences.get(\"folder_page_size\")\n );\n var page_start =\n Galaxy.libraries.preferences.get(\"folder_page_size\") *\n (this.options.show_page - 1);\n var items_to_render = null;\n items_to_render = this.folder_container\n .get(\"folder\")\n .models.slice(\n page_start,\n page_start +\n Galaxy.libraries.preferences.get(\"folder_page_size\")\n );\n this.options.items_shown = items_to_render.length;\n // User requests page with no items\n if (\n Galaxy.libraries.preferences.get(\"folder_page_size\") *\n this.options.show_page >\n this.options.total_items_count +\n Galaxy.libraries.preferences.get(\"folder_page_size\")\n ) {\n items_to_render = [];\n }\n Galaxy.libraries.folderToolbarView.renderPaginator(\n this.options\n );\n this.collection.reset(items_to_render);\n },\n\n rePaint: function(options) {\n this.options = _.extend(this.options, options);\n this.removeAllRows();\n this.renderAll();\n this.checkEmptiness();\n },\n\n /**\n * Adds all given models to the collection.\n * @param {array of Item or FolderAsModel} array of models that should\n * be added to the view's collection.\n */\n addAll: function(models) {\n _.each(models, function(model) {\n Galaxy.libraries.folderListView.collection.add(model, {\n current_sort_order: false\n });\n });\n $(\"#center [data-toggle]\").tooltip();\n this.checkEmptiness();\n this.postRender();\n },\n\n /**\n * Call this after all models are added to the collection\n * to ensure that the folder toolbar will show proper options\n * and that event will be bound on all subviews.\n */\n postRender: function() {\n var fetched_metadata = this.folderContainer.attributes.metadata;\n fetched_metadata.contains_file_or_folder =\n typeof this.collection.findWhere({ type: \"file\" }) !==\n \"undefined\" ||\n typeof this.collection.findWhere({ type: \"folder\" }) !==\n \"undefined\";\n Galaxy.libraries.folderToolbarView.configureElements(\n fetched_metadata\n );\n },\n\n /**\n * Iterates this view's collection and calls the render\n * function for each. Also binds the hover behavior.\n */\n renderAll: function() {\n var that = this;\n _.each(this.collection.models.reverse(), function(model) {\n that.renderOne(model);\n });\n this.postRender();\n },\n\n /**\n * Creates a view for the given model and adds it to the folder view.\n * @param {Item or FolderAsModel} model of the view that will be rendered\n */\n renderOne: function(model) {\n this.options.contains_file_or_folder = true;\n //if (model.get('type') !== 'folder'){\n // model.set('readable_size', this.size_to_string(model.get('file_size')));\n //}\n model.set(\"folder_id\", this.id);\n var rowView = new mod_library_folderrow_view.FolderRowView({\n model: model\n });\n\n // save new rowView to cache\n this.rowViews[model.get(\"id\")] = rowView;\n\n this.$el.find(\"#first_folder_item\").after(rowView.el);\n },\n\n /**\n * Remove the view of the given model from the DOM.\n * @param {Item or FolderAsModel} model of the view that will be removed\n */\n removeOne: function(model) {\n this.$el\n .find(\"tr\")\n .filter(function() {\n return (\n $(this).data(\"id\") &&\n $(this).data(\"id\") === model.id\n );\n })\n .remove();\n },\n\n /**\n * Remove all dataset and folder row elements from the DOM.\n */\n removeAllRows: function() {\n $(\".library-row\").remove();\n },\n\n /** Checks whether the list is empty and adds/removes the message */\n checkEmptiness: function() {\n if (\n this.$el.find(\".dataset_row\").length === 0 &&\n this.$el.find(\".folder_row\").length === 0\n ) {\n this.$el.find(\".empty-folder-message\").show();\n } else {\n this.$el.find(\".empty-folder-message\").hide();\n }\n },\n\n sortColumnClicked: function(event) {\n event.preventDefault();\n this.current_sort_order =\n this.current_sort_order === \"asc\" ? \"desc\" : \"asc\";\n this.current_sort_key = event.currentTarget.className.replace(\n \"sort-folder-\",\n \"\"\n );\n this.collection.sortFolder(\n this.current_sort_key,\n this.current_sort_order\n );\n this.renderSortIcon();\n },\n\n /**\n * User clicked the checkbox in the table heading\n * @param {context} event\n */\n selectAll: function(event) {\n var selected = event.target.checked;\n that = this;\n // Iterate each checkbox\n $(\":checkbox\", \"#folder_list_body\").each(function() {\n this.checked = selected;\n var $row = $(this).closest(\"tr\");\n // Change color of selected/unselected\n if (selected) {\n that.makeDarkRow($row);\n } else {\n that.makeWhiteRow($row);\n }\n });\n },\n\n /**\n * Check checkbox if user clicks on the whole row or\n * on the checkbox itself\n */\n selectClickedRow: function(event) {\n var checkbox = \"\";\n var $row;\n var source;\n $row = $(event.target).closest(\"tr\");\n if (event.target.localName === \"input\") {\n checkbox = event.target;\n source = \"input\";\n } else if (event.target.localName === \"td\") {\n checkbox = $row.find(\":checkbox\")[0];\n source = \"td\";\n }\n if (checkbox.checked) {\n if (source === \"td\") {\n checkbox.checked = \"\";\n this.makeWhiteRow($row);\n } else if (source === \"input\") {\n this.makeDarkRow($row);\n }\n } else {\n if (source === \"td\") {\n checkbox.checked = \"selected\";\n this.makeDarkRow($row);\n } else if (source === \"input\") {\n this.makeWhiteRow($row);\n }\n }\n },\n\n makeDarkRow: function($row) {\n $row.removeClass(\"light\").addClass(\"dark\");\n $row\n .find(\"a\")\n .removeClass(\"light\")\n .addClass(\"dark\");\n $row\n .find(\".fa-file-o\")\n .removeClass(\"fa-file-o\")\n .addClass(\"fa-file\");\n $row\n .find(\".fa-folder-o\")\n .removeClass(\"fa-folder-o\")\n .addClass(\"fa-folder\");\n },\n\n makeWhiteRow: function($row) {\n $row.removeClass(\"dark\").addClass(\"light\");\n $row\n .find(\"a\")\n .removeClass(\"dark\")\n .addClass(\"light\");\n $row\n .find(\".fa-file\")\n .removeClass(\"fa-file\")\n .addClass(\"fa-file-o\");\n $row\n .find(\".fa-folder\")\n .removeClass(\"fa-folder\")\n .addClass(\"fa-folder-o\");\n },\n\n renderSortIcon: function() {\n if (this.current_sort_order === \"asc\") {\n $('[class*=\"sort-icon\"]')\n .removeClass(\"fa-sort-alpha-desc\")\n .removeClass(\"fa-sort-alpha-asc\");\n $(\".sort-icon\" + \"-\" + this.current_sort_key).addClass(\n \"fa-sort-alpha-asc\"\n );\n } else {\n $(\".sort-icon\" + \"-\" + this.current_sort_key).addClass(\n \"fa-sort-alpha-desc\"\n );\n }\n },\n\n templateFolder: function() {\n return _.template(\n [\n // BREADCRUMBS\n '
    ',\n '
  1. Libraries
  2. ',\n \"<% _.each(path, function(path_item) { %>\",\n \"<% if (path_item[0] != id) { %>\",\n '
  3. \"><%- path_item[1] %>
  4. ',\n \"<% } else { %>\",\n '
  5. <%- path_item[1] %>
  6. ',\n \"<% } %>\",\n \"<% }); %>\",\n \"
\",\n\n // FOLDER CONTENT\n '\" class=\"grid table table-condensed\">',\n \"\",\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n ' ',\n \"\",\n '',\n '',\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"\",\n \"
name \">description data type sizetime updated (UTC)state
\",\n '\" title=\"Go to parent folder\" class=\"btn_open_folder btn btn-default btn-xs\">..',\n \"
\",\n '
',\n \"This folder is either empty or you do not have proper access permissions to see the contents. If you expected something to show up\",\n ' please consult the library security wikipage',\n ' or visit the Galaxy support site.',\n \"
\"\n ].join(\"\")\n );\n }\n });\n\n return {\n FolderListView: FolderListView\n };\n }\n);\n"]} \ No newline at end of file diff --git a/static/maps/mvc/library/library-folderrow-view.js.map b/static/maps/mvc/library/library-folderrow-view.js.map index 5339009ddda..294dbe21813 100644 --- a/static/maps/mvc/library/library-folderrow-view.js.map +++ b/static/maps/mvc/library/library-folderrow-view.js.map @@ -1 +1 @@ -{"version":3,"sources":["mvc/library/library-folderrow-view.js"],"names":["define","FolderRowView","events","mod_toastr","mod_library_model","mod_library_dataset_view","Backbone","View","extend","click .undelete_dataset_btn","click .undelete_folder_btn","click .edit_folder_btn","defaults","type","save_folder_btn","cancel_folder_btn","permission_folder_btn","edit_folder_btn","edit_mode","_","initialize","options","this","render","folder_item","model","template","prepareButtons","vis_config","get","templateRowFolder","templateRowDeletedFile","templateRowFile","Galaxy","error","setElement","button_config","emit","folder","visibility_config","datasetView","dataset_id","event","closest","dataset","folderListView","url","destroy","libraries","success","onclick","LibraryDatasetView","id","$","hide","target","data","collection","urlRoot","undeleteFolder","response","remove","add","updated_folder","responseJSON","folder_id","that","window","location","root","repaint","err_msg","is_changed","new_description","find","row_view","FolderAsModel","sortByNameAsc","info","startModifications","old_element","cancelModifications","saveModifications","$el","new_name","val","length","templateRowDeletedFolder","warning","set","save","patch","replaceWith","tooltip","join"],"mappings":"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A,OACA,gDACA,QACA,mFACA,yBACA,OACA,gFACA,QACA,OACA,yCACA,QACA,YACA,8BACA,oIACA,yJACA,UACA,kBACA,OACA,mDACA,QACA,YACA,OACA,wBACA,4NACA,sCACA,YACA,mOACA,qCACA,YACA,+BACA,0PACA,oCACA,YACA,0DACA,gQACA,qCACA,YACA,OACA,UACA,QACA,SACFoE,KAAK,MAIf9D,gBAAiB,WACb,OAAOb,EAAEO,UAED,8EACA,OACA,+CACA,QACA,oCACA,6CACA,QACA,OACA,mHACA,kCACA,MACA,QACA,8CACA,yDACA,0DACA,4DACA,OACA,oDACA,6CACA,UACA,QACA,OACA,mDACA,gIACA,UACA,8CACA,yHACA,UACA,6GACA,+HACA,UACA,8CACA,uGACA,uKACA,qCACA,YACA,OACA,UACA,QACA,SACFoE,KAAK,MAIf/D,uBAAwB,WACpB,OAAOZ,EAAEO,UAED,mFACA,OACA,+CACA,QACA,YACA,2BACA,kCACA,QACA,OACA,qCACA,QACA,OACA,gDACA,QACA,OACA,iDACA,QACA,OACA,mDACA,QACA,OACA,oDACA,6CACA,UACA,QACA,OACA,wHACA,qMACA,wCACA,YACA,QACA,SACFoE,KAAK,MAIfP,yBAA0B,WACtB,OAAOpE,EAAEO,UAED,wFACA,OACA,gDACA,QACA,YACA,2BACA,kCACA,QACA,OACA,yCACA,QACA,OACA,SACA,QACA,YACA,OACA,mDACA,QACA,YACA,OACA,wHACA,oMACA,wCACA,YACA,QACA,SACFoE,KAAK","file":"../../../scripts/mvc/library/library-folderrow-view.js","sourcesContent":["define(\n [\n \"libs/toastr\",\n \"mvc/library/library-model\",\n \"mvc/library/library-dataset-view\"\n ],\n function(mod_toastr, mod_library_model, mod_library_dataset_view) {\n var FolderRowView = Backbone.View.extend({\n events: {\n \"click .undelete_dataset_btn\": \"undeleteDataset\",\n \"click .undelete_folder_btn\": \"undeleteFolder\",\n \"click .edit_folder_btn\": \"startModifications\",\n \"click .cancel_folder_btn\": \"cancelModifications\",\n \"click .save_folder_btn\": \"saveModifications\"\n },\n\n defaults: {\n type: null,\n visibility_config: {\n edit_folder_btn: false,\n save_folder_btn: false,\n cancel_folder_btn: false,\n permission_folder_btn: false\n },\n edit_mode: false\n },\n\n initialize: function(options) {\n this.options = _.defaults(options || {}, this.defaults);\n this.render(this.options);\n },\n\n render: function(options) {\n this.options = _.extend(this.options, options);\n var folder_item = this.options.model;\n var template = null;\n\n if (\n folder_item.get(\"type\") === \"folder\" ||\n folder_item.get(\"model_class\") === \"LibraryFolder\"\n ) {\n this.options.type = \"folder\";\n this.prepareButtons(folder_item);\n if (folder_item.get(\"deleted\")) {\n template = this.templateRowDeletedFolder();\n } else {\n template = this.templateRowFolder();\n }\n } else if (\n folder_item.get(\"type\") === \"file\" ||\n folder_item.get(\"model_class\") ===\n \"LibraryDatasetDatasetAssociation\" ||\n folder_item.get(\"model_class\") === \"LibraryDataset\"\n ) {\n this.options.type = \"file\";\n if (folder_item.get(\"deleted\")) {\n template = this.templateRowDeletedFile();\n } else {\n template = this.templateRowFile();\n }\n } else {\n Galaxy.emit.error(\"Unknown library item type found.\");\n Galaxy.emit.error(\n folder_item.get(\"type\") ||\n folder_item.get(\"model_class\")\n );\n }\n this.setElement(\n template({\n content_item: folder_item,\n edit_mode: this.options.edit_mode,\n button_config: this.options.visibility_config\n })\n );\n this.$el.show();\n return this;\n },\n\n /**\n * Modify the visibility of buttons for\n * the filling of the row template of a given folder.\n */\n prepareButtons: function(folder) {\n var vis_config = this.options.visibility_config;\n if (this.options.edit_mode === false) {\n vis_config.save_folder_btn = false;\n vis_config.cancel_folder_btn = false;\n if (folder.get(\"deleted\") === true) {\n vis_config.edit_folder_btn = false;\n vis_config.permission_folder_btn = false;\n } else if (folder.get(\"deleted\") === false) {\n vis_config.save_folder_btn = false;\n vis_config.cancel_folder_btn = false;\n if (folder.get(\"can_modify\") === true) {\n vis_config.edit_folder_btn = true;\n }\n if (folder.get(\"can_manage\") === true) {\n vis_config.permission_folder_btn = true;\n }\n }\n } else if (this.options.edit_mode === true) {\n vis_config.edit_folder_btn = false;\n vis_config.permission_folder_btn = false;\n vis_config.save_folder_btn = true;\n vis_config.cancel_folder_btn = true;\n }\n this.options.visibility_config = vis_config;\n },\n\n /* Show the page with dataset details. */\n showDatasetDetails: function() {\n Galaxy.libraries.datasetView = new mod_library_dataset_view.LibraryDatasetView(\n { id: this.id }\n );\n },\n\n /* Undelete the dataset on server and render the row again. */\n undeleteDataset: function(event) {\n $(\".tooltip\").hide();\n var that = this;\n var dataset_id = $(event.target)\n .closest(\"tr\")\n .data(\"id\");\n var dataset = Galaxy.libraries.folderListView.collection.get(\n dataset_id\n );\n dataset.url = dataset.urlRoot + dataset.id + \"?undelete=true\";\n dataset.destroy({\n success: function(model, response) {\n Galaxy.libraries.folderListView.collection.remove(\n dataset_id\n );\n var updated_dataset = new mod_library_model.Item(\n response\n );\n Galaxy.libraries.folderListView.collection.add(\n updated_dataset\n );\n Galaxy.libraries.folderListView.collection.sortByNameAsc();\n mod_toastr.success(\n \"Dataset undeleted. Click this to see it.\",\n \"\",\n {\n onclick: function() {\n var folder_id = that.model.get(\"folder_id\");\n window.location =\n Galaxy.root +\n \"library/list#folders/\" +\n folder_id +\n \"/datasets/\" +\n that.id;\n }\n }\n );\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(\n \"Dataset was not undeleted. \" +\n response.responseJSON.err_msg\n );\n } else {\n mod_toastr.error(\n \"An error occured! Dataset was not undeleted. Please try again.\"\n );\n }\n }\n });\n },\n\n /* Undelete the folder on server and render the row again. */\n undeleteFolder: function(event) {\n $(\".tooltip\").hide();\n var that = this;\n var folder_id = $(event.target)\n .closest(\"tr\")\n .data(\"id\");\n var folder = Galaxy.libraries.folderListView.collection.get(\n folder_id\n );\n folder.url = folder.urlRoot + folder.id + \"?undelete=true\";\n folder.destroy({\n success: function(model, response) {\n Galaxy.libraries.folderListView.collection.remove(\n folder_id\n );\n var updated_folder = new mod_library_model.FolderAsModel(\n response\n );\n Galaxy.libraries.folderListView.collection.add(\n updated_folder\n );\n Galaxy.libraries.folderListView.collection.sortByNameAsc();\n mod_toastr.success(\"Folder undeleted.\");\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(\n \"Folder was not undeleted. \" +\n response.responseJSON.err_msg\n );\n } else {\n mod_toastr.error(\n \"An error occured! Folder was not undeleted. Please try again.\"\n );\n }\n }\n });\n },\n\n /* User clicked the 'edit' button on row so render the row as editable. */\n startModifications: function() {\n this.options.edit_mode = true;\n this.repaint();\n },\n\n /* User clicked the 'cancel' button so render normal row */\n cancelModifications: function() {\n this.options.edit_mode = false;\n this.repaint();\n },\n\n saveModifications: function() {\n var folder = Galaxy.libraries.folderListView.collection.get(\n this.$el.data(\"id\")\n );\n var is_changed = false;\n var new_name = this.$el.find(\".input_folder_name\").val();\n if (\n typeof new_name !== \"undefined\" &&\n new_name !== folder.get(\"name\")\n ) {\n if (new_name.length > 2) {\n folder.set(\"name\", new_name);\n is_changed = true;\n } else {\n mod_toastr.warning(\n \"Folder name has to be at least 3 characters long.\"\n );\n return;\n }\n }\n var new_description = this.$el\n .find(\".input_folder_description\")\n .val();\n if (\n typeof new_description !== \"undefined\" &&\n new_description !== folder.get(\"description\")\n ) {\n folder.set(\"description\", new_description);\n is_changed = true;\n }\n if (is_changed) {\n var row_view = this;\n folder.save(null, {\n patch: true,\n success: function(folder) {\n row_view.options.edit_mode = false;\n row_view.repaint(folder);\n mod_toastr.success(\"Changes to folder saved.\");\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(response.responseJSON.err_msg);\n } else {\n mod_toastr.error(\n \"An error occured while attempting to update the folder.\"\n );\n }\n }\n });\n } else {\n this.options.edit_mode = false;\n this.repaint(folder);\n mod_toastr.info(\"Nothing has changed.\");\n }\n },\n\n repaint: function() {\n /* need to hide manually because of the element removal in setElement\n invoked in render() */\n $(\".tooltip\").hide();\n /* we need to store the old element to be able to replace it with\n new one */\n var old_element = this.$el;\n /* if user canceled the folder param is undefined,\n if user saved and succeeded the updated folder is rendered */\n this.render();\n old_element.replaceWith(this.$el);\n /* now we attach new tooltips to the newly created row element */\n this.$el.find(\"[data-toggle]\").tooltip();\n },\n\n templateRowFolder: function() {\n return _.template(\n [\n '\">',\n \"\",\n '',\n \"\",\n '',\n \"<% if(!edit_mode) { %>\",\n \"\",\n '\"><%- content_item.get(\"name\") %>',\n \"\",\n \"\",\n '<%- content_item.get(\"description\") %>',\n \"\",\n \"\",\n \"<% } else if(edit_mode){ %>\",\n '',\n '',\n \"<% } %>\",\n \"folder\",\n \"\",\n '<%= _.escape(content_item.get(\"update_time\")) %>',\n \"\",\n \"\",\n \"\",\n \"<% if(edit_mode) { %>\", // start edit mode\n '\",\n '\",\n \"<% } else if (!edit_mode){%>\", // start no edit mode\n '\",\n '/permissions\">',\n '\",\n \"\",\n \"<% } %>\", //end no edit mode\n \"\",\n \"\"\n ].join(\"\")\n );\n },\n\n templateRowFile: function() {\n return _.template(\n [\n '\">',\n \"\",\n '',\n \"\",\n '',\n '',\n \"\",\n \"\",\n '/datasets/<%- content_item.id %>\" class=\"library-dataset\">',\n '<%- content_item.get(\"name\") %>',\n \"\",\n \"\",\n '<%- content_item.get(\"message\") %>',\n '<%= _.escape(content_item.get(\"file_ext\")) %>',\n '<%= _.escape(content_item.get(\"file_size\")) %>',\n '<%= _.escape(content_item.get(\"update_time\")) %>',\n \"\",\n '<% if ( content_item.get(\"state\") !== \"ok\" ) { %>',\n '<%= _.escape(content_item.get(\"state\")) %>',\n \"<% } %>\",\n \"\",\n \"\",\n '<% if (content_item.get(\"is_unrestricted\")) { %>',\n '',\n \"<% } %>\",\n '<% if (content_item.get(\"is_private\")) { %>',\n '',\n \"<% } %>\",\n '<% if ((content_item.get(\"is_unrestricted\") === false) && (content_item.get(\"is_private\") === false)) { %>',\n '',\n \"<% } %>\",\n '<% if (content_item.get(\"can_manage\")) { %>',\n '/datasets/<%- content_item.id %>/permissions\">',\n '\",\n \"\",\n \"<% } %>\",\n \"\",\n \"\"\n ].join(\"\")\n );\n },\n\n templateRowDeletedFile: function() {\n return _.template(\n [\n '\">',\n \"\",\n '',\n \"\",\n \"\",\n '',\n '<%- content_item.get(\"name\") %>',\n \"\",\n \"\",\n '<%- content_item.get(\"message\") %>',\n \"\",\n \"\",\n '<%= _.escape(content_item.get(\"file_ext\")) %>',\n \"\",\n \"\",\n '<%= _.escape(content_item.get(\"file_size\")) %>',\n \"\",\n \"\",\n '<%= _.escape(content_item.get(\"update_time\")) %>',\n \"\",\n \"\",\n '<% if ( content_item.get(\"state\") !== \"ok\" ) { %>',\n '<%= _.escape(content_item.get(\"state\")) %>',\n \"<% } %>\",\n \"\",\n \"\",\n '',\n '\",\n \"\",\n \"\"\n ].join(\"\")\n );\n },\n\n templateRowDeletedFolder: function() {\n return _.template(\n [\n '\">',\n \"\",\n '',\n \"\",\n \"\",\n '',\n '<%- content_item.get(\"name\") %>',\n \"\",\n \"\",\n '<%- content_item.get(\"description\") %>',\n \"\",\n \"\",\n \"folder\",\n \"\",\n \"\",\n \"\",\n '<%= _.escape(content_item.get(\"update_time\")) %>',\n \"\",\n \"\",\n \"\",\n '',\n '\",\n \"\",\n \"\"\n ].join(\"\")\n );\n }\n });\n\n return {\n FolderRowView: FolderRowView\n };\n }\n);\n"]} \ No newline at end of file +{"version":3,"sources":["mvc/library/library-folderrow-view.js"],"names":["define","FolderRowView","events","mod_toastr","mod_library_model","mod_library_dataset_view","Backbone","View","extend","click .undelete_dataset_btn","click .undelete_folder_btn","click .edit_folder_btn","defaults","type","save_folder_btn","cancel_folder_btn","permission_folder_btn","edit_folder_btn","edit_mode","_","initialize","options","this","render","folder_item","model","template","prepareButtons","vis_config","get","templateRowFolder","templateRowDeletedFile","templateRowFile","Galaxy","error","setElement","button_config","emit","folder","visibility_config","datasetView","dataset_id","event","closest","dataset","folderListView","url","destroy","libraries","success","onclick","LibraryDatasetView","id","$","hide","target","data","collection","urlRoot","undeleteFolder","response","remove","add","updated_folder","folder_id","that","window","location","root","responseJSON","err_msg","new_description","$el","is_changed","row_view","save","patch","FolderAsModel","sortFolder","repaint","startModifications","find","cancelModifications","val","new_name","templateRowDeletedFolder","length","set","info","old_element","replaceWith","tooltip","join"],"mappings":"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ED,6EACA,OACA,gDACA,QACA,mFACA,yBACA,OACA,gFACA,QACA,OACA,yCACA,QACA,8BACA,oIACA,yJACA,UACA,kBACA,YACA,OACA,mDACA,QACA,YACA,OACA,wBACA,4NACA,sCACA,YACA,mOACA,qCACA,YACA,+BACA,0PACA,oCACA,YACA,0DACA,gQACA,qCACA,YACA,OACA,UACA,QACA,SACFkE,KAAK,MAIf5D,gBAAiB,WACb,OAAOb,EAAEO,UAED,8EACA,OACA,+CACA,QACA,oCACA,6CACA,QACA,OACA,mHACA,kCACA,MACA,QACA,8CACA,yDACA,0DACA,4DACA,OACA,oDACA,6CACA,UACA,QACA,OACA,mDACA,gIACA,UACA,8CACA,yHACA,UACA,6GACA,+HACA,UACA,8CACA,uGACA,uKACA,qCACA,YACA,OACA,UACA,QACA,SACFkE,KAAK,MAIf7D,uBAAwB,WACpB,OAAOZ,EAAEO,UAED,mFACA,OACA,+CACA,QACA,YACA,2BACA,kCACA,QACA,OACA,qCACA,QACA,OACA,gDACA,QACA,OACA,iDACA,QACA,OACA,mDACA,QACA,OACA,oDACA,6CACA,UACA,QACA,OACA,wHACA,qMACA,wCACA,YACA,QACA,SACFkE,KAAK,MAIfP,yBAA0B,WACtB,OAAOlE,EAAEO,UAED,wFACA,OACA,gDACA,QACA,YACA,2BACA,kCACA,QACA,OACA,yCACA,QACA,OACA,SACA,QACA,YACA,OACA,mDACA,QACA,YACA,OACA,wHACA,oMACA,wCACA,YACA,QACA,SACFkE,KAAK","file":"../../../scripts/mvc/library/library-folderrow-view.js","sourcesContent":["define(\n [\n \"libs/toastr\",\n \"mvc/library/library-model\",\n \"mvc/library/library-dataset-view\"\n ],\n function(mod_toastr, mod_library_model, mod_library_dataset_view) {\n var FolderRowView = Backbone.View.extend({\n events: {\n \"click .undelete_dataset_btn\": \"undeleteDataset\",\n \"click .undelete_folder_btn\": \"undeleteFolder\",\n \"click .edit_folder_btn\": \"startModifications\",\n \"click .cancel_folder_btn\": \"cancelModifications\",\n \"click .save_folder_btn\": \"saveModifications\"\n },\n\n defaults: {\n type: null,\n visibility_config: {\n edit_folder_btn: false,\n save_folder_btn: false,\n cancel_folder_btn: false,\n permission_folder_btn: false\n },\n edit_mode: false\n },\n\n initialize: function(options) {\n this.options = _.defaults(options || {}, this.defaults);\n this.render(this.options);\n },\n\n render: function(options) {\n this.options = _.extend(this.options, options);\n var folder_item = this.options.model;\n var template = null;\n\n if (\n folder_item.get(\"type\") === \"folder\" ||\n folder_item.get(\"model_class\") === \"LibraryFolder\"\n ) {\n this.options.type = \"folder\";\n this.prepareButtons(folder_item);\n if (folder_item.get(\"deleted\")) {\n template = this.templateRowDeletedFolder();\n } else {\n template = this.templateRowFolder();\n }\n } else if (\n folder_item.get(\"type\") === \"file\" ||\n folder_item.get(\"model_class\") ===\n \"LibraryDatasetDatasetAssociation\" ||\n folder_item.get(\"model_class\") === \"LibraryDataset\"\n ) {\n this.options.type = \"file\";\n if (folder_item.get(\"deleted\")) {\n template = this.templateRowDeletedFile();\n } else {\n template = this.templateRowFile();\n }\n } else {\n Galaxy.emit.error(\"Unknown library item type found.\");\n Galaxy.emit.error(\n folder_item.get(\"type\") ||\n folder_item.get(\"model_class\")\n );\n }\n this.setElement(\n template({\n content_item: folder_item,\n edit_mode: this.options.edit_mode,\n button_config: this.options.visibility_config\n })\n );\n this.$el.show();\n return this;\n },\n\n /**\n * Modify the visibility of buttons for\n * the filling of the row template of a given folder.\n */\n prepareButtons: function(folder) {\n var vis_config = this.options.visibility_config;\n if (this.options.edit_mode === false) {\n vis_config.save_folder_btn = false;\n vis_config.cancel_folder_btn = false;\n if (folder.get(\"deleted\") === true) {\n vis_config.edit_folder_btn = false;\n vis_config.permission_folder_btn = false;\n } else if (folder.get(\"deleted\") === false) {\n vis_config.save_folder_btn = false;\n vis_config.cancel_folder_btn = false;\n if (folder.get(\"can_modify\") === true) {\n vis_config.edit_folder_btn = true;\n }\n if (folder.get(\"can_manage\") === true) {\n vis_config.permission_folder_btn = true;\n }\n }\n } else if (this.options.edit_mode === true) {\n vis_config.edit_folder_btn = false;\n vis_config.permission_folder_btn = false;\n vis_config.save_folder_btn = true;\n vis_config.cancel_folder_btn = true;\n }\n this.options.visibility_config = vis_config;\n },\n\n /* Show the page with dataset details. */\n showDatasetDetails: function() {\n Galaxy.libraries.datasetView = new mod_library_dataset_view.LibraryDatasetView(\n { id: this.id }\n );\n },\n\n /* Undelete the dataset on server and render the row again. */\n undeleteDataset: function(event) {\n $(\".tooltip\").hide();\n var that = this;\n var dataset_id = $(event.target)\n .closest(\"tr\")\n .data(\"id\");\n var dataset = Galaxy.libraries.folderListView.collection.get(\n dataset_id\n );\n dataset.url = dataset.urlRoot + dataset.id + \"?undelete=true\";\n dataset.destroy({\n success: function(model, response) {\n Galaxy.libraries.folderListView.collection.remove(\n dataset_id\n );\n var updated_dataset = new mod_library_model.Item(\n response\n );\n Galaxy.libraries.folderListView.collection.add(\n updated_dataset\n );\n Galaxy.libraries.folderListView.collection.sortFolder(\n \"name\",\n \"asc\"\n );\n mod_toastr.success(\n \"Dataset undeleted. Click this to see it.\",\n \"\",\n {\n onclick: function() {\n var folder_id = that.model.get(\"folder_id\");\n window.location =\n Galaxy.root +\n \"library/list#folders/\" +\n folder_id +\n \"/datasets/\" +\n that.id;\n }\n }\n );\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(\n \"Dataset was not undeleted. \" +\n response.responseJSON.err_msg\n );\n } else {\n mod_toastr.error(\n \"An error occured! Dataset was not undeleted. Please try again.\"\n );\n }\n }\n });\n },\n\n /* Undelete the folder on server and render the row again. */\n undeleteFolder: function(event) {\n $(\".tooltip\").hide();\n var that = this;\n var folder_id = $(event.target)\n .closest(\"tr\")\n .data(\"id\");\n var folder = Galaxy.libraries.folderListView.collection.get(\n folder_id\n );\n folder.url = folder.urlRoot + folder.id + \"?undelete=true\";\n folder.destroy({\n success: function(model, response) {\n Galaxy.libraries.folderListView.collection.remove(\n folder_id\n );\n var updated_folder = new mod_library_model.FolderAsModel(\n response\n );\n Galaxy.libraries.folderListView.collection.add(\n updated_folder\n );\n Galaxy.libraries.folderListView.collection.sortFolder(\n \"name\",\n \"asc\"\n );\n mod_toastr.success(\"Folder undeleted.\");\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(\n \"Folder was not undeleted. \" +\n response.responseJSON.err_msg\n );\n } else {\n mod_toastr.error(\n \"An error occured! Folder was not undeleted. Please try again.\"\n );\n }\n }\n });\n },\n\n /* User clicked the 'edit' button on row so render the row as editable. */\n startModifications: function() {\n this.options.edit_mode = true;\n this.repaint();\n },\n\n /* User clicked the 'cancel' button so render normal row */\n cancelModifications: function() {\n this.options.edit_mode = false;\n this.repaint();\n },\n\n saveModifications: function() {\n var folder = Galaxy.libraries.folderListView.collection.get(\n this.$el.data(\"id\")\n );\n var is_changed = false;\n var new_name = this.$el.find(\".input_folder_name\").val();\n if (\n typeof new_name !== \"undefined\" &&\n new_name !== folder.get(\"name\")\n ) {\n if (new_name.length > 2) {\n folder.set(\"name\", new_name);\n is_changed = true;\n } else {\n mod_toastr.warning(\n \"Folder name has to be at least 3 characters long.\"\n );\n return;\n }\n }\n var new_description = this.$el\n .find(\".input_folder_description\")\n .val();\n if (\n typeof new_description !== \"undefined\" &&\n new_description !== folder.get(\"description\")\n ) {\n folder.set(\"description\", new_description);\n is_changed = true;\n }\n if (is_changed) {\n var row_view = this;\n folder.save(null, {\n patch: true,\n success: function(folder) {\n row_view.options.edit_mode = false;\n row_view.repaint(folder);\n mod_toastr.success(\"Changes to folder saved.\");\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(response.responseJSON.err_msg);\n } else {\n mod_toastr.error(\n \"An error occured while attempting to update the folder.\"\n );\n }\n }\n });\n } else {\n this.options.edit_mode = false;\n this.repaint(folder);\n mod_toastr.info(\"Nothing has changed.\");\n }\n },\n\n repaint: function() {\n /* need to hide manually because of the element removal in setElement\n invoked in render() */\n $(\".tooltip\").hide();\n /* we need to store the old element to be able to replace it with\n new one */\n var old_element = this.$el;\n /* if user canceled the folder param is undefined,\n if user saved and succeeded the updated folder is rendered */\n this.render();\n old_element.replaceWith(this.$el);\n /* now we attach new tooltips to the newly created row element */\n this.$el.find(\"[data-toggle]\").tooltip();\n },\n\n templateRowFolder: function() {\n return _.template(\n [\n '\">',\n \"\",\n '',\n \"\",\n '',\n \"<% if(!edit_mode) { %>\",\n \"\",\n '\"><%- content_item.get(\"name\") %>',\n \"\",\n \"\",\n '<%- content_item.get(\"description\") %>',\n \"\",\n \"<% } else if(edit_mode){ %>\",\n '',\n '',\n \"<% } %>\",\n \"folder\",\n \"\",\n \"\",\n '<%= _.escape(content_item.get(\"update_time\")) %>',\n \"\",\n \"\",\n \"\",\n \"<% if(edit_mode) { %>\", // start edit mode\n '\",\n '\",\n \"<% } else if (!edit_mode){%>\", // start no edit mode\n '\",\n '/permissions\">',\n '\",\n \"\",\n \"<% } %>\", //end no edit mode\n \"\",\n \"\"\n ].join(\"\")\n );\n },\n\n templateRowFile: function() {\n return _.template(\n [\n '\">',\n \"\",\n '',\n \"\",\n '',\n '',\n \"\",\n \"\",\n '/datasets/<%- content_item.id %>\" class=\"library-dataset\">',\n '<%- content_item.get(\"name\") %>',\n \"\",\n \"\",\n '<%- content_item.get(\"message\") %>',\n '<%= _.escape(content_item.get(\"file_ext\")) %>',\n '<%= _.escape(content_item.get(\"file_size\")) %>',\n '<%= _.escape(content_item.get(\"update_time\")) %>',\n \"\",\n '<% if ( content_item.get(\"state\") !== \"ok\" ) { %>',\n '<%= _.escape(content_item.get(\"state\")) %>',\n \"<% } %>\",\n \"\",\n \"\",\n '<% if (content_item.get(\"is_unrestricted\")) { %>',\n '',\n \"<% } %>\",\n '<% if (content_item.get(\"is_private\")) { %>',\n '',\n \"<% } %>\",\n '<% if ((content_item.get(\"is_unrestricted\") === false) && (content_item.get(\"is_private\") === false)) { %>',\n '',\n \"<% } %>\",\n '<% if (content_item.get(\"can_manage\")) { %>',\n '/datasets/<%- content_item.id %>/permissions\">',\n '\",\n \"\",\n \"<% } %>\",\n \"\",\n \"\"\n ].join(\"\")\n );\n },\n\n templateRowDeletedFile: function() {\n return _.template(\n [\n '\">',\n \"\",\n '',\n \"\",\n \"\",\n '',\n '<%- content_item.get(\"name\") %>',\n \"\",\n \"\",\n '<%- content_item.get(\"message\") %>',\n \"\",\n \"\",\n '<%= _.escape(content_item.get(\"file_ext\")) %>',\n \"\",\n \"\",\n '<%= _.escape(content_item.get(\"file_size\")) %>',\n \"\",\n \"\",\n '<%= _.escape(content_item.get(\"update_time\")) %>',\n \"\",\n \"\",\n '<% if ( content_item.get(\"state\") !== \"ok\" ) { %>',\n '<%= _.escape(content_item.get(\"state\")) %>',\n \"<% } %>\",\n \"\",\n \"\",\n '',\n '\",\n \"\",\n \"\"\n ].join(\"\")\n );\n },\n\n templateRowDeletedFolder: function() {\n return _.template(\n [\n '\">',\n \"\",\n '',\n \"\",\n \"\",\n '',\n '<%- content_item.get(\"name\") %>',\n \"\",\n \"\",\n '<%- content_item.get(\"description\") %>',\n \"\",\n \"\",\n \"folder\",\n \"\",\n \"\",\n \"\",\n '<%= _.escape(content_item.get(\"update_time\")) %>',\n \"\",\n \"\",\n \"\",\n '',\n '\",\n \"\",\n \"\"\n ].join(\"\")\n );\n }\n });\n\n return {\n FolderRowView: FolderRowView\n };\n }\n);\n"]} \ No newline at end of file diff --git a/static/maps/mvc/library/library-librarylist-view.js.map b/static/maps/mvc/library/library-librarylist-view.js.map index 9bee19d84e0..ddff00fc496 100644 --- a/static/maps/mvc/library/library-librarylist-view.js.map +++ b/static/maps/mvc/library/library-librarylist-view.js.map @@ -1 +1 @@ -{"version":3,"sources":["mvc/library/library-librarylist-view.js"],"names":["define","LibraryListView","el","mod_toastr","mod_library_model","mod_library_libraryrow_view","_","Backbone","View","extend","page_count","show_page","defaults","all_fetched","initialize","collection","options","this","success","that","render","error","modal","Libraries","urlRoot","fetch","model","response","responseJSON","err_msg","models","setElement","template","templateLibraryList","libraries_to_render","Galaxy","libraries","get","deleted","preferences","is_deleted","where","filter","is_public","page_start","Math","total_libraries_count","search_term","length","fetchDeleted","ceil","remove","slice","$el","i","library","renderOne","order","libraryToolbarView","renderPaginator","rowView","renderRows","html","$","tooltip","css","url","searchLibraries","trimmed_term","search","LibraryRowView","find","append","sort_clicked","set","sort_order","sortLibraries","sortByNameAsc","sortByNameDesc","trim","results","searching","join"],"mappings":"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","file":"../../../scripts/mvc/library/library-librarylist-view.js","sourcesContent":["define(\n [\n \"libs/toastr\",\n \"mvc/library/library-model\",\n \"mvc/library/library-libraryrow-view\",\n \"libs/underscore\"\n ],\n function(mod_toastr, mod_library_model, mod_library_libraryrow_view, _) {\n var LibraryListView = Backbone.View.extend({\n el: \"#libraries_element\",\n\n events: {\n \"click .sort-libraries-link\": \"sort_clicked\"\n },\n\n defaults: {\n page_count: null,\n show_page: null,\n all_fetched: false\n },\n\n /**\n * Initialize and fetch the libraries from server.\n * Async render afterwards.\n * @param {object} options an object with options\n */\n initialize: function(options) {\n this.options = _.defaults(\n this.options || {},\n options,\n this.defaults\n );\n var that = this;\n this.modal = null;\n // collection of {Item}s\n this.collection = new mod_library_model.Libraries();\n this.collection.url =\n this.collection.urlRoot + \"?deleted=false\";\n this.collection.fetch({\n success: function() {\n that.render();\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(response.responseJSON.err_msg);\n } else {\n mod_toastr.error(\"An error occurred.\");\n }\n }\n });\n },\n\n /**\n * Render the libraries table either from the object's own collection,\n * or from a given array of library models,\n * or render an empty list in case no data is given.\n */\n render: function(options) {\n this.options = _.extend(this.options, options);\n this.setElement(\"#libraries_element\");\n var template = this.templateLibraryList();\n var libraries_to_render = null;\n var models = null;\n var is_public = function(model) {\n return model.get(\"public\") === true;\n };\n $(\".tooltip\").hide();\n if (typeof options !== \"undefined\") {\n models =\n typeof options.models !== \"undefined\"\n ? options.models\n : null;\n }\n if (this.collection !== null && models === null) {\n this.sortLibraries();\n if (Galaxy.libraries.preferences.get(\"with_deleted\")) {\n libraries_to_render = this.collection.models;\n } else {\n libraries_to_render = this.collection.where({\n deleted: false\n });\n }\n if (\n Galaxy.libraries.preferences.get(\"without_restricted\")\n ) {\n libraries_to_render = _.filter(\n libraries_to_render,\n is_public\n );\n }\n } else if (models !== null) {\n if (Galaxy.libraries.preferences.get(\"with_deleted\")) {\n libraries_to_render = models;\n } else {\n var is_deleted = function(model) {\n return model.get(\"deleted\") === false;\n };\n libraries_to_render = _.filter(models, is_deleted);\n }\n if (\n Galaxy.libraries.preferences.get(\"without_restricted\")\n ) {\n libraries_to_render = _.filter(\n libraries_to_render,\n is_public\n );\n }\n } else {\n libraries_to_render = [];\n }\n\n // pagination\n if (\n this.options.show_page === null ||\n this.options.show_page < 1\n ) {\n this.options.show_page = 1;\n }\n this.options.total_libraries_count = libraries_to_render.length;\n var page_start =\n Galaxy.libraries.preferences.get(\"library_page_size\") *\n (this.options.show_page - 1);\n this.options.page_count = Math.ceil(\n this.options.total_libraries_count /\n Galaxy.libraries.preferences.get(\"library_page_size\")\n );\n if (\n this.options.total_libraries_count > 0 &&\n page_start < this.options.total_libraries_count\n ) {\n libraries_to_render = libraries_to_render.slice(\n page_start,\n page_start +\n Galaxy.libraries.preferences.get(\n \"library_page_size\"\n )\n );\n this.options.libraries_shown = libraries_to_render.length;\n // User requests page with no libraries\n if (\n Galaxy.libraries.preferences.get(\"library_page_size\") *\n this.options.show_page >\n this.options.total_libraries_count +\n Galaxy.libraries.preferences.get(\n \"library_page_size\"\n )\n ) {\n libraries_to_render = [];\n }\n this.$el.html(\n template({\n length: 1,\n order: Galaxy.libraries.preferences.get(\n \"sort_order\"\n ),\n search_term:\n Galaxy.libraries.libraryToolbarView.options\n .search_term\n })\n );\n Galaxy.libraries.libraryToolbarView.renderPaginator(\n this.options\n );\n this.renderRows(libraries_to_render);\n } else {\n this.$el.html(\n template({\n length: 0,\n order: Galaxy.libraries.preferences.get(\n \"sort_order\"\n ),\n search_term:\n Galaxy.libraries.libraryToolbarView.options\n .search_term\n })\n );\n Galaxy.libraries.libraryToolbarView.renderPaginator(\n this.options\n );\n }\n $(\"#center [data-toggle]\").tooltip();\n $(\"#center\").css(\"overflow\", \"auto\");\n },\n\n fetchDeleted: function() {\n if (this.options.all_fetched) {\n this.render();\n } else {\n var that = this;\n this.collection.url =\n this.collection.urlRoot + \"?deleted=true\";\n this.collection.fetch({\n remove: false,\n success: function() {\n that.options.all_fetched = true;\n that.render();\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(response.responseJSON.err_msg);\n } else {\n mod_toastr.error(\"An error occurred.\");\n }\n }\n });\n }\n },\n\n /**\n * Render all given models as rows in the library list\n * @param {array} libraries_to_render array of library models to render\n */\n renderRows: function(libraries_to_render) {\n for (var i = 0; i < libraries_to_render.length; i++) {\n var library = libraries_to_render[i];\n this.renderOne({ library: library });\n }\n },\n\n /**\n * Create a view for the given model and add it to the libraries view.\n * @param {Library} model of the view that will be rendered\n */\n renderOne: function(options) {\n var library = options.library;\n var rowView = new mod_library_libraryrow_view.LibraryRowView(\n library\n );\n this.$el.find(\"#library_list_body\").append(rowView.el);\n },\n\n /**\n * Table heading was clicked, update sorting preferences and re-render.\n * @return {[type]} [description]\n */\n sort_clicked: function() {\n if (Galaxy.libraries.preferences.get(\"sort_order\") === \"asc\") {\n Galaxy.libraries.preferences.set({ sort_order: \"desc\" });\n } else {\n Galaxy.libraries.preferences.set({ sort_order: \"asc\" });\n }\n this.render();\n },\n\n /**\n * Sort the underlying collection according to the parameters received.\n * Currently supports only sorting by name.\n */\n sortLibraries: function() {\n if (Galaxy.libraries.preferences.get(\"sort_by\") === \"name\") {\n if (\n Galaxy.libraries.preferences.get(\"sort_order\") === \"asc\"\n ) {\n this.collection.sortByNameAsc();\n } else if (\n Galaxy.libraries.preferences.get(\"sort_order\") ===\n \"desc\"\n ) {\n this.collection.sortByNameDesc();\n }\n }\n },\n\n /**\n * In case the search_term is not empty perform the search and render\n * the result. Render all visible libraries otherwise.\n * @param {string} search_term string to search for\n */\n searchLibraries: function(search_term) {\n var trimmed_term = $.trim(search_term);\n if (trimmed_term !== \"\") {\n var results = null;\n results = this.collection.search(search_term);\n this.options.searching = true;\n this.render({ models: results, show_page: 1 });\n } else {\n this.options.searching = false;\n this.render();\n }\n },\n\n // MMMMMMMMMMMMMMMMMM\n // === TEMPLATES ====\n // MMMMMMMMMMMMMMMMMM\n\n templateLibraryList: function() {\n return _.template(\n [\n '
',\n \"<% if(length === 0) { %>\",\n \"<% if(search_term.length > 0) { %>\",\n \"
\",\n \"There are no libraries matching your search. Try different keyword.\",\n \"
\",\n \"<% } else{ %>\",\n \"
\",\n \"There are no libraries visible to you here. If you expected some to show up please consult the\",\n ' library security wikipage',\n ' or visit the Galaxy support site.',\n \"
\",\n \"<% }%>\",\n \"<% } else{ %>\",\n '',\n \"\",\n '\",\n '',\n ' ',\n '',\n \"\",\n '',\n // library item views will attach here\n \"\",\n \"
',\n '',\n \"name\",\n \"\",\n '\"/>',\n \"descriptionsynopsis
\",\n \"<% }%>\",\n \"
\"\n ].join(\"\")\n );\n }\n });\n\n return {\n LibraryListView: LibraryListView\n };\n }\n);\n"]} \ No newline at end of file +{"version":3,"sources":["mvc/library/library-librarylist-view.js"],"names":["define","LibraryListView","el","mod_toastr","mod_library_model","mod_library_libraryrow_view","_","Backbone","View","extend","page_count","show_page","defaults","all_fetched","initialize","collection","options","this","success","that","render","error","modal","Libraries","urlRoot","fetch","model","response","responseJSON","err_msg","models","setElement","template","templateLibraryList","libraries_to_render","Galaxy","libraries","get","deleted","preferences","is_deleted","where","filter","is_public","page_start","Math","total_libraries_count","search_term","length","fetchDeleted","ceil","remove","slice","$el","i","library","renderOne","order","libraryToolbarView","renderPaginator","rowView","renderRows","html","$","tooltip","css","url","searchLibraries","trimmed_term","search","LibraryRowView","find","append","sort_clicked","set","sort_order","sortLibraries","trim","results","searching","join"],"mappings":"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","file":"../../../scripts/mvc/library/library-librarylist-view.js","sourcesContent":["define(\n [\n \"libs/toastr\",\n \"mvc/library/library-model\",\n \"mvc/library/library-libraryrow-view\",\n \"libs/underscore\"\n ],\n function(mod_toastr, mod_library_model, mod_library_libraryrow_view, _) {\n var LibraryListView = Backbone.View.extend({\n el: \"#libraries_element\",\n\n events: {\n \"click .sort-libraries-link\": \"sort_clicked\"\n },\n\n defaults: {\n page_count: null,\n show_page: null,\n all_fetched: false\n },\n\n /**\n * Initialize and fetch the libraries from server.\n * Async render afterwards.\n * @param {object} options an object with options\n */\n initialize: function(options) {\n this.options = _.defaults(\n this.options || {},\n options,\n this.defaults\n );\n var that = this;\n this.modal = null;\n // collection of {Item}s\n this.collection = new mod_library_model.Libraries();\n this.collection.url =\n this.collection.urlRoot + \"?deleted=false\";\n this.collection.fetch({\n success: function() {\n that.render();\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(response.responseJSON.err_msg);\n } else {\n mod_toastr.error(\"An error occurred.\");\n }\n }\n });\n },\n\n /**\n * Render the libraries table either from the object's own collection,\n * or from a given array of library models,\n * or render an empty list in case no data is given.\n */\n render: function(options) {\n this.options = _.extend(this.options, options);\n this.setElement(\"#libraries_element\");\n var template = this.templateLibraryList();\n var libraries_to_render = null;\n var models = null;\n var is_public = function(model) {\n return model.get(\"public\") === true;\n };\n $(\".tooltip\").hide();\n if (typeof options !== \"undefined\") {\n models =\n typeof options.models !== \"undefined\"\n ? options.models\n : null;\n }\n if (this.collection !== null && models === null) {\n this.sortLibraries();\n if (Galaxy.libraries.preferences.get(\"with_deleted\")) {\n libraries_to_render = this.collection.models;\n } else {\n libraries_to_render = this.collection.where({\n deleted: false\n });\n }\n if (\n Galaxy.libraries.preferences.get(\"without_restricted\")\n ) {\n libraries_to_render = _.filter(\n libraries_to_render,\n is_public\n );\n }\n } else if (models !== null) {\n if (Galaxy.libraries.preferences.get(\"with_deleted\")) {\n libraries_to_render = models;\n } else {\n var is_deleted = function(model) {\n return model.get(\"deleted\") === false;\n };\n libraries_to_render = _.filter(models, is_deleted);\n }\n if (\n Galaxy.libraries.preferences.get(\"without_restricted\")\n ) {\n libraries_to_render = _.filter(\n libraries_to_render,\n is_public\n );\n }\n } else {\n libraries_to_render = [];\n }\n\n // pagination\n if (\n this.options.show_page === null ||\n this.options.show_page < 1\n ) {\n this.options.show_page = 1;\n }\n this.options.total_libraries_count = libraries_to_render.length;\n var page_start =\n Galaxy.libraries.preferences.get(\"library_page_size\") *\n (this.options.show_page - 1);\n this.options.page_count = Math.ceil(\n this.options.total_libraries_count /\n Galaxy.libraries.preferences.get(\"library_page_size\")\n );\n if (\n this.options.total_libraries_count > 0 &&\n page_start < this.options.total_libraries_count\n ) {\n libraries_to_render = libraries_to_render.slice(\n page_start,\n page_start +\n Galaxy.libraries.preferences.get(\n \"library_page_size\"\n )\n );\n this.options.libraries_shown = libraries_to_render.length;\n // User requests page with no libraries\n if (\n Galaxy.libraries.preferences.get(\"library_page_size\") *\n this.options.show_page >\n this.options.total_libraries_count +\n Galaxy.libraries.preferences.get(\n \"library_page_size\"\n )\n ) {\n libraries_to_render = [];\n }\n this.$el.html(\n template({\n length: 1,\n order: Galaxy.libraries.preferences.get(\n \"sort_order\"\n ),\n search_term:\n Galaxy.libraries.libraryToolbarView.options\n .search_term\n })\n );\n Galaxy.libraries.libraryToolbarView.renderPaginator(\n this.options\n );\n this.renderRows(libraries_to_render);\n } else {\n this.$el.html(\n template({\n length: 0,\n order: Galaxy.libraries.preferences.get(\n \"sort_order\"\n ),\n search_term:\n Galaxy.libraries.libraryToolbarView.options\n .search_term\n })\n );\n Galaxy.libraries.libraryToolbarView.renderPaginator(\n this.options\n );\n }\n $(\"#center [data-toggle]\").tooltip();\n $(\"#center\").css(\"overflow\", \"auto\");\n },\n\n fetchDeleted: function() {\n if (this.options.all_fetched) {\n this.render();\n } else {\n var that = this;\n this.collection.url =\n this.collection.urlRoot + \"?deleted=true\";\n this.collection.fetch({\n remove: false,\n success: function() {\n that.options.all_fetched = true;\n that.render();\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(response.responseJSON.err_msg);\n } else {\n mod_toastr.error(\"An error occurred.\");\n }\n }\n });\n }\n },\n\n /**\n * Render all given models as rows in the library list\n * @param {array} libraries_to_render array of library models to render\n */\n renderRows: function(libraries_to_render) {\n for (var i = 0; i < libraries_to_render.length; i++) {\n var library = libraries_to_render[i];\n this.renderOne({ library: library });\n }\n },\n\n /**\n * Create a view for the given model and add it to the libraries view.\n * @param {Library} model of the view that will be rendered\n */\n renderOne: function(options) {\n var library = options.library;\n var rowView = new mod_library_libraryrow_view.LibraryRowView(\n library\n );\n this.$el.find(\"#library_list_body\").append(rowView.el);\n },\n\n /**\n * Table heading was clicked, update sorting preferences and re-render.\n * @return {[type]} [description]\n */\n sort_clicked: function() {\n if (Galaxy.libraries.preferences.get(\"sort_order\") === \"asc\") {\n Galaxy.libraries.preferences.set({ sort_order: \"desc\" });\n } else {\n Galaxy.libraries.preferences.set({ sort_order: \"asc\" });\n }\n this.render();\n },\n\n /**\n * Sort the underlying collection according to the parameters received.\n * Currently supports only sorting by name.\n */\n sortLibraries: function() {\n if (Galaxy.libraries.preferences.get(\"sort_by\") === \"name\") {\n if (\n Galaxy.libraries.preferences.get(\"sort_order\") === \"asc\"\n ) {\n this.collection.sortLibraries(\"name\", \"asc\");\n } else if (\n Galaxy.libraries.preferences.get(\"sort_order\") ===\n \"desc\"\n ) {\n this.collection.sortLibraries(\"name\", \"desc\");\n }\n }\n },\n\n /**\n * In case the search_term is not empty perform the search and render\n * the result. Render all visible libraries otherwise.\n * @param {string} search_term string to search for\n */\n searchLibraries: function(search_term) {\n var trimmed_term = $.trim(search_term);\n if (trimmed_term !== \"\") {\n var results = null;\n results = this.collection.search(search_term);\n this.options.searching = true;\n this.render({ models: results, show_page: 1 });\n } else {\n this.options.searching = false;\n this.render();\n }\n },\n\n // MMMMMMMMMMMMMMMMMM\n // === TEMPLATES ====\n // MMMMMMMMMMMMMMMMMM\n\n templateLibraryList: function() {\n return _.template(\n [\n '
',\n \"<% if(length === 0) { %>\",\n \"<% if(search_term.length > 0) { %>\",\n \"
\",\n \"There are no libraries matching your search. Try different keyword.\",\n \"
\",\n \"<% } else{ %>\",\n \"
\",\n \"There are no libraries visible to you here. If you expected some to show up please consult the\",\n ' library security wikipage',\n ' or visit the Galaxy support site.',\n \"
\",\n \"<% }%>\",\n \"<% } else{ %>\",\n '',\n \"\",\n '\",\n '',\n ' ',\n '',\n \"\",\n '',\n // library item views will attach here\n \"\",\n \"
',\n '',\n \"name\",\n \"\",\n '\"/>',\n \"descriptionsynopsis
\",\n \"<% }%>\",\n \"
\"\n ].join(\"\")\n );\n }\n });\n\n return {\n LibraryListView: LibraryListView\n };\n }\n);\n"]} \ No newline at end of file diff --git a/static/maps/mvc/library/library-model.js.map b/static/maps/mvc/library/library-model.js.map index 40c35c01426..0bfba91e2c9 100644 --- a/static/maps/mvc/library/library-model.js.map +++ b/static/maps/mvc/library/library-model.js.map @@ -1 +1 @@ -{"version":3,"sources":["mvc/library/library-model.js"],"names":["define","Library","Backbone","Model","extend","urlRoot","Galaxy","root","isVisible","show_deleted","this","Libraries","Collection","model","sort_key","sort_order","options","search","search_term","lowercase_term","toLowerCase","data","indexOf","getVisible","filters","item","filteredLibraries","sortByNameAsc","sortByNameDesc","comparator","libraryA","libraryB","get","sort","LibraryItem","Ldda","FolderAsModel","itemA","Folder","itemB","FolderContainer","obj","reset","type","folder_contents","folder_item","defaults","folder","id","HistoryItem","i","length","initialize","add","file_item","emit","error","Jstree","GalaxyHistories","GalaxyHistory","Item","HistoryContents"],"mappings":"aAAAA,UAAW,WAEP,IAAAC,EAAAC,SAAAC,MAAAC,QAGIC,QAASC,OAAOC,KAAO,iBAKvBC,UAAW,SAASC,GAChB,IAAID,GAAY,EAEZA,OAHRA,GAAWE,KAASD,IAAAA,aACZD,GAAY,GAEZA,KATZG,EAAAT,SAAAU,WAAAR,QAgBIC,QAASC,OAAOC,KAAO,gBAAvBF,MAAAA,EAEAQ,SAAOZ,OAEPa,WAAU,KAEVC,WAAY,SAAMC,GAGdA,EAAUA,OACbC,OAXsC,SAAAC,GAoBnC,GAAmB,IAAfA,EAAmB,OAAOR,KAC9B,IAAIS,EAAiBD,EAAYE,cADjC,OAAIF,KAAAA,OAAe,SAAIG,GAEvB,OAAkC,IADbH,EAAAA,IAAYE,QAAAA,cACdE,QAAAH,MAUvBI,WAAY,SAASd,EAAce,GAQ/B,OAPAA,EAAUA,MADF,IAASf,EACjBe,KAAAA,OAAUA,SAAVC,GACIC,OAAAA,EAAAA,UAAwBf,OAYhCgB,cAAe,WAuBfC,OAtBIlB,KAAKmB,WAAa,SAAAC,EAAAC,GACd,OAIID,EADFE,IACY,QAAAZ,cACbW,EAAAC,IAAA,QAAAZ,cAKU,EAXfW,EAAAC,IAAA,QAAAZ,cAeKa,EAALD,IAAA,QAAAZ,eA9DmC,EAkEvC,GAJIV,KAAKuB,OAOTL,MAYYA,eAAA,WAKR,OAJKlB,KAAAmB,WAAA,SAAAC,EAAAC,GACD,OAbJD,EAAAE,IAAA,QAAAZ,cAeKa,EAALD,IAAA,QAAAZ,eAEH,EAGLW,EAAAC,IAAA,QAAAZ,cACAU,EAAAE,IAAA,QAAAZ,cAEkBlB,EAEPgC,GAAXxB,KAAAuB,OATevB,QAOXwB,EAAchC,SAASC,MAAMC,WAE7B+B,EAAOD,EAAY9B,QACnBC,QAASC,OAAOC,KAAO,4BAef6B,EAAIC,EAAAjC,QACAC,QAAAC,OACI+B,KAAML,iBAKVM,EAAApC,SACIqC,WAAUnC,QAGVS,MAAAqB,EAKAP,cAAA,WA+BA,OA9BHjB,KAAAmB,WAAM,SAAAQ,EAAAE,GACH,OAAAF,EAAAL,IAAA,UAAAO,EAAAP,IAAA,QAEPK,EAAAL,IAAA,QAAAZ,cArBLmB,EAAAP,IAAA,QAAAZ,cAwBA,EAGJmB,EAAAP,IAAA,QAAAZ,cAjBgBiB,EAAML,IAAI,QAAQZ,eAoBlB,EAEEY,EAKS,WAAXK,EAAAL,IADF,SAED,EAKU,GAIXtB,KAAAuB,OACIvB,MAMZkB,eAAA,WA2BK,OA1BLlB,KAAAmB,WAAA,SAAAQ,EAAAE,GACH,OAAAF,EAAAL,IAAA,UAAAO,EAAAP,IAAA,QAtBeK,EAAML,IAAI,QAAQZ,cAyBlCoB,EAAkBtC,IAAAA,QAAeE,eACvB,EAD8BmC,EAAAP,IAAA,QAAAZ,cAMjCiB,EAASI,IAAT,QAAcrB,cAEEsB,EAEnB,EAE+BC,WAAnBC,EAAAA,IAAAA,SACAC,EAEOD,GAIXtC,KAAAA,OAGHI,QAtBb8B,EAAAtC,SAAAC,MAAAC,QACI0C,UA2BJC,OAAA,IAAAT,EACAjC,QAAAC,OAAAC,KAAA,eACAyC,GAAA,WAEIC,MAAAA,SAAc/C,GAAlBQ,KAAAsB,IAAA,UAAAU,QAKIrC,IAASC,IAAAA,EAAOC,EAAP2C,EAAcT,EAAAG,gBADsBO,OAAAD,IAE7CE,GAA8B,WAAlBX,EAAAG,gBAAS5B,GAAAA,KAAS,CAC1B,IAAUA,EAAV,IAAAoB,EAAAK,EAAAG,gBAAAM,IAHyCxC,KAAAsB,IAAA,UAAAqB,IAAAR,QAKxC,GAAW,SAAXJ,EAAWG,gBAAAM,GAAAP,KAAA,CACL,IAAKtC,EAAU,IAAK2C,EAAKP,EAAAG,gBAAhCM,IANyCxC,KAAAsB,IAAA,UAAAqB,IAAAC,QAAjDhD,OAAAiD,KAAAC,MAhBoB,gEAIZ,OAAOf,KAkCfQ,EAAA/C,SAAAC,MAAAC,QAzBIC,QAASC,OAAOC,KAAO,mBA6BvBkD,EAAkBtD,SAAMC,WAAOA,QAC/BC,QAASC,OAAOC,KAAO,iBAD3B6C,WAAA,SAAApC,GAvBQN,KAAKsC,GAAKhC,EAAQgC,IA4BtB/C,IAAAA,WACAU,OAAWA,KAAAA,QAFRD,KAAAsC,GAAA,aAIHb,MAAMA,IAGNK,EAAAA,SAAiBA,MAAAA,QACjBS,QAAAA,OAAaA,KAAAA,mBAGbS,EAAiBA,SAAAA,WAXdtD,QAYHqD,IAAAA,OAAQA,KAAAA,gBAZZ5C,MAAA8C,IAJIF,EAASvD,SAASC,MAAMC,QACxBC,QAASC,OAAOC,KAAO,qBAG3B,OACIN,QAASA,EACTU,UAAWA,EACXiD,KAAMzB,EACNA,KAAMA,EACNC,cAAeA,EACfE,OAAQA,EACRE,gBAAiBA,EACjBS,YAAaA,EACbY,gBAAiBA,EACjBF,cAAeA,EACfD,gBAAiBA,EACjBD,OAAQA","file":"../../../scripts/mvc/library/library-model.js","sourcesContent":["define([], function() {\n // ============================================================================\n // LIBRARY RELATED MODELS\n\n var Library = Backbone.Model.extend({\n urlRoot: Galaxy.root + \"api/libraries/\",\n\n /** based on show_deleted would this lib show in the list of lib's?\n * @param {Boolean} show_deleted are we including deleted libraries?\n */\n isVisible: function(show_deleted) {\n var isVisible = true;\n if (!show_deleted && this.get(\"deleted\")) {\n isVisible = false;\n }\n return isVisible;\n }\n });\n\n var Libraries = Backbone.Collection.extend({\n urlRoot: Galaxy.root + \"api/libraries\",\n\n model: Library,\n\n sort_key: \"name\", // default\n\n sort_order: null, // default\n\n initialize: function(options) {\n options = options || {};\n },\n\n search: function(search_term) {\n /**\n * Search the collection and return only the models that have\n * the search term in their names.\n * [the term to search]\n * @type {string}\n */\n if (search_term == \"\") return this;\n var lowercase_term = search_term.toLowerCase();\n return this.filter(function(data) {\n var lowercase_name = data.get(\"name\").toLowerCase();\n return lowercase_name.indexOf(lowercase_term) !== -1;\n });\n },\n\n /** Get every 'shown' library in this collection based on deleted filter\n * @param {Boolean} show_deleted are we including deleted libraries?\n * @returns array of library models\n */\n getVisible: function(show_deleted, filters) {\n filters = filters || [];\n var filteredLibraries = new Libraries(\n this.filter(function(item) {\n return item.isVisible(show_deleted);\n })\n );\n\n return filteredLibraries;\n },\n\n /** Sort collection by library name (ascending) and return the sorted\n * collection\n */\n sortByNameAsc: function() {\n this.comparator = function(libraryA, libraryB) {\n if (\n libraryA.get(\"name\").toLowerCase() >\n libraryB.get(\"name\").toLowerCase()\n ) {\n return 1; // after\n }\n if (\n libraryB.get(\"name\").toLowerCase() >\n libraryA.get(\"name\").toLowerCase()\n ) {\n return -1; // before\n }\n return 0; // equal\n };\n this.sort();\n return this;\n },\n\n /** Sort collection by library name (descending) and return the sorted\n * collection\n */\n sortByNameDesc: function() {\n this.comparator = function(libraryA, libraryB) {\n if (\n libraryA.get(\"name\").toLowerCase() >\n libraryB.get(\"name\").toLowerCase()\n ) {\n return -1; // before\n }\n if (\n libraryB.get(\"name\").toLowerCase() >\n libraryA.get(\"name\").toLowerCase()\n ) {\n return 1; // after\n }\n return 0; // equal\n };\n this.sort();\n return this;\n }\n });\n\n // ============================================================================\n // FOLDER RELATED MODELS\n\n var LibraryItem = Backbone.Model.extend({});\n\n var Ldda = LibraryItem.extend({\n urlRoot: Galaxy.root + \"api/libraries/datasets/\"\n });\n\n var FolderAsModel = LibraryItem.extend({\n urlRoot: Galaxy.root + \"api/folders/\"\n });\n\n var Folder = Backbone.Collection.extend({\n model: LibraryItem,\n\n /** Sort collection by item name (ascending) and return the sorted\n * collection. Folders go before datasets.\n */\n sortByNameAsc: function() {\n this.comparator = function(itemA, itemB) {\n if (itemA.get(\"type\") === itemB.get(\"type\")) {\n if (\n itemA.get(\"name\").toLowerCase() >\n itemB.get(\"name\").toLowerCase()\n ) {\n return 1; // after\n }\n if (\n itemB.get(\"name\").toLowerCase() >\n itemA.get(\"name\").toLowerCase()\n ) {\n return -1; // before\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 this.sort();\n return this;\n },\n\n /** Sort collection by item name (descending) and return the sorted\n * collection. Folders go before datasets.\n */\n sortByNameDesc: function() {\n this.comparator = function(itemA, itemB) {\n if (itemA.get(\"type\") === itemB.get(\"type\")) {\n if (\n itemA.get(\"name\").toLowerCase() >\n itemB.get(\"name\").toLowerCase()\n ) {\n return -1; // after\n }\n if (\n itemB.get(\"name\").toLowerCase() >\n itemA.get(\"name\").toLowerCase()\n ) {\n return 1; // before\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 this.sort();\n return this;\n }\n });\n\n var FolderContainer = Backbone.Model.extend({\n defaults: {\n folder: new Folder(),\n urlRoot: Galaxy.root + \"api/folders/\",\n id: \"unknown\"\n },\n parse: function(obj) {\n // empty the collection\n this.get(\"folder\").reset();\n // response is not a simple array, it contains metadata\n // this will update the inner collection\n for (var i = 0; i < obj.folder_contents.length; i++) {\n if (obj.folder_contents[i].type === \"folder\") {\n var folder_item = new FolderAsModel(obj.folder_contents[i]);\n this.get(\"folder\").add(folder_item);\n } else if (obj.folder_contents[i].type === \"file\") {\n var file_item = new Ldda(obj.folder_contents[i]);\n this.get(\"folder\").add(file_item);\n } else {\n Galaxy.emit.error(\n \"Unknown folder item type encountered while parsing response.\"\n );\n }\n }\n return obj;\n }\n });\n\n // ============================================================================\n // HISTORY RELATED MODELS\n // TODO UNITE\n\n var HistoryItem = Backbone.Model.extend({\n urlRoot: Galaxy.root + \"api/histories/\"\n });\n\n var HistoryContents = Backbone.Collection.extend({\n urlRoot: Galaxy.root + \"api/histories/\",\n initialize: function(options) {\n this.id = options.id;\n },\n url: function() {\n return this.urlRoot + this.id + \"/contents\";\n },\n model: HistoryItem\n });\n\n var GalaxyHistory = Backbone.Model.extend({\n urlRoot: Galaxy.root + \"api/histories/\"\n });\n\n var GalaxyHistories = Backbone.Collection.extend({\n url: Galaxy.root + \"api/histories\",\n model: GalaxyHistory\n });\n\n // ============================================================================\n // JSTREE MODEL\n /** Represents folder structure parsable by the jstree component.\n *\n */\n\n var Jstree = Backbone.Model.extend({\n urlRoot: Galaxy.root + \"api/remote_files\"\n });\n\n return {\n Library: Library,\n Libraries: Libraries,\n Item: Ldda,\n Ldda: Ldda,\n FolderAsModel: FolderAsModel,\n Folder: Folder,\n FolderContainer: FolderContainer,\n HistoryItem: HistoryItem,\n HistoryContents: HistoryContents,\n GalaxyHistory: GalaxyHistory,\n GalaxyHistories: GalaxyHistories,\n Jstree: Jstree\n };\n});\n"]} \ No newline at end of file +{"version":3,"sources":["mvc/library/library-model.js"],"names":["define","mod_util","Library","Backbone","Model","extend","urlRoot","Galaxy","root","isVisible","show_deleted","this","Libraries","Collection","model","options","search","search_term","lowercase_term","toLowerCase","data","indexOf","getVisible","filters","item","filteredLibraries","sortLibraries","sort_key","sort_order","comparator","generateLibraryComparator","sort","Ldda","LibraryItem","FolderAsModel","Folder","sortFolder","generateFolderComparator","FolderContainer","folder","parse","defaults","id","folder_contents","get","reset","i","obj","length","type","add","folder_item","file_item","emit","error","HistoryItem","url","initialize","GalaxyHistory","GalaxyHistories","HistoryContents","Jstree"],"mappings":"aAAAA,QAAQ,4BAA6B,SAASC,GAE1C,IAAAC,EAAAC,SAAAC,MAAAC,QAGIC,QAASC,OAAOC,KAAO,iBAKvBC,UAAW,SAASC,GAChB,IAAID,GAAY,EAEZA,OAHRA,GAAWE,KAASD,IAAAA,aACZD,GAAY,GAEZA,KATZG,EAAAT,SAAAU,WAAAR,QAgBIC,QAASC,OAAOC,KAAO,gBAAvBF,MAAAA,EAEAQ,WAAOZ,SAHgCa,GAMnCA,EAAUA,OACbC,OAPsC,SAAAC,GAgBnC,GAAmB,IAAfA,EAAmB,OAAON,KAC9B,IAAIO,EAAiBD,EAAYE,cADjC,OAAIF,KAAAA,OAAe,SAAIG,GAEvB,OAAkC,IADbH,EAAAA,IAAYE,QAAAA,cACdE,QAAAH,MAUvBI,WAAY,SAASZ,EAAca,GAQ/B,OAPAA,EAAUA,MADF,IAASb,EACjBa,KAAAA,OAAUA,SAAVC,GACIC,OAAAA,EAAAA,UAAwBb,OAShCc,cAAe,SAAAC,EAAAC,GACXjB,KAAKkB,WAAa5B,EAAS6B,0BAI3BH,EACHC,GADGjB,KAAKoB,UAUTzB,EAASC,SAAcH,MAAAC,WADvB2B,EAAOC,EAAY5B,QAInB6B,QAAAA,OAAgBD,KAAAA,4BAAhBC,EAAgBD,EAAY5B,QAI5B8B,QAAShC,OAAAA,KAASU,iBAGlBuB,EAAAA,SAAYvB,WAAAR,QACRS,MAAAmB,EAKHG,WAAA,SAAAT,EAAAC,GATLjB,KAAAkB,WAAA5B,EAAAoC,yBAKYV,EAORW,GAEIC,KAAAA,UAIJC,EAAOrC,SAAcC,MAAAC,QACjBoC,UACAF,OAAA,IAASJ,EACT7B,QAAAC,OAAAC,KAAA,eACAkC,GAAA,WAEIF,MAAA,SAAQG,GAEJhC,KAAAiC,IAAA,UAASC,QAGT,IAAA,IAAAC,EAAKF,EAALE,EAASC,EAAAJ,gBAATK,OAAAF,IACH,GAAM,WAHAC,EAGAJ,gBAAAG,GAAAG,KAAA,CACH1C,IAAAA,EACI,IAAA2B,EAAAa,EAAAJ,gBAAAG,IAEPnC,KAAAiC,IAAA,UAAAM,IAAAC,QACJ,GAAA,SAAAJ,EAAAJ,gBAAAG,GAAAG,KAAA,CACMF,IAAPK,EAAA,IAAApB,EAAAe,EAAAJ,gBAAAG,IACHnC,KAAAiC,IAAA,UAAAM,IAAAE,QANW7C,OAAO8C,KAAKC,MAS5B,gEAIIC,OAAAA,KAQCA,EAJ4CpD,SAAAC,MAAAC,QAK7CmD,QAAKjD,OAAAC,KAAW,mBAGhBM,EAAOyC,SAAAA,WAAAA,QARXjD,QAAAC,OAAAC,KAAA,iBAEIiD,WAAY,SAAS1C,GASrB2C,KAAAA,GAAAA,EAAgBvD,IAApBqD,IAAA,WALQ,OAAO7C,KAAKL,QAAUK,KAAK+B,GAAK,aAUpCc,MAAKjD,IALLmD,EAAgBvD,SAASC,MAAMC,QASnCC,QAAAC,OAAAC,KAAA,mBALImD,EAAkBxD,SAASU,WAAWR,QACtCmD,IAAKjD,OAAOC,KAAO,gBACnBM,MAAO4C,IAiBP1B,EAAMA,SAJH5B,MAAAC,QAKH6B,QAAAA,OAAeA,KAAAA,qBAGfqB,OACAK,QAAAA,EACAF,UAAAA,EACAC,KAAAA,EACAE,KAAAA,EAZJ3B,cAAAA,EA9JJC,OAAAA,EAqKQG,gBAAiBA,EACjBiB,YAAaA,EACbK,gBAAiBA,EACjBF,cAAeA,EACfC,gBAAiBA,EACjBE,OAAQA","file":"../../../scripts/mvc/library/library-model.js","sourcesContent":["define([\"mvc/library/library-util\"], function(mod_util) {\n // ============================================================================\n // LIBRARY RELATED MODELS\n\n var Library = Backbone.Model.extend({\n urlRoot: Galaxy.root + \"api/libraries/\",\n\n /** based on show_deleted would this lib show in the list of lib's?\n * @param {Boolean} show_deleted are we including deleted libraries?\n */\n isVisible: function(show_deleted) {\n var isVisible = true;\n if (!show_deleted && this.get(\"deleted\")) {\n isVisible = false;\n }\n return isVisible;\n }\n });\n\n var Libraries = Backbone.Collection.extend({\n urlRoot: Galaxy.root + \"api/libraries\",\n\n model: Library,\n\n initialize: function(options) {\n options = options || {};\n },\n\n search: function(search_term) {\n /**\n * Search the collection and return only the models that have\n * the search term in their names.\n * [the term to search]\n * @type {string}\n */\n if (search_term == \"\") return this;\n var lowercase_term = search_term.toLowerCase();\n return this.filter(function(data) {\n var lowercase_name = data.get(\"name\").toLowerCase();\n return lowercase_name.indexOf(lowercase_term) !== -1;\n });\n },\n\n /** Get every 'shown' library in this collection based on deleted filter\n * @param {Boolean} show_deleted are we including deleted libraries?\n * @returns array of library models\n */\n getVisible: function(show_deleted, filters) {\n filters = filters || [];\n var filteredLibraries = new Libraries(\n this.filter(function(item) {\n return item.isVisible(show_deleted);\n })\n );\n\n return filteredLibraries;\n },\n\n sortLibraries: function(sort_key, sort_order) {\n this.comparator = mod_util.generateLibraryComparator(\n sort_key,\n sort_order\n );\n this.sort();\n }\n });\n\n // ============================================================================\n // FOLDER RELATED MODELS\n\n var LibraryItem = Backbone.Model.extend({});\n\n var Ldda = LibraryItem.extend({\n urlRoot: Galaxy.root + \"api/libraries/datasets/\"\n });\n\n var FolderAsModel = LibraryItem.extend({\n urlRoot: Galaxy.root + \"api/folders/\"\n });\n\n var Folder = Backbone.Collection.extend({\n model: LibraryItem,\n\n sortFolder: function(sort_key, sort_order) {\n this.comparator = mod_util.generateFolderComparator(\n sort_key,\n sort_order\n );\n this.sort();\n }\n });\n\n var FolderContainer = Backbone.Model.extend({\n defaults: {\n folder: new Folder(),\n urlRoot: Galaxy.root + \"api/folders/\",\n id: \"unknown\"\n },\n parse: function(obj) {\n // empty the collection\n this.get(\"folder\").reset();\n // response is not a simple array, it contains metadata\n // this will update the inner collection\n for (var i = 0; i < obj.folder_contents.length; i++) {\n if (obj.folder_contents[i].type === \"folder\") {\n var folder_item = new FolderAsModel(obj.folder_contents[i]);\n this.get(\"folder\").add(folder_item);\n } else if (obj.folder_contents[i].type === \"file\") {\n var file_item = new Ldda(obj.folder_contents[i]);\n this.get(\"folder\").add(file_item);\n } else {\n Galaxy.emit.error(\n \"Unknown folder item type encountered while parsing response.\"\n );\n }\n }\n return obj;\n }\n });\n\n // ============================================================================\n // HISTORY RELATED MODELS\n // TODO UNITE\n\n var HistoryItem = Backbone.Model.extend({\n urlRoot: Galaxy.root + \"api/histories/\"\n });\n\n var HistoryContents = Backbone.Collection.extend({\n urlRoot: Galaxy.root + \"api/histories/\",\n initialize: function(options) {\n this.id = options.id;\n },\n url: function() {\n return this.urlRoot + this.id + \"/contents\";\n },\n model: HistoryItem\n });\n\n var GalaxyHistory = Backbone.Model.extend({\n urlRoot: Galaxy.root + \"api/histories/\"\n });\n\n var GalaxyHistories = Backbone.Collection.extend({\n url: Galaxy.root + \"api/histories\",\n model: GalaxyHistory\n });\n\n // ============================================================================\n // JSTREE MODEL\n /** Represents folder structure parsable by the jstree component.\n *\n */\n\n var Jstree = Backbone.Model.extend({\n urlRoot: Galaxy.root + \"api/remote_files\"\n });\n\n return {\n Library: Library,\n Libraries: Libraries,\n Item: Ldda,\n Ldda: Ldda,\n FolderAsModel: FolderAsModel,\n Folder: Folder,\n FolderContainer: FolderContainer,\n HistoryItem: HistoryItem,\n HistoryContents: HistoryContents,\n GalaxyHistory: GalaxyHistory,\n GalaxyHistories: GalaxyHistories,\n Jstree: Jstree\n };\n});\n"]} \ No newline at end of file diff --git a/static/maps/mvc/library/library-util.js.map b/static/maps/mvc/library/library-util.js.map new file mode 100644 index 00000000000..d3627af9229 --- /dev/null +++ b/static/maps/mvc/library/library-util.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["mvc/library/library-util.js"],"names":["define","generateFolderComparator","sort_key","sort_order","itemA","itemB","has","get","toLowerCase","generateLibraryComparator","libraryB","libraryA"],"mappings":"aAAAA,UAAW,WA+DP,OACIC,yBAvD2B,SAASC,EAAUC,GAC9C,OAAO,SAASC,EAAOC,GADvBJ,OAAAA,EAAAA,IAAAA,UAA2BI,EAA3BJ,IAAAA,QACOG,EAASA,IAATF,IAAuBG,EAAAC,IAAAJ,GAEXI,EAAIJ,IAAAA,GAEHE,EAAME,IAAIJ,GAIrBE,EAAAG,IAAAL,GAAAM,cAEGJ,EAAMG,IAAIL,GAAUM,cAIvB,QAAAL,EAAA,GAAA,EAMAE,EAAAE,IAAAL,GAAAM,cACDJ,EAAUG,IAAAL,GAAAM,cAEgB,QAAhBD,GAAV,EAAoC,EAEnC,GApBG,EAFO,EAFD,EA0Bb,WAAAH,EAAAG,IAAA,SA3BL,EA8BJ,IAyBIE,0BAZK,SAAAP,EAAAC,GACD,OAAA,SACIO,EAAaR,GAGb,OACHS,EAAAJ,IAAAL,GAAAM,cACDE,EAAUH,IAAAL,GAAAM,cAdlB,QAAAL,EAAA,GAAA,EAmBIM,EAAAA,IAAAA,GAA2BA,cAF/BE,EAAAJ,IAAAL,GAAAM,cALkC,QAAfL,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 comes before Dataset.\n * If sort_key is not present it is set to ''.\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 (!itemA.has(sort_key) && !itemB.has(sort_key)) {\n return 0;\n } else if (!itemA.has(sort_key)) {\n return 1;\n } else if (!itemB.has(sort_key)) {\n return -1;\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 }\n return 1;\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"]} \ No newline at end of file diff --git a/static/scripts/mvc/library/library-folderlist-view.js b/static/scripts/mvc/library/library-folderlist-view.js index d1e85a4785b..397627a13c6 100644 --- a/static/scripts/mvc/library/library-folderlist-view.js +++ b/static/scripts/mvc/library/library-folderlist-view.js @@ -1,2 +1,2 @@ -"use strict";define(["layout/masthead","utils/utils","libs/toastr","mvc/library/library-model","mvc/library/library-folderrow-view","mvc/library/library-dataset-view"],function(e,t,i,s,o,r){return{FolderListView:Backbone.View.extend({el:"#folder_items_element",progress:0,progressStep:1,folderContainer:null,sort:"asc",events:{"click #select-all-checkboxes":"selectAll","click .dataset_row":"selectClickedRow","click .folder_row":"selectClickedRow","click .sort-folder-link":"sortColumnClicked"},collection:null,defaults:{include_deleted:!1,page_count:null,show_page:null},initialize:function(e){this.options=_.defaults(this.options||{},this.defaults,e),this.modal=null,this.rowViews={},this.collection=new s.Folder,this.listenTo(this.collection,"add",this.renderOne),this.listenTo(this.collection,"remove",this.removeOne),this.listenTo(this.collection,"sort",this.rePaint),this.listenTo(this.collection,"reset",this.rePaint),this.fetchFolder()},fetchFolder:function(e){var e=e||{};this.options.include_deleted=e.include_deleted;var t=this;this.folderContainer=new s.FolderContainer({id:this.options.id}),this.folderContainer.url=this.folderContainer.attributes.urlRoot+this.options.id+"/contents",this.options.include_deleted&&(this.folderContainer.url=this.folderContainer.url+"?include_deleted=true"),this.folderContainer.fetch({success:function(e){t.folder_container=e,t.render()},error:function(e,t){void 0!==t.responseJSON?i.error(t.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):i.error("An error occurred. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}})},render:function(e){this.options=_.extend(this.options,e);var t=this.templateFolder();$(".tooltip").hide();var s,o=this.folderContainer.attributes.metadata.full_path;if(s=1===o.length?0:o[o.length-2][0],this.$el.html(t({path:this.folderContainer.attributes.metadata.full_path,parent_library_id:this.folderContainer.attributes.metadata.parent_library_id,id:this.options.id,upper_folder_id:s,order:this.sort})),this.options.dataset_id){var r=_.findWhere(that.rowViews,{id:this.options.dataset_id});r?r.showDatasetDetails():i.error("Requested dataset not found. Showing folder instead.")}else(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.paginate();$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},paginate:function(e){this.options=_.extend(this.options,e),(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.options.total_items_count=this.folder_container.get("folder").models.length,this.options.page_count=Math.ceil(this.options.total_items_count/Galaxy.libraries.preferences.get("folder_page_size"));var t=Galaxy.libraries.preferences.get("folder_page_size")*(this.options.show_page-1),i=null;i=this.folder_container.get("folder").models.slice(t,t+Galaxy.libraries.preferences.get("folder_page_size")),this.options.items_shown=i.length,Galaxy.libraries.preferences.get("folder_page_size")*this.options.show_page>this.options.total_items_count+Galaxy.libraries.preferences.get("folder_page_size")&&(i=[]),Galaxy.libraries.folderToolbarView.renderPaginator(this.options),this.collection.reset(i)},rePaint:function(e){this.options=_.extend(this.options,e),this.removeAllRows(),this.renderAll(),this.checkEmptiness()},addAll:function(e){_.each(e,function(e){Galaxy.libraries.folderListView.collection.add(e,{sort:!1})}),$("#center [data-toggle]").tooltip(),this.checkEmptiness(),this.postRender()},postRender:function(){var e=this.folderContainer.attributes.metadata;e.contains_file_or_folder=void 0!==this.collection.findWhere({type:"file"})||void 0!==this.collection.findWhere({type:"folder"}),Galaxy.libraries.folderToolbarView.configureElements(e)},renderAll:function(){var e=this;_.each(this.collection.models.reverse(),function(t){e.renderOne(t)}),this.postRender()},renderOne:function(e){this.options.contains_file_or_folder=!0,e.set("folder_id",this.id);var t=new o.FolderRowView({model:e});this.rowViews[e.get("id")]=t,this.$el.find("#first_folder_item").after(t.el)},removeOne:function(e){this.$el.find("tr").filter(function(){return $(this).data("id")&&$(this).data("id")===e.id}).remove()},removeAllRows:function(){$(".library-row").remove()},checkEmptiness:function(){0===this.$el.find(".dataset_row").length&&0===this.$el.find(".folder_row").length?this.$el.find(".empty-folder-message").show():this.$el.find(".empty-folder-message").hide()},sortColumnClicked:function(e){e.preventDefault(),"asc"===this.sort?(this.sortFolder("name","desc"),this.sort="desc"):(this.sortFolder("name","asc"),this.sort="asc"),this.renderSortIcon()},sortFolder:function(e,t){if("undefined"===e&&"undefined"===t)return this.collection.sortByNameAsc();if("name"===e){if("asc"===t)return this.collection.sortByNameAsc();if("desc"===t)return this.collection.sortByNameDesc()}},selectAll:function(e){var t=e.target.checked;that=this,$(":checkbox","#folder_list_body").each(function(){this.checked=t;var e=$(this).closest("tr");t?that.makeDarkRow(e):that.makeWhiteRow(e)})},selectClickedRow:function(e){var t,i,s="";t=$(e.target).closest("tr"),"input"===e.target.localName?(s=e.target,i="input"):"td"===e.target.localName&&(s=t.find(":checkbox")[0],i="td"),s.checked?"td"===i?(s.checked="",this.makeWhiteRow(t)):"input"===i&&this.makeDarkRow(t):"td"===i?(s.checked="selected",this.makeDarkRow(t)):"input"===i&&this.makeWhiteRow(t)},makeDarkRow:function(e){e.removeClass("light").addClass("dark"),e.find("a").removeClass("light").addClass("dark"),e.find(".fa-file-o").removeClass("fa-file-o").addClass("fa-file"),e.find(".fa-folder-o").removeClass("fa-folder-o").addClass("fa-folder")},makeWhiteRow:function(e){e.removeClass("dark").addClass("light"),e.find("a").removeClass("dark").addClass("light"),e.find(".fa-file").removeClass("fa-file").addClass("fa-file-o"),e.find(".fa-folder").removeClass("fa-folder").addClass("fa-folder-o")},renderSortIcon:function(){"asc"===this.sort?$(".sort-icon").removeClass("fa-sort-alpha-desc").addClass("fa-sort-alpha-asc"):$(".sort-icon").removeClass("fa-sort-alpha-asc").addClass("fa-sort-alpha-desc")},templateFolder:function(){return _.template(['",'',"",'','','','','','','',' ',' ',"",'','',"","","","","","","","","","","","
name descriptiondata typesizetime updated (UTC)state
",'" title="Go to parent folder" class="btn_open_folder btn btn-default btn-xs">..',"
",'"].join(""))}})}}); +"use strict";define(["layout/masthead","utils/utils","libs/toastr","mvc/library/library-model","mvc/library/library-folderrow-view","mvc/library/library-dataset-view"],function(e,t,i,o,s,r){return{FolderListView:Backbone.View.extend({el:"#folder_items_element",progress:0,progressStep:1,folderContainer:null,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-name":"sortColumnClicked","click .sort-folder-file_ext":"sortColumnClicked","click .sort-folder-description":"sortColumnClicked","click .sort-folder-state":"sortColumnClicked"},collection:null,defaults:{include_deleted:!1,page_count:null,show_page:null},initialize:function(e){this.options=_.defaults(this.options||{},this.defaults,e),this.modal=null,this.rowViews={},this.collection=new o.Folder,this.listenTo(this.collection,"add",this.renderOne),this.listenTo(this.collection,"remove",this.removeOne),this.listenTo(this.collection,"sort",this.rePaint),this.listenTo(this.collection,"reset",this.rePaint),this.fetchFolder()},fetchFolder:function(e){var e=e||{};this.options.include_deleted=e.include_deleted;var t=this;this.folderContainer=new o.FolderContainer({id:this.options.id}),this.folderContainer.url=this.folderContainer.attributes.urlRoot+this.options.id+"/contents",this.options.include_deleted&&(this.folderContainer.url=this.folderContainer.url+"?include_deleted=true"),this.folderContainer.fetch({success:function(e){t.folder_container=e,t.render()},error:function(e,t){void 0!==t.responseJSON?i.error(t.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):i.error("An error occurred. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}})},render:function(e){this.options=_.extend(this.options,e);var t=this.templateFolder();$(".tooltip").hide();var o,s=this.folderContainer.attributes.metadata.full_path;if(o=1===s.length?0:s[s.length-2][0],this.$el.html(t({path:this.folderContainer.attributes.metadata.full_path,parent_library_id:this.folderContainer.attributes.metadata.parent_library_id,id:this.options.id,upper_folder_id:o,order:this.current_sort_order})),this.options.dataset_id){var r=_.findWhere(that.rowViews,{id:this.options.dataset_id});r?r.showDatasetDetails():i.error("Requested dataset not found. Showing folder instead.")}else(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.paginate();$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},paginate:function(e){this.options=_.extend(this.options,e),(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.options.total_items_count=this.folder_container.get("folder").models.length,this.options.page_count=Math.ceil(this.options.total_items_count/Galaxy.libraries.preferences.get("folder_page_size"));var t=Galaxy.libraries.preferences.get("folder_page_size")*(this.options.show_page-1),i=null;i=this.folder_container.get("folder").models.slice(t,t+Galaxy.libraries.preferences.get("folder_page_size")),this.options.items_shown=i.length,Galaxy.libraries.preferences.get("folder_page_size")*this.options.show_page>this.options.total_items_count+Galaxy.libraries.preferences.get("folder_page_size")&&(i=[]),Galaxy.libraries.folderToolbarView.renderPaginator(this.options),this.collection.reset(i)},rePaint:function(e){this.options=_.extend(this.options,e),this.removeAllRows(),this.renderAll(),this.checkEmptiness()},addAll:function(e){_.each(e,function(e){Galaxy.libraries.folderListView.collection.add(e,{current_sort_order:!1})}),$("#center [data-toggle]").tooltip(),this.checkEmptiness(),this.postRender()},postRender:function(){var e=this.folderContainer.attributes.metadata;e.contains_file_or_folder=void 0!==this.collection.findWhere({type:"file"})||void 0!==this.collection.findWhere({type:"folder"}),Galaxy.libraries.folderToolbarView.configureElements(e)},renderAll:function(){var e=this;_.each(this.collection.models.reverse(),function(t){e.renderOne(t)}),this.postRender()},renderOne:function(e){this.options.contains_file_or_folder=!0,e.set("folder_id",this.id);var t=new s.FolderRowView({model:e});this.rowViews[e.get("id")]=t,this.$el.find("#first_folder_item").after(t.el)},removeOne:function(e){this.$el.find("tr").filter(function(){return $(this).data("id")&&$(this).data("id")===e.id}).remove()},removeAllRows:function(){$(".library-row").remove()},checkEmptiness:function(){0===this.$el.find(".dataset_row").length&&0===this.$el.find(".folder_row").length?this.$el.find(".empty-folder-message").show():this.$el.find(".empty-folder-message").hide()},sortColumnClicked:function(e){e.preventDefault(),this.current_sort_order="asc"===this.current_sort_order?"desc":"asc",this.current_sort_key=e.currentTarget.className.replace("sort-folder-",""),this.collection.sortFolder(this.current_sort_key,this.current_sort_order),this.renderSortIcon()},selectAll:function(e){var t=e.target.checked;that=this,$(":checkbox","#folder_list_body").each(function(){this.checked=t;var e=$(this).closest("tr");t?that.makeDarkRow(e):that.makeWhiteRow(e)})},selectClickedRow:function(e){var t,i,o="";t=$(e.target).closest("tr"),"input"===e.target.localName?(o=e.target,i="input"):"td"===e.target.localName&&(o=t.find(":checkbox")[0],i="td"),o.checked?"td"===i?(o.checked="",this.makeWhiteRow(t)):"input"===i&&this.makeDarkRow(t):"td"===i?(o.checked="selected",this.makeDarkRow(t)):"input"===i&&this.makeWhiteRow(t)},makeDarkRow:function(e){e.removeClass("light").addClass("dark"),e.find("a").removeClass("light").addClass("dark"),e.find(".fa-file-o").removeClass("fa-file-o").addClass("fa-file"),e.find(".fa-folder-o").removeClass("fa-folder-o").addClass("fa-folder")},makeWhiteRow:function(e){e.removeClass("dark").addClass("light"),e.find("a").removeClass("dark").addClass("light"),e.find(".fa-file").removeClass("fa-file").addClass("fa-file-o"),e.find(".fa-folder").removeClass("fa-folder").addClass("fa-folder-o")},renderSortIcon:function(){"asc"===this.current_sort_order?($('[class*="sort-icon"]').removeClass("fa-sort-alpha-desc").removeClass("fa-sort-alpha-asc"),$(".sort-icon-"+this.current_sort_key).addClass("fa-sort-alpha-asc")):$(".sort-icon-"+this.current_sort_key).addClass("fa-sort-alpha-desc")},templateFolder:function(){return _.template(['",'',"",'','','','','','','','',' ',"",'','',"","","","","","","","","","","","
name description data type sizetime updated (UTC)state
",'" title="Go to parent folder" class="btn_open_folder btn btn-default btn-xs">..',"
",'"].join(""))}})}}); //# sourceMappingURL=../../../maps/mvc/library/library-folderlist-view.js.map diff --git a/static/scripts/mvc/library/library-folderrow-view.js b/static/scripts/mvc/library/library-folderrow-view.js index bb466b796e8..2d2e2311c9b 100644 --- a/static/scripts/mvc/library/library-folderrow-view.js +++ b/static/scripts/mvc/library/library-folderrow-view.js @@ -1,2 +1,2 @@ -"use strict";define(["libs/toastr","mvc/library/library-model","mvc/library/library-dataset-view"],function(t,e,i){return{FolderRowView:Backbone.View.extend({events:{"click .undelete_dataset_btn":"undeleteDataset","click .undelete_folder_btn":"undeleteFolder","click .edit_folder_btn":"startModifications","click .cancel_folder_btn":"cancelModifications","click .save_folder_btn":"saveModifications"},defaults:{type:null,visibility_config:{edit_folder_btn:!1,save_folder_btn:!1,cancel_folder_btn:!1,permission_folder_btn:!1},edit_mode:!1},initialize:function(t){this.options=_.defaults(t||{},this.defaults),this.render(this.options)},render:function(t){this.options=_.extend(this.options,t);var e=this.options.model,i=null;return"folder"===e.get("type")||"LibraryFolder"===e.get("model_class")?(this.options.type="folder",this.prepareButtons(e),i=e.get("deleted")?this.templateRowDeletedFolder():this.templateRowFolder()):"file"===e.get("type")||"LibraryDatasetDatasetAssociation"===e.get("model_class")||"LibraryDataset"===e.get("model_class")?(this.options.type="file",i=e.get("deleted")?this.templateRowDeletedFile():this.templateRowFile()):(Galaxy.emit.error("Unknown library item type found."),Galaxy.emit.error(e.get("type")||e.get("model_class"))),this.setElement(i({content_item:e,edit_mode:this.options.edit_mode,button_config:this.options.visibility_config})),this.$el.show(),this},prepareButtons:function(t){var e=this.options.visibility_config;!1===this.options.edit_mode?(e.save_folder_btn=!1,e.cancel_folder_btn=!1,!0===t.get("deleted")?(e.edit_folder_btn=!1,e.permission_folder_btn=!1):!1===t.get("deleted")&&(e.save_folder_btn=!1,e.cancel_folder_btn=!1,!0===t.get("can_modify")&&(e.edit_folder_btn=!0),!0===t.get("can_manage")&&(e.permission_folder_btn=!0))):!0===this.options.edit_mode&&(e.edit_folder_btn=!1,e.permission_folder_btn=!1,e.save_folder_btn=!0,e.cancel_folder_btn=!0),this.options.visibility_config=e},showDatasetDetails:function(){Galaxy.libraries.datasetView=new i.LibraryDatasetView({id:this.id})},undeleteDataset:function(i){$(".tooltip").hide();var o=this,a=$(i.target).closest("tr").data("id"),n=Galaxy.libraries.folderListView.collection.get(a);n.url=n.urlRoot+n.id+"?undelete=true",n.destroy({success:function(i,n){Galaxy.libraries.folderListView.collection.remove(a);var l=new e.Item(n);Galaxy.libraries.folderListView.collection.add(l),Galaxy.libraries.folderListView.collection.sortByNameAsc(),t.success("Dataset undeleted. Click this to see it.","",{onclick:function(){var t=o.model.get("folder_id");window.location=Galaxy.root+"library/list#folders/"+t+"/datasets/"+o.id}})},error:function(e,i){void 0!==i.responseJSON?t.error("Dataset was not undeleted. "+i.responseJSON.err_msg):t.error("An error occured! Dataset was not undeleted. Please try again.")}})},undeleteFolder:function(i){$(".tooltip").hide();var o=$(i.target).closest("tr").data("id"),a=Galaxy.libraries.folderListView.collection.get(o);a.url=a.urlRoot+a.id+"?undelete=true",a.destroy({success:function(i,a){Galaxy.libraries.folderListView.collection.remove(o);var n=new e.FolderAsModel(a);Galaxy.libraries.folderListView.collection.add(n),Galaxy.libraries.folderListView.collection.sortByNameAsc(),t.success("Folder undeleted.")},error:function(e,i){void 0!==i.responseJSON?t.error("Folder was not undeleted. "+i.responseJSON.err_msg):t.error("An error occured! Folder was not undeleted. Please try again.")}})},startModifications:function(){this.options.edit_mode=!0,this.repaint()},cancelModifications:function(){this.options.edit_mode=!1,this.repaint()},saveModifications:function(){var e=Galaxy.libraries.folderListView.collection.get(this.$el.data("id")),i=!1,o=this.$el.find(".input_folder_name").val();if(void 0!==o&&o!==e.get("name")){if(!(o.length>2))return void t.warning("Folder name has to be at least 3 characters long.");e.set("name",o),i=!0}var a=this.$el.find(".input_folder_description").val();if(void 0!==a&&a!==e.get("description")&&(e.set("description",a),i=!0),i){var n=this;e.save(null,{patch:!0,success:function(e){n.options.edit_mode=!1,n.repaint(e),t.success("Changes to folder saved.")},error:function(e,i){void 0!==i.responseJSON?t.error(i.responseJSON.err_msg):t.error("An error occured while attempting to update the folder.")}})}else this.options.edit_mode=!1,this.repaint(e),t.info("Nothing has changed.")},repaint:function(){$(".tooltip").hide();var t=this.$el;this.render(),t.replaceWith(this.$el),this.$el.find("[data-toggle]").tooltip()},templateRowFolder:function(){return _.template(['',"",'',"",'',"<% if(!edit_mode) { %>","",'<%- content_item.get("name") %>',"","",'<%- content_item.get("description") %>',"","","<% } else if(edit_mode){ %>",'','',"<% } %>","folder","",'<%= _.escape(content_item.get("update_time")) %>',"","","","<% if(edit_mode) { %>",'",'","<% } else if (!edit_mode){%>",'",'','","","<% } %>","",""].join(""))},templateRowFile:function(){return _.template(['',"",'',"",'','',"","",'/datasets/<%- content_item.id %>" class="library-dataset">','<%- content_item.get("name") %>',"","",'<%- content_item.get("message") %>','<%= _.escape(content_item.get("file_ext")) %>','<%= _.escape(content_item.get("file_size")) %>','<%= _.escape(content_item.get("update_time")) %>',"",'<% if ( content_item.get("state") !== "ok" ) { %>','<%= _.escape(content_item.get("state")) %>',"<% } %>","","",'<% if (content_item.get("is_unrestricted")) { %>','',"<% } %>",'<% if (content_item.get("is_private")) { %>','',"<% } %>",'<% if ((content_item.get("is_unrestricted") === false) && (content_item.get("is_private") === false)) { %>','',"<% } %>",'<% if (content_item.get("can_manage")) { %>','/datasets/<%- content_item.id %>/permissions">','","","<% } %>","",""].join(""))},templateRowDeletedFile:function(){return _.template(['',"",'',"","",'','<%- content_item.get("name") %>',"","",'<%- content_item.get("message") %>',"","",'<%= _.escape(content_item.get("file_ext")) %>',"","",'<%= _.escape(content_item.get("file_size")) %>',"","",'<%= _.escape(content_item.get("update_time")) %>',"","",'<% if ( content_item.get("state") !== "ok" ) { %>','<%= _.escape(content_item.get("state")) %>',"<% } %>","","",'','","",""].join(""))},templateRowDeletedFolder:function(){return _.template(['',"",'',"","",'','<%- content_item.get("name") %>',"","",'<%- content_item.get("description") %>',"","","folder","","","",'<%= _.escape(content_item.get("update_time")) %>',"","","",'','","",""].join(""))}})}}); +"use strict";define(["libs/toastr","mvc/library/library-model","mvc/library/library-dataset-view"],function(t,e,i){return{FolderRowView:Backbone.View.extend({events:{"click .undelete_dataset_btn":"undeleteDataset","click .undelete_folder_btn":"undeleteFolder","click .edit_folder_btn":"startModifications","click .cancel_folder_btn":"cancelModifications","click .save_folder_btn":"saveModifications"},defaults:{type:null,visibility_config:{edit_folder_btn:!1,save_folder_btn:!1,cancel_folder_btn:!1,permission_folder_btn:!1},edit_mode:!1},initialize:function(t){this.options=_.defaults(t||{},this.defaults),this.render(this.options)},render:function(t){this.options=_.extend(this.options,t);var e=this.options.model,i=null;return"folder"===e.get("type")||"LibraryFolder"===e.get("model_class")?(this.options.type="folder",this.prepareButtons(e),i=e.get("deleted")?this.templateRowDeletedFolder():this.templateRowFolder()):"file"===e.get("type")||"LibraryDatasetDatasetAssociation"===e.get("model_class")||"LibraryDataset"===e.get("model_class")?(this.options.type="file",i=e.get("deleted")?this.templateRowDeletedFile():this.templateRowFile()):(Galaxy.emit.error("Unknown library item type found."),Galaxy.emit.error(e.get("type")||e.get("model_class"))),this.setElement(i({content_item:e,edit_mode:this.options.edit_mode,button_config:this.options.visibility_config})),this.$el.show(),this},prepareButtons:function(t){var e=this.options.visibility_config;!1===this.options.edit_mode?(e.save_folder_btn=!1,e.cancel_folder_btn=!1,!0===t.get("deleted")?(e.edit_folder_btn=!1,e.permission_folder_btn=!1):!1===t.get("deleted")&&(e.save_folder_btn=!1,e.cancel_folder_btn=!1,!0===t.get("can_modify")&&(e.edit_folder_btn=!0),!0===t.get("can_manage")&&(e.permission_folder_btn=!0))):!0===this.options.edit_mode&&(e.edit_folder_btn=!1,e.permission_folder_btn=!1,e.save_folder_btn=!0,e.cancel_folder_btn=!0),this.options.visibility_config=e},showDatasetDetails:function(){Galaxy.libraries.datasetView=new i.LibraryDatasetView({id:this.id})},undeleteDataset:function(i){$(".tooltip").hide();var o=this,a=$(i.target).closest("tr").data("id"),n=Galaxy.libraries.folderListView.collection.get(a);n.url=n.urlRoot+n.id+"?undelete=true",n.destroy({success:function(i,n){Galaxy.libraries.folderListView.collection.remove(a);var l=new e.Item(n);Galaxy.libraries.folderListView.collection.add(l),Galaxy.libraries.folderListView.collection.sortFolder("name","asc"),t.success("Dataset undeleted. Click this to see it.","",{onclick:function(){var t=o.model.get("folder_id");window.location=Galaxy.root+"library/list#folders/"+t+"/datasets/"+o.id}})},error:function(e,i){void 0!==i.responseJSON?t.error("Dataset was not undeleted. "+i.responseJSON.err_msg):t.error("An error occured! Dataset was not undeleted. Please try again.")}})},undeleteFolder:function(i){$(".tooltip").hide();var o=$(i.target).closest("tr").data("id"),a=Galaxy.libraries.folderListView.collection.get(o);a.url=a.urlRoot+a.id+"?undelete=true",a.destroy({success:function(i,a){Galaxy.libraries.folderListView.collection.remove(o);var n=new e.FolderAsModel(a);Galaxy.libraries.folderListView.collection.add(n),Galaxy.libraries.folderListView.collection.sortFolder("name","asc"),t.success("Folder undeleted.")},error:function(e,i){void 0!==i.responseJSON?t.error("Folder was not undeleted. "+i.responseJSON.err_msg):t.error("An error occured! Folder was not undeleted. Please try again.")}})},startModifications:function(){this.options.edit_mode=!0,this.repaint()},cancelModifications:function(){this.options.edit_mode=!1,this.repaint()},saveModifications:function(){var e=Galaxy.libraries.folderListView.collection.get(this.$el.data("id")),i=!1,o=this.$el.find(".input_folder_name").val();if(void 0!==o&&o!==e.get("name")){if(!(o.length>2))return void t.warning("Folder name has to be at least 3 characters long.");e.set("name",o),i=!0}var a=this.$el.find(".input_folder_description").val();if(void 0!==a&&a!==e.get("description")&&(e.set("description",a),i=!0),i){var n=this;e.save(null,{patch:!0,success:function(e){n.options.edit_mode=!1,n.repaint(e),t.success("Changes to folder saved.")},error:function(e,i){void 0!==i.responseJSON?t.error(i.responseJSON.err_msg):t.error("An error occured while attempting to update the folder.")}})}else this.options.edit_mode=!1,this.repaint(e),t.info("Nothing has changed.")},repaint:function(){$(".tooltip").hide();var t=this.$el;this.render(),t.replaceWith(this.$el),this.$el.find("[data-toggle]").tooltip()},templateRowFolder:function(){return _.template(['',"",'',"",'',"<% if(!edit_mode) { %>","",'<%- content_item.get("name") %>',"","",'<%- content_item.get("description") %>',"","<% } else if(edit_mode){ %>",'','',"<% } %>","folder","","",'<%= _.escape(content_item.get("update_time")) %>',"","","","<% if(edit_mode) { %>",'",'","<% } else if (!edit_mode){%>",'",'','","","<% } %>","",""].join(""))},templateRowFile:function(){return _.template(['',"",'',"",'','',"","",'/datasets/<%- content_item.id %>" class="library-dataset">','<%- content_item.get("name") %>',"","",'<%- content_item.get("message") %>','<%= _.escape(content_item.get("file_ext")) %>','<%= _.escape(content_item.get("file_size")) %>','<%= _.escape(content_item.get("update_time")) %>',"",'<% if ( content_item.get("state") !== "ok" ) { %>','<%= _.escape(content_item.get("state")) %>',"<% } %>","","",'<% if (content_item.get("is_unrestricted")) { %>','',"<% } %>",'<% if (content_item.get("is_private")) { %>','',"<% } %>",'<% if ((content_item.get("is_unrestricted") === false) && (content_item.get("is_private") === false)) { %>','',"<% } %>",'<% if (content_item.get("can_manage")) { %>','/datasets/<%- content_item.id %>/permissions">','","","<% } %>","",""].join(""))},templateRowDeletedFile:function(){return _.template(['',"",'',"","",'','<%- content_item.get("name") %>',"","",'<%- content_item.get("message") %>',"","",'<%= _.escape(content_item.get("file_ext")) %>',"","",'<%= _.escape(content_item.get("file_size")) %>',"","",'<%= _.escape(content_item.get("update_time")) %>',"","",'<% if ( content_item.get("state") !== "ok" ) { %>','<%= _.escape(content_item.get("state")) %>',"<% } %>","","",'','","",""].join(""))},templateRowDeletedFolder:function(){return _.template(['',"",'',"","",'','<%- content_item.get("name") %>',"","",'<%- content_item.get("description") %>',"","","folder","","","",'<%= _.escape(content_item.get("update_time")) %>',"","","",'','","",""].join(""))}})}}); //# sourceMappingURL=../../../maps/mvc/library/library-folderrow-view.js.map diff --git a/static/scripts/mvc/library/library-librarylist-view.js b/static/scripts/mvc/library/library-librarylist-view.js index d8ec29221f6..ac59681eb58 100644 --- a/static/scripts/mvc/library/library-librarylist-view.js +++ b/static/scripts/mvc/library/library-librarylist-view.js @@ -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&&othis.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',"<% if(length === 0) { %>","<% if(search_term.length > 0) { %>","
","There are no libraries matching your search. Try different keyword.","
","<% } else{ %>","
","There are no libraries visible to you here. If you expected some to show up please consult the",' library security wikipage',' or visit the Galaxy support site.',"
","<% }%>","<% } else{ %>",'',"",'",'',' ','',"",'',"","
','',"name","",'',"descriptionsynopsis
","<% }%>",""].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&&othis.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',"<% if(length === 0) { %>","<% if(search_term.length > 0) { %>","
","There are no libraries matching your search. Try different keyword.","
","<% } else{ %>","
","There are no libraries visible to you here. If you expected some to show up please consult the",' library security wikipage',' or visit the Galaxy support site.',"
","<% }%>","<% } else{ %>",'',"",'",'',' ','',"",'',"","
','',"name","",'',"descriptionsynopsis
","<% }%>",""].join(""))}})}}); //# sourceMappingURL=../../../maps/mvc/library/library-librarylist-view.js.map diff --git a/static/scripts/mvc/library/library-model.js b/static/scripts/mvc/library/library-model.js index 8a397ac25c5..420f0e87c0c 100644 --- a/static/scripts/mvc/library/library-model.js +++ b/static/scripts/mvc/library/library-model.js @@ -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;to.get(e).toLowerCase()?"asc"===t?1:-1:o.get(e).toLowerCase()>r.get(e).toLowerCase()?"asc"===t?-1:1:0:-1:1:0:"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