blob: 3a672e138693c3db15db730898e3e88734fa38c3 [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
118 class="btn btn-primary"
119 [disabled]="!selectedValue"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700120 (click)="changeSectionTo('Pickup'); actionHelper.addStartMatchAction({position: selectedValue});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800121 >
122 Start Match
123 </button>
124 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700125 </div>
126 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800127 <div *ngSwitchCase="'Pickup'" id="PickUp" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800128 <h6 class="text-muted">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700129 Last Action: {{ActionType[actionList[actionList.length -
130 1].actionTakenType]}}
Filip Kujawa493b59f2023-03-11 17:58:59 -0800131 </h6>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700132 <!--
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700133 Decrease distance between buttons during auto to make space for auto balancing
134 selection and keep all buttons visible without scrolling on most devices.
135 -->
136 <div
137 [ngClass]="{'d-grid': true, 'gap-3': autoPhase === true, 'gap-5': autoPhase === false}"
138 >
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800139 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
140 <button
141 class="btn btn-danger"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700142 (click)="changeSectionTo('Dead'); actionHelper.addRobotDeathAction({robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800143 >
144 DEAD
145 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800146 <button
147 class="btn btn-warning"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700148 (click)="changeSectionTo('Place'); actionHelper.addPickupNoteAction({auto: autoPhase});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800149 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800150 NOTE
Filip Kujawa375aaac2023-02-28 21:43:47 -0800151 </button>
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700152 <button
Filip Kujawab73e94c2023-04-19 09:33:14 -0700153 *ngIf="autoPhase && !mobilityCompleted"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700154 class="btn btn-light"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700155 (click)="actionHelper.addMobilityAction({mobility: true});"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700156 >
157 Mobility
158 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800159 <div style="display: flex">
160 <h5>Penalties :</h5>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700161 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800162 class="btn-light"
163 style="width: 40px; margin-right: 15px"
164 (click)="removePenalty()"
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700165 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800166 -
167 </button>
168 <p>{{this.penalties}}</p>
169 <button
170 class="btn-light"
171 style="width: 40px; margin-left: 15px"
172 (click)="addPenalty()"
173 >
174 +
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700175 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800176 </div>
177 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800178 *ngIf="autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700179 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700180 (click)="autoPhase = false; actionHelper.addEndAutoPhaseAction({});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800181 >
182 Start Teleop
183 </button>
184 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800185 *ngIf="!autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700186 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700187 (click)="changeSectionTo('Endgame'); actionHelper.addEndTeleopPhaseAction({});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800188 >
189 Endgame
190 </button>
191 </div>
192 </div>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800193 <div *ngSwitchCase="'Place'" id="Place" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800194 <h6 class="text-muted">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700195 Last Action: {{ActionType[actionList[actionList.length -
196 1].actionTakenType]}}
Filip Kujawa493b59f2023-03-11 17:58:59 -0800197 </h6>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700198 <!--
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700199 Decrease distance between buttons during auto to make space for auto balancing
200 selection and keep all buttons visible without scrolling on most devices.
201 -->
202 <div
Emily Markova040123c2024-02-27 09:48:37 -0800203 [ngClass]="{'d-grid': true, 'gap-4': autoPhase === true, 'gap-3': autoPhase === false}"
Filip Kujawaaa7d11f2023-04-13 09:12:32 -0700204 >
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800205 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
206 <button
207 class="btn btn-danger"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700208 (click)="changeSectionTo('Dead'); actionHelper.addRobotDeathAction({robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800209 >
210 DEAD
211 </button>
Emily Markovacd156942024-04-07 19:32:28 -0700212 <div class="half-button-container">
213 <button
214 class="btn btn-info half-button"
215 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kDROPPED});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800216 >
Emily Markovacd156942024-04-07 19:32:28 -0700217 Dropped
218 </button>
219 <button
220 class="btn btn-info half-button"
221 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kOUT_OF_FIELD});"
222 >
223 Out Of Field
224 </button>
225 </div>
226 <div
227 *ngIf="!autoPhase"
228 class="d-grid gap-1"
229 style="padding: 0; margin: 0"
230 >
231 <div class="half-button-container">
Emily Markovadcadcb62024-02-03 13:07:17 -0800232 <button
Emily Markovacd156942024-04-07 19:32:28 -0700233 class="btn btn-success half-button"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700234 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kAMP});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800235 >
236 AMP
237 </button>
238
239 <button
Emily Markovacd156942024-04-07 19:32:28 -0700240 class="btn btn-warning half-button"
241 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSHUTTLED});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800242 >
Emily Markovacd156942024-04-07 19:32:28 -0700243 SHUTTLED
Emily Markovadcadcb62024-02-03 13:07:17 -0800244 </button>
245 <button
Emily Markovacd156942024-04-07 19:32:28 -0700246 class="btn btn-success half-button"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700247 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800248 >
249 SPEAKER
250 </button>
251 <button
Emily Markovacd156942024-04-07 19:32:28 -0700252 class="btn btn-warning half-button"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700253 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER_AMPLIFIED});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800254 >
255 SPEAKER AMPLIFIED
256 </button>
257 </div>
258 </div>
259
Filip Kujawa375aaac2023-02-28 21:43:47 -0800260 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800261 *ngIf="autoPhase"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800262 class="btn btn-success"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700263 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kAMP});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800264 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800265 AMP
Filip Kujawa375aaac2023-02-28 21:43:47 -0800266 </button>
267 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800268 *ngIf="autoPhase"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800269 class="btn btn-warning"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700270 (click)="changeSectionTo('Pickup'); actionHelper.addPlaceNoteAction({auto: autoPhase, scoreType: ScoreType.kSPEAKER});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800271 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800272 SPEAKER
Filip Kujawa375aaac2023-02-28 21:43:47 -0800273 </button>
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700274 <button
Filip Kujawab73e94c2023-04-19 09:33:14 -0700275 *ngIf="autoPhase && !mobilityCompleted"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700276 class="btn btn-light"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700277 (click)="actionHelper.addMobilityAction({mobility: true});"
Filip Kujawa0b4b1e52023-04-15 14:05:40 -0700278 >
279 Mobility
280 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800281 <div style="display: flex">
282 <h5>Penalties :</h5>
Filip Kujawa7a045e72023-04-13 08:41:09 -0700283 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800284 class="btn-light"
285 style="width: 40px; margin-right: 15px"
286 (click)="removePenalty()"
Filip Kujawa7a045e72023-04-13 08:41:09 -0700287 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800288 -
Filip Kujawa7a045e72023-04-13 08:41:09 -0700289 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800290 <p>{{this.penalties}}</p>
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700291 <button
Emily Markovadcadcb62024-02-03 13:07:17 -0800292 class="btn-light"
293 style="width: 40px; margin-left: 15px"
294 (click)="addPenalty()"
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700295 >
Emily Markovadcadcb62024-02-03 13:07:17 -0800296 +
Philipp Schrader9ade12c2023-04-20 13:03:33 -0700297 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800298 </div>
299 <button
Emily Markovacd156942024-04-07 19:32:28 -0700300 class="btn btn-primary"
Emily Markovadcadcb62024-02-03 13:07:17 -0800301 *ngIf="autoPhase"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700302 (click)="autoPhase = false; actionHelper.addEndAutoPhaseAction({});"
Emily Markovadcadcb62024-02-03 13:07:17 -0800303 >
304 Start Teleop
305 </button>
306 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800307 *ngIf="!autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700308 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700309 (click)="changeSectionTo('Endgame'); actionHelper.addEndTeleopPhaseAction({});"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800310 >
311 Endgame
312 </button>
313 </div>
314 </div>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800315 <div *ngSwitchCase="'Endgame'" id="Endgame" class="container-fluid">
Filip Kujawa493b59f2023-03-11 17:58:59 -0800316 <h6 class="text-muted">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700317 Last Action: {{ActionType[actionList[actionList.length -
318 1].actionTakenType]}}
Filip Kujawa493b59f2023-03-11 17:58:59 -0800319 </h6>
Emily Markova6079e2f2024-02-17 13:17:24 -0800320 <div class="d-grid gap-2">
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800321 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
322 <button
323 class="btn btn-danger"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700324 (click)="changeSectionTo('Dead'); actionHelper.addRobotDeathAction({robotDead: true});"
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800325 >
326 DEAD
327 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800328 <div class="button_row">
329 <label>
330 <input
Emily Markova040123c2024-02-27 09:48:37 -0800331 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800332 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700333 [value]="StageType.kPARK"
334 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800335 />
336 Park
337 </label>
338 <label>
339 <input
Emily Markova040123c2024-02-27 09:48:37 -0800340 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800341 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700342 [value]="StageType.kON_STAGE"
343 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800344 />
345 On Stage
346 </label>
347 </div>
348 <div class="button_row">
349 <label>
350 <input
Emily Markova040123c2024-02-27 09:48:37 -0800351 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800352 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700353 [value]="StageType.kHARMONY"
354 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800355 />
356 Harmony
357 </label>
358 <label>
359 <input
Emily Markova040123c2024-02-27 09:48:37 -0800360 type="radio"
Emily Markova040123c2024-02-27 09:48:37 -0800361 name="endgameaction"
Philipp Schraderba315da2024-03-17 16:16:50 -0700362 [value]="StageType.kMISSING"
363 [(ngModel)]="endGameAction"
Emily Markova040123c2024-02-27 09:48:37 -0800364 />
365 N/A
366 </label>
367 </div>
Emily Markova6079e2f2024-02-17 13:17:24 -0800368 <label>
Philipp Schraderba315da2024-03-17 16:16:50 -0700369 <input type="checkbox" name="trapnote" [(ngModel)]="noteIsTrapped" />
Emily Markovadcadcb62024-02-03 13:07:17 -0800370 Trap Note
371 </label>
Emily Markova6079e2f2024-02-17 13:17:24 -0800372 <label>
373 <input
Emily Markova6079e2f2024-02-17 13:17:24 -0800374 type="checkbox"
Emily Markova6079e2f2024-02-17 13:17:24 -0800375 name="spotlight"
Philipp Schraderba315da2024-03-17 16:16:50 -0700376 [(ngModel)]="endGameSpotlight"
Emily Markova6079e2f2024-02-17 13:17:24 -0800377 />
378 Spotlight
379 </label>
Emily Markova040123c2024-02-27 09:48:37 -0800380
Emily Markovadcadcb62024-02-03 13:07:17 -0800381 <div style="display: flex">
382 <h5>Penalties :</h5>
383 <button
384 class="btn-light"
385 style="width: 40px; margin-right: 15px"
386 (click)="removePenalty()"
387 >
388 -
389 </button>
390 <p>{{this.penalties}}</p>
391 <button
392 class="btn-light"
393 style="width: 40px; margin-left: 15px"
394 (click)="addPenalty()"
395 >
396 +
397 </button>
398 </div>
Filip Kujawa4413a592023-03-01 10:54:34 -0800399 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800400 *ngIf="!autoPhase"
Emily Markovacd156942024-04-07 19:32:28 -0700401 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700402 (click)="changeSectionTo('Review and Submit'); addPenalties(); actionHelper.addEndMatchAction({stageType: endGameAction, trapNote: noteIsTrapped, spotlight: endGameSpotlight});"
Filip Kujawa4413a592023-03-01 10:54:34 -0800403 >
Filip Kujawa375aaac2023-02-28 21:43:47 -0800404 End Match
Filip Kujawa4413a592023-03-01 10:54:34 -0800405 </button>
406 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800407 </div>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800408 <div *ngSwitchCase="'Dead'" id="Dead" class="container-fluid">
409 <h2>Robot is dead</h2>
Emily Markova040123c2024-02-27 09:48:37 -0800410 <div class="d-grid gap-3">
411 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
412 <div style="display: flex">
413 <h5>Penalties :</h5>
414 <button
415 class="btn-light"
416 style="width: 40px; margin-right: 15px"
417 (click)="removePenalty()"
418 >
419 -
420 </button>
421 <p>{{this.penalties}}</p>
422 <button
423 class="btn-light"
424 style="width: 40px; margin-left: 15px"
425 (click)="addPenalty()"
426 >
427 +
428 </button>
429 </div>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800430 <button
431 class="btn btn-success"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700432 (click)="changeSectionTo('Pickup'); actionHelper.addRobotDeathAction({robotDead: false}); "
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800433 >
434 Revive
435 </button>
Emily Markova040123c2024-02-27 09:48:37 -0800436 <button
Emily Markovacd156942024-04-07 19:32:28 -0700437 class="btn btn-primary"
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700438 (click)="changeSectionTo('Review and Submit'); addPenalties(); actionHelper.addEndMatchAction({stageType: endGameAction, trapNote: noteIsTrapped, spotlight: endGameSpotlight});"
Emily Markova040123c2024-02-27 09:48:37 -0800439 >
440 End Match
441 </button>
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800442 </div>
443 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800444 <div *ngSwitchCase="'Review and Submit'" id="Review" class="container-fluid">
Emily Markovaf4b06a22023-05-10 17:44:09 -0700445 <div class="row">
446 <ul id="review_data">
Emily Markova9c18e9c2024-04-03 20:06:27 -0700447 <div *ngIf="compType!='Regular'">This is a {{this.compType}} match</div>
Philipp Schraderba315da2024-03-17 16:16:50 -0700448 <li *ngFor="let action of actionList" style="display: flex">
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700449 <div [ngSwitch]="action.actionTakenType" style="padding: 0px">
450 <span *ngSwitchCase="ActionType.StartMatchAction">
451 Started match at position {{(action.actionTaken | cast:
452 StartMatchActionT).position}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700453 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700454 <span *ngSwitchCase="ActionType.PickupNoteAction">
455 Picked up Note
Emily Markovaf4b06a22023-05-10 17:44:09 -0700456 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700457 <span *ngSwitchCase="ActionType.PlaceNoteAction">
458 Placed at {{stringifyScoreType((action.actionTaken | cast:
459 PlaceNoteActionT).scoreType)}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700460 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700461 <span *ngSwitchCase="ActionType.EndAutoPhaseAction">
462 Ended auto phase
Emily Markovaf4b06a22023-05-10 17:44:09 -0700463 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700464 <span *ngSwitchCase="ActionType.EndMatchAction">
465 Ended Match; stageType: {{stringifyStageType((action.actionTaken |
466 cast: EndMatchActionT).stageType)}}, trapNote:
467 {{(action.actionTaken | cast: EndMatchActionT).trapNote}},
468 spotlight: {{(action.actionTaken | cast:
469 EndMatchActionT).spotlight}}
Emily Markovaf4b06a22023-05-10 17:44:09 -0700470 </span>
Philipp Schrader3d7dedc2024-03-16 16:27:25 -0700471 <span *ngSwitchCase="ActionType.RobotDeathAction">
472 Robot dead: {{(action.actionTaken | cast:
473 RobotDeathActionT).robotDead}}
474 </span>
475 <span *ngSwitchCase="ActionType.MobilityAction">
476 Mobility: {{(action.actionTaken | cast:
477 MobilityActionT).mobility}}
478 </span>
479 <span *ngSwitchDefault>{{action.actionTakenType}}</span>
480 <span *ngSwitchCase="ActionType.PenaltyAction">
481 Penalties: {{(action.actionTaken | cast:
482 PenaltyActionT).penalties}}
Emily Markovadcadcb62024-02-03 13:07:17 -0800483 </span>
Emily Markovaf4b06a22023-05-10 17:44:09 -0700484 </div>
485 </li>
486 </ul>
487 </div>
Filip Kujawa36f56082023-03-03 10:58:53 -0800488 <div class="d-grid gap-5">
Filip Kujawa9f56d0e2023-03-03 19:44:43 -0800489 <button class="btn btn-secondary" (click)="undoLastAction()">UNDO</button>
Philipp Schradere2e27ff2024-02-25 22:08:55 -0800490 <button class="btn btn-info" (click)="changeSectionTo('QR Code');">
491 Create QR Code
492 </button>
Emily Markovadcadcb62024-02-03 13:07:17 -0800493 <button class="btn btn-warning" (click)="submit2024Actions();">
494 Submit
495 </button>
Filip Kujawa375aaac2023-02-28 21:43:47 -0800496 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800497 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800498 <div *ngSwitchCase="'Success'" id="Success" class="container-fluid">
499 <h2>Successfully submitted data.</h2>
Evelyn Yangc8036b12023-10-11 21:14:46 -0700500 <div class="d-grid gap-5" *ngIf="nextTeamNumber != ''">
501 <button class="btn btn-primary" (click)="goToNextTeam();">
502 SCOUT NEXT TEAM
503 </button>
504 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700505 </div>
Philipp Schradere2e27ff2024-02-25 22:08:55 -0800506 <div *ngSwitchCase="'QR Code'" id="QR Code" class="container-fluid">
507 <span>Density:</span>
508 <select
509 [(ngModel)]="qrCodeValuePieceSize"
510 (ngModelChange)="updateQrCodeValuePieceSize()"
511 type="number"
512 id="qr_code_piece_size"
513 >
514 <option
515 *ngFor="let pieceSize of QR_CODE_PIECE_SIZES"
516 [ngValue]="pieceSize"
517 >
518 {{pieceSize}}
519 </option>
520 </select>
521 <div class="qr-container">
522 <qrcode
523 [qrdata]="qrCodeValuePieces[qrCodeValueIndex]"
524 [width]="1000"
525 [errorCorrectionLevel]="'M'"
526 [margin]="6"
527 class="qrcode"
528 ></qrcode>
529 </div>
530 <nav class="qrcode-nav">
531 <ul
532 class="qrcode-buttons pagination pagination-lg justify-content-center"
533 >
534 <li class="page-item">
535 <a
536 class="page-link"
537 href="#"
538 aria-label="Previous"
539 (click)="setQrCodeValueIndex(qrCodeValueIndex - 1)"
540 >
541 <span aria-hidden="true">&laquo;</span>
542 <span class="visually-hidden">Previous</span>
543 </a>
544 </li>
545 <li *ngFor="let _ of qrCodeValuePieces; index as i" class="page-item">
546 <a
547 class="page-link"
548 href="#"
549 (click)="setQrCodeValueIndex(i)"
550 [class.active]="qrCodeValueIndex == i"
551 >
552 {{i + 1}}
553 </a>
554 </li>
555 <li class="page-item">
556 <a
557 class="page-link"
558 href="#"
559 aria-label="Next"
560 (click)="setQrCodeValueIndex(qrCodeValueIndex + 1)"
561 >
562 <span aria-hidden="true">&raquo;</span>
563 <span class="visually-hidden">Next</span>
564 </a>
565 </li>
566 </ul>
567 </nav>
568 <button
569 class="btn btn-secondary"
570 (click)="changeSectionTo('Review and Submit')"
571 >
572 BACK
573 </button>
574 </div>
Philipp Schrader8686bbb2023-03-22 20:15:21 -0700575
Philipp Schrader8702b782023-04-15 17:33:37 -0700576 <span class="progress_message" role="alert">{{ progressMessage }}</span>
Philipp Schrader8686bbb2023-03-22 20:15:21 -0700577 <span class="error_message" role="alert">{{ errorMessage }}</span>
Philipp Schrader80587432022-03-05 15:41:22 -0800578</ng-container>