Vote + Results done

This commit is contained in:
2024-09-12 23:36:55 +02:00
parent 20b47856d5
commit 49e2b18e56
17 changed files with 698 additions and 19 deletions

152
static/js/results.js Normal file
View File

@@ -0,0 +1,152 @@
async function run() {
const votes = await fetch("data/votes").then(r => r.json());
const players = await fetch("data/players").then(r => r.json());
let id = 0;
if (votes.length === 0) {
show_no_votes();
} else {
show_plus(id, votes, players);}
}
function show_no_votes() {
const app = document.getElementById("app");
const sorry = document.createElement("h1");
sorry.textContent = "Désolé...";
sorry.style.textAlign = "center";
const expl = document.createElement("h3");
expl.textContent = "Mais il n'y a pas de votes pour le moment.";
expl.style.textAlign = "center";
app.append(sorry, expl);
}
function show_plus(id, votes, players) {
const app = document.getElementById("app");
app.innerHTML = "";
let vote = votes[id];
let player = players[vote["vote_plus_id"] - 1]["name"];
let nickname = vote["vote_plus_nickname"];
let reason = vote["vote_plus_reason"];
let moins = document.createElement("button");
moins.textContent = "Et en moins..."
moins.addEventListener("click", () => {show_moins(id, votes, players)})
moins.className = "right";
const vote_p = document.createElement("h2");
if (nickname === "") {
vote_p.innerHTML = `${player}`;
}
else {
vote_p.innerHTML = `${nickname} (${player})`
}
const vote_r = document.createElement("p");
vote_r.textContent = reason;
const head = document.createElement("h1");
head.innerText = "EN PLUS";
const buttons = document.createElement("div");
buttons.className = "buttons";
buttons.append(moins)
app.append(head, vote_p, vote_r, buttons);
}
function show_moins(id, votes, players) {
const app = document.getElementById("app");
app.innerHTML = "";
let vote = votes[id];
let nickname = vote["vote_moins_nickname"];
let reason = vote["vote_moins_reason"];
let player = players[vote["vote_moins_id"] - 1]["name"];
let next = document.createElement("button");
if (id === votes.length - 1) {
next.textContent = "Résultats";
} else {
next.textContent = "Prochain vote";
}
next.addEventListener("click", () => {
if (id === votes.length - 1) {
let _ = show_results(players)
} else {
show_plus(id+1, votes, players)
}
})
next.className = "right";
const vote_p = document.createElement("h2");
if (nickname === "") {
vote_p.innerHTML = `${player}`;
}
else {
vote_p.innerHTML = `${nickname} (${player})`
}
const vote_r = document.createElement("p");
vote_r.textContent = reason;
const head = document.createElement("h1");
head.innerText = "EN MOINS";
const buttons = document.createElement("div");
buttons.className = "buttons";
buttons.append(next)
app.append(head, vote_p, vote_r, buttons);
}
async function show_results(players) {
const app = document.getElementById("app");
app.innerHTML = ""
const res = document.createElement("h1");
res.textContent = "Résultats";
res.style.textAlign = "center";
app.append(res);
const vp = document.createElement("h1");
vp.textContent = "En plus:";
app.append(vp);
let results = await fetch("data/results").then(r => r.json());
let plus = results[0];
let moins = results[1];
let prev_score = null;
let counter = 0;
for (let i = 0; i < plus.length; i++) {
let p = plus[i];
let player = players[p[0] - 1]["name"];
let score = p[1];
if (prev_score == null || score < prev_score) {
counter += 1;
prev_score = score;
const place = document.createElement("h2");
place.textContent = `En ${counter}${counter === 1 ? "ère" : "ème"} place:`;
app.append(place);
}
const result = document.createElement("h3");
result.textContent = `${player} avec ${p[1]} votes!`;
app.append(result);
}
const sep = document.createElement("hr");
app.append(sep);
const vm = document.createElement("h1");
vm.textContent = "En moins:";
app.append(vm);
prev_score = null;
counter = 0;
for (let i = 0; i < moins.length; i++) {
let p = moins[i];
let player = players[p[0] - 1]["name"];
let score = p[1];
if (prev_score == null || score < prev_score) {
counter += 1;
prev_score = score;
const place = document.createElement("h2");
place.textContent = `En ${counter}${counter === 1 ? "ère" : "ème"} place:`;
app.append(place);
}
const result = document.createElement("h3");
result.textContent = `${player} avec ${score} votes!`;
app.append(result);
}
}
let _ = run();