async function LoadPlayers() {
// Get list of players from server.
let players;
await fetch("https://micahb.dev/Esports_Projects/Modules/GetPlayers.js&cache=false")
.then((response) => response.json())
.then((data) => players = data);
// Get each player and put it on a list.
let list = `
Name
ID
`;
let NumberLoading = players.Players.length;
players.Players.forEach(async (player) => {
// Request each player's information.
let playerURL = `https://micahb.dev/Esports_Projects/Players/${player}`;
GetPlayer(playerURL)
.then((d) => {
list += "
";
NumberLoading--;
});
});
while (NumberLoading != 0) {
// Check once every 30ms if the stuff has finished loading, show percentage.
let loadingPercentage = ((players.Players.length - NumberLoading) / (players.Players.length)) * 100;
document.getElementById("Loading_Text").innerHTML = `Loading: ${loadingPercentage.toPrecision(4)}%`;
await new Promise(r => setTimeout(r, 30));
}
document.getElementById("Loading_Text").innerHTML = `Registered Players:`;
document.getElementById("players").innerHTML = list + "
";
}
let PlayerCache = {};
function GetPlayer(playerURL) {
return new Promise(res => {
if (PlayerCache[playerURL] == undefined) {
return fetch(playerURL)
.then((response) => response.json())
.then(json => {
// Add to cache and then return it.
PlayerCache[playerURL] = json;
res(json);
})
} else res(PlayerCache[playerURL]);
})
}
async function OnLoad() {
// Load players but also get the list of games into the drop down.
LoadPlayers();
FillDropDownWithGames();
}
async function LoadPlayersFromGame() {
// Get list of players from server.
let players;
let game = document.getElementById("game-selection").value.replaceAll("_", " ")
// Load all players if that's which "game" is selected.
if (game == "All") return LoadPlayers();
await fetch("https://micahb.dev/ESports_Projects/Modules/GetPlayersWithGame.js&game=" + escape(game))
.then((response) => response.json())
.then((data) => players = data);
console.log(players);
// Put all the players on a list.
let list = `
Name
ID
`;
players.players.forEach(player => {
// Add each player to the table.
// ${d.Student_id}
list += "
";
}
async function FillDropDownWithGames() {
// Get the list of games from the server.
let games;
await fetch("https://micahb.dev/ESports_Projects/Modules/GetGames.js&cache=false")
.then((response) => response.json())
.then((data) => games = data);
let list = ``;
for (let game in games.games) {
list += `\n`
}
document.getElementById("game-selection").innerHTML = list;
}