blob: 0e762687de1fa43cb7e6dbe4bdda432cd22484b8 [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>
31 <div class="buttons">
32 <!-- hack to right align the next button -->
33 <div></div>
34 <button class="btn btn-primary" (click)="nextSection()">Next</button>
35 </div>
36 </div>
37
38 <div *ngSwitchCase="'Auto'" id="auto" class="container-fluid">
39 <div class="row">
40 <img src="/pictures/field/quadrants.jpeg" alt="Quadrants Image" />
41 <form>
42 <input
43 type="radio"
44 [(ngModel)]="quadrant"
45 name="quadrant"
46 id="quadrant1"
47 [value]="1"
48 />
49 <label for="quadrant1">Quadrant 1</label>
50 <input
51 type="radio"
52 [(ngModel)]="quadrant"
53 name="quadrant"
54 id="quadrant2"
55 [value]="2"
56 />
57 <label for="quadrant2">Quadrant 2</label>
58 <br />
59 <input
60 type="radio"
61 [(ngModel)]="quadrant"
62 name="quadrant"
63 id="quadrant3"
64 [value]="3"
65 />
66 <label for="quadrant3">Quadrant 3</label>
67 <input
68 type="radio"
69 [(ngModel)]="quadrant"
70 name="quadrant"
71 id="quadrant4"
72 [value]="4"
73 />
74 <label for="quadrant4">Quadrant 4</label>
75 </form>
76 </div>
77 <div class="row">
78 <img src="/pictures/field/balls.jpeg" alt="Image" />
79 <form>
80 <!--Choice for each ball location-->
81 <input
82 [(ngModel)]="ball1"
83 type="checkbox"
84 name="1ball"
85 value="1"
86 id="ball-1"
87 />
88 <label for="ball-1">Ball 1</label>
89 <input
90 [(ngModel)]="ball2"
91 type="checkbox"
92 name="2ball"
93 value="2"
94 id="ball-2"
95 />
96 <label for="ball-2">Ball 2</label>
97 <br />
98 <input
99 [(ngModel)]="ball3"
100 type="checkbox"
101 name="3ball"
102 value="3"
103 id="ball-3"
104 />
105 <label for="ball-3">Ball 3</label>
106 <input
107 [(ngModel)]="ball4"
108 type="checkbox"
109 name="4ball"
110 value="4"
111 id="ball-4"
112 />
113 <label for="ball-4">Ball 4</label>
114 <br />
115 <input
116 [(ngModel)]="ball5"
117 type="checkbox"
118 name="5ball"
119 value="5"
120 id="ball-5"
121 />
122 <label for="ball-5">Ball 5</label>
123 </form>
124 </div>
125 <div class="row justify-content-center">
126 <frc971-counter-button class="col-4" [(value)]="autoUpperShotsMade">
127 Upper
128 </frc971-counter-button>
129 <frc971-counter-button class="col-4" [(value)]="autoLowerShotsMade">
130 Lower
131 </frc971-counter-button>
132 <frc971-counter-button class="col-4" [(value)]="autoShotsMissed">
133 Missed
134 </frc971-counter-button>
135 </div>
136 <div class="buttons">
137 <button class="btn btn-primary" (click)="prevSection()">Back</button>
138 <button class="btn btn-primary" (click)="nextSection()">Next</button>
139 </div>
140 </div>
141
142 <div *ngSwitchCase="'TeleOp'" id="teleop" class="container-fluid">
143 <div class="row justify-content-center">
144 <frc971-counter-button class="col-4" [(value)]="teleUpperShotsMade">
145 Upper
146 </frc971-counter-button>
147 <frc971-counter-button class="col-4" [(value)]="teleLowerShotsMade">
148 Lower
149 </frc971-counter-button>
150 <frc971-counter-button class="col-4" [(value)]="teleShotsMissed">
151 Missed
152 </frc971-counter-button>
153 </div>
154 <div class="buttons">
155 <button class="btn btn-primary" (click)="prevSection()">Back</button>
156 <button class="btn btn-primary" (click)="nextSection()">Next</button>
157 </div>
158 </div>
159
160 <div *ngSwitchCase="'Climb'" id="climb" class="container-fluid">
161 <form>
162 <input
163 [(ngModel)]="level"
164 type="radio"
165 name="level"
166 id="no_attempt"
167 [value]="ClimbLevel.NoAttempt"
168 />
169 <label for="no_attempt">No climbing attempt</label>
170 <br />
171 <input
172 [(ngModel)]="level"
173 type="radio"
174 name="level"
175 id="low"
176 [value]="ClimbLevel.Low"
177 />
178 <label for="low">Low</label>
179 <br />
180 <input
181 [(ngModel)]="level"
182 type="radio"
183 name="level"
184 id="medium"
185 [value]="ClimbLevel.Medium"
186 />
187 <label for="medium">Medium</label>
188 <br />
189 <input
190 [(ngModel)]="level"
191 type="radio"
192 name="level"
193 id="high"
194 [value]="ClimbLevel.High"
195 />
196 <label for="high">High</label>
197 <br />
198 <input
199 [(ngModel)]="level"
200 type="radio"
201 name="level"
202 id="transversal"
203 [value]="ClimbLevel.Transversal"
204 />
205 <label for="transversal">Transversal</label>
206 <br />
207 <input
208 [(ngModel)]="level"
209 type="radio"
210 name="level"
211 id="failed"
212 [value]="ClimbLevel.Failed"
213 />
214 <label for="failed">Failed</label>
215 <br />
216 <input
217 [(ngModel)]="level"
218 type="radio"
219 name="level"
220 id="failed_with_plenty_of_time"
221 [value]="ClimbLevel.FailedWithPlentyOfTime"
222 />
223 <label for="failed_with_plenty_of_time">
224 Failed (attempted with more than 10 seconds left)
225 </label>
226 <br />
227 </form>
228 <div class="row">
229 <h4>Comments</h4>
230 <textarea [(ngModel)]="comment" id="comment"></textarea>
231 </div>
232 <div class="buttons">
233 <button class="btn btn-primary" (click)="prevSection()">Back</button>
234 <button class="btn btn-primary" (click)="nextSection()">Next</button>
235 </div>
236 </div>
237
238 <div *ngSwitchCase="'Other'" id="defense" class="container-fluid">
239 <h4 class="text-center">
240 How much did other robots play defense against this robot?
241 </h4>
242 0 - No defense played against this robot
243 <br />
244 1 - Minimal defense
245 <br />
246 2 - Some defense
247 <br />
248 3 - About half the match was played against defense
249 <br />
250 4 - Good amount of defense
251 <br />
252 5 - Constant defense
253 <div class="row" style="min-height: 50px">
254 <div class="col-10">
255 <input
256 type="range"
257 min="0"
258 max="5"
259 [(ngModel)]="defensePlayedOnScore"
260 />
261 </div>
262 <div class="col">
263 <h6>{{defensePlayedOnScore}}</h6>
264 </div>
Philipp Schrader93ade042022-03-05 17:16:10 -0800265 </div>
266
Philipp Schrader817cce32022-03-26 15:00:00 -0700267 <h4 class="text-center">
268 How much did this robot play defense against other robots?
269 </h4>
270 0 - This robot did not play defense
271 <br />
272 1 - Minimal defense
273 <br />
274 2 - Some defense
275 <br />
276 3 - Defense was played for about half the match
277 <br />
278 4 - Good amount of defense
279 <br />
280 5 - Constant defense
281 <div class="row">
282 <div class="col-10">
283 <input type="range" min="0" max="5" [(ngModel)]="defensePlayedScore" />
284 </div>
285 <div class="col">
286 <h6>{{defensePlayedScore}}</h6>
287 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800288 </div>
289
Philipp Schrader817cce32022-03-26 15:00:00 -0700290 <div class="row">
291 <form>
292 <input
293 type="checkbox"
294 [(ngModel)]="noShow"
295 name="no_show"
296 id="no_show"
297 />
298 <label for="no_show">No show</label>
299 <br />
300 <input
301 type="checkbox"
302 [(ngModel)]="neverMoved"
303 name="never_moved"
304 id="never_moved"
305 />
306 <label for="never_moved">Never moved</label>
307 <br />
308 <input
309 type="checkbox"
310 [(ngModel)]="batteryDied"
311 name="battery_died"
312 id="battery_died"
313 />
314 <label for="battery_died">Battery died</label>
315 <br />
316 <input
317 type="checkbox"
318 [(ngModel)]="mechanicallyBroke"
319 name="mechanically_broke"
320 id="mechanically_broke"
321 />
322 <label for="mechanically_broke">Broke (mechanically)</label>
323 <br />
324 <input
325 type="checkbox"
326 [(ngModel)]="lostComs"
327 name="lost_coms"
328 id="lost_coms"
329 />
330 <label for="lost_coms">Lost coms</label>
331 </form>
Philipp Schrader80587432022-03-05 15:41:22 -0800332 </div>
333
Philipp Schrader817cce32022-03-26 15:00:00 -0700334 <div class="buttons">
335 <button class="btn btn-primary" (click)="prevSection()">Back</button>
336 <button class="btn btn-primary" (click)="nextSection()">Next</button>
Philipp Schrader80587432022-03-05 15:41:22 -0800337 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700338 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800339
Philipp Schrader817cce32022-03-26 15:00:00 -0700340 <div *ngSwitchCase="'Review and Submit'" id="review" class="container-fluid">
341 <h4>Team Selection</h4>
342 <ul>
343 <li>Match number: {{matchNumber}}</li>
344 <li>Team number: {{teamNumber}}</li>
345 </ul>
Philipp Schrader80587432022-03-05 15:41:22 -0800346
Philipp Schrader817cce32022-03-26 15:00:00 -0700347 <h4>Auto</h4>
348 <ul>
349 <li>Quadrant: {{quadrant}}</li>
350 <li>Collected Ball 1: {{ball1}}</li>
351 <li>Collected Ball 2: {{ball2}}</li>
352 <li>Collected Ball 3: {{ball3}}</li>
353 <li>Collected Ball 4: {{ball4}}</li>
354 <li>Collected Ball 5: {{ball5}}</li>
355 <li>Upper Shots Made: {{autoUpperShotsMade}}</li>
356 <li>Lower Shots Made: {{autoLowerShotsMade}}</li>
357 <li>Missed Shots: {{autoShotsMissed}}</li>
358 </ul>
Philipp Schrader80587432022-03-05 15:41:22 -0800359
Philipp Schrader817cce32022-03-26 15:00:00 -0700360 <h4>TeleOp</h4>
361 <ul>
362 <li>Upper Shots Made: {{teleUpperShotsMade}}</li>
363 <li>Lower Shots Made: {{teleLowerShotsMade}}</li>
364 <li>Missed Shots: {{teleShotsMissed}}</li>
365 </ul>
Philipp Schradere279e1a2022-03-15 22:20:10 -0700366
Philipp Schrader817cce32022-03-26 15:00:00 -0700367 <h4>Climb</h4>
368 <ul>
369 <li>Level: {{level | levelToString}}</li>
370 <li>Comments: {{comment}}</li>
371 </ul>
372
373 <h4>Other</h4>
374 <ul>
375 <li>Defense Played On Rating: {{defensePlayedOnScore}}</li>
376 <li>Defense Played Rating: {{defensePlayedScore}}</li>
377 <li>No show: {{noShow}}</li>
378 <li>Never moved: {{neverMoved}}</li>
379 <li>Battery died: {{batteryDied}}</li>
380 <li>Broke (mechanically): {{mechanicallyBroke}}</li>
381 <li>Lost coms: {{lostComs}}</li>
382 </ul>
383
384 <span class="error_message">{{ errorMessage }}</span>
385
386 <div class="buttons">
387 <button class="btn btn-primary" (click)="prevSection()">Back</button>
388 <button class="btn btn-primary" (click)="nextSection()">Submit</button>
Philipp Schrader80587432022-03-05 15:41:22 -0800389 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700390 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800391
Philipp Schrader817cce32022-03-26 15:00:00 -0700392 <div *ngSwitchCase="'Success'" id="success" class="container-fluid">
393 <span>Successfully submitted scouting data.</span>
394 <div class="buttons justify-content-end">
395 <button class="btn btn-primary" (click)="nextSection()">Continue</button>
Philipp Schrader80587432022-03-05 15:41:22 -0800396 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -0700397 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800398</ng-container>