diff options
Diffstat (limited to 'ogcp/static/js')
-rw-r--r-- | ogcp/static/js/ogcp.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/ogcp/static/js/ogcp.js b/ogcp/static/js/ogcp.js index ac31c65..86a9282 100644 --- a/ogcp/static/js/ogcp.js +++ b/ogcp/static/js/ogcp.js @@ -37,6 +37,25 @@ function storeCheckboxStatus(checkbox) { localStorage.removeItem(checkbox.name); } +function checkParentsCheckboxes() { + const checkboxes = $('input:checkbox[form|="scopesForm"]'); + const reversedCheckboxes = $(checkboxes.get().reverse()) + + reversedCheckboxes.each(function() { + const checkbox = this; + const checkboxChildren = $('input:checkbox', this.parentNode).not(this); + + if (checkboxChildren.length == 0) return; + + const unCheckedChildren = checkboxChildren.filter(":not(:checked)"); + + checkbox.indeterminate = + unCheckedChildren.length > 0 && + unCheckedChildren.length < checkboxChildren.length; + checkbox.checked = unCheckedChildren.length === 0; + }); +} + function checkChildrenCheckboxes() { const checkboxes = $('input:checkbox[form|="scopesForm"]') @@ -48,6 +67,7 @@ function checkChildrenCheckboxes() { storeCheckboxStatus(this); $(this).trigger('show-client'); }); + checkParentsCheckboxes(); }); } |