blob: 233d63a87ed654ea346c95634c4741935e468b84 [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"
105 (click)="changeSectionTo('Pickup'); addAction({type: 'startMatchAction', position: selectedValue});"
106 >
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">
114 Last Action: {{actionList[actionList.length - 1].type}}
115 </h6>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700116 <!--
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700117 Decrease distance between buttons during auto to make space for auto balancing
118 selection and keep all buttons visible without scrolling on most devices.
119 -->
120 <div
121 [ngClass]="{'d-grid': true, 'gap-3': autoPhase === true, 'gap-5': autoPhase === false}"
122 >
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800123 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
124 <button
125 class="btn btn-danger"
Emily Markova040123c2024-02-27 09:48:37 -0800126 (click)="changeSectionTo('Dead'); addAction({type: 'robotDeathAction', robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800127 >
128 DEAD
129 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800130 <button
131 class="btn btn-warning"
Emily Markovadcadcb62024-02-03 13:07:17 -0800132 (click)="changeSectionTo('Place'); addAction({type: 'pickupNoteAction'});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800133 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800134 NOTE
Filip Kujawa375aaac2023-02-28 21:43:47 -0800135 </button>
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700136 <button
Filip Kujawab73e94c2023-04-19 09:33:14 -0700137 *ngIf="autoPhase && !mobilityCompleted"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700138 class="btn btn-light"
139 (click)="addAction({type: 'mobilityAction', mobility: true});"
140 >
141 Mobility
142 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800143 <div style="display: flex">
144 <h5>Penalties :</h5>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700145 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800146 class="btn-light"
147 style="width: 40px; margin-right: 15px"
148 (click)="removePenalty()"
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700149 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800150 -
151 </button>
152 <p>{{this.penalties}}</p>
153 <button
154 class="btn-light"
155 style="width: 40px; margin-left: 15px"
156 (click)="addPenalty()"
157 >
158 +
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700159 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800160 </div>
161 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800162 *ngIf="autoPhase"
163 class="btn btn-dark"
164 (click)="autoPhase = false; addAction({type: 'endAutoPhase'});"
165 >
166 Start Teleop
167 </button>
168 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800169 *ngIf="!autoPhase"
170 class="btn btn-info"
Emily Markovadcadcb62024-02-03 13:07:17 -0800171 (click)="changeSectionTo('Endgame'); addAction({type: 'endTeleopPhase'});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800172 >
173 Endgame
174 </button>
175 </div>
176 </div>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800177 <div *ngSwitchCase="'Place'" id="Place" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800178 <h6 class="text-muted">
179 Last Action: {{actionList[actionList.length - 1].type}}
180 </h6>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700181 <!--
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700182 Decrease distance between buttons during auto to make space for auto balancing
183 selection and keep all buttons visible without scrolling on most devices.
184 -->
185 <div
Emily Markova040123c2024-02-27 09:48:37 -0800186 [ngClass]="{'d-grid': true, 'gap-4': autoPhase === true, 'gap-3': autoPhase === false}"
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700187 >
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800188 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
189 <button
190 class="btn btn-danger"
Emily Markova040123c2024-02-27 09:48:37 -0800191 (click)="changeSectionTo('Dead'); addAction({type: 'robotDeathAction', robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800192 >
193 DEAD
194 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800195 <button
196 class="btn btn-info"
197 (click)="changeSectionTo('Pickup'); addAction({type: 'placeNoteAction', scoreType: ScoreType.kDROPPED});"
198 >
199 Dropped
200 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800201 <div *ngIf="!autoPhase" class="d-grid gap-1" style="padding: 0">
202 <div
203 style="
204 display: flex-wrap;
205 padding: 0;
206 justify-content: center;
207 text-align: center;
208 align-content: center;
209 margin: 0;
210 "
211 >
212 <button
213 class="btn btn-success"
214 (click)="changeSectionTo('Pickup'); addAction({type: 'placeNoteAction', scoreType: ScoreType.kAMP});"
215 style="width: 48%; height: 12vh; margin: 0px 10px 10px 0px"
216 >
217 AMP
218 </button>
219
220 <button
221 class="btn btn-warning"
222 (click)="changeSectionTo('Pickup'); addAction({type: 'placeNoteAction', scoreType: ScoreType.kAMP_AMPLIFIED});"
223 style="width: 48%; height: 12vh; margin: 0px 0px 10px 0px"
224 >
225 AMP AMPLIFIED
226 </button>
227 <button
228 class="btn btn-success"
229 (click)="changeSectionTo('Pickup'); addAction({type: 'placeNoteAction', scoreType: ScoreType.kSPEAKER});"
230 style="width: 48%; height: 12vh; margin: 0px 10px 0px 0px"
231 >
232 SPEAKER
233 </button>
234 <button
235 class="btn btn-warning"
236 (click)="changeSectionTo('Pickup'); addAction({type: 'placeNoteAction', scoreType: ScoreType.kSPEAKER_AMPLIFIED});"
237 style="width: 48%; height: 12vh; margin: 0px 0px 0px 0px"
238 >
239 SPEAKER AMPLIFIED
240 </button>
241 </div>
242 </div>
243
Filip Kujawa375aaac2023-02-28 21:43:47 -0800244 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800245 *ngIf="autoPhase"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800246 class="btn btn-success"
Emily Markovadcadcb62024-02-03 13:07:17 -0800247 (click)="changeSectionTo('Pickup'); addAction({type: 'placeNoteAction', scoreType: ScoreType.kAMP});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800248 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800249 AMP
Filip Kujawa375aaac2023-02-28 21:43:47 -0800250 </button>
251 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800252 *ngIf="autoPhase"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800253 class="btn btn-warning"
Emily Markovadcadcb62024-02-03 13:07:17 -0800254 (click)="changeSectionTo('Pickup'); addAction({type: 'placeNoteAction', scoreType: ScoreType.kSPEAKER});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800255 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800256 SPEAKER
Filip Kujawa375aaac2023-02-28 21:43:47 -0800257 </button>
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700258 <button
Filip Kujawab73e94c2023-04-19 09:33:14 -0700259 *ngIf="autoPhase && !mobilityCompleted"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700260 class="btn btn-light"
261 (click)="addAction({type: 'mobilityAction', mobility: true});"
262 >
263 Mobility
264 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800265 <div style="display: flex">
266 <h5>Penalties :</h5>
Filip Kujawa7a045e72023-04-13 08:41:09 -0700267 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800268 class="btn-light"
269 style="width: 40px; margin-right: 15px"
270 (click)="removePenalty()"
Filip Kujawa7a045e72023-04-13 08:41:09 -0700271 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800272 -
Filip Kujawa7a045e72023-04-13 08:41:09 -0700273 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800274 <p>{{this.penalties}}</p>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700275 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800276 class="btn-light"
277 style="width: 40px; margin-left: 15px"
278 (click)="addPenalty()"
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700279 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800280 +
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700281 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800282 </div>
283 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800284 class="btn btn-dark"
285 *ngIf="autoPhase"
286 (click)="autoPhase = false; addAction({type: 'endAutoPhase'});"
287 >
288 Start Teleop
289 </button>
290 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800291 *ngIf="!autoPhase"
292 class="btn btn-info"
Emily Markovadcadcb62024-02-03 13:07:17 -0800293 (click)="changeSectionTo('Endgame'); addAction({type: 'endTeleopPhase'});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800294 >
295 Endgame
296 </button>
297 </div>
298 </div>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800299 <div *ngSwitchCase="'Endgame'" id="Endgame" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800300 <h6 class="text-muted">
301 Last Action: {{actionList[actionList.length - 1].type}}
302 </h6>
Emily Markova6079e2f2024-02-17 13:17:24 -0800303 <div class="d-grid gap-2">
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800304 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
305 <button
306 class="btn btn-danger"
Emily Markova040123c2024-02-27 09:48:37 -0800307 (click)="changeSectionTo('Dead'); addAction({type: 'robotDeathAction', robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800308 >
309 DEAD
310 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800311 <div class="button_row">
312 <label>
313 <input
Emily Markova040123c2024-02-27 09:48:37 -0800314 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800315 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700316 [value]="StageType.kPARK"
317 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800318 />
319 Park
320 </label>
321 <label>
322 <input
Emily Markova040123c2024-02-27 09:48:37 -0800323 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800324 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700325 [value]="StageType.kON_STAGE"
326 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800327 />
328 On Stage
329 </label>
330 </div>
331 <div class="button_row">
332 <label>
333 <input
Emily Markova040123c2024-02-27 09:48:37 -0800334 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800335 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700336 [value]="StageType.kHARMONY"
337 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800338 />
339 Harmony
340 </label>
341 <label>
342 <input
Emily Markova040123c2024-02-27 09:48:37 -0800343 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800344 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700345 [value]="StageType.kMISSING"
346 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800347 />
348 N/A
349 </label>
350 </div>
Emily Markova6079e2f2024-02-17 13:17:24 -0800351 <label>
Philipp Schraderba315da2024-03-17 16:16:50 -0700352 <input type="checkbox" name="trapnote" [(ngModel)]="noteIsTrapped" />
Emily Markovadcadcb62024-02-03 13:07:17 -0800353 Trap Note
354 </label>
Emily Markova6079e2f2024-02-17 13:17:24 -0800355 <label>
356 <input
Emily Markova6079e2f2024-02-17 13:17:24 -0800357 type="checkbox"
Emily Markova6079e2f2024-02-17 13:17:24 -0800358 name="spotlight"
Philipp Schraderba315da2024-03-17 16:16:50 -0700359 [(ngModel)]="endGameSpotlight"
Emily Markova6079e2f2024-02-17 13:17:24 -0800360 />
361 Spotlight
362 </label>
Emily Markova040123c2024-02-27 09:48:37 -0800363
Emily Markovadcadcb62024-02-03 13:07:17 -0800364 <div style="display: flex">
365 <h5>Penalties :</h5>
366 <button
367 class="btn-light"
368 style="width: 40px; margin-right: 15px"
369 (click)="removePenalty()"
370 >
371 -
372 </button>
373 <p>{{this.penalties}}</p>
374 <button
375 class="btn-light"
376 style="width: 40px; margin-left: 15px"
377 (click)="addPenalty()"
378 >
379 +
380 </button>
381 </div>
Filip Kujawa4413a592023-03-01 10:54:34 -0800382 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800383 *ngIf="!autoPhase"
Filip Kujawa4413a592023-03-01 10:54:34 -0800384 class="btn btn-info"
Philipp Schraderba315da2024-03-17 16:16:50 -0700385 (click)="changeSectionTo('Review and Submit'); addPenalties(); addAction({type: 'endMatchAction', stageType: endGameAction, trapNote: noteIsTrapped, spotlight: endGameSpotlight});"
Filip Kujawa4413a592023-03-01 10:54:34 -0800386 >
Filip Kujawa375aaac2023-02-28 21:43:47 -0800387 End Match
Filip Kujawa4413a592023-03-01 10:54:34 -0800388 </button>
389 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800390 </div>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800391 <div *ngSwitchCase="'Dead'" id="Dead" class="container-fluid">
392 <h2>Robot is dead</h2>
Emily Markova040123c2024-02-27 09:48:37 -0800393 <div class="d-grid gap-3">
394 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
395 <div style="display: flex">
396 <h5>Penalties :</h5>
397 <button
398 class="btn-light"
399 style="width: 40px; margin-right: 15px"
400 (click)="removePenalty()"
401 >
402 -
403 </button>
404 <p>{{this.penalties}}</p>
405 <button
406 class="btn-light"
407 style="width: 40px; margin-left: 15px"
408 (click)="addPenalty()"
409 >
410 +
411 </button>
412 </div>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800413 <button
414 class="btn btn-success"
Emily Markova040123c2024-02-27 09:48:37 -0800415 (click)="changeSectionTo('Pickup'); addAction({type: 'robotDeathAction', robotDead: false}); "
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800416 >
417 Revive
418 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800419 <button
Emily Markova040123c2024-02-27 09:48:37 -0800420 class="btn btn-info"
Philipp Schraderba315da2024-03-17 16:16:50 -0700421 (click)="changeSectionTo('Review and Submit'); addPenalties(); addAction({type: 'endMatchAction', stageType: endGameAction, trapNote: noteIsTrapped, spotlight: endGameSpotlight});"
Emily Markova040123c2024-02-27 09:48:37 -0800422 >
423 End Match
424 </button>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800425 </div>
426 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800427 <div *ngSwitchCase="'Review and Submit'" id="Review" class="container-fluid">
Emily Markovaf4b06a22023-05-10 17:44:09 -0700428 <div class="row">
429 <ul id="review_data">
Philipp Schraderba315da2024-03-17 16:16:50 -0700430 <li *ngFor="let action of actionList" style="display: flex">
Emily Markovaf4b06a22023-05-10 17:44:09 -0700431 <div [ngSwitch]="action.type" style="padding: 0px">
432 <span *ngSwitchCase="'startMatchAction'">
Philipp Schraderba315da2024-03-17 16:16:50 -0700433 Started match at position {{$any(action).position}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700434 </span>
Emily Markovadcadcb62024-02-03 13:07:17 -0800435 <span *ngSwitchCase="'pickupNoteAction'">Picked up Note</span>
436 <span *ngSwitchCase="'placeNoteAction'">
Philipp Schraderba315da2024-03-17 16:16:50 -0700437 Placed at {{stringifyScoreType($any(action).scoreType)}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700438 </span>
439 <span *ngSwitchCase="'endAutoPhase'">Ended auto phase</span>
440 <span *ngSwitchCase="'endMatchAction'">
Philipp Schraderba315da2024-03-17 16:16:50 -0700441 Ended Match; stageType:
442 {{stringifyStageType($any(action).stageType)}}, trapNote:
443 {{$any(action).trapNote}}, spotlight: {{$any(action).spotlight}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700444 </span>
445 <span *ngSwitchCase="'robotDeathAction'">
Philipp Schraderba315da2024-03-17 16:16:50 -0700446 Robot dead: {{$any(action).robotDead}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700447 </span>
448 <span *ngSwitchCase="'mobilityAction'">
Philipp Schraderba315da2024-03-17 16:16:50 -0700449 Mobility: {{$any(action).mobility}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700450 </span>
451 <span *ngSwitchDefault>{{action.type}}</span>
Emily Markovadcadcb62024-02-03 13:07:17 -0800452 <span *ngSwitchCase="'penaltyAction'">
Philipp Schraderba315da2024-03-17 16:16:50 -0700453 Penalties: {{$any(action).penalties}}
Emily Markovadcadcb62024-02-03 13:07:17 -0800454 </span>
Emily Markovaf4b06a22023-05-10 17:44:09 -0700455 </div>
456 </li>
457 </ul>
458 </div>
Filip Kujawa36f56082023-03-03 10:58:53 -0800459 <div class="d-grid gap-5">
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800460 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
Philipp Schradere2e27ff2024-02-25 22:08:55 -0800461 <button class="btn btn-info" (click)="changeSectionTo('QR Code');">
462 Create QR Code
463 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800464 <button class="btn btn-warning" (click)="submit2024Actions();">
465 Submit
466 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800467 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800468 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800469 <div *ngSwitchCase="'Success'" id="Success" class="container-fluid">
470 <h2>Successfully submitted data.</h2>
Evelyn Yangc8036b12023-10-11 21:14:46 -0700471 <div class="d-grid gap-5" *ngIf="nextTeamNumber != ''">
472 <button class="btn btn-primary" (click)="goToNextTeam();">
473 SCOUT NEXT TEAM
474 </button>
475 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700476 </div>
Philipp Schradere2e27ff2024-02-25 22:08:55 -0800477 <div *ngSwitchCase="'QR Code'" id="QR Code" class="container-fluid">
478 <span>Density:</span>
479 <select
480 [(ngModel)]="qrCodeValuePieceSize"
481 (ngModelChange)="updateQrCodeValuePieceSize()"
482 type="number"
483 id="qr_code_piece_size"
484 >
485 <option
486 *ngFor="let pieceSize of QR_CODE_PIECE_SIZES"
487 [ngValue]="pieceSize"
488 >
489 {{pieceSize}}
490 </option>
491 </select>
492 <div class="qr-container">
493 <qrcode
494 [qrdata]="qrCodeValuePieces[qrCodeValueIndex]"
495 [width]="1000"
496 [errorCorrectionLevel]="'M'"
497 [margin]="6"
498 class="qrcode"
499 ></qrcode>
500 </div>
501 <nav class="qrcode-nav">
502 <ul
503 class="qrcode-buttons pagination pagination-lg justify-content-center"
504 >
505 <li class="page-item">
506 <a
507 class="page-link"
508 href="#"
509 aria-label="Previous"
510 (click)="setQrCodeValueIndex(qrCodeValueIndex - 1)"
511 >
512 <span aria-hidden="true">&laquo;</span>
513 <span class="visually-hidden">Previous</span>
514 </a>
515 </li>
516 <li *ngFor="let _ of qrCodeValuePieces; index as i" class="page-item">
517 <a
518 class="page-link"
519 href="#"
520 (click)="setQrCodeValueIndex(i)"
521 [class.active]="qrCodeValueIndex == i"
522 >
523 {{i + 1}}
524 </a>
525 </li>
526 <li class="page-item">
527 <a
528 class="page-link"
529 href="#"
530 aria-label="Next"
531 (click)="setQrCodeValueIndex(qrCodeValueIndex + 1)"
532 >
533 <span aria-hidden="true">&raquo;</span>
534 <span class="visually-hidden">Next</span>
535 </a>
536 </li>
537 </ul>
538 </nav>
539 <button
540 class="btn btn-secondary"
541 (click)="changeSectionTo('Review and Submit')"
542 >
543 BACK
544 </button>
545 </div>
Philipp Schrader8686bbb2023-03-22 20:15:21 -0700546
Philipp Schrader8702b782023-04-15 17:33:37 -0700547 <span class="progress_message" role="alert">{{ progressMessage }}</span>
Philipp Schrader8686bbb2023-03-22 20:15:21 -0700548 <span class="error_message" role="alert">{{ errorMessage }}</span>
Philipp Schrader80587432022-03-05 15:41:22 -0800549</ng-container>