blob: e73cfb0d9f7997f1e0e7cdee9ecf9d9ab5379624 [file] [log] [blame]
Philipp Schrader6b2e9502022-03-15 23:42:56 -07001<div class="header" #header>
Philipp Schrader817cce32022-03-26 15:00:00 -07002 <h2>{{section}}</h2>
Philipp Schrader80587432022-03-05 15:41:22 -08003</div>
4
5<ng-container [ngSwitch]="section">
Philipp Schrader817cce32022-03-26 15:00:00 -07006 <div
7 *ngSwitchCase="'Team Selection'"
8 id="team_selection"
9 class="container-fluid"
10 >
11 <div class="row">
12 <label for="match_number">Match Number</label>
13 <input
14 [(ngModel)]="matchNumber"
15 type="number"
16 id="match_number"
17 min="1"
18 max="999"
19 />
20 </div>
21 <div class="row">
22 <label for="team_number">Team Number</label>
23 <input
24 [(ngModel)]="teamNumber"
25 type="number"
26 id="team_number"
27 min="1"
28 max="9999"
29 />
30 </div>
Philipp Schrader8aeb14f2022-04-08 21:23:18 -070031 <div class="row">
Philipp Schrader30b4a682022-04-16 14:36:17 -070032 <label for="set_number">Set Number</label>
33 <input
34 [(ngModel)]="setNumber"
35 type="number"
36 id="set_number"
37 min="1"
38 max="10"
39 />
Philipp Schrader8aeb14f2022-04-08 21:23:18 -070040 </div>
41 <div class="row">
Philipp Schrader30b4a682022-04-16 14:36:17 -070042 <label for="comp_level">Comp Level</label>
Philipp Schrader8aeb14f2022-04-08 21:23:18 -070043 <select [(ngModel)]="compLevel" type="number" id="comp_level">
44 <option *ngFor="let level of COMP_LEVELS" [ngValue]="level">
45 {{COMP_LEVEL_LABELS[level]}}
46 </option>
47 </select>
48 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -070049 <div class="buttons">
50 <!-- hack to right align the next button -->
51 <div></div>
52 <button class="btn btn-primary" (click)="nextSection()">Next</button>
53 </div>
54 </div>
55
56 <div *ngSwitchCase="'Auto'" id="auto" class="container-fluid">
emilym38d08ba2022-10-22 15:25:01 -070057 <button class="buttons" id="switch_field_button" (click)="flipImages()">
58 Flip
59 </button>
Philipp Schrader817cce32022-03-26 15:00:00 -070060 <div class="row">
Philipp Schrader45721a72022-04-02 16:27:53 -070061 <img
emilym38d08ba2022-10-22 15:25:01 -070062 id="field_quadrants_image"
Philipp Schrader45721a72022-04-02 16:27:53 -070063 src="/sha256/cbb99a057a2504e80af526dae7a0a04121aed84c56a6f4889e9576fe1c20c61e/pictures/field/quadrants.jpeg"
64 alt="Quadrants Image"
65 />
Philipp Schrader817cce32022-03-26 15:00:00 -070066 <form>
67 <input
68 type="radio"
69 [(ngModel)]="quadrant"
70 name="quadrant"
71 id="quadrant1"
72 [value]="1"
73 />
74 <label for="quadrant1">Quadrant 1</label>
75 <input
76 type="radio"
77 [(ngModel)]="quadrant"
78 name="quadrant"
79 id="quadrant2"
80 [value]="2"
81 />
82 <label for="quadrant2">Quadrant 2</label>
83 <br />
84 <input
85 type="radio"
86 [(ngModel)]="quadrant"
87 name="quadrant"
88 id="quadrant3"
89 [value]="3"
90 />
91 <label for="quadrant3">Quadrant 3</label>
92 <input
93 type="radio"
94 [(ngModel)]="quadrant"
95 name="quadrant"
96 id="quadrant4"
97 [value]="4"
98 />
99 <label for="quadrant4">Quadrant 4</label>
100 </form>
101 </div>
102 <div class="row">
Philipp Schrader45721a72022-04-02 16:27:53 -0700103 <img
emilym38d08ba2022-10-22 15:25:01 -0700104 id="field_balls_image"
Alex Perry0925c342022-04-06 20:21:00 -0700105 src="/sha256/e095cc8a75d804b0e2070e0a941fab37154176756d4c1a775e53cc48c3a732b9/pictures/field/balls.jpeg"
emilym38d08ba2022-10-22 15:25:01 -0700106 alt="Balls Image"
Philipp Schrader45721a72022-04-02 16:27:53 -0700107 />
Philipp Schrader817cce32022-03-26 15:00:00 -0700108 <form>
109 <!--Choice for each ball location-->
110 <input
111 [(ngModel)]="ball1"
112 type="checkbox"
113 name="1ball"
114 value="1"
115 id="ball-1"
116 />
117 <label for="ball-1">Ball 1</label>
118 <input
119 [(ngModel)]="ball2"
120 type="checkbox"
121 name="2ball"
122 value="2"
123 id="ball-2"
124 />
125 <label for="ball-2">Ball 2</label>
126 <br />
127 <input
128 [(ngModel)]="ball3"
129 type="checkbox"
130 name="3ball"
131 value="3"
132 id="ball-3"
133 />
134 <label for="ball-3">Ball 3</label>
135 <input
136 [(ngModel)]="ball4"
137 type="checkbox"
138 name="4ball"
139 value="4"
140 id="ball-4"
141 />
142 <label for="ball-4">Ball 4</label>
143 <br />
144 <input
145 [(ngModel)]="ball5"
146 type="checkbox"
147 name="5ball"
148 value="5"
149 id="ball-5"
150 />
151 <label for="ball-5">Ball 5</label>
152 </form>
153 </div>
154 <div class="row justify-content-center">
155 <frc971-counter-button class="col-4" [(value)]="autoUpperShotsMade">
156 Upper
157 </frc971-counter-button>
158 <frc971-counter-button class="col-4" [(value)]="autoLowerShotsMade">
159 Lower
160 </frc971-counter-button>
161 <frc971-counter-button class="col-4" [(value)]="autoShotsMissed">
162 Missed
163 </frc971-counter-button>
164 </div>
165 <div class="buttons">
166 <button class="btn btn-primary" (click)="prevSection()">Back</button>
167 <button class="btn btn-primary" (click)="nextSection()">Next</button>
168 </div>
169 </div>
170
171 <div *ngSwitchCase="'TeleOp'" id="teleop" class="container-fluid">
172 <div class="row justify-content-center">
173 <frc971-counter-button class="col-4" [(value)]="teleUpperShotsMade">
174 Upper
175 </frc971-counter-button>
176 <frc971-counter-button class="col-4" [(value)]="teleLowerShotsMade">
177 Lower
178 </frc971-counter-button>
179 <frc971-counter-button class="col-4" [(value)]="teleShotsMissed">
180 Missed
181 </frc971-counter-button>
182 </div>
183 <div class="buttons">
184 <button class="btn btn-primary" (click)="prevSection()">Back</button>
185 <button class="btn btn-primary" (click)="nextSection()">Next</button>
186 </div>
187 </div>
188
189 <div *ngSwitchCase="'Climb'" id="climb" class="container-fluid">
190 <form>
191 <input
192 [(ngModel)]="level"
193 type="radio"
194 name="level"
195 id="no_attempt"
196 [value]="ClimbLevel.NoAttempt"
197 />
198 <label for="no_attempt">No climbing attempt</label>
199 <br />
200 <input
201 [(ngModel)]="level"
202 type="radio"
203 name="level"
204 id="low"
205 [value]="ClimbLevel.Low"
206 />
207 <label for="low">Low</label>
208 <br />
209 <input
210 [(ngModel)]="level"
211 type="radio"
212 name="level"
213 id="medium"
214 [value]="ClimbLevel.Medium"
215 />
216 <label for="medium">Medium</label>
217 <br />
218 <input
219 [(ngModel)]="level"
220 type="radio"
221 name="level"
222 id="high"
223 [value]="ClimbLevel.High"
224 />
225 <label for="high">High</label>
226 <br />
227 <input
228 [(ngModel)]="level"
229 type="radio"
230 name="level"
Philipp Schrader85f6e5b2022-04-16 14:20:06 -0700231 id="traversal"
232 [value]="ClimbLevel.Traversal"
Philipp Schrader817cce32022-03-26 15:00:00 -0700233 />
Philipp Schrader85f6e5b2022-04-16 14:20:06 -0700234 <label for="traversal">Traversal</label>
Philipp Schrader817cce32022-03-26 15:00:00 -0700235 <br />
236 <input
237 [(ngModel)]="level"
238 type="radio"
239 name="level"
240 id="failed"
241 [value]="ClimbLevel.Failed"
242 />
243 <label for="failed">Failed</label>
244 <br />
245 <input
246 [(ngModel)]="level"
247 type="radio"
248 name="level"
249 id="failed_with_plenty_of_time"
250 [value]="ClimbLevel.FailedWithPlentyOfTime"
251 />
252 <label for="failed_with_plenty_of_time">
253 Failed (attempted with more than 10 seconds left)
254 </label>
255 <br />
256 </form>
Philipp Schrader817cce32022-03-26 15:00:00 -0700257 <div class="buttons">
258 <button class="btn btn-primary" (click)="prevSection()">Back</button>
259 <button class="btn btn-primary" (click)="nextSection()">Next</button>
260 </div>
261 </div>
262
263 <div *ngSwitchCase="'Other'" id="defense" class="container-fluid">
264 <h4 class="text-center">
265 How much did other robots play defense against this robot?
266 </h4>
267 0 - No defense played against this robot
268 <br />
269 1 - Minimal defense
270 <br />
271 2 - Some defense
272 <br />
273 3 - About half the match was played against defense
274 <br />
275 4 - Good amount of defense
276 <br />
277 5 - Constant defense
278 <div class="row" style="min-height: 50px">
279 <div class="col-10">
280 <input
281 type="range"
282 min="0"
283 max="5"
284 [(ngModel)]="defensePlayedOnScore"
285 />
286 </div>
287 <div class="col">
288 <h6>{{defensePlayedOnScore}}</h6>
289 </div>
Philipp Schrader93ade042022-03-05 17:16:10 -0800290 </div>
291
Philipp Schrader817cce32022-03-26 15:00:00 -0700292 <h4 class="text-center">
293 How much did this robot play defense against other robots?
294 </h4>
295 0 - This robot did not play defense
296 <br />
297 1 - Minimal defense
298 <br />
299 2 - Some defense
300 <br />
301 3 - Defense was played for about half the match
302 <br />
303 4 - Good amount of defense
304 <br />
305 5 - Constant defense
306 <div class="row">
307 <div class="col-10">
308 <input type="range" min="0" max="5" [(ngModel)]="defensePlayedScore" />
309 </div>
310 <div class="col">
311 <h6>{{defensePlayedScore}}</h6>
312 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800313 </div>
314
Philipp Schrader817cce32022-03-26 15:00:00 -0700315 <div class="row">
316 <form>
317 <input
318 type="checkbox"
319 [(ngModel)]="noShow"
320 name="no_show"
321 id="no_show"
322 />
323 <label for="no_show">No show</label>
324 <br />
325 <input
326 type="checkbox"
327 [(ngModel)]="neverMoved"
328 name="never_moved"
329 id="never_moved"
330 />
331 <label for="never_moved">Never moved</label>
332 <br />
333 <input
334 type="checkbox"
335 [(ngModel)]="batteryDied"
336 name="battery_died"
337 id="battery_died"
338 />
339 <label for="battery_died">Battery died</label>
340 <br />
341 <input
342 type="checkbox"
343 [(ngModel)]="mechanicallyBroke"
344 name="mechanically_broke"
345 id="mechanically_broke"
346 />
347 <label for="mechanically_broke">Broke (mechanically)</label>
348 <br />
349 <input
350 type="checkbox"
351 [(ngModel)]="lostComs"
352 name="lost_coms"
353 id="lost_coms"
354 />
355 <label for="lost_coms">Lost coms</label>
356 </form>
Philipp Schrader80587432022-03-05 15:41:22 -0800357 </div>
358
Kiran Haywood85c20882022-11-30 21:40:27 -0800359 <div class="row">
360 <h4>General Comments About Match</h4>
361 <textarea
362 [(ngModel)]="comment"
363 id="comment"
364 placeholder="optional"
365 ></textarea>
366 </div>
367
Philipp Schrader817cce32022-03-26 15:00:00 -0700368 <div class="buttons">
369 <button class="btn btn-primary" (click)="prevSection()">Back</button>
370 <button class="btn btn-primary" (click)="nextSection()">Next</button>
Philipp Schrader80587432022-03-05 15:41:22 -0800371 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700372 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800373
Philipp Schrader817cce32022-03-26 15:00:00 -0700374 <div *ngSwitchCase="'Review and Submit'" id="review" class="container-fluid">
375 <h4>Team Selection</h4>
376 <ul>
377 <li>Match number: {{matchNumber}}</li>
378 <li>Team number: {{teamNumber}}</li>
Philipp Schrader30b4a682022-04-16 14:36:17 -0700379 <li>SetNumber: {{setNumber}}</li>
Philipp Schrader8aeb14f2022-04-08 21:23:18 -0700380 <li>Comp Level: {{COMP_LEVEL_LABELS[compLevel]}}</li>
Philipp Schrader817cce32022-03-26 15:00:00 -0700381 </ul>
Philipp Schrader80587432022-03-05 15:41:22 -0800382
Philipp Schrader817cce32022-03-26 15:00:00 -0700383 <h4>Auto</h4>
384 <ul>
385 <li>Quadrant: {{quadrant}}</li>
386 <li>Collected Ball 1: {{ball1}}</li>
387 <li>Collected Ball 2: {{ball2}}</li>
388 <li>Collected Ball 3: {{ball3}}</li>
389 <li>Collected Ball 4: {{ball4}}</li>
390 <li>Collected Ball 5: {{ball5}}</li>
391 <li>Upper Shots Made: {{autoUpperShotsMade}}</li>
392 <li>Lower Shots Made: {{autoLowerShotsMade}}</li>
393 <li>Missed Shots: {{autoShotsMissed}}</li>
394 </ul>
Philipp Schrader80587432022-03-05 15:41:22 -0800395
Philipp Schrader817cce32022-03-26 15:00:00 -0700396 <h4>TeleOp</h4>
397 <ul>
398 <li>Upper Shots Made: {{teleUpperShotsMade}}</li>
399 <li>Lower Shots Made: {{teleLowerShotsMade}}</li>
400 <li>Missed Shots: {{teleShotsMissed}}</li>
401 </ul>
Philipp Schradere279e1a2022-03-15 22:20:10 -0700402
Philipp Schrader817cce32022-03-26 15:00:00 -0700403 <h4>Climb</h4>
404 <ul>
Philipp Schrader8aeb14f2022-04-08 21:23:18 -0700405 <li>Climb Level: {{level | levelToString}}</li>
Philipp Schrader817cce32022-03-26 15:00:00 -0700406 </ul>
407
408 <h4>Other</h4>
409 <ul>
410 <li>Defense Played On Rating: {{defensePlayedOnScore}}</li>
411 <li>Defense Played Rating: {{defensePlayedScore}}</li>
412 <li>No show: {{noShow}}</li>
413 <li>Never moved: {{neverMoved}}</li>
414 <li>Battery died: {{batteryDied}}</li>
415 <li>Broke (mechanically): {{mechanicallyBroke}}</li>
416 <li>Lost coms: {{lostComs}}</li>
Kiran Haywood85c20882022-11-30 21:40:27 -0800417 <li>Comments: {{comment}}</li>
Philipp Schrader817cce32022-03-26 15:00:00 -0700418 </ul>
419
420 <span class="error_message">{{ errorMessage }}</span>
421
422 <div class="buttons">
423 <button class="btn btn-primary" (click)="prevSection()">Back</button>
424 <button class="btn btn-primary" (click)="nextSection()">Submit</button>
Philipp Schrader80587432022-03-05 15:41:22 -0800425 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700426 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800427
Philipp Schrader817cce32022-03-26 15:00:00 -0700428 <div *ngSwitchCase="'Success'" id="success" class="container-fluid">
429 <span>Successfully submitted scouting data.</span>
430 <div class="buttons justify-content-end">
431 <button class="btn btn-primary" (click)="nextSection()">Continue</button>
Philipp Schrader80587432022-03-05 15:41:22 -0800432 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700433 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800434</ng-container>