let vote = { plus_player_id: null, plus_nickname: "", plus_reason: "", minus_player_id: null, minus_nickname: "", minus_reason: "" } let current_page = 0; async function main() { if (read_cookie()) { showMessage("Merci pour ton vote!", "Ton vote a bien été prit en compte.", false, "info"); return; } let players = await fetch("/data/players").then(r => r.json()); let select = document.getElementById("player_id"); let nickname = document.getElementById("nickname"); let reason = document.getElementById("reason"); players.forEach((x) => { let option = document.createElement("option"); option.value = x["id"]; option.textContent = x["name"]; select.append(option); }) select.value = null; nickname.value = ""; reason.value = ""; select.addEventListener("change", () => { if (current_page) { vote.minus_player_id = parseInt(select.value); } else { vote.plus_player_id = parseInt(select.value); } }) nickname.addEventListener("change", () => { if (current_page) { vote.minus_nickname = nickname.value; } else { vote.plus_nickname = nickname.value; } }) reason.addEventListener("change", () => { if (current_page) { vote.minus_reason = reason.value; } else { vote.plus_reason = reason.value; } }) let rightButton = document.getElementById("next"); let leftButton = document.getElementById("prev"); let title = document.getElementById("app_title"); rightButton.addEventListener("click", async () => { if (current_page) { if (vote.minus_player_id === null) { showMessage("Bah alors, on sait pas pour qui voter?", "Il semblerait que tu aies oublié de sélectionner quelqu'un pour ton vote!", true, "warning"); return; } if (await fetch("/vote", { method: "post", body: JSON.stringify(vote) }) .then(r => r.status) === 200) { set_cookie(); showMessage("Merci pour ton vote!", "Ton vote a bien été prit en compte.", false, "info"); } console.log(vote); } else { if (vote.plus_player_id === null) { showMessage("Bah alors, on sait pas pour qui voter?", "Il semblerait que tu aies oublié de sélectionner quelqu'un pour ton vote!", true, "warning"); return; } rightButton.textContent = "À voté!"; title.textContent = "Vote -"; current_page = 1; leftButton.hidden = false; select.value = vote.minus_player_id; nickname.value = vote.minus_nickname; reason.value = vote.minus_reason; } }) leftButton.addEventListener("click", () => { if (current_page) { current_page = 0; title.textContent = "Vote +"; rightButton.textContent = "Suivant"; leftButton.hidden = true; select.value = vote.plus_player_id; nickname.value = vote.plus_nickname; reason.value = vote.plus_reason; } }) } function showMessage(title, description, canBeDismissed, type) { let notification = document.getElementById("notification"); notification.hidden = false; let notificationTitle = document.getElementById("title"); notificationTitle.textContent = title; notificationTitle.classList.add(type); let detail = document.getElementById("detail"); detail.textContent = description; let close = document.getElementById("close"); close.hidden = !canBeDismissed; close.addEventListener("click", () => { notification.hidden = true; }) } function set_cookie() { let date = new Date(Date.now()); date.setDate(date.getDate() + 1); date.setHours(0, 0,0); console.log(date); document.cookie = `hasvoted=true; expires=${date.toUTCString()}; path=/`; } function read_cookie() { return document.cookie.includes("hasvoted=true"); } let _ = main();