From 5d9780e8d80df941000230a7ba3e2d9e96f44756 Mon Sep 17 00:00:00 2001 From: Alejandro Sirgo Rica Date: Thu, 13 Jun 2024 13:07:49 +0200 Subject: js: allow selection of multiple clients in scopes sidebar Allow the selection of multiple client checkboxes if they belong to the same room. Each checkbox input in the DOM has a "data-parent-room" attribute whose value is the value of the "name" attribute of its parent room scope component. To check if a checkbox is a client and a sibling of the one being checked we check if "data-parent-room" is available for both nodes and if they have the same value. --- ogcp/static/js/ogcp.js | 17 +++++++++++++++-- ogcp/templates/base.html | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ogcp/static/js/ogcp.js b/ogcp/static/js/ogcp.js index 5c15b30..b57fca7 100644 --- a/ogcp/static/js/ogcp.js +++ b/ogcp/static/js/ogcp.js @@ -399,8 +399,21 @@ function limitCheckboxes(context) { const checkboxes = $('input:checkbox[form|="scopesForm"]'); checkboxes.on('change', function () { - const checked = this; - checkboxes.filter((i, c) => c !== checked).prop('checked', false); + const currentCheckbox = $(this); + const currentParentRoom = currentCheckbox.attr('data-parent-room'); + + checkboxes.each(function () { + const checkbox = $(this); + const checkboxParentRoom = checkbox.attr('data-parent-room'); + + if (currentCheckbox.is(checkbox)) { + return; + } + const isSibling = currentParentRoom && checkboxParentRoom && checkboxParentRoom === currentParentRoom; + if (!isSibling) { + checkbox.prop('checked', false); + } + }); checkScopeServer(); diff --git a/ogcp/templates/base.html b/ogcp/templates/base.html index 30dc3bb..22fe086 100644 --- a/ogcp/templates/base.html +++ b/ogcp/templates/base.html @@ -111,7 +111,7 @@ - +