From 17231816fae0cfc0081e4c91f68c007128877aac Mon Sep 17 00:00:00 2001 From: Lavender Perry Date: Tue, 15 Jun 2021 16:33:13 -0700 Subject: [PATCH] Fix for Blaseball API changes & use fetch instead of XMLHttpRequest --- main.js | 82 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/main.js b/main.js index cb8b671..376c953 100644 --- a/main.js +++ b/main.js @@ -1,46 +1,39 @@ "use strict" -let request = new XMLHttpRequest() -request.open( - "GET", +let api_response = fetch( "https://cors-proxy.blaseball-reference.com/database/allTeams", - true) -request.send(); +).then(function(response) { + if (response.ok) { + response.json().then(function(teams) { + let totals = teams.map(team => + team.lineup.length + team.rotation.length + ) -request.onload = function() { - let teams = JSON.parse(this.response) - let totals = teams.map(team => team.lineup.length + team.rotation.length) + let results = document.getElementById("results") + let results_shadowed = document.getElementById("results_shadowed") - let results = document.getElementById("results") - let results_shadowed = document.getElementById("results_shadowed") - let shadows = document.getElementById("shadows") + display_teams(totals, teams, results) + // Results are ready so we can show them now + results.style.display = "block" - display_teams( - totals, - teams, - results, - team => team.lineup.length, - team => team.rotation.length, - ) - // Results are ready so we can show them now - results.style.display = "block" + // Now get the shadowed results ready to display + display_teams( + totals.map((total, pos) => total + teams[pos].shadows.length), + teams, + results_shadowed + ) + }) - // Now get the shadowed results ready to display - display_teams( - totals.map((total, pos) => - total + teams[pos].bullpen.length + teams[pos].bench.length), - teams, - results_shadowed, - team => team.lineup.length + team.bullpen.length, - team => team.rotation.length + team.bench.length, - ) + let shadows = document.getElementById("shadows") + // Set the toggle function for & display the checkbox + shadows.oninput = checkbox_toggle + shadows.style.display = "block" - // Set the toggle function for & display the checkbox - shadows.oninput = checkbox_toggle - shadows.style.display = "block" - - document.getElementById("progress").remove() -} + document.getElementById("progress").remove() + } else { + alert("Error fetching Blaseball API data: " + api_response.status) + } +}) function checkbox_toggle() { results_shadowed.style.display = "block" @@ -53,26 +46,33 @@ function checkbox_toggle() { } } -function display_teams(totals, teams, div_container, hitters_fn, pitchers_fn) { +function display_teams(totals, teams, div_container) { const ENDING = x => (Math.abs(x) === 1 ? "" : "s") // Make the headers & lists for teams totals.slice().sort((x, y) => x - y) .filter((total, pos, array) => !pos || total !== array[pos - 1]) .forEach(function(total) { - div_container.insertAdjacentHTML("afterbegin", + div_container.insertAdjacentHTML( + "afterbegin", `

${total} player${ENDING(total)}

- `) + ` + ) }) // Put the teams in the lists teams.forEach(function(team, pos) { - let hitters = hitters_fn(team) - let pitchers = pitchers_fn(team) + let hitters = team.lineup.length + let pitchers = team.rotation.length + let shadow_string = "" + if (div_container.id == "results_shadowed") { + let shadows = team.shadows.length + shadow_string = `, ${shadows} shadowed player${ENDING(shadows)}` + } document.getElementById(div_container.id + "_tlist" + totals[pos]) .insertAdjacentHTML( "beforeend", `
  • ${team.fullName} (${hitters} hitter${ENDING(hitters)}, - ${pitchers} pitcher${ENDING(pitchers)})
  • ` + ${pitchers} pitcher${ENDING(pitchers)}${shadow_string})` ) }) }