From 9dbced7b39e9dcef63c15c51fbe77c193484b9f0 Mon Sep 17 00:00:00 2001 From: sboursen-scinote Date: Fri, 17 Feb 2023 15:39:24 +0100 Subject: [PATCH] Fix select-all behavior for task table [SCI-7815] --- app/assets/javascripts/experiments/table.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/experiments/table.js b/app/assets/javascripts/experiments/table.js index e47606f88..dfa6e5a35 100644 --- a/app/assets/javascripts/experiments/table.js +++ b/app/assets/javascripts/experiments/table.js @@ -374,6 +374,21 @@ var ExperimnetTable = { return allMyModules; }, + updateSelectAllCheckbox: function() { + const tableWrapper = $(this.table); + const checkboxesCount = $('.sci-checkbox.my-module-selector', tableWrapper).length; + const selectedCheckboxesCount = this.selectedMyModules.length; + const selectAllCheckbox = $('.select-all-checkboxes .sci-checkbox', tableWrapper); + + selectAllCheckbox.prop('indeterminate', false); + if (selectedCheckboxesCount === 0) { + selectAllCheckbox.prop('checked', false); + } else if (selectedCheckboxesCount === checkboxesCount) { + selectAllCheckbox.prop('checked', true); + } else { + selectAllCheckbox.prop('indeterminate', true); + } + }, initSelectAllCheckbox: function() { $(this.table).on('click', '.select-all-checkboxes .sci-checkbox', (e1) => { $.each($('.my-module-selector'), (_i, e2) => { @@ -406,6 +421,8 @@ var ExperimnetTable = { this.selectedMyModules.splice(index, 1); } + this.updateSelectAllCheckbox(); + if (checkbox.checked) { this.loadPermission(myModuleId); } else { @@ -471,7 +488,7 @@ var ExperimnetTable = { }, clearRowTaskSelection: function() { this.selectedMyModules = []; - $('.select-all-checkboxes .sci-checkbox').prop('checked', false); + this.updateSelectAllCheckbox(); this.updateExperimentToolbar(); }, initNewTaskModal: function(table) {