From 5461621c421130bd359efff4a10c3e1ba330e85c Mon Sep 17 00:00:00 2001 From: akiyamn Date: Thu, 2 Nov 2023 22:29:09 +1100 Subject: Init --- fe/leaderboard.js | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 fe/leaderboard.js (limited to 'fe/leaderboard.js') diff --git a/fe/leaderboard.js b/fe/leaderboard.js new file mode 100644 index 0000000..426fb47 --- /dev/null +++ b/fe/leaderboard.js @@ -0,0 +1,70 @@ +import { API_ROOT, INGORED_USERS } from "./global.js" + +const element = (e) => document.querySelector(e) + +async function update() { + const data = await get_leaderboard_data() + fill_metadata(data.settings) + fill_leaderboard(data.points, data.settings.multiplier) +} + + +function sentenceCase(string) { + const out = string.slice(0, 1).toUpperCase() + string.slice(1).toLowerCase() + return out +} + +async function get_leaderboard_data() { + const response = await fetch(`${API_ROOT}/leaderboard/`) + console.log(API_ROOT) + const data = await response.json() + return data +} + +function fill_metadata(settings) { + element("#prompt").innerHTML = `"${settings.prompt}"` +} + +function clear_leaderboard() { + element(`#team-container`).innerHTML = "" +} + +function fill_leaderboard(points, multipliers) { + clear_leaderboard() + for (let team of ["green", "purple"]) { + console.log(team) + const html = ` +
+
+
${sentenceCase(team)} Team
+
x${multipliers[team]}
+
Total: ${points[team]["__total"]}
+ ${team_member_entry(points[team])} +
+ ` + element(`#team-container`).innerHTML += html + } +} + +function team_member_entry(teamPoints) { + let html = "" + for (let member in teamPoints) { + if (!INGORED_USERS.includes(member)) { + html += ` +
+
${sentenceCase(member)}
+
${teamPoints[member]}
+
+ ` + } + } + return html +} + +document.addEventListener("DOMContentLoaded", async () => { + update() + const urlParams = new URLSearchParams(window.location.search); + const poll = urlParams.get("poll") || 3000 + const polling = setInterval(update, poll) +}); + -- cgit v1.2.3