diff --git a/css/home.css b/css/home.css
index a7235e3..91028e9 100644
--- a/css/home.css
+++ b/css/home.css
@@ -25,6 +25,7 @@ width:auto;
background-color: white;
display: inline-block;
padding: 0.7em 0.5em 0.5em 0.5em;
+text-wrap: nowrap;
}
@keyframes loadbar {
diff --git a/index.html b/index.html
index fcf9de3..7c8485c 100644
--- a/index.html
+++ b/index.html
@@ -8,6 +8,7 @@
+
Camp Interhack
@@ -83,13 +84,13 @@
Où en est-on ?
-
+
Il y a
- 50/200
+ ?/200
places déjà réservées
Et nous avons reçu
- 52,45%
+ ? %
des dons dont nous avons besoin (voir le détail des comptes)
diff --git a/js/progress.js b/js/progress.js
new file mode 100644
index 0000000..1d9c652
--- /dev/null
+++ b/js/progress.js
@@ -0,0 +1,88 @@
+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() {
+ 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) {
+ 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) {
+ 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);