Add per-user phase navigation with results toggle
This commit is contained in:
@@ -122,31 +122,39 @@ function setupHandlers() {
|
||||
});
|
||||
}
|
||||
|
||||
$("set-phase").addEventListener("click", async () => {
|
||||
const phase = $("phase-select").value;
|
||||
try {
|
||||
await adminApi.setPhase(phase);
|
||||
toast(t("admin.phaseUpdated"));
|
||||
state.prevPhase = state.phase;
|
||||
state.phase = phase;
|
||||
state.votesRendered = false;
|
||||
renderPhasePill();
|
||||
$("phase-select").dataset.userEditing = "";
|
||||
await refreshPhaseData();
|
||||
} catch (err) {
|
||||
toast(err.message, true);
|
||||
}
|
||||
});
|
||||
|
||||
const phaseSelect = $("phase-select");
|
||||
["focus", "input", "click"].forEach((evt) => {
|
||||
phaseSelect.addEventListener(evt, () => {
|
||||
phaseSelect.dataset.userEditing = "1";
|
||||
const prevPhaseBtn = $("prev-phase");
|
||||
if (prevPhaseBtn) {
|
||||
prevPhaseBtn.addEventListener("click", async () => {
|
||||
try {
|
||||
const resp = await api.prevPhase();
|
||||
state.prevPhase = state.phase;
|
||||
state.phase = resp.currentPhase;
|
||||
state.resultsOpen = resp.resultsOpen ?? state.resultsOpen;
|
||||
state.votesRendered = false;
|
||||
renderPhasePill();
|
||||
await refreshPhaseData();
|
||||
} catch (err) {
|
||||
toast(err.message, true);
|
||||
}
|
||||
});
|
||||
});
|
||||
phaseSelect.addEventListener("blur", () => {
|
||||
phaseSelect.dataset.userEditing = "";
|
||||
});
|
||||
}
|
||||
|
||||
const nextPhaseBtn = $("next-phase");
|
||||
if (nextPhaseBtn) {
|
||||
nextPhaseBtn.addEventListener("click", async () => {
|
||||
try {
|
||||
const resp = await api.nextPhase();
|
||||
state.prevPhase = state.phase;
|
||||
state.phase = resp.currentPhase;
|
||||
state.resultsOpen = resp.resultsOpen ?? state.resultsOpen;
|
||||
state.votesRendered = false;
|
||||
renderPhasePill();
|
||||
await refreshPhaseData();
|
||||
} catch (err) {
|
||||
toast(err.message, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$("reset").addEventListener("click", () => adminAction(adminApi.reset, t("admin.resetDone")));
|
||||
$("factory-reset").addEventListener("click", () => adminAction(adminApi.factoryReset, t("admin.factoryResetDone")));
|
||||
@@ -182,6 +190,22 @@ function setupHandlers() {
|
||||
adminToggle.addEventListener("click", () => togglePanel(adminCard.classList.contains("hidden")));
|
||||
adminClose.addEventListener("click", () => togglePanel(false));
|
||||
}
|
||||
|
||||
const resultsToggle = $("results-open");
|
||||
if (resultsToggle) {
|
||||
resultsToggle.addEventListener("change", async (e) => {
|
||||
const desired = !!e.target.checked;
|
||||
try {
|
||||
const resp = await adminApi.setResultsOpen(desired);
|
||||
state.resultsOpen = resp.resultsOpen;
|
||||
renderPhasePill();
|
||||
toast(t("admin.resultsUpdated"));
|
||||
} catch (err) {
|
||||
e.target.checked = !desired;
|
||||
toast(err.message, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async function adminAction(fn, successMessage) {
|
||||
|
||||
Reference in New Issue
Block a user