switcheroo/priv/static/picker.mjs
noe d7c745af36
Some checks failed
test / test (push) Has been cancelled
most of UI
2025-05-01 22:41:45 -07:00

64 lines
1.4 KiB
JavaScript

const switchListEl = document.querySelector("#switch-list");
const submitEl = document.querySelector("#submit");
let fronters = (window.fronters = []);
const memberFromButton = (button) => ({
name: button.dataset.name,
uuid: button.dataset.uuid,
});
const updateForm = (member) => {
const elementPrefix = fronters.length == 1 ? "pf-fronter__" : "pf-backups__";
const inputEl = document.querySelector(`#${elementPrefix}${member.uuid}`);
inputEl.checked = true;
if (fronters.length > 0) {
submitEl.disabled = false;
}
};
const updateList = () => {
switchListEl.innerHTML = fronters
.map((member) => `<span>${member.name}</span>`)
.join(", ");
};
const handleButtonClick = (event) => {
const button = event.target;
const member = memberFromButton(button);
if (fronters.find((mem) => mem.uuid == member.uuid)) {
console.info("already picked, skipping");
return;
}
fronters = [...fronters, member];
// update form
updateForm(member);
// update list
updateList();
if (fronters.length == 1) {
button.classList.add("first");
} else {
button.classList.add("other");
}
};
const reset = () => {
submitEl.disabled = true;
document.querySelectorAll("input").forEach((el) => {
el.checked = false;
});
};
(() => {
document.querySelectorAll(".buttons").forEach((el) => {
el.addEventListener("click", handleButtonClick);
});
reset();
})();