blob: d95bcec695af8e268e8ddb8f3aad2c4d4ec63b57 [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"
164 class="btn btn-dark"
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"
171 class="btn btn-info"
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 Markova040123c2024-02-27 09:48:37 -0800197 <button
198 class="btn btn-info"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700199 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kDROPPED});"
Emily Markova040123c2024-02-27 09:48:37 -0800200 >
201 Dropped
202 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800203 <div *ngIf="!autoPhase" class="d-grid gap-1" style="padding: 0">
204 <div
205 style="
206 display: flex-wrap;
207 padding: 0;
208 justify-content: center;
209 text-align: center;
210 align-content: center;
211 margin: 0;
212 "
213 >
214 <button
215 class="btn btn-success"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700216 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kAMP});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800217 style="width: 48%; height: 12vh; margin: 0px 10px 10px 0px"
218 >
219 AMP
220 </button>
221
222 <button
223 class="btn btn-warning"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700224 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kAMP_AMPLIFIED});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800225 style="width: 48%; height: 12vh; margin: 0px 0px 10px 0px"
226 >
227 AMP AMPLIFIED
228 </button>
229 <button
230 class="btn btn-success"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700231 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800232 style="width: 48%; height: 12vh; margin: 0px 10px 0px 0px"
233 >
234 SPEAKER
235 </button>
236 <button
237 class="btn btn-warning"
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 style="width: 48%; height: 12vh; margin: 0px 0px 0px 0px"
240 >
241 SPEAKER AMPLIFIED
242 </button>
243 </div>
244 </div>
245
Filip Kujawa375aaac2023-02-28 21:43:47 -0800246 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800247 *ngIf="autoPhase"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800248 class="btn btn-success"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700249 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kAMP});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800250 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800251 AMP
Filip Kujawa375aaac2023-02-28 21:43:47 -0800252 </button>
253 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800254 *ngIf="autoPhase"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800255 class="btn btn-warning"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700256 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800257 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800258 SPEAKER
Filip Kujawa375aaac2023-02-28 21:43:47 -0800259 </button>
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700260 <button
Filip Kujawab73e94c2023-04-19 09:33:14 -0700261 *ngIf="autoPhase && !mobilityCompleted"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700262 class="btn btn-light"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700263 (click)="actionHelper.addMobilityAction({mobility: true});"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700264 >
265 Mobility
266 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800267 <div style="display: flex">
268 <h5>Penalties :</h5>
Filip Kujawa7a045e72023-04-13 08:41:09 -0700269 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800270 class="btn-light"
271 style="width: 40px; margin-right: 15px"
272 (click)="removePenalty()"
Filip Kujawa7a045e72023-04-13 08:41:09 -0700273 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800274 -
Filip Kujawa7a045e72023-04-13 08:41:09 -0700275 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800276 <p>{{this.penalties}}</p>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700277 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800278 class="btn-light"
279 style="width: 40px; margin-left: 15px"
280 (click)="addPenalty()"
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700281 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800282 +
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700283 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800284 </div>
285 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800286 class="btn btn-dark"
287 *ngIf="autoPhase"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700288 (click)="autoPhase = false; actionHelper.addEndAutoPhaseAction({});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800289 >
290 Start Teleop
291 </button>
292 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800293 *ngIf="!autoPhase"
294 class="btn btn-info"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700295 (click)="changeSectionTo('Endgame'); actionHelper.addEndTeleopPhaseAction({});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800296 >
297 Endgame
298 </button>
299 </div>
300 </div>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800301 <div *ngSwitchCase="'Endgame'" id="Endgame" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800302 <h6 class="text-muted">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700303 Last Action: {{ActionType[actionList[actionList.length -
304 1].actionTakenType]}}
Filip Kujawa493b59f2023-03-11 17:58:59 -0800305 </h6>
Emily Markova6079e2f2024-02-17 13:17:24 -0800306 <div class="d-grid gap-2">
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800307 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
308 <button
309 class="btn btn-danger"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700310 (click)="changeSectionTo('Dead'); actionHelper.addRobotDeathAction({robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800311 >
312 DEAD
313 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800314 <div class="button_row">
315 <label>
316 <input
Emily Markova040123c2024-02-27 09:48:37 -0800317 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800318 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700319 [value]="StageType.kPARK"
320 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800321 />
322 Park
323 </label>
324 <label>
325 <input
Emily Markova040123c2024-02-27 09:48:37 -0800326 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800327 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700328 [value]="StageType.kON_STAGE"
329 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800330 />
331 On Stage
332 </label>
333 </div>
334 <div class="button_row">
335 <label>
336 <input
Emily Markova040123c2024-02-27 09:48:37 -0800337 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800338 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700339 [value]="StageType.kHARMONY"
340 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800341 />
342 Harmony
343 </label>
344 <label>
345 <input
Emily Markova040123c2024-02-27 09:48:37 -0800346 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800347 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700348 [value]="StageType.kMISSING"
349 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800350 />
351 N/A
352 </label>
353 </div>
Emily Markova6079e2f2024-02-17 13:17:24 -0800354 <label>
Philipp Schraderba315da2024-03-17 16:16:50 -0700355 <input type="checkbox" name="trapnote" [(ngModel)]="noteIsTrapped" />
Emily Markovadcadcb62024-02-03 13:07:17 -0800356 Trap Note
357 </label>
Emily Markova6079e2f2024-02-17 13:17:24 -0800358 <label>
359 <input
Emily Markova6079e2f2024-02-17 13:17:24 -0800360 type="checkbox"
Emily Markova6079e2f2024-02-17 13:17:24 -0800361 name="spotlight"
Philipp Schraderba315da2024-03-17 16:16:50 -0700362 [(ngModel)]="endGameSpotlight"
Emily Markova6079e2f2024-02-17 13:17:24 -0800363 />
364 Spotlight
365 </label>
Emily Markova040123c2024-02-27 09:48:37 -0800366
Emily Markovadcadcb62024-02-03 13:07:17 -0800367 <div style="display: flex">
368 <h5>Penalties :</h5>
369 <button
370 class="btn-light"
371 style="width: 40px; margin-right: 15px"
372 (click)="removePenalty()"
373 >
374 -
375 </button>
376 <p>{{this.penalties}}</p>
377 <button
378 class="btn-light"
379 style="width: 40px; margin-left: 15px"
380 (click)="addPenalty()"
381 >
382 +
383 </button>
384 </div>
Filip Kujawa4413a592023-03-01 10:54:34 -0800385 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800386 *ngIf="!autoPhase"
Filip Kujawa4413a592023-03-01 10:54:34 -0800387 class="btn btn-info"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700388 (click)="changeSectionTo('Review and Submit'); addPenalties(); actionHelper.addEndMatchAction({stageType: endGameAction, trapNote: noteIsTrapped, spotlight: endGameSpotlight});"
Filip Kujawa4413a592023-03-01 10:54:34 -0800389 >
Filip Kujawa375aaac2023-02-28 21:43:47 -0800390 End Match
Filip Kujawa4413a592023-03-01 10:54:34 -0800391 </button>
392 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800393 </div>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800394 <div *ngSwitchCase="'Dead'" id="Dead" class="container-fluid">
395 <h2>Robot is dead</h2>
Emily Markova040123c2024-02-27 09:48:37 -0800396 <div class="d-grid gap-3">
397 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
398 <div style="display: flex">
399 <h5>Penalties :</h5>
400 <button
401 class="btn-light"
402 style="width: 40px; margin-right: 15px"
403 (click)="removePenalty()"
404 >
405 -
406 </button>
407 <p>{{this.penalties}}</p>
408 <button
409 class="btn-light"
410 style="width: 40px; margin-left: 15px"
411 (click)="addPenalty()"
412 >
413 +
414 </button>
415 </div>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800416 <button
417 class="btn btn-success"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700418 (click)="changeSectionTo('Pickup'); actionHelper.addRobotDeathAction({robotDead: false}); "
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800419 >
420 Revive
421 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800422 <button
Emily Markova040123c2024-02-27 09:48:37 -0800423 class="btn btn-info"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700424 (click)="changeSectionTo('Review and Submit'); addPenalties(); actionHelper.addEndMatchAction({stageType: endGameAction, trapNote: noteIsTrapped, spotlight: endGameSpotlight});"
Emily Markova040123c2024-02-27 09:48:37 -0800425 >
426 End Match
427 </button>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800428 </div>
429 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800430 <div *ngSwitchCase="'Review and Submit'" id="Review" class="container-fluid">
Emily Markovaf4b06a22023-05-10 17:44:09 -0700431 <div class="row">
432 <ul id="review_data">
Philipp Schraderba315da2024-03-17 16:16:50 -0700433 <li *ngFor="let action of actionList" style="display: flex">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700434 <div [ngSwitch]="action.actionTakenType" style="padding: 0px">
435 <span *ngSwitchCase="ActionType.StartMatchAction">
436 Started match at position {{(action.actionTaken | cast:
437 StartMatchActionT).position}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700438 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700439 <span *ngSwitchCase="ActionType.PickupNoteAction">
440 Picked up Note
Emily Markovaf4b06a22023-05-10 17:44:09 -0700441 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700442 <span *ngSwitchCase="ActionType.PlaceNoteAction">
443 Placed at {{stringifyScoreType((action.actionTaken | cast:
444 PlaceNoteActionT).scoreType)}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700445 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700446 <span *ngSwitchCase="ActionType.EndAutoPhaseAction">
447 Ended auto phase
Emily Markovaf4b06a22023-05-10 17:44:09 -0700448 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700449 <span *ngSwitchCase="ActionType.EndMatchAction">
450 Ended Match; stageType: {{stringifyStageType((action.actionTaken |
451 cast: EndMatchActionT).stageType)}}, trapNote:
452 {{(action.actionTaken | cast: EndMatchActionT).trapNote}},
453 spotlight: {{(action.actionTaken | cast:
454 EndMatchActionT).spotlight}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700455 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700456 <span *ngSwitchCase="ActionType.RobotDeathAction">
457 Robot dead: {{(action.actionTaken | cast:
458 RobotDeathActionT).robotDead}}
459 </span>
460 <span *ngSwitchCase="ActionType.MobilityAction">
461 Mobility: {{(action.actionTaken | cast:
462 MobilityActionT).mobility}}
463 </span>
464 <span *ngSwitchDefault>{{action.actionTakenType}}</span>
465 <span *ngSwitchCase="ActionType.PenaltyAction">
466 Penalties: {{(action.actionTaken | cast:
467 PenaltyActionT).penalties}}
Emily Markovadcadcb62024-02-03 13:07:17 -0800468 </span>
Emily Markovaf4b06a22023-05-10 17:44:09 -0700469 </div>
470 </li>
471 </ul>
472 </div>
Filip Kujawa36f56082023-03-03 10:58:53 -0800473 <div class="d-grid gap-5">
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800474 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
Philipp Schradere2e27ff2024-02-25 22:08:55 -0800475 <button class="btn btn-info" (click)="changeSectionTo('QR Code');">
476 Create QR Code
477 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800478 <button class="btn btn-warning" (click)="submit2024Actions();">
479 Submit
480 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800481 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800482 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800483 <div *ngSwitchCase="'Success'" id="Success" class="container-fluid">
484 <h2>Successfully submitted data.</h2>
Evelyn Yangc8036b12023-10-11 21:14:46 -0700485 <div class="d-grid gap-5" *ngIf="nextTeamNumber != ''">
486 <button class="btn btn-primary" (click)="goToNextTeam();">
487 SCOUT NEXT TEAM
488 </button>
489 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700490 </div>
Philipp Schradere2e27ff2024-02-25 22:08:55 -0800491 <div *ngSwitchCase="'QR Code'" id="QR Code" class="container-fluid">
492 <span>Density:</span>
493 <select
494 [(ngModel)]="qrCodeValuePieceSize"
495 (ngModelChange)="updateQrCodeValuePieceSize()"
496 type="number"
497 id="qr_code_piece_size"
498 >
499 <option
500 *ngFor="let pieceSize of QR_CODE_PIECE_SIZES"
501 [ngValue]="pieceSize"
502 >
503 {{pieceSize}}
504 </option>
505 </select>
506 <div class="qr-container">
507 <qrcode
508 [qrdata]="qrCodeValuePieces[qrCodeValueIndex]"
509 [width]="1000"
510 [errorCorrectionLevel]="'M'"
511 [margin]="6"
512 class="qrcode"
513 ></qrcode>
514 </div>
515 <nav class="qrcode-nav">
516 <ul
517 class="qrcode-buttons pagination pagination-lg justify-content-center"
518 >
519 <li class="page-item">
520 <a
521 class="page-link"
522 href="#"
523 aria-label="Previous"
524 (click)="setQrCodeValueIndex(qrCodeValueIndex - 1)"
525 >
526 <span aria-hidden="true">&laquo;</span>
527 <span class="visually-hidden">Previous</span>
528 </a>
529 </li>
530 <li *ngFor="let _ of qrCodeValuePieces; index as i" class="page-item">
531 <a
532 class="page-link"
533 href="#"
534 (click)="setQrCodeValueIndex(i)"
535 [class.active]="qrCodeValueIndex == i"
536 >
537 {{i + 1}}
538 </a>
539 </li>
540 <li class="page-item">
541 <a
542 class="page-link"
543 href="#"
544 aria-label="Next"
545 (click)="setQrCodeValueIndex(qrCodeValueIndex + 1)"
546 >
547 <span aria-hidden="true">&raquo;</span>
548 <span class="visually-hidden">Next</span>
549 </a>
550 </li>
551 </ul>
552 </nav>
553 <button
554 class="btn btn-secondary"
555 (click)="changeSectionTo('Review and Submit')"
556 >
557 BACK
558 </button>
559 </div>
Philipp Schrader8686bbb2023-03-22 20:15:21 -0700560
Philipp Schrader8702b782023-04-15 17:33:37 -0700561 <span class="progress_message" role="alert">{{ progressMessage }}</span>
Philipp Schrader8686bbb2023-03-22 20:15:21 -0700562 <span class="error_message" role="alert">{{ errorMessage }}</span>
Philipp Schrader80587432022-03-05 15:41:22 -0800563</ng-container>