flexisip-account-manager/flexiapi/public/scripts/utils.js
2024-12-02 13:04:49 +00:00

129 lines
No EOL
3.3 KiB
JavaScript
Vendored

/**
* @brief Set object in localStorage
* @param key string
* @param value the object
*/
Storage.prototype.setObject = function (key, value) {
this.setItem(key, JSON.stringify(value));
};
/**
* @brief Get object in localStorage
* @param key
*/
Storage.prototype.getObject = function (key) {
return JSON.parse(this.getItem(key));
};
var Utils = {
toggleAll: function (checkbox) {
checkbox.closest('table').querySelectorAll('tbody input[type=checkbox]').forEach(element => {
element.checked = checkbox.checked;
element.dispatchEvent(new Event('change'));
});
},
getStorageList: function (key) {
var list = sessionStorage.getObject('list.' + key);
if (list == null) {
list = [];
}
return list;
},
addToStorageList: function (key, id) {
var list = Utils.getStorageList(key);
if (!list.includes(id)) {
list.push(id);
}
sessionStorage.setObject('list.' + key, list);
},
removeFromStorageList: function(key, id) {
var list = Utils.getStorageList(key);
list.splice(list.indexOf(id), 1);
sessionStorage.setObject('list.' + key, list);
},
existsInStorageList: function(key, id) {
var list = Utils.getStorageList(key);
return (list && list.includes(id));
},
clearStorageList: function (key) {
sessionStorage.setObject('list.' + key, []);
},
/** List toggle */
}
var ListToggle = {
init: function() {
document.querySelectorAll('input[type=checkbox].list_toggle').forEach(checkbox => {
checkbox.checked = Utils.existsInStorageList(checkbox.dataset.listId, checkbox.dataset.id);
checkbox.addEventListener('change', e => {
if (checkbox.checked) {
Utils.addToStorageList(checkbox.dataset.listId, checkbox.dataset.id);
} else {
Utils.removeFromStorageList(checkbox.dataset.listId, checkbox.dataset.id);
}
ListToggle.refreshFormList();
ListToggle.refreshCounters();
})
});
ListToggle.refreshFormList();
ListToggle.refreshCounters();
},
refreshFormList: function() {
document.querySelectorAll('select.list_toggle').forEach(select => {
select.innerHTML = '';
select.multiple = true;
Utils.getStorageList(select.dataset.listId).forEach(id => {
const option = document.createElement("option");
option.value = id;
option.text = id;
option.selected = true;
select.add(option, null);
});
});
},
refreshCounters: function() {
document.querySelectorAll('span.list_toggle').forEach(counter => {
counter.innerHTML = Utils.getStorageList(counter.dataset.listId).length;
});
}
}
document.addEventListener("DOMContentLoaded", function(event) {
ListToggle.init();
});
function digitFilled(element) {
if (element.value.length == 1) {
element.nextElementSibling.focus();
}
}
function copyValueTo(from, to, append) {
if (to.value == '') {
let value = from.value;
if (append) {
value += append;
}
to.value = value;
}
}