diff --git a/replit.nix b/replit.nix new file mode 100644 index 00000000..11e88c02 --- /dev/null +++ b/replit.nix @@ -0,0 +1,6 @@ +{ pkgs }: { + deps = [ + pkgs.nodejs-16_x + pkgs.cowsay + ]; +} \ No newline at end of file diff --git a/src/admin/routes/api.js b/src/admin/routes/api.js index 536e2bd0..b5526c54 100644 --- a/src/admin/routes/api.js +++ b/src/admin/routes/api.js @@ -67,8 +67,7 @@ router.get("/enterMatch", async (req,res) => { if (scouter.state.status == ScoutingSync.SCOUTER_STATUS.WAITING) scouter.socket.emit("enterMatch"); } - - //res.json(); + res.json(); } }) router.post("/setMatch", (req,res) => { diff --git a/src/analysis/modules/SingleDisplay/index.js b/src/analysis/modules/SingleDisplay/index.js index 37914c93..fd456e9b 100644 --- a/src/analysis/modules/SingleDisplay/index.js +++ b/src/analysis/modules/SingleDisplay/index.js @@ -83,7 +83,7 @@ class SingleDisplay { /** * - * @param {*an alliance of any length*} alliance1 + * @param {*an allaicne of any length*} alliance1 * @param {*an alliance to compare to of any length*} alliance2 * @param {*the data set that holds the infomation of the teams*} dataset * @returns {*the avg difference in score between allaicne 1 and allaicne 2*} diff --git a/src/analysis/public/css/style.css b/src/analysis/public/css/style.css index 236f85fb..8c4bf2df 100644 --- a/src/analysis/public/css/style.css +++ b/src/analysis/public/css/style.css @@ -30,7 +30,8 @@ body { grid-area: 3 / 1 / 4 / 2; background-color: var(--bg-alt); padding: 16px; - /* height:100vw; this messes with the search bar*/ + height: calc(100vh - 75px); + overflow: auto; display: grid; min-height: 0; grid-template-rows: auto auto 1fr; diff --git a/src/analysis/public/js/autoPick.js b/src/analysis/public/js/autoPick.js index c737e4aa..63b2724b 100644 --- a/src/analysis/public/js/autoPick.js +++ b/src/analysis/public/js/autoPick.js @@ -1,7 +1,5 @@ - - // const { Dataset } = require("../../DataTransformer"); // const { zScore, cumulativeStdNormalProbability } = require("simple-statistics"); @@ -343,4 +341,15 @@ console.log(allianceAverage(allianceRed)) console.log(allianceStandardDeviation(allianceBlue)) console.log(allianceStandardDeviation(allianceRed)) -console.log(compareAlliances(allianceBlue, allianceRed)); \ No newline at end of file +console.log(compareAlliances(allianceBlue, allianceRed)); + +let teams = [teamB1, teamB2, teamB3, teamR1, teamR2, teamR3] +compareAllTeams(teams) +console.log(teamB1.avgProbability) // 0.66152 (avg: 80, sd: 20) +console.log(teamB2.avgProbability) // 0.59114 (avg: 70, sd: 20) +console.log(teamB3.avgProbability) // 0.2696 (avg: 20, sd: 20) +console.log(teamR1.avgProbability) // 0.52532 (avg: 60, sd: 20) +console.log(teamR2.avgProbability) // 0.59114 (avg: 70, sd: 20) +console.log(teamR3.avgProbability) // 0.36126 (avg: 30, sd: 20) + +*/ diff --git a/src/analysis/routes/api.js b/src/analysis/routes/api.js index 17c9831e..97568039 100644 --- a/src/analysis/routes/api.js +++ b/src/analysis/routes/api.js @@ -30,37 +30,36 @@ router.get("/csv", async (req,res) => { //create rows let rows = []; - let headerRow = true; - let checkData = function(team){ - if(Object.entries(team).filter(([key,value])=>key!="manual").length == 0){ - return false - } - return true - } - - for (let [teamNumber,team] of Object.entries(dataset.teams).filter(([num,team])=>checkData(team)) ) { - if(headerRow){ - headerRow = false; - rows.push(["Team #", - ...Object.entries(team.averages).filter(([key,value])=>!isNaN(value)&&value).map(([i,x]) => i+" Average"), //all averages - ...Object.entries(team.averageScores).filter(item=>!isNaN(item)).map(([i,x]) => i+" Score Average"), //all averages - "Average Cycle", - "Average Completed Cycle" + let headerRow = false; + for (let [teamNumber,team] of Object.entries(dataset.teams) ) { + console.log(team.counts) + if (!headerRow) { + headerRow = true; + rows.push(["Team Number", + ...Object.entries(team.counts).map(([i,x]) => i+" Count"), //all counts + ...Object.entries(team.averages).map(([i,x]) => i+" Average"), //all averages + ...Object.entries(team.averageScores).map(([i,x]) => i+" Average Score"), //average scores + "Time Per Ball", + "Possible Climbs", + "Accuracy", //accuracy, + ...Object.entries(team.averageScores).map(([i,x]) => i+"Average"), //all averages + ]) + } + rows.push([teamNumber, + ...Object.entries(team.counts).map(([i,x]) => x), //all counts + ...Object.entries(team.averages).map(([i,x]) => x), //all averages + ...Object.entries(team.averageScores).map(([i,x]) => x), //all averages + team.timePerBall, + team.possibleClimbs, + team.accuracy, //accuracy + ...Object.entries(team.averageScores).map(([i,x]) => x), //all averages ]) - } - rows.push([teamNumber, - ...Object.entries(team.averages).filter(([key,value])=>!isNaN(value)&&value).map(([i,x]) => x), //all averages - ...Object.entries(team.averageScores).filter(item=>!isNaN(item)).map(([i,x]) => x), //all averages - team.cycle.averageTime, - team.cycle.averageTimeComplete - ]) - - } + } //make into csv let csv = rows.map(row => row.reduce((acc,value) => acc+`,${value}`)).reduce((acc,row) => acc+`${row}\n`, ""); res.set({"Content-Disposition":`attachment; filename="teams.csv"`}); res.send(csv); - }) +}) module.exports = router; \ No newline at end of file