blob: 9be8db70c94e923ec61c19165d6d4e8a18a04647 [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>
257 <div class="row">
258 <h4>Comments</h4>
259 <textarea [(ngModel)]="comment" id="comment"></textarea>
260 </div>
261 <div class="buttons">
262 <button class="btn btn-primary" (click)="prevSection()">Back</button>
263 <button class="btn btn-primary" (click)="nextSection()">Next</button>
264 </div>
265 </div>
266
267 <div *ngSwitchCase="'Other'" id="defense" class="container-fluid">
268 <h4 class="text-center">
269 How much did other robots play defense against this robot?
270 </h4>
271 0 - No defense played against this robot
272 <br />
273 1 - Minimal defense
274 <br />
275 2 - Some defense
276 <br />
277 3 - About half the match was played against defense
278 <br />
279 4 - Good amount of defense
280 <br />
281 5 - Constant defense
282 <div class="row" style="min-height: 50px">
283 <div class="col-10">
284 <input
285 type="range"
286 min="0"
287 max="5"
288 [(ngModel)]="defensePlayedOnScore"
289 />
290 </div>
291 <div class="col">
292 <h6>{{defensePlayedOnScore}}</h6>
293 </div>
Philipp Schrader93ade042022-03-05 17:16:10 -0800294 </div>
295
Philipp Schrader817cce32022-03-26 15:00:00 -0700296 <h4 class="text-center">
297 How much did this robot play defense against other robots?
298 </h4>
299 0 - This robot did not play defense
300 <br />
301 1 - Minimal defense
302 <br />
303 2 - Some defense
304 <br />
305 3 - Defense was played for about half the match
306 <br />
307 4 - Good amount of defense
308 <br />
309 5 - Constant defense
310 <div class="row">
311 <div class="col-10">
312 <input type="range" min="0" max="5" [(ngModel)]="defensePlayedScore" />
313 </div>
314 <div class="col">
315 <h6>{{defensePlayedScore}}</h6>
316 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800317 </div>
318
Philipp Schrader817cce32022-03-26 15:00:00 -0700319 <div class="row">
320 <form>
321 <input
322 type="checkbox"
323 [(ngModel)]="noShow"
324 name="no_show"
325 id="no_show"
326 />
327 <label for="no_show">No show</label>
328 <br />
329 <input
330 type="checkbox"
331 [(ngModel)]="neverMoved"
332 name="never_moved"
333 id="never_moved"
334 />
335 <label for="never_moved">Never moved</label>
336 <br />
337 <input
338 type="checkbox"
339 [(ngModel)]="batteryDied"
340 name="battery_died"
341 id="battery_died"
342 />
343 <label for="battery_died">Battery died</label>
344 <br />
345 <input
346 type="checkbox"
347 [(ngModel)]="mechanicallyBroke"
348 name="mechanically_broke"
349 id="mechanically_broke"
350 />
351 <label for="mechanically_broke">Broke (mechanically)</label>
352 <br />
353 <input
354 type="checkbox"
355 [(ngModel)]="lostComs"
356 name="lost_coms"
357 id="lost_coms"
358 />
359 <label for="lost_coms">Lost coms</label>
360 </form>
Philipp Schrader80587432022-03-05 15:41:22 -0800361 </div>
362
Philipp Schrader817cce32022-03-26 15:00:00 -0700363 <div class="buttons">
364 <button class="btn btn-primary" (click)="prevSection()">Back</button>
365 <button class="btn btn-primary" (click)="nextSection()">Next</button>
Philipp Schrader80587432022-03-05 15:41:22 -0800366 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700367 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800368
Philipp Schrader817cce32022-03-26 15:00:00 -0700369 <div *ngSwitchCase="'Review and Submit'" id="review" class="container-fluid">
370 <h4>Team Selection</h4>
371 <ul>
372 <li>Match number: {{matchNumber}}</li>
373 <li>Team number: {{teamNumber}}</li>
Philipp Schrader30b4a682022-04-16 14:36:17 -0700374 <li>SetNumber: {{setNumber}}</li>
Philipp Schrader8aeb14f2022-04-08 21:23:18 -0700375 <li>Comp Level: {{COMP_LEVEL_LABELS[compLevel]}}</li>
Philipp Schrader817cce32022-03-26 15:00:00 -0700376 </ul>
Philipp Schrader80587432022-03-05 15:41:22 -0800377
Philipp Schrader817cce32022-03-26 15:00:00 -0700378 <h4>Auto</h4>
379 <ul>
380 <li>Quadrant: {{quadrant}}</li>
381 <li>Collected Ball 1: {{ball1}}</li>
382 <li>Collected Ball 2: {{ball2}}</li>
383 <li>Collected Ball 3: {{ball3}}</li>
384 <li>Collected Ball 4: {{ball4}}</li>
385 <li>Collected Ball 5: {{ball5}}</li>
386 <li>Upper Shots Made: {{autoUpperShotsMade}}</li>
387 <li>Lower Shots Made: {{autoLowerShotsMade}}</li>
388 <li>Missed Shots: {{autoShotsMissed}}</li>
389 </ul>
Philipp Schrader80587432022-03-05 15:41:22 -0800390
Philipp Schrader817cce32022-03-26 15:00:00 -0700391 <h4>TeleOp</h4>
392 <ul>
393 <li>Upper Shots Made: {{teleUpperShotsMade}}</li>
394 <li>Lower Shots Made: {{teleLowerShotsMade}}</li>
395 <li>Missed Shots: {{teleShotsMissed}}</li>
396 </ul>
Philipp Schradere279e1a2022-03-15 22:20:10 -0700397
Philipp Schrader817cce32022-03-26 15:00:00 -0700398 <h4>Climb</h4>
399 <ul>
Philipp Schrader8aeb14f2022-04-08 21:23:18 -0700400 <li>Climb Level: {{level | levelToString}}</li>
Philipp Schrader817cce32022-03-26 15:00:00 -0700401 <li>Comments: {{comment}}</li>
402 </ul>
403
404 <h4>Other</h4>
405 <ul>
406 <li>Defense Played On Rating: {{defensePlayedOnScore}}</li>
407 <li>Defense Played Rating: {{defensePlayedScore}}</li>
408 <li>No show: {{noShow}}</li>
409 <li>Never moved: {{neverMoved}}</li>
410 <li>Battery died: {{batteryDied}}</li>
411 <li>Broke (mechanically): {{mechanicallyBroke}}</li>
412 <li>Lost coms: {{lostComs}}</li>
413 </ul>
414
415 <span class="error_message">{{ errorMessage }}</span>
416
417 <div class="buttons">
418 <button class="btn btn-primary" (click)="prevSection()">Back</button>
419 <button class="btn btn-primary" (click)="nextSection()">Submit</button>
Philipp Schrader80587432022-03-05 15:41:22 -0800420 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700421 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800422
Philipp Schrader817cce32022-03-26 15:00:00 -0700423 <div *ngSwitchCase="'Success'" id="success" class="container-fluid">
424 <span>Successfully submitted scouting data.</span>
425 <div class="buttons justify-content-end">
426 <button class="btn btn-primary" (click)="nextSection()">Continue</button>
Philipp Schrader80587432022-03-05 15:41:22 -0800427 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700428 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800429</ng-container>