Make team number a string

Signed-off-by: Emily Markova <emily.markova@gmail.com>
Change-Id: Ia1cff2cfb854e2202cbcaee6f1fd22fc7efd1c15
diff --git a/scouting/www/app/app.ts b/scouting/www/app/app.ts
index 16e3197..011c94f 100644
--- a/scouting/www/app/app.ts
+++ b/scouting/www/app/app.ts
@@ -13,7 +13,7 @@
 const unguardedTabs: Tab[] = ['MatchList'];
 
 type TeamInMatch = {
-  teamNumber: number;
+  teamNumber: string;
   matchNumber: number;
   setNumber: number;
   compLevel: string;
@@ -26,7 +26,7 @@
 })
 export class App {
   selectedTeamInMatch: TeamInMatch = {
-    teamNumber: 1,
+    teamNumber: '1',
     matchNumber: 1,
     setNumber: 1,
     compLevel: 'qm',
diff --git a/scouting/www/driver_ranking/driver_ranking.component.ts b/scouting/www/driver_ranking/driver_ranking.component.ts
index f61d901..09f62c2 100644
--- a/scouting/www/driver_ranking/driver_ranking.component.ts
+++ b/scouting/www/driver_ranking/driver_ranking.component.ts
@@ -18,7 +18,7 @@
   section: Section = 'TeamSelection';
 
   // Stores the team keys and rank (order of the array).
-  team_ranking: number[] = [971, 972, 973];
+  team_ranking: string[] = ['971', '972', '973'];
 
   match_number: number = 1;
 
@@ -58,13 +58,16 @@
 
   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,
-        this.team_ranking[0],
-        this.team_ranking[1],
-        this.team_ranking[2]
+        teamRanking1,
+        teamRanking2,
+        teamRanking3
       )
     );
     const buffer = builder.asUint8Array();
@@ -88,6 +91,6 @@
 
     // Reset Data.
     this.section = 'TeamSelection';
-    this.team_ranking = [971, 972, 973];
+    this.team_ranking = ['971', '972', '973'];
   }
 }
diff --git a/scouting/www/driver_ranking/driver_ranking.ng.html b/scouting/www/driver_ranking/driver_ranking.ng.html
index 1fa1bc8..d361c9d 100644
--- a/scouting/www/driver_ranking/driver_ranking.ng.html
+++ b/scouting/www/driver_ranking/driver_ranking.ng.html
@@ -18,9 +18,7 @@
     <input
       *ngFor="let x of [1,2,3]; let i = index;"
       [(ngModel)]="team_ranking[i]"
-      type="number"
-      min="1"
-      max="9999"
+      type="text"
       id="team_input_{{i}}"
     />
     <button
diff --git a/scouting/www/entry/entry.component.ts b/scouting/www/entry/entry.component.ts
index 4b60ac1..5a93251 100644
--- a/scouting/www/entry/entry.component.ts
+++ b/scouting/www/entry/entry.component.ts
@@ -115,8 +115,7 @@
 
   section: Section = 'Team Selection';
   @Input() matchNumber: number = 1;
-  // TODO(phil): Change the type of teamNumber to a string.
-  @Input() teamNumber: number = 1;
+  @Input() teamNumber: string = '1';
   @Input() setNumber: number = 1;
   @Input() compLevel: CompLevel = 'qm';
   @Input() skipTeamSelection = false;
@@ -173,7 +172,7 @@
     if (this.teamNumber == null) {
       return false;
     }
-    const teamNumber = this.teamNumber.toString();
+    const teamNumber = this.teamNumber;
 
     for (const match of this.matchList) {
       if (
@@ -392,7 +391,7 @@
         actionOffsets.push(actionOffset);
       }
     }
-    const teamNumberFb = builder.createString(this.teamNumber.toString());
+    const teamNumberFb = builder.createString(this.teamNumber);
     const compLevelFb = builder.createString(this.compLevel);
 
     const actionsVector = SubmitActions.createActionsListVector(
diff --git a/scouting/www/entry/entry.ng.html b/scouting/www/entry/entry.ng.html
index ada96ff..43575cd 100644
--- a/scouting/www/entry/entry.ng.html
+++ b/scouting/www/entry/entry.ng.html
@@ -26,10 +26,8 @@
       <input
         [(ngModel)]="teamNumber"
         (ngModelChange)="updateTeamSelectionValidity()"
-        type="number"
+        type="text"
         id="team_number"
-        min="1"
-        max="9999"
       />
     </div>
     <div class="row">
diff --git a/scouting/www/notes/notes.component.ts b/scouting/www/notes/notes.component.ts
index 2786717..3848c22 100644
--- a/scouting/www/notes/notes.component.ts
+++ b/scouting/www/notes/notes.component.ts
@@ -48,7 +48,7 @@
 }
 
 interface Input {
-  teamNumber: number;
+  teamNumber: string;
   notesData: string;
   keywordsData: Keywords;
 }
@@ -79,7 +79,7 @@
   section: Section = 'TeamSelection';
 
   errorMessage = '';
-  teamNumberSelection: number = 971;
+  teamNumberSelection: string = '971';
 
   // Data inputted by user is stored in this array.
   // Includes the team number, notes, and keyword selection.
@@ -145,10 +145,12 @@
       const builder = new Builder();
       const dataFb = builder.createString(this.newData[i].notesData);
 
+      const teamNumber = builder.createString(this.newData[i].teamNumber);
+
       builder.finish(
         SubmitNotes.createSubmitNotes(
           builder,
-          this.newData[i].teamNumber,
+          teamNumber,
           dataFb,
           this.newData[i].keywordsData.goodDriving,
           this.newData[i].keywordsData.badDriving,
diff --git a/scouting/www/notes/notes.ng.html b/scouting/www/notes/notes.ng.html
index cb5e8ef..d7262b3 100644
--- a/scouting/www/notes/notes.ng.html
+++ b/scouting/www/notes/notes.ng.html
@@ -9,10 +9,8 @@
     </label>
     <input
       [(ngModel)]="teamNumberSelection"
-      type="number"
+      type="text"
       id="team_number_notes"
-      min="1"
-      max="9999"
     />
     <button class="btn btn-primary" (click)="setTeamNumber()">Select</button>
   </div>
diff --git a/scouting/www/pit_scouting/pit_scouting.component.ts b/scouting/www/pit_scouting/pit_scouting.component.ts
index b74c119..fe14090 100644
--- a/scouting/www/pit_scouting/pit_scouting.component.ts
+++ b/scouting/www/pit_scouting/pit_scouting.component.ts
@@ -6,7 +6,7 @@
 type Section = 'TeamSelection' | 'Data';
 
 interface Input {
-  teamNumber: number;
+  teamNumber: string;
   pitImage: HTMLImageElement;
 }
 
@@ -19,7 +19,7 @@
   section: Section = 'Data';
 
   errorMessage = '';
-  teamNumber: number = 971;
+  teamNumber: string = '971';
   pitImage: string = '';
 
   async readFile(file): Promise<ArrayBuffer> {
@@ -41,7 +41,7 @@
 
   async submitData() {
     const builder = new Builder();
-    const teamNumber = builder.createString(this.teamNumber.toString());
+    const teamNumber = builder.createString(this.teamNumber);
     const pitImage = builder.createString(this.pitImage.toString());
     const imageData = SubmitPitImage.createImageDataVector(
       builder,
diff --git a/scouting/www/pit_scouting/pit_scouting.ng.html b/scouting/www/pit_scouting/pit_scouting.ng.html
index 98aa313..9e90d2d 100644
--- a/scouting/www/pit_scouting/pit_scouting.ng.html
+++ b/scouting/www/pit_scouting/pit_scouting.ng.html
@@ -4,13 +4,7 @@
 <ng-container [ngSwitch]="section">
   <div *ngSwitchCase="'Data'" id="pitImageSelection" class="container-fluid">
     <label for="teamNumber">Team Number</label>
-    <input
-      [(ngModel)]="teamNumber"
-      type="string"
-      id="teamNumber"
-      min="1"
-      max="9999"
-    />
+    <input [(ngModel)]="teamNumber" type="text" id="teamNumber" />
     <form action="setPitImage()">
       <label for="pitImage">Select pit image:</label>
       <br />
diff --git a/scouting/www/view/view.component.ts b/scouting/www/view/view.component.ts
index c75f83b..26e816b 100644
--- a/scouting/www/view/view.component.ts
+++ b/scouting/www/view/view.component.ts
@@ -69,11 +69,19 @@
     this.ascendingSort = !this.ascendingSort;
     if (!this.ascendingSort) {
       this.driverRankingList.sort((a, b) => b.matchNumber() - a.matchNumber());
-      this.noteList.sort((a, b) => b.team() - a.team());
+      this.noteList.sort(function (a, b) {
+        return b[0]
+          .team()
+          .localeCompare(a[0].team(), undefined, {numeric: true});
+      });
       this.statList.sort((a, b) => b.matchNumber() - a.matchNumber());
     } else {
       this.driverRankingList.sort((a, b) => a.matchNumber() - b.matchNumber());
-      this.noteList.sort((a, b) => a.team() - b.team());
+      this.noteList.sort(function (a, b) {
+        return a[0]
+          .team()
+          .localeCompare(b[0].team(), undefined, {numeric: true});
+      });
       this.statList.sort((a, b) => a.matchNumber() - b.matchNumber());
     }
   }