waschmarken/static/js/main.js
2020-07-17 22:36:32 +02:00

52 lines
1.3 KiB
JavaScript

"use strict"
function render_scoreboard(data) {
const users = Object.values(data.users);
users.sort((a, b) => b.score - a.score);
const min_score = users[users.length-1].score,
max_score = users[0].score;
const tbody = document.querySelector("#scoreboard tbody");
while (tbody.children.length) {
tbody.removeChild(tbody.firstChild);
}
const template = document.querySelector("#scoreboard template");
for (const user of users) {
const clone = template.content.cloneNode(true);
const name = clone.querySelector(".name"),
score = clone.querySelector(".score"),
bar = clone.querySelector(".bar");
const score_percent = Math.floor(10 + (user.score - min_score) / (max_score - min_score) * 90) + "%";
bar.style.width = score_percent;
name.innerText = user.name;
score.innerText = user.score;
tbody.appendChild(clone);
}
}
async function update_scoreboard() {
const r = await fetch('api/get_public_model', {
method: 'POST',
body: JSON.stringify({}),
});
if (r.status !== 200) {
console.log("oh no");
return;
}
const data = await r.json();
render_scoreboard(data);
}
update_scoreboard();
setInterval(update_scoreboard, 1000);