From 5ed511c7496bcbe90a6740a706b75d3fbbcca516 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 2 Nov 2017 13:04:46 -0400 Subject: [PATCH] Fix another undefined 'that'; swap to self for clarity. --- .../mvc/library/library-folderlist-view.js | 18 +++++++++--------- .../mvc/library/library-folderlist-view.js.map | 2 +- .../mvc/library/library-folderlist-view.js | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/client/galaxy/scripts/mvc/library/library-folderlist-view.js b/client/galaxy/scripts/mvc/library/library-folderlist-view.js index 5bdf3f1ece9..ea810f3e536 100644 --- a/client/galaxy/scripts/mvc/library/library-folderlist-view.js +++ b/client/galaxy/scripts/mvc/library/library-folderlist-view.js @@ -60,7 +60,7 @@ var FolderListView = Backbone.View.extend({ fetchFolder: function(options) { var options = options || {}; this.options.include_deleted = options.include_deleted; - var that = this; + var self = this; this.folderContainer = new mod_library_model.FolderContainer({ id: this.options.id @@ -74,8 +74,8 @@ var FolderListView = Backbone.View.extend({ } this.folderContainer.fetch({ success: function(folder_container) { - that.folder_container = folder_container; - that.render(); + self.folder_container = folder_container; + self.render(); }, error: function(model, response) { if (typeof response.responseJSON !== "undefined") { @@ -132,7 +132,7 @@ var FolderListView = Backbone.View.extend({ // when dataset_id is present render its details too if (this.options.dataset_id) { - var row = _.findWhere(that.rowViews, { + var row = _.findWhere(self.rowViews, { id: this.options.dataset_id }); if (row) { @@ -233,9 +233,9 @@ var FolderListView = Backbone.View.extend({ * function for each. Also binds the hover behavior. */ renderAll: function() { - var that = this; + var self = this; _.each(this.collection.models.reverse(), model => { - that.renderOne(model); + self.renderOne(model); }); this.postRender(); }, @@ -313,16 +313,16 @@ var FolderListView = Backbone.View.extend({ */ selectAll: function(event) { var selected = event.target.checked; - that = this; + var self = this; // Iterate each checkbox $(":checkbox", "#folder_list_body").each(function() { this.checked = selected; var $row = $(this).closest("tr"); // Change color of selected/unselected if (selected) { - that.makeDarkRow($row); + self.makeDarkRow($row); } else { - that.makeWhiteRow($row); + self.makeWhiteRow($row); } }); }, diff --git a/static/maps/mvc/library/library-folderlist-view.js.map b/static/maps/mvc/library/library-folderlist-view.js.map index 923a73b7674..679146a6637 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":["FolderListView","Backbone","View","extend","el","progress","progressStep","folderContainer","current_sort_order","current_sort_key","events","click #select-all-checkboxes","click .dataset_row","click .folder_row","click .sort-folder-name","click .sort-folder-file_ext","collection","defaults","page_count","initialize","options","this","_","modal","rowViews","_libraryModel2","default","Folder","include_deleted","renderOne","removeOne","show_page","rePaint","listenTo","fetchFolder","that","FolderContainer","id","url","urlRoot","fetch","success","folder_container","render","error","response","responseJSON","Galaxy","libraries","library_router","back","onclick","template","templateFolder","$","hide","upper_folder_id","path","attributes","metadata","full_path","length","$el","parent_library_id","order","findWhere","dataset_id","row","showDatasetDetails","paginate","tooltip","get","models","total_items_count","page_start","preferences","items_to_render","items_shown","checkEmptiness","folderToolbarView","renderPaginator","addAll","reset","removeAllRows","postRender","model","fetched_metadata","add","contains_file_or_folder","type","configureElements","each","reverse","set","rowView","_libraryFolderrowView2","FolderRowView","remove","find","after","sortColumnClicked","event","preventDefault","data","checked","show","makeDarkRow","currentTarget","className","replace","checkbox","$row","source","renderSortIcon","selectAll","selected","closest","makeWhiteRow","target","addClass","removeClass","localName","join"],"mappings":"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","file":"../../../scripts/mvc/library/library-folderlist-view.js","sourcesContent":["import mod_masthead from \"layout/masthead\";\nimport mod_utils from \"utils/utils\";\nimport mod_toastr from \"libs/toastr\";\nimport mod_library_model from \"mvc/library/library-model\";\nimport mod_library_folderrow_view from \"mvc/library/library-folderrow-view\";\nimport mod_library_dataset_view from \"mvc/library/library-dataset-view\";\nvar 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(this.options || {}, this.defaults, options);\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 = `${this.folderContainer.attributes.urlRoot +\n this.options.id}/contents`;\n\n if (this.options.include_deleted) {\n this.folderContainer.url = `${this.folderContainer\n .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\n .err_msg} 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.full_path,\n parent_library_id: this.folderContainer.attributes.metadata\n .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 (this.options.show_page === null || this.options.show_page < 1) {\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 (this.options.show_page === null || this.options.show_page < 1) {\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(this.options);\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, 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(fetched_metadata);\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(), 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 $(this).data(\"id\") && $(this).data(\"id\") === model.id;\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\nexport default {\n FolderListView: FolderListView\n};\n"]} \ No newline at end of file +{"version":3,"sources":["mvc/library/library-folderlist-view.js"],"names":["FolderListView","Backbone","View","extend","el","progress","progressStep","folderContainer","current_sort_order","current_sort_key","events","click #select-all-checkboxes","click .dataset_row","click .folder_row","click .sort-folder-name","click .sort-folder-file_ext","collection","defaults","page_count","initialize","options","this","_","modal","rowViews","_libraryModel2","default","Folder","include_deleted","renderOne","removeOne","show_page","rePaint","listenTo","fetchFolder","self","FolderContainer","id","url","urlRoot","fetch","success","folder_container","render","error","response","responseJSON","Galaxy","libraries","library_router","back","onclick","template","templateFolder","$","hide","upper_folder_id","path","attributes","metadata","full_path","length","$el","parent_library_id","order","findWhere","dataset_id","row","showDatasetDetails","paginate","tooltip","get","models","total_items_count","page_start","preferences","items_to_render","items_shown","checkEmptiness","folderToolbarView","renderPaginator","addAll","reset","removeAllRows","postRender","model","fetched_metadata","add","contains_file_or_folder","type","configureElements","each","reverse","set","rowView","_libraryFolderrowView2","FolderRowView","remove","find","after","sortColumnClicked","event","preventDefault","data","checked","show","makeDarkRow","currentTarget","className","replace","checkbox","$row","source","renderSortIcon","selectAll","selected","closest","makeWhiteRow","target","addClass","removeClass","localName","join"],"mappings":"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","file":"../../../scripts/mvc/library/library-folderlist-view.js","sourcesContent":["import mod_masthead from \"layout/masthead\";\nimport mod_utils from \"utils/utils\";\nimport mod_toastr from \"libs/toastr\";\nimport mod_library_model from \"mvc/library/library-model\";\nimport mod_library_folderrow_view from \"mvc/library/library-folderrow-view\";\nimport mod_library_dataset_view from \"mvc/library/library-dataset-view\";\nvar 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(this.options || {}, this.defaults, options);\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 self = this;\n\n this.folderContainer = new mod_library_model.FolderContainer({\n id: this.options.id\n });\n this.folderContainer.url = `${this.folderContainer.attributes.urlRoot +\n this.options.id}/contents`;\n\n if (this.options.include_deleted) {\n this.folderContainer.url = `${this.folderContainer\n .url}?include_deleted=true`;\n }\n this.folderContainer.fetch({\n success: function(folder_container) {\n self.folder_container = folder_container;\n self.render();\n },\n error: function(model, response) {\n if (typeof response.responseJSON !== \"undefined\") {\n mod_toastr.error(\n `${response.responseJSON\n .err_msg} 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.full_path,\n parent_library_id: this.folderContainer.attributes.metadata\n .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(self.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 (this.options.show_page === null || this.options.show_page < 1) {\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 (this.options.show_page === null || this.options.show_page < 1) {\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(this.options);\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, 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(fetched_metadata);\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 self = this;\n _.each(this.collection.models.reverse(), model => {\n self.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 $(this).data(\"id\") && $(this).data(\"id\") === model.id;\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 var self = 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 self.makeDarkRow($row);\n } else {\n self.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\nexport default {\n FolderListView: FolderListView\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 1b291ca42e8..49db0746e11 100644 --- a/static/scripts/mvc/library/library-folderlist-view.js +++ b/static/scripts/mvc/library/library-folderlist-view.js @@ -1,2 +1,2 @@ -define("mvc/library/library-folderlist-view",["exports","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,r,s,l){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(e,"__esModule",{value:!0});a(t),a(i);var n=a(o),d=a(r),c=a(s),h=(a(l),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 d.default.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 d.default.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?n.default.error(t.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):n.default.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 i,o=this.folderContainer.attributes.metadata.full_path;if(i=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:i,order:this.current_sort_order})),this.options.dataset_id){var r=_.findWhere(that.rowViews,{id:this.options.dataset_id});r?r.showDatasetDetails():n.default.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 c.default.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(""))}}));e.default={FolderListView:h}}); +define("mvc/library/library-folderlist-view",["exports","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,r,s,l){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(e,"__esModule",{value:!0});a(t),a(i);var n=a(o),d=a(r),c=a(s),h=(a(l),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 d.default.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 d.default.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?n.default.error(t.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):n.default.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 i,o=this.folderContainer.attributes.metadata.full_path;if(i=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:i,order:this.current_sort_order})),this.options.dataset_id){var r=_.findWhere(self.rowViews,{id:this.options.dataset_id});r?r.showDatasetDetails():n.default.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 c.default.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,i=this;$(":checkbox","#folder_list_body").each(function(){this.checked=t;var e=$(this).closest("tr");t?i.makeDarkRow(e):i.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(""))}}));e.default={FolderListView:h}}); //# sourceMappingURL=../../../maps/mvc/library/library-folderlist-view.js.map