blob: ab3c464d1919df33f786b1eaa52273e6a06726c5 [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>
Filip Kujawa0ef334c2023-02-20 19:42:45 -080052 <button class="btn btn-primary" (click)="changeSectionTo('Init');">
53 Next
54 </button>
Philipp Schrader817cce32022-03-26 15:00:00 -070055 </div>
56 </div>
57
Filip Kujawa0ef334c2023-02-20 19:42:45 -080058 <div *ngSwitchCase="'Init'" id="init" class="container-fluid">
59 <h2>Select Starting Position</h2>
Filip Kujawa1d9add92023-03-03 13:14:40 -080060 <img
61 id="field_starting_positions_image"
62 src="/sha256/b71def525fb78486617a8b350c0ba6907e8ea25f78d4084a932cba8ae922528c/pictures/field/field.jpg"
63 alt="Starting Positions Image"
64 class="img-fluid"
65 />
Filip Kujawa0ef334c2023-02-20 19:42:45 -080066 <div *ngFor="let i of [1, 2, 3, 4]">
67 <label>
Philipp Schrader817cce32022-03-26 15:00:00 -070068 <input
69 type="radio"
Filip Kujawa0ef334c2023-02-20 19:42:45 -080070 name="radio-group"
71 [value]="i"
72 (change)="selectedValue = $event.target.value"
Philipp Schrader817cce32022-03-26 15:00:00 -070073 />
Filip Kujawa0ef334c2023-02-20 19:42:45 -080074 {{ i }}
Philipp Schrader817cce32022-03-26 15:00:00 -070075 </label>
Filip Kujawa0ef334c2023-02-20 19:42:45 -080076 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -070077 <div class="buttons">
Filip Kujawa375aaac2023-02-28 21:43:47 -080078 <!-- Creates a responsive stack of full-width, "block buttons". -->
79 <div class="d-grid gap-2">
80 <button
81 class="btn btn-primary"
82 [disabled]="!selectedValue"
83 (click)="changeSectionTo('Pickup'); addAction({type: 'startMatchAction', position: selectedValue});"
84 >
85 Start Match
86 </button>
87 </div>
Philipp Schrader817cce32022-03-26 15:00:00 -070088 </div>
89 </div>
90
Filip Kujawa0ef334c2023-02-20 19:42:45 -080091 <div *ngSwitchCase="'Pickup'" id="PickUp" class="container-fluid">
Filip Kujawa375aaac2023-02-28 21:43:47 -080092 <div class="d-grid gap-2">
93 <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
94 <button
95 class="btn btn-warning"
96 (click)="changeSectionTo('Place'); addAction({type: 'pickupObjectAction', objectType: ObjectType.kCone});"
97 >
98 CONE
99 </button>
100 <button
101 class="btn btn-primary"
102 (click)="changeSectionTo('Place'); addAction({type: 'pickupObjectAction', objectType: ObjectType.kCube});"
103 >
104 CUBE
105 </button>
106 <!-- 'Balancing' during auto. -->
107 <div *ngIf="autoPhase" class="d-grid gap-2">
108 <label>
109 <input type="checkbox" (change)="dockedValue = $event.target.value" />
110 Docked
111 </label>
112 <label>
113 <input
114 type="checkbox"
115 (change)="engagedValue = $event.target.value"
116 />
117 Engaged
118 </label>
119 <br />
120 <button
121 class="btn btn-info"
122 (click)="addAction({type: 'autoBalanceAction', docked: dockedValue, engaged: engagedValue});"
123 >
124 Submit Balancing
125 </button>
126 </div>
127 <button
128 *ngIf="autoPhase"
129 class="btn btn-info"
130 (click)="autoPhase = false; addAction({type: 'endAutoPhase'});"
131 >
132 Start Teleop
133 </button>
134 <button
135 *ngIf="!autoPhase"
136 class="btn btn-info"
137 (click)="changeSectionTo('Endgame')"
138 >
139 Endgame
140 </button>
141 </div>
142 </div>
143
144 <div *ngSwitchCase="'Place'" id="Place" class="container-fluid">
145 <div class="d-grid gap-2">
146 <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
147 <button
148 class="btn btn-success"
149 (click)="changeSectionTo('Pickup'); addAction({type: 'placeObjectAction', scoreLevel: ScoreLevel.kHigh});"
150 >
151 HIGH
152 </button>
153 <button
154 class="btn btn-warning"
155 (click)="changeSectionTo('Pickup'); addAction({type: 'placeObjectAction', scoreLevel: ScoreLevel.kMiddle});"
156 >
157 MID
158 </button>
159 <button
160 class="btn btn-danger"
161 (click)="changeSectionTo('Pickup'); addAction({type: 'placeObjectAction', scoreLevel: ScoreLevel.kLow});"
162 >
163 LOW
164 </button>
165 <!-- 'Balancing' during auto. -->
166 <div *ngIf="autoPhase" class="d-grid gap-2">
167 <label>
168 <input type="checkbox" (change)="dockedValue = $event.target.value" />
169 Docked
170 </label>
171 <label>
172 <input
173 type="checkbox"
174 (change)="engagedValue = $event.target.value"
175 />
176 Engaged
177 </label>
178 <br />
179 <button
180 class="btn btn-info"
181 (click)="addAction({type: 'autoBalanceAction', docked: dockedValue, engaged: engagedValue});"
182 >
183 Submit Balancing
184 </button>
185 </div>
186 <button
187 *ngIf="autoPhase"
188 class="btn btn-info"
189 (click)="autoPhase = false; addAction({type: 'endAutoPhase'});"
190 >
191 Start Teleop
192 </button>
193 <button
194 *ngIf="!autoPhase"
195 class="btn btn-info"
196 (click)="changeSectionTo('Endgame')"
197 >
198 Endgame
199 </button>
200 </div>
201 </div>
202
203 <div *ngSwitchCase="'Endgame'" id="Endgame" class="container-fluid">
204 <div class="d-grid gap-2">
205 <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
Filip Kujawa4413a592023-03-01 10:54:34 -0800206 <label>
207 <input type="checkbox" (change)="dockedValue = $event.target.value" />
208 Docked
209 </label>
210 <label>
211 <input type="checkbox" (change)="engagedValue = $event.target.value" />
212 Engaged
213 </label>
Filip Kujawa4413a592023-03-01 10:54:34 -0800214 <button
Filip Kujawa375aaac2023-02-28 21:43:47 -0800215 *ngIf="!autoPhase"
Filip Kujawa4413a592023-03-01 10:54:34 -0800216 class="btn btn-info"
Filip Kujawa375aaac2023-02-28 21:43:47 -0800217 (click)="changeSectionTo('Review and Submit'); addAction({type: 'endMatchAction', docked: dockedValue, engaged: engagedValue});"
Filip Kujawa4413a592023-03-01 10:54:34 -0800218 >
Filip Kujawa375aaac2023-02-28 21:43:47 -0800219 End Match
Filip Kujawa4413a592023-03-01 10:54:34 -0800220 </button>
221 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800222 </div>
223
224 <div *ngSwitchCase="'Review and Submit'" id="Review" class="container-fluid">
Filip Kujawa375aaac2023-02-28 21:43:47 -0800225 <div class="d-grid gap-2">
226 <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
227 <button
228 *ngIf="!autoPhase"
229 class="btn btn-warning"
230 (click)="submitActions();"
231 >
232 Submit
233 </button>
234 </div>
Filip Kujawa0ef334c2023-02-20 19:42:45 -0800235 </div>
236
237 <div *ngSwitchCase="'Success'" id="Success" class="container-fluid">
238 <h2>Successfully submitted data.</h2>
Philipp Schrader817cce32022-03-26 15:00:00 -0700239 </div>
Philipp Schrader80587432022-03-05 15:41:22 -0800240</ng-container>