diff --git a/.github/workflows/db_indexes.yaml b/.github/workflows/db_indexes.yaml index b11d21bf025..64f46d667fa 100644 --- a/.github/workflows/db_indexes.yaml +++ b/.github/workflows/db_indexes.yaml @@ -11,9 +11,13 @@ jobs: matrix: python-version: ['3.7'] db: ['postgresql', 'sqlite'] + postgresql-version: ['13'] + include: + - db: postgresql + postgresql-version: '9.6' services: postgres: - image: postgres:13 + image: postgres:${{ matrix.postgresql-version }} env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres diff --git a/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue b/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue index a9fddc56612..fabf9dfeba7 100644 --- a/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue +++ b/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue @@ -250,9 +250,6 @@ export default { // logic from legacy code return !!(this.contains_file_or_folder && Galaxy.user); }, - allDatasets: function () { - return this.folderContents.filter((element) => element.type === "file"); - }, }, methods: { updateSearch: function (value) { @@ -271,7 +268,11 @@ export default { async getSelected() { if (this.isAllSelectedMode) { this.$emit("setBusy", true); - const selected = await this.services.getFilteredFolderContents(this.folder_id, this.unselected); + const selected = await this.services.getFilteredFolderContents( + this.folder_id, + this.unselected, + this.$parent.search_text + ); this.$emit("setBusy", false); return selected; } else { @@ -319,7 +320,6 @@ export default { if (isCollection) { new mod_import_collection.ImportCollectionModal({ selected: checkedItems, - allDatasets: this.allDatasets, }); } else { new mod_import_dataset.ImportDatasetModal({ diff --git a/client/src/components/Libraries/LibraryFolder/TopToolbar/add-datasets.js b/client/src/components/Libraries/LibraryFolder/TopToolbar/add-datasets.js index 9f3a2cc977c..79cb6ae1b93 100644 --- a/client/src/components/Libraries/LibraryFolder/TopToolbar/add-datasets.js +++ b/client/src/components/Libraries/LibraryFolder/TopToolbar/add-datasets.js @@ -710,6 +710,26 @@ var AddDatasets = Backbone.View.extend({ } }, + /** + * User clicked the checkbox in the table heading + * @param {context} event + */ + selectAll: function (event) { + var selected = event.target.checked; + var self = this; + // Iterate each checkbox + $(":checkbox", "#dataset_list tbody").each(function () { + this.checked = selected; + var $row = $(this).closest("tr"); + // Change color of selected/unselected + if (selected) { + self.makeDarkRow($row); + } else { + self.makeWhiteRow($row); + } + }); + }, + makeDarkRow: function ($row) { $row.addClass("table-primary"); }, diff --git a/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-collection.js b/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-collection.js index b1325b50c9c..6529dc50e7b 100644 --- a/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-collection.js +++ b/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-collection.js @@ -42,36 +42,40 @@ var ImportCollectionModal = Backbone.View.extend({ showCollectionSelect: function (e) { const Galaxy = getGalaxyInstance(); var checked_items = this.findCheckedItems(); - var template = this.templateCollectionSelectModal(); + if (checked_items.length === 0) { + Toast.info("You must select some datasets first."); + } else { + var template = this.templateCollectionSelectModal(); - var promise = this.fetchUserHistories(); - promise - .done(() => { - this.modal = Galaxy.modal; - this.modal.show({ - closing_events: true, - title: "Create History Collection from Datasets", - body: template({ - selected_datasets: checked_items.dataset_ids.length, - histories: this.histories.models, - }), - buttons: { - Continue: () => { - this.showCollectionBuilder(checked_items.dataset_ids); + var promise = this.fetchUserHistories(); + promise + .done(() => { + this.modal = Galaxy.modal; + this.modal.show({ + closing_events: true, + title: "Create History Collection from Datasets", + body: template({ + selected_datasets: checked_items.dataset_ids.length, + histories: this.histories.models, + }), + buttons: { + Continue: () => { + this.showCollectionBuilder(checked_items.dataset_ids); + }, + Close: () => { + Galaxy.modal.hide(); + }, }, - Close: () => { - Galaxy.modal.hide(); - }, - }, + }); + }) + .fail((model, response) => { + if (typeof response.responseJSON !== "undefined") { + Toast.error(response.responseJSON.err_msg); + } else { + Toast.error("An error occurred."); + } }); - }) - .fail((model, response) => { - if (typeof response.responseJSON !== "undefined") { - Toast.error(response.responseJSON.err_msg); - } else { - Toast.error("An error occurred."); - } - }); + } }, /** * Note: The collection creation process expects ldda_ids as ids @@ -79,21 +83,17 @@ var ImportCollectionModal = Backbone.View.extend({ * The code below overwrites the id with ldda_id for this reason. */ showCollectionBuilder: function (checked_items) { - let collection_elements = []; - const elements_source = this.modal.$('input[type="radio"]:checked').val(); - if (elements_source === "selection") { - for (let i = checked_items.length - 1; i >= 0; i--) { - const collection_item = {}; - const dataset = checked_items[i]; - collection_item.id = dataset.ldda_id; - collection_item.name = dataset.name; - collection_item.deleted = dataset.deleted; - collection_item.state = dataset.state; - collection_elements.push(collection_item); - } - } else if (elements_source === "folder") { - collection_elements = this.options.allDatasets; + const collection_elements = []; + for (let i = checked_items.length - 1; i >= 0; i--) { + const collection_item = {}; + const dataset = checked_items[i]; + collection_item.id = dataset.ldda_id; + collection_item.name = dataset.name; + collection_item.deleted = dataset.deleted; + collection_item.state = dataset.state; + collection_elements.push(collection_item); } + const new_history_name = this.modal.$("input[name=history_name]").val(); if (new_history_name !== "") { this.createNewHistory(new_history_name) @@ -198,25 +198,6 @@ var ImportCollectionModal = Backbone.View.extend({ templateCollectionSelectModal: function () { return _.template( `