Add ability to add teams to driver ranking
Submitting the rankings in 4 different groups shows the relationship between all of the teams instead of only 3.
Signed-off-by: Evelyn Yang <yang.2.evelyn@gmail.com>
Change-Id: I1f1ffb29fbf2ca13ee2ece8dd3b2c78132153d1e
diff --git a/scouting/www/driver_ranking/driver_ranking.component.ts b/scouting/www/driver_ranking/driver_ranking.component.ts
index 09f62c2..4b41981 100644
--- a/scouting/www/driver_ranking/driver_ranking.component.ts
+++ b/scouting/www/driver_ranking/driver_ranking.component.ts
@@ -7,7 +7,7 @@
// teams to rank and the match number.
// Data: Display the ranking interface where
// the scout can reorder teams and submit data.
-type Section = 'TeamSelection' | 'Data';
+type Section = 'TeamSelection' | 'TeamSelectionAdd' | 'Data';
@Component({
selector: 'app-driver-ranking',
@@ -19,6 +19,7 @@
// Stores the team keys and rank (order of the array).
team_ranking: string[] = ['971', '972', '973'];
+ added_teams: string[] = ['974', '975', '976'];
match_number: number = 1;
@@ -28,6 +29,15 @@
this.section = 'Data';
}
+ addTeamNumbers() {
+ for (let i = 0; i < this.added_teams.length; i++) {
+ this.team_ranking.push(this.added_teams[i]);
+ }
+ this.added_teams.splice(0, this.added_teams.length);
+ this.added_teams = ['974', '975', '976'];
+ this.section = 'Data';
+ }
+
rankUp(index: number) {
if (index > 0) {
this.changeRank(index, index - 1);
@@ -35,8 +45,14 @@
}
rankDown(index: number) {
- if (index < 2) {
- this.changeRank(index, index + 1);
+ if (this.team_ranking.length == 6) {
+ if (index < 5) {
+ this.changeRank(index, index + 1);
+ }
+ } else {
+ if (index < 2) {
+ this.changeRank(index, index + 1);
+ }
}
}
@@ -56,20 +72,71 @@
this.section = 'TeamSelection';
}
+ addTeams() {
+ this.section = 'TeamSelectionAdd';
+ }
+
async submitData() {
const builder = new Builder();
- const teamRanking1 = builder.createString(this.team_ranking[0]);
- const teamRanking2 = builder.createString(this.team_ranking[1]);
- const teamRanking3 = builder.createString(this.team_ranking[2]);
- builder.finish(
- SubmitDriverRanking.createSubmitDriverRanking(
- builder,
- this.match_number,
- teamRanking1,
- teamRanking2,
- teamRanking3
- )
- );
+ if (this.team_ranking.length == 3) {
+ const teamRanking1 = builder.createString(this.team_ranking[0]);
+ const teamRanking2 = builder.createString(this.team_ranking[1]);
+ const teamRanking3 = builder.createString(this.team_ranking[2]);
+ builder.finish(
+ SubmitDriverRanking.createSubmitDriverRanking(
+ builder,
+ this.match_number,
+ teamRanking1,
+ teamRanking2,
+ teamRanking3
+ )
+ );
+ } else {
+ const teamRanking1 = builder.createString(this.team_ranking[0]);
+ const teamRanking2 = builder.createString(this.team_ranking[1]);
+ const teamRanking3 = builder.createString(this.team_ranking[2]);
+ const teamRanking4 = builder.createString(this.team_ranking[3]);
+ const teamRanking5 = builder.createString(this.team_ranking[4]);
+ const teamRanking6 = builder.createString(this.team_ranking[5]);
+ // Submits the ranking 4 times to prevent data loss
+ // since driver ranking compares three teams at a time.
+ builder.finish(
+ SubmitDriverRanking.createSubmitDriverRanking(
+ builder,
+ this.match_number,
+ teamRanking1,
+ teamRanking2,
+ teamRanking3
+ )
+ );
+ builder.finish(
+ SubmitDriverRanking.createSubmitDriverRanking(
+ builder,
+ this.match_number,
+ teamRanking4,
+ teamRanking5,
+ teamRanking6
+ )
+ );
+ builder.finish(
+ SubmitDriverRanking.createSubmitDriverRanking(
+ builder,
+ this.match_number,
+ teamRanking3,
+ teamRanking4,
+ teamRanking5
+ )
+ );
+ builder.finish(
+ SubmitDriverRanking.createSubmitDriverRanking(
+ builder,
+ this.match_number,
+ teamRanking1,
+ teamRanking2,
+ teamRanking6
+ )
+ );
+ }
const buffer = builder.asUint8Array();
const res = await fetch('/requests/submit/submit_driver_ranking', {
method: 'POST',