From b5c8879e57915512aa96d2f38888aea97434de14 Mon Sep 17 00:00:00 2001 From: sboursen-scinote Date: Fri, 17 Feb 2023 09:18:32 +0100 Subject: [PATCH] Fix the behavior of the select-all checkbox in projects table [SCI-7815] --- app/assets/javascripts/projects/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/assets/javascripts/projects/index.js b/app/assets/javascripts/projects/index.js index d2e20665a..e238e5cd7 100644 --- a/app/assets/javascripts/projects/index.js +++ b/app/assets/javascripts/projects/index.js @@ -634,6 +634,23 @@ var ProjectsIndex = (function() { }); } + function updateSelectAllCheckbox() { + const tableWrapper = $(cardsWrapper); + const checkboxesCount = $('.sci-checkbox.folder-card-selector, .sci-checkbox.project-card-selector', + tableWrapper).length; + const selectedCheckboxesCount = selectedProjects.length + selectedProjectFolders.length; + const selectAllCheckbox = $('.sci-checkbox.select-all', 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); + } + } + /** * Initializes cards view */ @@ -672,6 +689,7 @@ var ProjectsIndex = (function() { selectedProjectFolders.splice(index, 1); } + updateSelectAllCheckbox(); updateProjectsToolbar(); }); @@ -691,6 +709,8 @@ var ProjectsIndex = (function() { selectedProjects.splice(index, 1); } + updateSelectAllCheckbox(); + if (this.checked) { $.get(projectCard.data('permissions-url'), function(result) { PERMISSIONS.forEach((permission) => {