summaryrefslogtreecommitdiffstats
path: root/ogcp/static
diff options
context:
space:
mode:
Diffstat (limited to 'ogcp/static')
-rw-r--r--ogcp/static/js/ogcp.js25
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');