blob: a5d778ce862f25cb4c9fcf7f0b7879cf8a63c554 [file] [log] [blame]
Philipp Schrader6b2e9502022-03-15 23:42:56 -07001<div class="header" #header>
Philipp Schrader2b334272023-04-11 21:27:36 -07002 <h2>
3 <span *ngIf="section != 'Team Selection'">{{teamNumber}}</span>
4 {{section}}
5 </h2>
Philipp Schrader80587432022-03-05 15:41:22 -08006</div>
Philipp Schrader80587432022-03-05 15:41:22 -08007<ng-container [ngSwitch]="section">
Philipp Schrader817cce32022-03-26 15:00:00 -07008 <div
9 *ngSwitchCase="'Team Selection'"
10 id="team_selection"
11 class="container-fluid"
12 >
13 <div class="row">
14 <label for="match_number">Match Number</label>
15 <input
16 [(ngModel)]="matchNumber"
Philipp Schrader8702b782023-04-15 17:33:37 -070017 (ngModelChange)="updateTeamSelectionValidity()"
Philipp Schrader817cce32022-03-26 15:00:00 -070018 type="number"
19 id="match_number"
20 min="1"
21 max="999"
22 />
23 </div>
24 <div class="row">
25 <label for="team_number">Team Number</label>
26 <input
27 [(ngModel)]="teamNumber"
Philipp Schrader8702b782023-04-15 17:33:37 -070028 (ngModelChange)="updateTeamSelectionValidity()"
Emily Markovae68b7632023-12-30 14:17:55 -080029 type="text"
Philipp Schrader817cce32022-03-26 15:00:00 -070030 id="team_number"
Philipp Schrader817cce32022-03-26 15:00:00 -070031 />
32 </div>
Philipp Schrader8aeb14f2022-04-08 21:23:18 -070033 <div class="row">
Philipp Schrader30b4a682022-04-16 14:36:17 -070034 <label for="set_number">Set Number</label>
35 <input
36 [(ngModel)]="setNumber"
Philipp Schrader8702b782023-04-15 17:33:37 -070037 (ngModelChange)="updateTeamSelectionValidity()"
Philipp Schrader30b4a682022-04-16 14:36:17 -070038 type="number"
39 id="set_number"
40 min="1"
41 max="10"
42 />
Philipp Schrader8aeb14f2022-04-08 21:23:18 -070043 </div>
44 <div class="row">
Philipp Schrader30b4a682022-04-16 14:36:17 -070045 <label for="comp_level">Comp Level</label>
Philipp Schrader8702b782023-04-15 17:33:37 -070046 <select
47 [(ngModel)]="compLevel"
48 (ngModelChange)="updateTeamSelectionValidity()"
49 type="number"
50 id="comp_level"
51 >
Philipp Schrader8aeb14f2022-04-08 21:23:18 -070052 <option *ngFor="let level of COMP_LEVELS" [ngValue]="level">
53 {{COMP_LEVEL_LABELS[level]}}
54 </option>
55 </select>
56 </div>
Philipp Schradere1498852023-04-15 18:06:45 -070057 <div class="row">
58 <label>
59 <input
60 id="pre_scouting"
61 type="checkbox"
62 [(ngModel)]="preScouting"
63 (ngModelChange)="updateTeamSelectionValidity()"
64 />
65 Pre-scouting
66 </label>
67 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -070068 <div class="buttons">
69 <!-- hack to right align the next button -->
70 <div></div>
Philipp Schrader8702b782023-04-15 17:33:37 -070071 <button
72 class="btn btn-primary"
73 (click)="changeSectionTo('Init');"
74 [disabled]="!teamSelectionIsValid"
75 >
Filip Kujawa0ef334c2023-02-20 19:42:45 -080076 Next
77 </button>
Philipp Schrader817cce32022-03-26 15:00:00 -070078 </div>
79 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -080080 <div *ngSwitchCase="'Init'" id="init" class="container-fluid">
81 <h2>Select Starting Position</h2>
Filip Kujawa1d9add92023-03-03 13:14:40 -080082 <img
83 id="field_starting_positions_image"
Emily Markovadcadcb62024-02-03 13:07:17 -080084 src="/sha256/bb83d2c976c1496bb470371821d1d1882d6baf31178009a6f6cba579880c6a03/pictures/field/2024_field.png"
Filip Kujawa1d9add92023-03-03 13:14:40 -080085 alt="Starting Positions Image"
86 class="img-fluid"
87 />
Filip Kujawa0ef334c2023-02-20 19:42:45 -080088 <div *ngFor="let i of [1, 2, 3, 4]">
89 <label>
Philipp Schrader817cce32022-03-26 15:00:00 -070090 <input
91 type="radio"
Filip Kujawa0ef334c2023-02-20 19:42:45 -080092 name="radio-group"
93 [value]="i"
Philipp Schraderba315da2024-03-17 16:16:50 -070094 [(ngModel)]="selectedValue"
Philipp Schrader817cce32022-03-26 15:00:00 -070095 />
Filip Kujawa0ef334c2023-02-20 19:42:45 -080096 {{ i }}
Philipp Schrader817cce32022-03-26 15:00:00 -070097 </label>
Filip Kujawa0ef334c2023-02-20 19:42:45 -080098 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -070099 <div class="buttons">
Filip Kujawa375aaac2023-02-28 21:43:47 -0800100 <!-- Creates a responsive stack of full-width, "block buttons". -->
Filip Kujawa36f56082023-03-03 10:58:53 -0800101 <div class="d-grid gap-5">
Filip Kujawa375aaac2023-02-28 21:43:47 -0800102 <button
103 class="btn btn-primary"
104 [disabled]="!selectedValue"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700105 (click)="changeSectionTo('Pickup'); actionHelper.addStartMatchAction({position: selectedValue});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800106 >
107 Start Match
108 </button>
109 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700110 </div>
111 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800112 <div *ngSwitchCase="'Pickup'" id="PickUp" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800113 <h6 class="text-muted">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700114 Last Action: {{ActionType[actionList[actionList.length -
115 1].actionTakenType]}}
Filip Kujawa493b59f2023-03-11 17:58:59 -0800116 </h6>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700117 <!--
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700118 Decrease distance between buttons during auto to make space for auto balancing
119 selection and keep all buttons visible without scrolling on most devices.
120 -->
121 <div
122 [ngClass]="{'d-grid': true, 'gap-3': autoPhase === true, 'gap-5': autoPhase === false}"
123 >
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800124 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
125 <button
126 class="btn btn-danger"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700127 (click)="changeSectionTo('Dead'); actionHelper.addRobotDeathAction({robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800128 >
129 DEAD
130 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800131 <button
132 class="btn btn-warning"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700133 (click)="changeSectionTo('Place'); actionHelper.addPickupNoteAction({auto: autoPhase});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800134 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800135 NOTE
Filip Kujawa375aaac2023-02-28 21:43:47 -0800136 </button>
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700137 <button
Filip Kujawab73e94c2023-04-19 09:33:14 -0700138 *ngIf="autoPhase && !mobilityCompleted"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700139 class="btn btn-light"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700140 (click)="actionHelper.addMobilityAction({mobility: true});"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700141 >
142 Mobility
143 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800144 <div style="display: flex">
145 <h5>Penalties :</h5>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700146 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800147 class="btn-light"
148 style="width: 40px; margin-right: 15px"
149 (click)="removePenalty()"
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700150 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800151 -
152 </button>
153 <p>{{this.penalties}}</p>
154 <button
155 class="btn-light"
156 style="width: 40px; margin-left: 15px"
157 (click)="addPenalty()"
158 >
159 +
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700160 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800161 </div>
162 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800163 *ngIf="autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700164 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700165 (click)="autoPhase = false; actionHelper.addEndAutoPhaseAction({});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800166 >
167 Start Teleop
168 </button>
169 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800170 *ngIf="!autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700171 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700172 (click)="changeSectionTo('Endgame'); actionHelper.addEndTeleopPhaseAction({});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800173 >
174 Endgame
175 </button>
176 </div>
177 </div>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800178 <div *ngSwitchCase="'Place'" id="Place" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800179 <h6 class="text-muted">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700180 Last Action: {{ActionType[actionList[actionList.length -
181 1].actionTakenType]}}
Filip Kujawa493b59f2023-03-11 17:58:59 -0800182 </h6>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700183 <!--
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700184 Decrease distance between buttons during auto to make space for auto balancing
185 selection and keep all buttons visible without scrolling on most devices.
186 -->
187 <div
Emily Markova040123c2024-02-27 09:48:37 -0800188 [ngClass]="{'d-grid': true, 'gap-4': autoPhase === true, 'gap-3': autoPhase === false}"
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700189 >
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800190 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
191 <button
192 class="btn btn-danger"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700193 (click)="changeSectionTo('Dead'); actionHelper.addRobotDeathAction({robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800194 >
195 DEAD
196 </button>
Emily Markovacd156942024-04-07 19:32:28 -0700197 <div class="half-button-container">
198 <button
199 class="btn btn-info half-button"
200 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kDROPPED});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800201 >
Emily Markovacd156942024-04-07 19:32:28 -0700202 Dropped
203 </button>
204 <button
205 class="btn btn-info half-button"
206 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kOUT_OF_FIELD});"
207 >
208 Out Of Field
209 </button>
210 </div>
211 <div
212 *ngIf="!autoPhase"
213 class="d-grid gap-1"
214 style="padding: 0; margin: 0"
215 >
216 <div class="half-button-container">
Emily Markovadcadcb62024-02-03 13:07:17 -0800217 <button
Emily Markovacd156942024-04-07 19:32:28 -0700218 class="btn btn-success half-button"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700219 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kAMP});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800220 >
221 AMP
222 </button>
223
224 <button
Emily Markovacd156942024-04-07 19:32:28 -0700225 class="btn btn-warning half-button"
226 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSHUTTLED});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800227 >
Emily Markovacd156942024-04-07 19:32:28 -0700228 SHUTTLED
Emily Markovadcadcb62024-02-03 13:07:17 -0800229 </button>
230 <button
Emily Markovacd156942024-04-07 19:32:28 -0700231 class="btn btn-success half-button"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700232 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800233 >
234 SPEAKER
235 </button>
236 <button
Emily Markovacd156942024-04-07 19:32:28 -0700237 class="btn btn-warning half-button"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700238 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER_AMPLIFIED});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800239 >
240 SPEAKER AMPLIFIED
241 </button>
242 </div>
243 </div>
244
Filip Kujawa375aaac2023-02-28 21:43:47 -0800245 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800246 *ngIf="autoPhase"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800247 class="btn btn-success"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700248 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kAMP});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800249 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800250 AMP
Filip Kujawa375aaac2023-02-28 21:43:47 -0800251 </button>
252 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800253 *ngIf="autoPhase"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800254 class="btn btn-warning"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700255 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800256 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800257 SPEAKER
Filip Kujawa375aaac2023-02-28 21:43:47 -0800258 </button>
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700259 <button
Filip Kujawab73e94c2023-04-19 09:33:14 -0700260 *ngIf="autoPhase && !mobilityCompleted"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700261 class="btn btn-light"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700262 (click)="actionHelper.addMobilityAction({mobility: true});"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700263 >
264 Mobility
265 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800266 <div style="display: flex">
267 <h5>Penalties :</h5>
Filip Kujawa7a045e72023-04-13 08:41:09 -0700268 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800269 class="btn-light"
270 style="width: 40px; margin-right: 15px"
271 (click)="removePenalty()"
Filip Kujawa7a045e72023-04-13 08:41:09 -0700272 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800273 -
Filip Kujawa7a045e72023-04-13 08:41:09 -0700274 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800275 <p>{{this.penalties}}</p>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700276 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800277 class="btn-light"
278 style="width: 40px; margin-left: 15px"
279 (click)="addPenalty()"
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700280 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800281 +
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700282 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800283 </div>
284 <button
Emily Markovacd156942024-04-07 19:32:28 -0700285 class="btn btn-primary"
Emily Markovadcadcb62024-02-03 13:07:17 -0800286 *ngIf="autoPhase"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700287 (click)="autoPhase = false; actionHelper.addEndAutoPhaseAction({});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800288 >
289 Start Teleop
290 </button>
291 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800292 *ngIf="!autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700293 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700294 (click)="changeSectionTo('Endgame'); actionHelper.addEndTeleopPhaseAction({});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800295 >
296 Endgame
297 </button>
298 </div>
299 </div>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800300 <div *ngSwitchCase="'Endgame'" id="Endgame" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800301 <h6 class="text-muted">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700302 Last Action: {{ActionType[actionList[actionList.length -
303 1].actionTakenType]}}
Filip Kujawa493b59f2023-03-11 17:58:59 -0800304 </h6>
Emily Markova6079e2f2024-02-17 13:17:24 -0800305 <div class="d-grid gap-2">
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800306 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
307 <button
308 class="btn btn-danger"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700309 (click)="changeSectionTo('Dead'); actionHelper.addRobotDeathAction({robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800310 >
311 DEAD
312 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800313 <div class="button_row">
314 <label>
315 <input
Emily Markova040123c2024-02-27 09:48:37 -0800316 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800317 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700318 [value]="StageType.kPARK"
319 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800320 />
321 Park
322 </label>
323 <label>
324 <input
Emily Markova040123c2024-02-27 09:48:37 -0800325 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800326 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700327 [value]="StageType.kON_STAGE"
328 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800329 />
330 On Stage
331 </label>
332 </div>
333 <div class="button_row">
334 <label>
335 <input
Emily Markova040123c2024-02-27 09:48:37 -0800336 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800337 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700338 [value]="StageType.kHARMONY"
339 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800340 />
341 Harmony
342 </label>
343 <label>
344 <input
Emily Markova040123c2024-02-27 09:48:37 -0800345 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800346 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700347 [value]="StageType.kMISSING"
348 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800349 />
350 N/A
351 </label>
352 </div>
Emily Markova6079e2f2024-02-17 13:17:24 -0800353 <label>
Philipp Schraderba315da2024-03-17 16:16:50 -0700354 <input type="checkbox" name="trapnote" [(ngModel)]="noteIsTrapped" />
Emily Markovadcadcb62024-02-03 13:07:17 -0800355 Trap Note
356 </label>
Emily Markova6079e2f2024-02-17 13:17:24 -0800357 <label>
358 <input
Emily Markova6079e2f2024-02-17 13:17:24 -0800359 type="checkbox"
Emily Markova6079e2f2024-02-17 13:17:24 -0800360 name="spotlight"
Philipp Schraderba315da2024-03-17 16:16:50 -0700361 [(ngModel)]="endGameSpotlight"
Emily Markova6079e2f2024-02-17 13:17:24 -0800362 />
363 Spotlight
364 </label>
Emily Markova040123c2024-02-27 09:48:37 -0800365
Emily Markovadcadcb62024-02-03 13:07:17 -0800366 <div style="display: flex">
367 <h5>Penalties :</h5>
368 <button
369 class="btn-light"
370 style="width: 40px; margin-right: 15px"
371 (click)="removePenalty()"
372 >
373 -
374 </button>
375 <p>{{this.penalties}}</p>
376 <button
377 class="btn-light"
378 style="width: 40px; margin-left: 15px"
379 (click)="addPenalty()"
380 >
381 +
382 </button>
383 </div>
Filip Kujawa4413a592023-03-01 10:54:34 -0800384 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800385 *ngIf="!autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700386 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700387 (click)="changeSectionTo('Review and Submit'); addPenalties(); actionHelper.addEndMatchAction({stageType: endGameAction, trapNote: noteIsTrapped, spotlight: endGameSpotlight});"
Filip Kujawa4413a592023-03-01 10:54:34 -0800388 >
Filip Kujawa375aaac2023-02-28 21:43:47 -0800389 End Match
Filip Kujawa4413a592023-03-01 10:54:34 -0800390 </button>
391 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800392 </div>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800393 <div *ngSwitchCase="'Dead'" id="Dead" class="container-fluid">
394 <h2>Robot is dead</h2>
Emily Markova040123c2024-02-27 09:48:37 -0800395 <div class="d-grid gap-3">
396 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
397 <div style="display: flex">
398 <h5>Penalties :</h5>
399 <button
400 class="btn-light"
401 style="width: 40px; margin-right: 15px"
402 (click)="removePenalty()"
403 >
404 -
405 </button>
406 <p>{{this.penalties}}</p>
407 <button
408 class="btn-light"
409 style="width: 40px; margin-left: 15px"
410 (click)="addPenalty()"
411 >
412 +
413 </button>
414 </div>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800415 <button
416 class="btn btn-success"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700417 (click)="changeSectionTo('Pickup'); actionHelper.addRobotDeathAction({robotDead: false}); "
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800418 >
419 Revive
420 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800421 <button
Emily Markovacd156942024-04-07 19:32:28 -0700422 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700423 (click)="changeSectionTo('Review and Submit'); addPenalties(); actionHelper.addEndMatchAction({stageType: endGameAction, trapNote: noteIsTrapped, spotlight: endGameSpotlight});"
Emily Markova040123c2024-02-27 09:48:37 -0800424 >
425 End Match
426 </button>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800427 </div>
428 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800429 <div *ngSwitchCase="'Review and Submit'" id="Review" class="container-fluid">
Emily Markovaf4b06a22023-05-10 17:44:09 -0700430 <div class="row">
431 <ul id="review_data">
Philipp Schraderba315da2024-03-17 16:16:50 -0700432 <li *ngFor="let action of actionList" style="display: flex">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700433 <div [ngSwitch]="action.actionTakenType" style="padding: 0px">
434 <span *ngSwitchCase="ActionType.StartMatchAction">
435 Started match at position {{(action.actionTaken | cast:
436 StartMatchActionT).position}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700437 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700438 <span *ngSwitchCase="ActionType.PickupNoteAction">
439 Picked up Note
Emily Markovaf4b06a22023-05-10 17:44:09 -0700440 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700441 <span *ngSwitchCase="ActionType.PlaceNoteAction">
442 Placed at {{stringifyScoreType((action.actionTaken | cast:
443 PlaceNoteActionT).scoreType)}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700444 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700445 <span *ngSwitchCase="ActionType.EndAutoPhaseAction">
446 Ended auto phase
Emily Markovaf4b06a22023-05-10 17:44:09 -0700447 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700448 <span *ngSwitchCase="ActionType.EndMatchAction">
449 Ended Match; stageType: {{stringifyStageType((action.actionTaken |
450 cast: EndMatchActionT).stageType)}}, trapNote:
451 {{(action.actionTaken | cast: EndMatchActionT).trapNote}},
452 spotlight: {{(action.actionTaken | cast:
453 EndMatchActionT).spotlight}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700454 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700455 <span *ngSwitchCase="ActionType.RobotDeathAction">
456 Robot dead: {{(action.actionTaken | cast:
457 RobotDeathActionT).robotDead}}
458 </span>
459 <span *ngSwitchCase="ActionType.MobilityAction">
460 Mobility: {{(action.actionTaken | cast:
461 MobilityActionT).mobility}}
462 </span>
463 <span *ngSwitchDefault>{{action.actionTakenType}}</span>
464 <span *ngSwitchCase="ActionType.PenaltyAction">
465 Penalties: {{(action.actionTaken | cast:
466 PenaltyActionT).penalties}}
Emily Markovadcadcb62024-02-03 13:07:17 -0800467 </span>
Emily Markovaf4b06a22023-05-10 17:44:09 -0700468 </div>
469 </li>
470 </ul>
471 </div>
Filip Kujawa36f56082023-03-03 10:58:53 -0800472 <div class="d-grid gap-5">
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800473 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
Philipp Schradere2e27ff2024-02-25 22:08:55 -0800474 <button class="btn btn-info" (click)="changeSectionTo('QR Code');">
475 Create QR Code
476 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800477 <button class="btn btn-warning" (click)="submit2024Actions();">
478 Submit
479 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800480 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800481 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800482 <div *ngSwitchCase="'Success'" id="Success" class="container-fluid">
483 <h2>Successfully submitted data.</h2>
Evelyn Yangc8036b12023-10-11 21:14:46 -0700484 <div class="d-grid gap-5" *ngIf="nextTeamNumber != ''">
485 <button class="btn btn-primary" (click)="goToNextTeam();">
486 SCOUT NEXT TEAM
487 </button>
488 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700489 </div>
Philipp Schradere2e27ff2024-02-25 22:08:55 -0800490 <div *ngSwitchCase="'QR Code'" id="QR Code" class="container-fluid">
491 <span>Density:</span>
492 <select
493 [(ngModel)]="qrCodeValuePieceSize"
494 (ngModelChange)="updateQrCodeValuePieceSize()"
495 type="number"
496 id="qr_code_piece_size"
497 >
498 <option
499 *ngFor="let pieceSize of QR_CODE_PIECE_SIZES"
500 [ngValue]="pieceSize"
501 >
502 {{pieceSize}}
503 </option>
504 </select>
505 <div class="qr-container">
506 <qrcode
507 [qrdata]="qrCodeValuePieces[qrCodeValueIndex]"
508 [width]="1000"
509 [errorCorrectionLevel]="'M'"
510 [margin]="6"
511 class="qrcode"
512 ></qrcode>
513 </div>
514 <nav class="qrcode-nav">
515 <ul
516 class="qrcode-buttons pagination pagination-lg justify-content-center"
517 >
518 <li class="page-item">
519 <a
520 class="page-link"
521 href="#"
522 aria-label="Previous"
523 (click)="setQrCodeValueIndex(qrCodeValueIndex - 1)"
524 >
525 <span aria-hidden="true">&laquo;</span>
526 <span class="visually-hidden">Previous</span>
527 </a>
528 </li>
529 <li *ngFor="let _ of qrCodeValuePieces; index as i" class="page-item">
530 <a
531 class="page-link"
532 href="#"
533 (click)="setQrCodeValueIndex(i)"
534 [class.active]="qrCodeValueIndex == i"
535 >
536 {{i + 1}}
537 </a>
538 </li>
539 <li class="page-item">
540 <a
541 class="page-link"
542 href="#"
543 aria-label="Next"
544 (click)="setQrCodeValueIndex(qrCodeValueIndex + 1)"
545 >
546 <span aria-hidden="true">&raquo;</span>
547 <span class="visually-hidden">Next</span>
548 </a>
549 </li>
550 </ul>
551 </nav>
552 <button
553 class="btn btn-secondary"
554 (click)="changeSectionTo('Review and Submit')"
555 >
556 BACK
557 </button>
558 </div>
Philipp Schrader8686bbb2023-03-22 20:15:21 -0700559
Philipp Schrader8702b782023-04-15 17:33:37 -0700560 <span class="progress_message" role="alert">{{ progressMessage }}</span>
Philipp Schrader8686bbb2023-03-22 20:15:21 -0700561 <span class="error_message" role="alert">{{ errorMessage }}</span>
Philipp Schrader80587432022-03-05 15:41:22 -0800562</ng-container>