From be24ee7399dae306a2eae770ece77ced4ac91065 Mon Sep 17 00:00:00 2001 From: mrandal <89258689+mrandal@users.noreply.github.com> Date: Tue, 14 Mar 2023 11:41:08 -0500 Subject: [PATCH 1/2] fixed server side autopick --- src/analysis/public/js/script.js | 46 +++++++++++++++++++------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/src/analysis/public/js/script.js b/src/analysis/public/js/script.js index e068cdfc..5587e93e 100644 --- a/src/analysis/public/js/script.js +++ b/src/analysis/public/js/script.js @@ -104,35 +104,49 @@ if ('serviceWorker' in navigator) { //creates list of teams for auto pick list tab async function loadTeamsAutoPick(dataset, modulesConfig) { + // reset autoPickTeamList html autoPickTeamList.innerHTML = "" + //get blue alliance teams const allTeams = await fetchTeams() - // get an array of all teams that contain data to sort them - let teams = [] - let teamsWithNum = [] - for(const [teamNumber, team] of Object.entries(dataset.teams)){ - //console.log("team: ") - //console.log(team) + // get an array (teams) of all teams that contain data + var teams = [] + for(var [teamNumber, team] of Object.entries(dataset.teams)){ + console.log("team: ") + console.log(team) + console.log("team number: ") + console.log(teamNumber) if(dataset.tmps.filter(tmp => tmp.robotNumber == teamNumber).length > 0 && allTeams[teamNumber]){ // //console.log("added team: ") //console.log(team); setPath(team, "robotNumber", teamNumber) + console.log("data from path: " + getPath(team, "robotNumber")) teams.push(team); - teamsWithNum.push([teamNumber,team]); + + console.log("TEAM ADDED " + teamNumber) + + console.log("team number of first team: ") + console.log(teams[0].robotNumber) + console.log(teams) } + console.log("-----------------") } + console.log("teams before avgprob") + console.log(teams); //console.log("teams type and size: " + typeof(teams)+teams.length+teams[0]) - // compare the teams to get avg win probabilities - //compareAllTeams(teams) - let teamsProbability = fetch('/analysis/autopick') + + let teamsProbability = await fetch('/analysis/autopick').then(res => res.json()) + console.log("teams w/ avg probability") + console.log(teamsProbability) for(let i = 0; i < teams.length; i++){ for(let j = 0; j < teamsProbability.length; j++){ - if (teams[i].robotNumber = teamsProbability[j].robotNumber){ + if (teams[i].robotNumber == teamsProbability[j].robotNumber){ setPath(teams[i],"avgProbability",getPath(teamsProbability[j],"avgProbability",0)) } } } + // sort teams by avg win probability using bubble sort let sorted = false; while(!sorted){ @@ -142,13 +156,11 @@ if ('serviceWorker' in navigator) { let temp = teams[i]; teams[i] = teams[i+1]; teams[i+1] = temp; - temp = teamsWithNum[i]; - teamsWithNum[i] = teamsWithNum[i+1]; - teamsWithNum[i+1] = temp; sorted = false; } } } + //add to team list on autopicktab const firstContainer = constructTeamAutoPick(teams[0].robotNumber, teams[0], allTeams) autoPickTeamList.appendChild(firstContainer) @@ -158,14 +170,12 @@ if ('serviceWorker' in navigator) { autoPickTeamList.appendChild(autoPickTeamContainer) } - //get all team modules, create and store module classes, then append their placeholder containers to lists autoPickStats.innerHTML = "" autoPickMain.innerHTML = "" for (const module of modulesConfig.filter(m => m.view == "team")) { const moduleObject = new moduleClasses[module.module](module) if (module.position == "side") { - //FIXME reName autoPickStats.appendChild(moduleObject.container) } else if(module.position == "main"){ @@ -176,6 +186,7 @@ if ('serviceWorker' in navigator) { setTimeout(()=>{firstContainer.click();console.log('clicked')}, 4); } + // Creates the div/display box for each team on the autoPickTeamList - called in loadTeamsAutoPick function function constructTeamAutoPick(teamNumber, team, allTeams) { //create and populate autoPickTeamList element const teamContainer = createDOMElement("div", "team-container") @@ -189,11 +200,10 @@ if ('serviceWorker' in navigator) { teamContainer.appendChild(teamNameDisplay) } - //switch to team on click, set module data + // Create event listener that switches to team on click, set module data teamContainer.addEventListener("click", async () => { await setTeamModules(teamNumber) displayStats(teamContainer) - }) return teamContainer From b840667786753ca673d0a1bb82656f3d6b58a3b4 Mon Sep 17 00:00:00 2001 From: mrandal <89258689+mrandal@users.noreply.github.com> Date: Tue, 14 Mar 2023 11:48:02 -0500 Subject: [PATCH 2/2] adding thorough documentation to script.js --- src/analysis/public/js/script.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/analysis/public/js/script.js b/src/analysis/public/js/script.js index 5587e93e..bf5b12f6 100644 --- a/src/analysis/public/js/script.js +++ b/src/analysis/public/js/script.js @@ -57,7 +57,7 @@ if ('serviceWorker' in navigator) { // console.log(`team: ${Object.keys(team)}\n num: ${teamNumber}\n allTeams: ${allTeams[teamNumber]}`) if(allTeams[teamNumber]){ const teamContainer = constructTeam(teamNumber, team, allTeams) - teamList.appendChild(teamContainer) + teamList.appendChild(teamContainer) } } @@ -80,6 +80,8 @@ if ('serviceWorker' in navigator) { } } + // Creates individual team div for the sidebar - called in loadTeams + // creates event listener for the div that listens for click function constructTeam(teamNumber, team, allTeams) { //create and populate sidebar element const teamContainer = createDOMElement("div", "team-container") @@ -93,7 +95,7 @@ if ('serviceWorker' in navigator) { teamContainer.appendChild(teamNameDisplay) } - //switch to team on click of sidebar team, set module data + // Create event listener that switches to team view on click teamContainer.addEventListener("click", async () => { await setTeamModules(teamNumber) displayTeam(teamContainer) @@ -187,6 +189,7 @@ if ('serviceWorker' in navigator) { } // Creates the div/display box for each team on the autoPickTeamList - called in loadTeamsAutoPick function + // Creates an event listener for the div that listens for a click function constructTeamAutoPick(teamNumber, team, allTeams) { //create and populate autoPickTeamList element const teamContainer = createDOMElement("div", "team-container") @@ -200,7 +203,7 @@ if ('serviceWorker' in navigator) { teamContainer.appendChild(teamNameDisplay) } - // Create event listener that switches to team on click, set module data + // Create event listener for the div that switches the stats displayed to its team on click teamContainer.addEventListener("click", async () => { await setTeamModules(teamNumber) displayStats(teamContainer) @@ -209,14 +212,16 @@ if ('serviceWorker' in navigator) { return teamContainer } - //reset UI and switch to team view + // Displays team view - resets the UI and switch to team view + // Called from event listener in each sidebar team div created in constructTeam function function displayTeam(teamContainer) { clearInterface() teamContainer.classList.add("selected") showFade(teamView) } - // pull up and display auto pick list tab stats + // Display autoPickList stats for the team that is clicked on - + // called from the event listener in constructTeamsAutoPick function displayStats(teamContainer){ Array.from(document.querySelector("#auto-pick-team-list").children).map(t => t.classList.remove("selected")) teamContainer.classList.add("selected")