33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
async function toggleState(setting_name, new_value, element_id) {
|
|
// Show spinner
|
|
qs(`#${element_id}`).parentNode.querySelector(".spinner").classList.remove("hidden");
|
|
|
|
// Send request
|
|
const form = new FormData();
|
|
form.append("setting_name", setting_name);
|
|
form.append("value", new_value);
|
|
|
|
const response = await request("/setting", "POST", form);
|
|
|
|
// Check response for errors
|
|
if (response.body.success) {
|
|
qs(`#${element_id}`).parentNode.querySelector(".spinner").classList.add("hidden");
|
|
|
|
// Update visual to reflect current setting
|
|
// Class
|
|
const add_class = new_value ? "good" : "bad";
|
|
const remove_class = new_value ? "bad" : "good";
|
|
qs(`#${element_id}`).classList.remove(remove_class);
|
|
qs(`#${element_id}`).classList.add(add_class);
|
|
|
|
// Text
|
|
const new_text = new_value ? "Enabled" : "Disabled";
|
|
qs(`#${element_id}`).children[0].innerText = new_text;
|
|
|
|
// Function
|
|
const add_function = new_value ? "toggleState('ACCOUNT_REGISTRATION', false, this.id)" : "toggleState('ACCOUNT_REGISTRATION', true, this.id)";
|
|
qs(`#${element_id}`).removeAttribute("onclick");
|
|
qs(`#${element_id}`).setAttribute("onclick", add_function);
|
|
}
|
|
}
|