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',
diff --git a/scouting/www/driver_ranking/driver_ranking.ng.html b/scouting/www/driver_ranking/driver_ranking.ng.html
index d361c9d..129a05b 100644
--- a/scouting/www/driver_ranking/driver_ranking.ng.html
+++ b/scouting/www/driver_ranking/driver_ranking.ng.html
@@ -14,13 +14,24 @@
/>
<br />
<br />
- <label>Team Numbers</label>
- <input
- *ngFor="let x of [1,2,3]; let i = index;"
- [(ngModel)]="team_ranking[i]"
- type="text"
- id="team_input_{{i}}"
- />
+ <div *ngIf="team_ranking.length==3">
+ <label>Team Numbers</label>
+ <input
+ *ngFor="let x of [1,2,3]; let i = index;"
+ [(ngModel)]="team_ranking[i]"
+ type="text"
+ id="team_input_{{i}}"
+ />
+ </div>
+ <div *ngIf="team_ranking.length==6">
+ <label>Team Numbers</label>
+ <input
+ *ngFor="let x of [1,2,3,4,5,6]; let i = index;"
+ [(ngModel)]="team_ranking[i]"
+ type="text"
+ id="team_input_{{i}}"
+ />
+ </div>
<button
class="btn btn-primary"
(click)="setTeamNumbers()"
@@ -29,6 +40,24 @@
Select
</button>
</div>
+
+ <div *ngSwitchCase="'TeamSelectionAdd'">
+ <label>Team Numbers</label>
+ <input
+ *ngFor="let x of [1,2,3]; let i = index;"
+ [(ngModel)]="added_teams[i]"
+ type="text"
+ id="team_input_{{i}}"
+ />
+ <button
+ class="btn btn-primary"
+ (click)="addTeamNumbers()"
+ id="select_button"
+ >
+ Add
+ </button>
+ </div>
+
<div *ngSwitchCase="'Data'">
<h4 id="match_number_heading">Match #{{match_number}}</h4>
<div *ngFor="let team_key of team_ranking; let i = index">
@@ -65,6 +94,15 @@
Edit Teams
</button>
</div>
+ <div *ngIf="team_ranking.length != 6">
+ <button
+ id="add-team-button"
+ class="btn btn-primary"
+ (click)="addTeams()"
+ >
+ Add Teams
+ </button>
+ </div>
<div>
<button
class="btn btn-success"