177 lines
5.4 KiB
JavaScript
177 lines
5.4 KiB
JavaScript
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 = "?";
|
|
for (let i = 0; i < players.length; i++) {
|
|
if (players[i].id === vote["plus_player_id"]) {
|
|
player = players[i]["name"];
|
|
}
|
|
}
|
|
let nickname = vote["plus_nickname"];
|
|
let reason = vote["plus_reason"];
|
|
let minus = document.createElement("button");
|
|
minus.textContent = "Et en moins..."
|
|
minus.addEventListener("click", () => {show_minus(id, votes, players)})
|
|
minus.className = "right";
|
|
|
|
const p = document.createElement("h2");
|
|
if (nickname === "") {
|
|
p.innerHTML = `${player}`;
|
|
}
|
|
else {
|
|
p.innerHTML = `${nickname} (${player})`
|
|
}
|
|
|
|
const r = document.createElement("p");
|
|
r.textContent = reason;
|
|
|
|
const head = document.createElement("h1");
|
|
head.innerText = "EN PLUS";
|
|
|
|
const buttons = document.createElement("div");
|
|
buttons.className = "buttons";
|
|
buttons.append(minus)
|
|
|
|
app.append(head, p, r, buttons);
|
|
}
|
|
|
|
function show_minus(id, votes, players) {
|
|
const app = document.getElementById("app");
|
|
app.innerHTML = "";
|
|
let vote = votes[id];
|
|
let nickname = vote["minus_nickname"];
|
|
let reason = vote["minus_reason"];
|
|
let player = "?";
|
|
for (let i = 0; i < players.length; i++) {
|
|
if (players[i].id === vote["minus_player_id"]) {
|
|
player = players[i]["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 p = document.createElement("h2");
|
|
if (nickname === "") {
|
|
p.innerHTML = `${player}`;
|
|
}
|
|
else {
|
|
p.innerHTML = `${nickname} (${player})`
|
|
}
|
|
|
|
const r = document.createElement("p");
|
|
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, p, 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 minus = results[1];
|
|
let prev_score = null;
|
|
let counter = 0;
|
|
for (let i = 0; i < plus.length; i++) {
|
|
let p = plus[i];
|
|
let player = "?";
|
|
for (let i = 0; i < players.length; i++) {
|
|
if (players[i].id === p[0]) {
|
|
player = players[i]["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 < minus.length; i++) {
|
|
let p = minus[i];
|
|
let player = "?";
|
|
for (let i = 0; i < players.length; i++) {
|
|
if (players[i].id === p[0]) {
|
|
player = players[i]["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 login = document.getElementById("login");
|
|
let logged = document.cookie.includes("logged=true");
|
|
login.textContent = logged ? "Se déconnecter" : "Se connecter";
|
|
login.href = logged ? "/logout" : "/login";
|
|
|
|
let _ = run(); |