diff options
Diffstat (limited to 'ogcp/static/js')
-rw-r--r-- | ogcp/static/js/ogcp.js | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/ogcp/static/js/ogcp.js b/ogcp/static/js/ogcp.js index 96bf3d9..d445094 100644 --- a/ogcp/static/js/ogcp.js +++ b/ogcp/static/js/ogcp.js @@ -89,9 +89,28 @@ function setParentStatus(checkboxes) { }); } +function deleteInvalidStorageItems(items, context) { + const existingIds = items.map(function() { + return context + this.id; + }).get(); + + for (let i = 0; i < localStorage.length; i++) { + const key = localStorage.key(i); + + if (!key.startsWith(context)) { + continue; + } + if (!existingIds.includes(key)) { + localStorage.removeItem(key); + } + } +} + function configureCommandCheckboxes(context) { const checkboxes = $('input:checkbox[form="scopesForm"]'); + deleteInvalidStorageItems(checkboxes, context); + // Ensure the form fields are sent $('#scopesForm').on('submit', function() { checkboxes.each(function() { @@ -141,9 +160,11 @@ function keepSelectedClients(context) { const checkboxes = $('#sidebar input:checkbox') checkboxes.on('change', function (event) { - storeCheckboxStatus(this, context); + storeCheckboxStatus(this, context); }); + deleteInvalidStorageItems(checkboxes, context); + checkboxes.each(function () { if (localStorage.getItem(context + this.id) == 'check') { this.checked = true; @@ -310,6 +331,8 @@ function checkFolderParent(context) { function limitCheckboxes(context) { const checkboxes = $('#sidebar input:checkbox'); + deleteInvalidStorageItems(checkboxes, context); + checkboxes.on('change', function () { const currentCheckbox = $(this); const currentParentRoom = currentCheckbox.attr('data-parent-room'); |