73 lines
2.2 KiB
JavaScript
73 lines
2.2 KiB
JavaScript
async function toggleState(setting_name, new_value, element_id) {
|
|
// Show spinner
|
|
qs(`#${element_id}`).parentNode.querySelector(".spinner").classList.remove("hidden");
|
|
|
|
const form = {
|
|
setting_name: setting_name,
|
|
value: JSON.stringify(new_value),
|
|
};
|
|
|
|
const response = await request("/setting", "POST", form);
|
|
|
|
qs(`#${element_id}`).parentNode.querySelector(".spinner").classList.add("hidden");
|
|
|
|
// TODO: On failure, notify the user
|
|
// Check response for errors
|
|
if (response.body.success) {
|
|
// 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('${setting_name}', false, this.id)` : `toggleState('${setting_name}', true, this.id)`;
|
|
qs(`#${element_id}`).removeAttribute("onclick");
|
|
qs(`#${element_id}`).setAttribute("onclick", add_function);
|
|
}
|
|
}
|
|
|
|
async function updateValue(key_pressed, setting_name, new_value, element_id) {
|
|
if (key_pressed !== 13) return;
|
|
// Show spinner
|
|
qs(`#${element_id}`).parentNode.querySelector(".spinner").classList.remove("hidden");
|
|
|
|
const form = {
|
|
setting_name: setting_name,
|
|
value: new_value,
|
|
};
|
|
|
|
const response = await request("/setting", "POST", form);
|
|
|
|
qs(`#${element_id}`).parentNode.querySelector(".spinner").classList.add("hidden");
|
|
|
|
// TODO: On failure, notify the user
|
|
// Check response for errors
|
|
if (response.body.success) {
|
|
}
|
|
}
|
|
|
|
function toggleActiveCategory(category_id) {
|
|
// Pages ----------------
|
|
// Hide all pages
|
|
qsa(".category-page").forEach((page) => {
|
|
page.classList.add("hidden");
|
|
});
|
|
// Show requested page
|
|
qs(`#${category_id}`).classList.remove("hidden");
|
|
|
|
// Navigation bar -------
|
|
// Unactive all buttons
|
|
qsa(".category-navigation button").forEach((btn) => {
|
|
btn.classList.remove("active");
|
|
});
|
|
// Active current page
|
|
qs(`#${category_id}-nav-btn`).classList.add("active");
|
|
qs(`#${category_id}-nav-btn`).blur(); // Unfocus the button
|
|
}
|