|
- let load_url = "https://leadercraft.exmods.org/s/load";
- let test_url = "http://localhost:1337/load?board=main-test&count=15&start=0";
- //load_url = test_url // testing only
-
- let default_args = "?id=1&count=50&start=0";
- let always_args = "&count=50&start=0";
- let leaderboard_name_set = false;
-
- function build_board() {
- let leaderboard = document.getElementById("leaderboard");
- let leaderboard_container = document.getElementById("leaderboard-container");
- let tmpEntry = {ID: -42, Rank:"?", PlayerURL: "/player?id=1", PlayerName: "Loading...", Score:">9000"}
- let errEntry = build_entry(tmpEntry);
- leaderboard.appendChild(errEntry);
- let gen_url = load_url;
- if (window.location.href.split("?").length < 2) { // no args
- gen_url += default_args;
- } else {
- gen_url += "?"+window.location.href.split("?").slice(1).join("&")+always_args;
- }
- setTimeout(() => {document.getElementById("nameAnchor-42").innerText = "Something went wrong :(";}, 5000); // 5s
- fetch(gen_url).then(
- (response) => {
- if (!response.ok || (response.status) != 200) {
- document.getElementById("nameAnchor-42").innerText = "Something went wrong :(";
- return;
- }
- errEntry.style.display = "none";
- response.json().then(
- (result) => {
- leaderboard.removeChild(errEntry)
- for (entry of result.Items) {
- if (!leaderboard_name_set) {
- leaderboard_name_set = true;
- document.getElementById("leaderboard-name").innerText = entry.BoardName + " (id: " + entry.BoardID + ")";
- }
- let newEntry = build_entry(entry);
- // end
- leaderboard.appendChild(newEntry);
- }
- }
- );
- }
- );
- }
-
- function build_entry(entry) {
- let newEntry = document.createElement("div")
- newEntry.setAttribute("id", "entry"+entry.ID)
- newEntry.classList.add("board-entry")
- // rank
- let rankEntry = document.createElement("span")
- rankEntry.setAttribute("id", "rank"+entry.ID)
- rankEntry.innerText = entry.Rank
- rankEntry.classList.add("board-rank")
- newEntry.appendChild(rankEntry)
- // name and url
- let nameElem = document.createElement("span")
- nameElem.setAttribute("id", "name"+entry.ID)
- nameElem.classList.add("board-name")
- let nameAElem = document.createElement("a")
- nameAElem.setAttribute("id", "nameAnchor"+entry.ID)
- nameAElem.classList.add("board-name-a")
- let splitUrl = entry.PlayerURL.split("?")
- if (load_url === test_url) {
- nameAElem.href = "../board"+splitUrl[0]+".html?"+splitUrl.slice(1).join("?")
- } else {
- nameAElem.href = "../board"+splitUrl[0]+".html?"+splitUrl.slice(1).join("?")
- }
- nameAElem.innerText = entry.PlayerName
- nameElem.appendChild(nameAElem)
- newEntry.appendChild(nameElem)
- // score
- let scoreElem = document.createElement("span")
- scoreElem.setAttribute("id", "score"+entry.ID)
- scoreElem.classList.add("board-score")
- scoreElem.innerText = entry.Score
- newEntry.appendChild(scoreElem)
- return newEntry
- }
|