Fix for Blaseball API changes & use fetch instead of XMLHttpRequest
This commit is contained in:
		
							parent
							
								
									442641e568
								
							
						
					
					
						commit
						17231816fa
					
				
					 1 changed files with 41 additions and 41 deletions
				
			
		
							
								
								
									
										82
									
								
								main.js
									
										
									
									
									
								
							
							
						
						
									
										82
									
								
								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",
 | 
			
		||||
                `<h1>${total} player${ENDING(total)}</h1>
 | 
			
		||||
                 <ul id="${div_container.id}_tlist${total}"></ul>`)
 | 
			
		||||
                <ul id="${div_container.id}_tlist${total}"></ul>`
 | 
			
		||||
            )
 | 
			
		||||
        })
 | 
			
		||||
    // 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", 
 | 
			
		||||
                `<li>${team.fullName} 
 | 
			
		||||
                (${hitters} hitter${ENDING(hitters)},
 | 
			
		||||
                 ${pitchers} pitcher${ENDING(pitchers)})</li>`
 | 
			
		||||
                ${pitchers} pitcher${ENDING(pitchers)}${shadow_string})</li>`
 | 
			
		||||
            )
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue