blob: 67d9f9fd3fbcb122f103ddbaffe22bb371b4ba66 [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"
Emily Markova9c18e9c2024-04-03 20:06:27 -070061 name="comp_type"
62 type="radio"
63 [(ngModel)]="compType"
64 value="Prescouting"
Philipp Schradere1498852023-04-15 18:06:45 -070065 (ngModelChange)="updateTeamSelectionValidity()"
66 />
67 Pre-scouting
68 </label>
69 </div>
Emily Markova9c18e9c2024-04-03 20:06:27 -070070 <div class="row">
71 <label>
72 <input
73 id="practice_match"
74 name="comp_type"
75 type="radio"
76 [(ngModel)]="compType"
77 value="Practice"
78 (ngModelChange)="updateTeamSelectionValidity()"
79 />
80 Practice Match
81 </label>
82 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -070083 <div class="buttons">
84 <!-- hack to right align the next button -->
85 <div></div>
Philipp Schrader8702b782023-04-15 17:33:37 -070086 <button
87 class="btn btn-primary"
88 (click)="changeSectionTo('Init');"
89 [disabled]="!teamSelectionIsValid"
90 >
Filip Kujawa0ef334c2023-02-20 19:42:45 -080091 Next
92 </button>
Philipp Schrader817cce32022-03-26 15:00:00 -070093 </div>
94 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -080095 <div *ngSwitchCase="'Init'" id="init" class="container-fluid">
96 <h2>Select Starting Position</h2>
Filip Kujawa1d9add92023-03-03 13:14:40 -080097 <img
98 id="field_starting_positions_image"
Emily Markovadcadcb62024-02-03 13:07:17 -080099 src="/sha256/bb83d2c976c1496bb470371821d1d1882d6baf31178009a6f6cba579880c6a03/pictures/field/2024_field.png"
Filip Kujawa1d9add92023-03-03 13:14:40 -0800100 alt="Starting Positions Image"
101 class="img-fluid"
102 />
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800103 <div *ngFor="let i of [1, 2, 3, 4]">
104 <label>
Philipp Schrader817cce32022-03-26 15:00:00 -0700105 <input
106 type="radio"
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800107 name="radio-group"
108 [value]="i"
Philipp Schraderba315da2024-03-17 16:16:50 -0700109 [(ngModel)]="selectedValue"
Philipp Schrader817cce32022-03-26 15:00:00 -0700110 />
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800111 {{ i }}
Philipp Schrader817cce32022-03-26 15:00:00 -0700112 </label>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800113 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700114 <div class="buttons">
Filip Kujawa375aaac2023-02-28 21:43:47 -0800115 <!-- Creates a responsive stack of full-width, "block buttons". -->
Filip Kujawa36f56082023-03-03 10:58:53 -0800116 <div class="d-grid gap-5">
Filip Kujawa375aaac2023-02-28 21:43:47 -0800117 <button
Emily Markovaf17f2812024-04-03 20:55:12 -0700118 class="btn btn-warning"
119 (click)="changeSectionTo('Review and Submit'); actionHelper.addNoShowAction({});"
120 >
121 No Show
122 </button>
123 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800124 class="btn btn-primary"
125 [disabled]="!selectedValue"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700126 (click)="changeSectionTo('Pickup'); actionHelper.addStartMatchAction({position: selectedValue});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800127 >
128 Start Match
129 </button>
130 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700131 </div>
132 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800133 <div *ngSwitchCase="'Pickup'" id="PickUp" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800134 <h6 class="text-muted">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700135 Last Action: {{ActionType[actionList[actionList.length -
136 1].actionTakenType]}}
Filip Kujawa493b59f2023-03-11 17:58:59 -0800137 </h6>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700138 <!--
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700139 Decrease distance between buttons during auto to make space for auto balancing
140 selection and keep all buttons visible without scrolling on most devices.
141 -->
142 <div
143 [ngClass]="{'d-grid': true, 'gap-3': autoPhase === true, 'gap-5': autoPhase === false}"
144 >
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800145 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
146 <button
147 class="btn btn-danger"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700148 (click)="changeSectionTo('Dead'); actionHelper.addRobotDeathAction({robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800149 >
150 DEAD
151 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800152 <button
153 class="btn btn-warning"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700154 (click)="changeSectionTo('Place'); actionHelper.addPickupNoteAction({auto: autoPhase});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800155 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800156 NOTE
Filip Kujawa375aaac2023-02-28 21:43:47 -0800157 </button>
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700158 <button
Filip Kujawab73e94c2023-04-19 09:33:14 -0700159 *ngIf="autoPhase && !mobilityCompleted"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700160 class="btn btn-light"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700161 (click)="actionHelper.addMobilityAction({mobility: true});"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700162 >
163 Mobility
164 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800165 <div style="display: flex">
166 <h5>Penalties :</h5>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700167 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800168 class="btn-light"
169 style="width: 40px; margin-right: 15px"
170 (click)="removePenalty()"
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700171 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800172 -
173 </button>
174 <p>{{this.penalties}}</p>
175 <button
176 class="btn-light"
177 style="width: 40px; margin-left: 15px"
178 (click)="addPenalty()"
179 >
180 +
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700181 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800182 </div>
183 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800184 *ngIf="autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700185 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700186 (click)="autoPhase = false; actionHelper.addEndAutoPhaseAction({});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800187 >
188 Start Teleop
189 </button>
190 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800191 *ngIf="!autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700192 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700193 (click)="changeSectionTo('Endgame'); actionHelper.addEndTeleopPhaseAction({});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800194 >
195 Endgame
196 </button>
197 </div>
198 </div>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800199 <div *ngSwitchCase="'Place'" id="Place" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800200 <h6 class="text-muted">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700201 Last Action: {{ActionType[actionList[actionList.length -
202 1].actionTakenType]}}
Filip Kujawa493b59f2023-03-11 17:58:59 -0800203 </h6>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700204 <!--
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700205 Decrease distance between buttons during auto to make space for auto balancing
206 selection and keep all buttons visible without scrolling on most devices.
207 -->
208 <div
Emily Markova040123c2024-02-27 09:48:37 -0800209 [ngClass]="{'d-grid': true, 'gap-4': autoPhase === true, 'gap-3': autoPhase === false}"
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700210 >
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800211 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
212 <button
213 class="btn btn-danger"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700214 (click)="changeSectionTo('Dead'); actionHelper.addRobotDeathAction({robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800215 >
216 DEAD
217 </button>
Emily Markovacd156942024-04-07 19:32:28 -0700218 <div class="half-button-container">
219 <button
220 class="btn btn-info half-button"
221 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kDROPPED});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800222 >
Emily Markovacd156942024-04-07 19:32:28 -0700223 Dropped
224 </button>
225 <button
226 class="btn btn-info half-button"
227 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kOUT_OF_FIELD});"
228 >
229 Out Of Field
230 </button>
231 </div>
232 <div
233 *ngIf="!autoPhase"
234 class="d-grid gap-1"
235 style="padding: 0; margin: 0"
236 >
237 <div class="half-button-container">
Emily Markovadcadcb62024-02-03 13:07:17 -0800238 <button
Emily Markovacd156942024-04-07 19:32:28 -0700239 class="btn btn-success half-button"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700240 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kAMP});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800241 >
242 AMP
243 </button>
244
245 <button
Emily Markovacd156942024-04-07 19:32:28 -0700246 class="btn btn-warning half-button"
247 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSHUTTLED});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800248 >
Emily Markovacd156942024-04-07 19:32:28 -0700249 SHUTTLED
Emily Markovadcadcb62024-02-03 13:07:17 -0800250 </button>
251 <button
Emily Markovacd156942024-04-07 19:32:28 -0700252 class="btn btn-success half-button"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700253 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800254 >
255 SPEAKER
256 </button>
257 <button
Emily Markovacd156942024-04-07 19:32:28 -0700258 class="btn btn-warning half-button"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700259 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER_AMPLIFIED});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800260 >
261 SPEAKER AMPLIFIED
262 </button>
263 </div>
264 </div>
265
Filip Kujawa375aaac2023-02-28 21:43:47 -0800266 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800267 *ngIf="autoPhase"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800268 class="btn btn-success"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700269 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kAMP});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800270 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800271 AMP
Filip Kujawa375aaac2023-02-28 21:43:47 -0800272 </button>
273 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800274 *ngIf="autoPhase"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800275 class="btn btn-warning"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700276 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800277 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800278 SPEAKER
Filip Kujawa375aaac2023-02-28 21:43:47 -0800279 </button>
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700280 <button
Filip Kujawab73e94c2023-04-19 09:33:14 -0700281 *ngIf="autoPhase && !mobilityCompleted"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700282 class="btn btn-light"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700283 (click)="actionHelper.addMobilityAction({mobility: true});"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700284 >
285 Mobility
286 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800287 <div style="display: flex">
288 <h5>Penalties :</h5>
Filip Kujawa7a045e72023-04-13 08:41:09 -0700289 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800290 class="btn-light"
291 style="width: 40px; margin-right: 15px"
292 (click)="removePenalty()"
Filip Kujawa7a045e72023-04-13 08:41:09 -0700293 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800294 -
Filip Kujawa7a045e72023-04-13 08:41:09 -0700295 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800296 <p>{{this.penalties}}</p>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700297 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800298 class="btn-light"
299 style="width: 40px; margin-left: 15px"
300 (click)="addPenalty()"
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700301 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800302 +
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700303 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800304 </div>
305 <button
Emily Markovacd156942024-04-07 19:32:28 -0700306 class="btn btn-primary"
Emily Markovadcadcb62024-02-03 13:07:17 -0800307 *ngIf="autoPhase"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700308 (click)="autoPhase = false; actionHelper.addEndAutoPhaseAction({});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800309 >
310 Start Teleop
311 </button>
312 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800313 *ngIf="!autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700314 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700315 (click)="changeSectionTo('Endgame'); actionHelper.addEndTeleopPhaseAction({});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800316 >
317 Endgame
318 </button>
319 </div>
320 </div>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800321 <div *ngSwitchCase="'Endgame'" id="Endgame" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800322 <h6 class="text-muted">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700323 Last Action: {{ActionType[actionList[actionList.length -
324 1].actionTakenType]}}
Filip Kujawa493b59f2023-03-11 17:58:59 -0800325 </h6>
Emily Markova6079e2f2024-02-17 13:17:24 -0800326 <div class="d-grid gap-2">
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800327 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
328 <button
329 class="btn btn-danger"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700330 (click)="changeSectionTo('Dead'); actionHelper.addRobotDeathAction({robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800331 >
332 DEAD
333 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800334 <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.kPARK"
340 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800341 />
342 Park
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.kON_STAGE"
349 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800350 />
351 On Stage
352 </label>
353 </div>
354 <div class="button_row">
355 <label>
356 <input
Emily Markova040123c2024-02-27 09:48:37 -0800357 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800358 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700359 [value]="StageType.kHARMONY"
360 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800361 />
362 Harmony
363 </label>
364 <label>
365 <input
Emily Markova040123c2024-02-27 09:48:37 -0800366 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800367 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700368 [value]="StageType.kMISSING"
369 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800370 />
371 N/A
372 </label>
373 </div>
Emily Markova6079e2f2024-02-17 13:17:24 -0800374 <label>
Philipp Schraderba315da2024-03-17 16:16:50 -0700375 <input type="checkbox" name="trapnote" [(ngModel)]="noteIsTrapped" />
Emily Markovadcadcb62024-02-03 13:07:17 -0800376 Trap Note
377 </label>
Emily Markova6079e2f2024-02-17 13:17:24 -0800378 <label>
379 <input
Emily Markova6079e2f2024-02-17 13:17:24 -0800380 type="checkbox"
Emily Markova6079e2f2024-02-17 13:17:24 -0800381 name="spotlight"
Philipp Schraderba315da2024-03-17 16:16:50 -0700382 [(ngModel)]="endGameSpotlight"
Emily Markova6079e2f2024-02-17 13:17:24 -0800383 />
384 Spotlight
385 </label>
Emily Markova040123c2024-02-27 09:48:37 -0800386
Emily Markovadcadcb62024-02-03 13:07:17 -0800387 <div style="display: flex">
388 <h5>Penalties :</h5>
389 <button
390 class="btn-light"
391 style="width: 40px; margin-right: 15px"
392 (click)="removePenalty()"
393 >
394 -
395 </button>
396 <p>{{this.penalties}}</p>
397 <button
398 class="btn-light"
399 style="width: 40px; margin-left: 15px"
400 (click)="addPenalty()"
401 >
402 +
403 </button>
404 </div>
Filip Kujawa4413a592023-03-01 10:54:34 -0800405 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800406 *ngIf="!autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700407 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700408 (click)="changeSectionTo('Review and Submit'); addPenalties(); actionHelper.addEndMatchAction({stageType: endGameAction, trapNote: noteIsTrapped, spotlight: endGameSpotlight});"
Filip Kujawa4413a592023-03-01 10:54:34 -0800409 >
Filip Kujawa375aaac2023-02-28 21:43:47 -0800410 End Match
Filip Kujawa4413a592023-03-01 10:54:34 -0800411 </button>
412 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800413 </div>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800414 <div *ngSwitchCase="'Dead'" id="Dead" class="container-fluid">
415 <h2>Robot is dead</h2>
Emily Markova040123c2024-02-27 09:48:37 -0800416 <div class="d-grid gap-3">
417 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
418 <div style="display: flex">
419 <h5>Penalties :</h5>
420 <button
421 class="btn-light"
422 style="width: 40px; margin-right: 15px"
423 (click)="removePenalty()"
424 >
425 -
426 </button>
427 <p>{{this.penalties}}</p>
428 <button
429 class="btn-light"
430 style="width: 40px; margin-left: 15px"
431 (click)="addPenalty()"
432 >
433 +
434 </button>
435 </div>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800436 <button
437 class="btn btn-success"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700438 (click)="changeSectionTo('Pickup'); actionHelper.addRobotDeathAction({robotDead: false}); "
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800439 >
440 Revive
441 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800442 <button
Emily Markovacd156942024-04-07 19:32:28 -0700443 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700444 (click)="changeSectionTo('Review and Submit'); addPenalties(); actionHelper.addEndMatchAction({stageType: endGameAction, trapNote: noteIsTrapped, spotlight: endGameSpotlight});"
Emily Markova040123c2024-02-27 09:48:37 -0800445 >
446 End Match
447 </button>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800448 </div>
449 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800450 <div *ngSwitchCase="'Review and Submit'" id="Review" class="container-fluid">
Emily Markovaf4b06a22023-05-10 17:44:09 -0700451 <div class="row">
452 <ul id="review_data">
Emily Markova9c18e9c2024-04-03 20:06:27 -0700453 <div *ngIf="compType!='Regular'">This is a {{this.compType}} match</div>
Philipp Schraderba315da2024-03-17 16:16:50 -0700454 <li *ngFor="let action of actionList" style="display: flex">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700455 <div [ngSwitch]="action.actionTakenType" style="padding: 0px">
456 <span *ngSwitchCase="ActionType.StartMatchAction">
457 Started match at position {{(action.actionTaken | cast:
458 StartMatchActionT).position}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700459 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700460 <span *ngSwitchCase="ActionType.PickupNoteAction">
461 Picked up Note
Emily Markovaf4b06a22023-05-10 17:44:09 -0700462 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700463 <span *ngSwitchCase="ActionType.PlaceNoteAction">
464 Placed at {{stringifyScoreType((action.actionTaken | cast:
465 PlaceNoteActionT).scoreType)}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700466 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700467 <span *ngSwitchCase="ActionType.EndAutoPhaseAction">
468 Ended auto phase
Emily Markovaf4b06a22023-05-10 17:44:09 -0700469 </span>
Emily Markovaf2743e82024-09-21 14:14:04 -0700470 <span *ngSwitchCase="ActionType.EndTeleopPhaseAction">
471 Ended teleop phase
472 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700473 <span *ngSwitchCase="ActionType.EndMatchAction">
474 Ended Match; stageType: {{stringifyStageType((action.actionTaken |
475 cast: EndMatchActionT).stageType)}}, trapNote:
476 {{(action.actionTaken | cast: EndMatchActionT).trapNote}},
477 spotlight: {{(action.actionTaken | cast:
478 EndMatchActionT).spotlight}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700479 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700480 <span *ngSwitchCase="ActionType.RobotDeathAction">
481 Robot dead: {{(action.actionTaken | cast:
482 RobotDeathActionT).robotDead}}
483 </span>
484 <span *ngSwitchCase="ActionType.MobilityAction">
485 Mobility: {{(action.actionTaken | cast:
486 MobilityActionT).mobility}}
487 </span>
Emily Markovaf17f2812024-04-03 20:55:12 -0700488 <span *ngSwitchCase="ActionType.NoShowAction">NoShow: true</span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700489 <span *ngSwitchDefault>{{action.actionTakenType}}</span>
490 <span *ngSwitchCase="ActionType.PenaltyAction">
491 Penalties: {{(action.actionTaken | cast:
492 PenaltyActionT).penalties}}
Emily Markovadcadcb62024-02-03 13:07:17 -0800493 </span>
Emily Markovaf4b06a22023-05-10 17:44:09 -0700494 </div>
495 </li>
496 </ul>
497 </div>
Filip Kujawa36f56082023-03-03 10:58:53 -0800498 <div class="d-grid gap-5">
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800499 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
Philipp Schradere2e27ff2024-02-25 22:08:55 -0800500 <button class="btn btn-info" (click)="changeSectionTo('QR Code');">
501 Create QR Code
502 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800503 <button class="btn btn-warning" (click)="submit2024Actions();">
504 Submit
505 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800506 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800507 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800508 <div *ngSwitchCase="'Success'" id="Success" class="container-fluid">
509 <h2>Successfully submitted data.</h2>
Evelyn Yangc8036b12023-10-11 21:14:46 -0700510 <div class="d-grid gap-5" *ngIf="nextTeamNumber != ''">
511 <button class="btn btn-primary" (click)="goToNextTeam();">
512 SCOUT NEXT TEAM
513 </button>
514 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700515 </div>
Philipp Schradere2e27ff2024-02-25 22:08:55 -0800516 <div *ngSwitchCase="'QR Code'" id="QR Code" class="container-fluid">
517 <span>Density:</span>
518 <select
519 [(ngModel)]="qrCodeValuePieceSize"
520 (ngModelChange)="updateQrCodeValuePieceSize()"
521 type="number"
522 id="qr_code_piece_size"
523 >
524 <option
525 *ngFor="let pieceSize of QR_CODE_PIECE_SIZES"
526 [ngValue]="pieceSize"
527 >
528 {{pieceSize}}
529 </option>
530 </select>
531 <div class="qr-container">
532 <qrcode
533 [qrdata]="qrCodeValuePieces[qrCodeValueIndex]"
534 [width]="1000"
535 [errorCorrectionLevel]="'M'"
536 [margin]="6"
537 class="qrcode"
538 ></qrcode>
539 </div>
540 <nav class="qrcode-nav">
541 <ul
542 class="qrcode-buttons pagination pagination-lg justify-content-center"
543 >
544 <li class="page-item">
545 <a
546 class="page-link"
547 href="#"
548 aria-label="Previous"
549 (click)="setQrCodeValueIndex(qrCodeValueIndex - 1)"
550 >
551 <span aria-hidden="true">&laquo;</span>
552 <span class="visually-hidden">Previous</span>
553 </a>
554 </li>
555 <li *ngFor="let _ of qrCodeValuePieces; index as i" class="page-item">
556 <a
557 class="page-link"
558 href="#"
559 (click)="setQrCodeValueIndex(i)"
560 [class.active]="qrCodeValueIndex == i"
561 >
562 {{i + 1}}
563 </a>
564 </li>
565 <li class="page-item">
566 <a
567 class="page-link"
568 href="#"
569 aria-label="Next"
570 (click)="setQrCodeValueIndex(qrCodeValueIndex + 1)"
571 >
572 <span aria-hidden="true">&raquo;</span>
573 <span class="visually-hidden">Next</span>
574 </a>
575 </li>
576 </ul>
577 </nav>
578 <button
579 class="btn btn-secondary"
580 (click)="changeSectionTo('Review and Submit')"
581 >
582 BACK
583 </button>
584 </div>
Philipp Schrader8686bbb2023-03-22 20:15:21 -0700585
Philipp Schrader8702b782023-04-15 17:33:37 -0700586 <span class="progress_message" role="alert">{{ progressMessage }}</span>
Philipp Schrader8686bbb2023-03-22 20:15:21 -0700587 <span class="error_message" role="alert">{{ errorMessage }}</span>
Philipp Schrader80587432022-03-05 15:41:22 -0800588</ng-container>