diff --git a/app/assets/javascripts/projects/show.js b/app/assets/javascripts/projects/show.js index c5a8efe49..aaee9cd36 100644 --- a/app/assets/javascripts/projects/show.js +++ b/app/assets/javascripts/projects/show.js @@ -105,7 +105,7 @@ if (viewContainer.find('.no-results-container').length) { viewContainer.addClass('no-results'); } - selectedExperiments.length = 0; + selectedExperiments = []; updateExperimentsToolbar(); loadExperimentWorkflowImages(); @@ -126,6 +126,9 @@ }, error: function() { viewContainer.html('Error loading project list'); + }, + complete: function() { + updateSelectAllCheckbox(); } }); } @@ -205,6 +208,22 @@ }); } + function updateSelectAllCheckbox() { + const tableWrapper = $(cardsWrapper); + const checkboxesCount = $('.sci-checkbox.experiment-card-selector', tableWrapper).length; + const selectedCheckboxesCount = selectedExperiments.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); + } + } + function initExperimentsSelector() { $(cardsWrapper).on('click', '.experiment-card-selector', function() { let card = $(this).closest('.experiment-card'); @@ -222,6 +241,8 @@ selectedExperiments.splice(index, 1); } + updateSelectAllCheckbox(); + if (this.checked) { $.get(card.data('permissions-url'), function(result) { PERMISSIONS.forEach((permission) => { @@ -275,7 +296,7 @@ modal.on('hidden.bs.modal', function() { $(this).remove(); }); - validateMoveModal(modal) + validateMoveModal(modal); } function validateMoveModal(modal) {