Block voting when finalized; disable sliders client-side
This commit is contained in:
@@ -32,6 +32,8 @@ public static class VoteEndpoints
|
|||||||
|
|
||||||
var player = await EndpointHelpers.GetAuthenticatedPlayer(ctx, db);
|
var player = await EndpointHelpers.GetAuthenticatedPlayer(ctx, db);
|
||||||
if (player is null) return Results.Unauthorized();
|
if (player is null) return Results.Unauthorized();
|
||||||
|
if (player.VotesFinal)
|
||||||
|
return Results.BadRequest(new { error = "Votes are finalized. Unfinalize before changing scores." });
|
||||||
var phase = await EndpointHelpers.GetPhase(db, player.Id);
|
var phase = await EndpointHelpers.GetPhase(db, player.Id);
|
||||||
if (phase != Phase.Vote)
|
if (phase != Phase.Vote)
|
||||||
return EndpointHelpers.PhaseMismatch(Phase.Vote, phase);
|
return EndpointHelpers.PhaseMismatch(Phase.Vote, phase);
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ export function renderVotes() {
|
|||||||
footer.innerHTML = `
|
footer.innerHTML = `
|
||||||
<div class="warning-text ${hasVote ? "hidden" : ""}" id="warn-${s.id}">${t("vote.missingWarn")}</div>
|
<div class="warning-text ${hasVote ? "hidden" : ""}" id="warn-${s.id}">${t("vote.missingWarn")}</div>
|
||||||
<div class="vote-row">
|
<div class="vote-row">
|
||||||
<input class="full-slider" type="range" min="0" max="10" value="${current}" data-id="${s.id}">
|
<input class="full-slider" type="range" min="0" max="10" value="${current}" data-id="${s.id}" ${state.votesFinal ? "disabled" : ""}>
|
||||||
<span class="score" id="score-${s.id}">${displayScore}</span>
|
<span class="score" id="score-${s.id}">${displayScore}</span>
|
||||||
<span class="score-emoji" id="emoji-${s.id}">${displayEmoji}</span>
|
<span class="score-emoji" id="emoji-${s.id}">${displayEmoji}</span>
|
||||||
</div>`;
|
</div>`;
|
||||||
@@ -161,6 +161,7 @@ export function renderVotes() {
|
|||||||
});
|
});
|
||||||
list.querySelectorAll("input[type=range]").forEach((input) => {
|
list.querySelectorAll("input[type=range]").forEach((input) => {
|
||||||
input.addEventListener("input", (e) => {
|
input.addEventListener("input", (e) => {
|
||||||
|
if (state.votesFinal) return;
|
||||||
const val = Number(e.target.value);
|
const val = Number(e.target.value);
|
||||||
$("score-" + e.target.dataset.id).textContent = val;
|
$("score-" + e.target.dataset.id).textContent = val;
|
||||||
const emojiEl = $("emoji-" + e.target.dataset.id);
|
const emojiEl = $("emoji-" + e.target.dataset.id);
|
||||||
@@ -169,6 +170,7 @@ export function renderVotes() {
|
|||||||
if (warn) warn.classList.add("hidden");
|
if (warn) warn.classList.add("hidden");
|
||||||
});
|
});
|
||||||
input.addEventListener("change", async (e) => {
|
input.addEventListener("change", async (e) => {
|
||||||
|
if (state.votesFinal) return;
|
||||||
const suggestionId = Number(e.target.dataset.id);
|
const suggestionId = Number(e.target.dataset.id);
|
||||||
const score = Number(e.target.value);
|
const score = Number(e.target.value);
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user