added participants from api

This commit is contained in:
isaacfonner 2025-01-12 18:13:38 +00:00
parent f76e45d71f
commit 903c44feb9
2 changed files with 45 additions and 4 deletions

View file

@ -1,4 +1,44 @@
let programs = {};
const apiUrl = "https://api2.hackclub.com/v0.1/Unified%20YSWS%20Projects%20DB/YSWS%20Programs?cache=true";
var participants = []
function loadParticipants() {
fetch(apiUrl).then(response => {
if (!response.ok) {
throw new Error(`Failed to Fetch Participants Data! ${response.status}`);
}
return response.json();
}).then(data => {
participants = data.map(item => ({
name: item.fields.Name,
total: item.fields["UnweightedTotal"]
}));
console.log(participants);
})
.catch(error => {
console.error("Error fetching data:", error);
});
}
loadParticipants()
function getParticipantsByName(programName) {
if (!participants.length) {
console.error("Data has not been fetched yet. Please wait...");
return;
}
const program = participants.find(item => item.name.toLowerCase() === programName.toLowerCase());
if (program) {
console.log(`Program: ${program.name}, Participants: ${program.total}`);
return program.total;
} else {
console.log(`Program "${programName}" not found.`);
return null;
}
}
function isEventEnded(deadline) {
if (!deadline) return false;
@ -91,9 +131,9 @@ function getDeadlineClass(deadlineStr) {
return '';
}
function formatParticipants(count) {
if (count === undefined) return '';
return `${count.toLocaleString()} participant${count === 1 ? '' : 's'}`;
function formatParticipants(name) {
if (name === undefined) return '';
return getParticipantsByName(name)
}
function createProgramCard(program) {
@ -105,7 +145,7 @@ function createProgramCard(program) {
const encodedProgram = encodeURIComponent(JSON.stringify(program));
const participantsText = program.participants !== undefined ?
`<div class="program-participants">${formatParticipants(program.participants)}</div>` : '';
`<div class="program-participants">${formatParticipants(program.name)}</div>` : '';
return `
<div class="card program-card ${opensClass}" data-program="${encodedProgram}">

1
ysws.json Normal file
View file

@ -0,0 +1 @@
[{"id":"rec0cAdSi6dFsnr1y","fields":{"Name":"The Bin","UnweightedTotal":277}},{"id":"rec0qFHAlOpZPuMFV","fields":{"Name":"Boba Drops","UnweightedTotal":1301}},{"id":"rec2Up8DfXy4esByb","fields":{"Name":"Dessert","UnweightedTotal":0}},{"id":"rec3OcvkmrET87msY","fields":{"Name":"Riceathon","UnweightedTotal":1}},{"id":"rec8eH7KozQJlIDQV","fields":{"Name":"Blot","UnweightedTotal":192}},{"id":"rec939NW8NA9MIr2L","fields":{"Name":"Power Hour","UnweightedTotal":51}},{"id":"rec9owxuHdujjnHgG","fields":{"Name":"BrowserBuddy","UnweightedTotal":36}},{"id":"recE2drMuGXUWJi3L","fields":{"Name":"Hackcraft Mod Edition","UnweightedTotal":8}},{"id":"recHnd1ttjwPlgVIt","fields":{"Name":"Arcade","UnweightedTotal":1229}},{"id":"recLh2KxoyLbqiuAi","fields":{"Name":"Easel","UnweightedTotal":11}},{"id":"recPEpsGS8SYCV8pg","fields":{"Name":"Hackaccino","UnweightedTotal":362}},{"id":"recRznjWVg7ctL0Ld","fields":{"Name":"Hackpad","UnweightedTotal":35}},{"id":"recSODGhknuccVVfj","fields":{"Name":"Wizard Orpheus","UnweightedTotal":13}},{"id":"recWh4JY75X2GQOoU","fields":{"Name":"10 Hours in Public","UnweightedTotal":24}},{"id":"recaFoqCU8OckbUXZ","fields":{"Name":"Say Cheese","UnweightedTotal":0}},{"id":"recepBUx0dFRyJXNj","fields":{"Name":"Anchor","UnweightedTotal":26}},{"id":"recfEBqFDf4NGjY4y","fields":{"Name":"Sprig","UnweightedTotal":667}},{"id":"recjHqZ0sBpdt4RCA","fields":{"Name":"Cargo Cult v2","UnweightedTotal":22}},{"id":"recjl0cmSpepVLwQC","fields":{"Name":"Low Skies","UnweightedTotal":68}},{"id":"reck8PI9qm56lEOOQ","fields":{"Name":"BakeBuild","UnweightedTotal":0}},{"id":"recogPY9YwTFHFBjT","fields":{"Name":"Build Your Own LLM","UnweightedTotal":20}},{"id":"reconHxKzWI8Zp43M","fields":{"Name":"Cargo Cult","UnweightedTotal":18}},{"id":"recqYkMrUxNn5v6X0","fields":{"Name":"10 Days In Public","UnweightedTotal":7}},{"id":"rectvQ49dMZdaKHQP","fields":{"Name":"Ham Club","UnweightedTotal":14}},{"id":"recurPoPKtmlCrqOJ","fields":{"Name":"GameGuilds","UnweightedTotal":0}},{"id":"recv6jYRpf5inVI6C","fields":{"Name":"OnBoard","UnweightedTotal":623}},{"id":"recvaPCCKn7v50aDd","fields":{"Name":"OnBoard Live","UnweightedTotal":0}},{"id":"reczTBJrxy80ONaK6","fields":{"Name":"High Seas","UnweightedTotal":1480}},{"id":"reczXRU25w9yusmvp","fields":{"Name":"Cider","UnweightedTotal":43}},{"id":"reczfiitatKeQSr3S","fields":{"Name":"Cascade","UnweightedTotal":55}}]