2026.camp.public.website/js/progress.js
2026-01-23 00:03:47 +01:00

91 lines
2.4 KiB
JavaScript

const gauge_url = "https://api.camp.interhacker.space/api/gauge"
const fundraising_url = "https://api.camp.interhacker.space/api/fundraising"
const gaugeMax = 250;
const fundraisingTotalMax = 20000;
async function getGauge() {
// REMOVE WHEN SIGNUP FORM IS OPEN
return 0;
try {
const response = await fetch(gauge_url);
if (!response.ok) {
throw new Error(`Response status: ${response.status}`);
}
const result = await response.json();
return result.gauge
} catch (error) {
console.error(error.message);
return null;
}
}
async function getFundraisingTotal() {
try {
const response = await fetch(fundraising_url);
if (!response.ok) {
throw new Error(`Response status: ${response.status}`);
}
const result = await response.json();
return result.total
} catch (error) {
console.error(error.message);
return null;
}
}
function percentRatio(ratio) {
return Math.floor(ratio * 100);
}
function setAboveHalf(ratio, element) {
if (ratio > 0.5) {
element.classList.remove("lessthanhalf");
element.classList.add("morethanhalf");
}
}
async function setGauge() {
const gauge = await getGauge();
if (gauge !== null) {
const gaugeBar = document.getElementById("gauge-bar");
const gaugeText = document.getElementById("gauge-text");
const gaugeRatio = gauge / gaugeMax;
gaugeBar.style.setProperty("width", percentRatio(gaugeRatio) + "%");
gaugeText.innerText = gauge + "/" + gaugeMax;
setAboveHalf(gaugeRatio, gaugeBar);
}
}
async function setFundraisingTotal() {
const fundraising_total = await getFundraisingTotal();
if (fundraising_total !== null) {
const fundraisingBar = document.getElementById("fundraising-bar");
const fundraisingText = document.getElementById("fundraising-text");
const fundraisingRatio = fundraising_total / fundraisingTotalMax;
fundraisingBar.style.setProperty("width", percentRatio(fundraisingRatio) + "%");
fundraisingText.innerText = percentRatio(fundraisingRatio) + " %";
setAboveHalf(fundraisingRatio, fundraisingBar);
}
}
async function setProgress() {
setGauge();
setFundraisingTotal();
}
document.addEventListener("DOMContentLoaded", setProgress);