diff options
author | Daniel García Moreno <danigm@soleta.eu> | 2022-09-13 12:01:23 +0200 |
---|---|---|
committer | Javier Sánchez Parra <jsanchez@soleta.eu> | 2022-09-27 09:48:36 +0200 |
commit | efe97317534942c97bfbc132e096655b8191105f (patch) | |
tree | 88237db1120a3bf4daeff0233a82505f269a098e | |
parent | 1db12230f94c33c8d701f4af5ea3fd48e76c4dad (diff) |
Add different selection mode for the tree view
-rw-r--r-- | ogcp/static/js/ogcp.js | 25 | ||||
-rw-r--r-- | ogcp/templates/commands.html | 2 | ||||
-rw-r--r-- | ogcp/templates/macros.html | 12 | ||||
-rw-r--r-- | ogcp/templates/scopes.html | 2 |
4 files changed, 35 insertions, 6 deletions
diff --git a/ogcp/static/js/ogcp.js b/ogcp/static/js/ogcp.js index d5615b8..e72bc83 100644 --- a/ogcp/static/js/ogcp.js +++ b/ogcp/static/js/ogcp.js @@ -265,3 +265,28 @@ function checkImageServer() { }); }); } + +function limitCheckboxes() { + const checkboxes = $('input:checkbox[form|="scopesForm"]'); + + checkboxes.on('change', function () { + const checked = this; + checkboxes.filter((i, c) => c !== checked).prop('checked', false); + checkboxes.each(function() { + showSelectedClient(this); + }); + checkScopeServer(); + }); +} + +function checkScopeServer() { + const servers = $('input:checkbox[form|="scopesForm"][name="scope-server"]'); + servers.each(function() { + const checkbox = this; + const checkboxChildren = $('input:checkbox', this.parentNode).not(this); + if (checkboxChildren.length == 0) return; + + const checkedChildren = checkboxChildren.filter(":checked"); + checkbox.checked = checkedChildren.length > 0; + }); +} diff --git a/ogcp/templates/commands.html b/ogcp/templates/commands.html index dfcda91..c212600 100644 --- a/ogcp/templates/commands.html +++ b/ogcp/templates/commands.html @@ -12,7 +12,7 @@ {% endblock %} {% block sidebar %} - {{ macros.scopes_tree_collapse(scopes, sidebar_state) }} + {{ macros.scopes_tree_collapse(scopes, sidebar_state, 'commands') }} {% endblock %} {% block commands %} diff --git a/ogcp/templates/macros.html b/ogcp/templates/macros.html index 0283d26..a8e4f87 100644 --- a/ogcp/templates/macros.html +++ b/ogcp/templates/macros.html @@ -1,4 +1,4 @@ -{% macro scopes_tree_collapse(scopes, state='') -%} +{% macro scopes_tree_collapse(scopes, state='', selection_mode='scopes') -%} <ul id="scopes" class="nav flex-column nav-pills"> {{ scopes_tree_collapse_level(scopes["scope"], "", state) }} @@ -11,9 +11,13 @@ showSelectedClientsOnEvents(); updateScopeState(); keepScopesTreeState(); - keepSelectedClients(); - checkChildrenCheckboxes(); - checkParentsCheckboxes(); + {% if selection_mode == 'commands' %} + keepSelectedClients(); + checkChildrenCheckboxes(); + checkParentsCheckboxes(); + {% elif selection_mode == 'scopes' %} + limitCheckboxes(); + {% endif %} } }); </script> diff --git a/ogcp/templates/scopes.html b/ogcp/templates/scopes.html index 751272d..d07e7d3 100644 --- a/ogcp/templates/scopes.html +++ b/ogcp/templates/scopes.html @@ -12,7 +12,7 @@ {% endblock %} {% block sidebar %} - {{ macros.scopes_tree_collapse(scopes, sidebar_state) }} + {{ macros.scopes_tree_collapse(scopes, sidebar_state, 'scopes') }} {% endblock %} {% block commands %} |