Merge "Scouting: Add DeleteFromStats() to db.go"
diff --git a/scouting/webserver/requests/messages/submit_actions.fbs b/scouting/webserver/requests/messages/submit_actions.fbs
index 863e2fc..dfb980f 100644
--- a/scouting/webserver/requests/messages/submit_actions.fbs
+++ b/scouting/webserver/requests/messages/submit_actions.fbs
@@ -15,6 +15,11 @@
kHigh
}
+table AutoBalanceAction {
+ docked:bool (id:0);
+ engaged:bool (id:1);
+}
+
table PickupObjectAction {
object_type:ObjectType (id:0);
auto:bool (id:1);
@@ -36,6 +41,7 @@
}
union ActionType {
+ AutoBalanceAction,
StartMatchAction,
PickupObjectAction,
PlaceObjectAction,
diff --git a/scouting/www/entry/entry.component.css b/scouting/www/entry/entry.component.css
index a78a00a..b41cb22 100644
--- a/scouting/www/entry/entry.component.css
+++ b/scouting/www/entry/entry.component.css
@@ -2,11 +2,6 @@
padding: 10px;
}
-.buttons {
- display: flex;
- justify-content: space-between;
-}
-
textarea {
width: 350px;
height: 180px;
diff --git a/scouting/www/entry/entry.component.ts b/scouting/www/entry/entry.component.ts
index 9aae0d1..80f7e6a 100644
--- a/scouting/www/entry/entry.component.ts
+++ b/scouting/www/entry/entry.component.ts
@@ -15,6 +15,7 @@
ScoreLevel,
SubmitActions,
StartMatchAction,
+ AutoBalanceAction,
PickupObjectAction,
PlaceObjectAction,
RobotDeathAction,
@@ -53,6 +54,12 @@
position: number;
}
| {
+ type: 'autoBalanceAction';
+ timestamp?: number;
+ docked: boolean;
+ engaged: boolean;
+ }
+ | {
type: 'pickupObjectAction';
timestamp?: number;
objectType: ObjectType;
diff --git a/scouting/www/entry/entry.ng.html b/scouting/www/entry/entry.ng.html
index ec95f39..ca04fba 100644
--- a/scouting/www/entry/entry.ng.html
+++ b/scouting/www/entry/entry.ng.html
@@ -69,110 +69,163 @@
</label>
</div>
<div class="buttons">
- <button
- class="btn btn-primary"
- [disabled]="!selectedValue"
- (click)="changeSectionTo('Pickup'); addAction({type: 'startMatchAction', position: selectedValue});"
- >
- Start Match
- </button>
+ <!-- Creates a responsive stack of full-width, "block buttons". -->
+ <div class="d-grid gap-2">
+ <button
+ class="btn btn-primary"
+ [disabled]="!selectedValue"
+ (click)="changeSectionTo('Pickup'); addAction({type: 'startMatchAction', position: selectedValue});"
+ >
+ Start Match
+ </button>
+ </div>
</div>
</div>
<div *ngSwitchCase="'Pickup'" id="PickUp" class="container-fluid">
- <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
- <button
- class="btn btn-warning"
- (click)="changeSectionTo('Place'); addAction({type: 'pickupObjectAction', objectType: ObjectType.kCone});"
- >
- CONE
- </button>
- <button
- class="btn btn-primary"
- (click)="changeSectionTo('Place'); addAction({type: 'pickupObjectAction', objectType: ObjectType.kCube});"
- >
- CUBE
- </button>
- <button
- *ngIf="autoPhase"
- class="btn btn-info"
- (click)="autoPhase = false; addAction({type: 'endAutoPhase'});"
- >
- Start Teleop
- </button>
- <button
- *ngIf="!autoPhase"
- class="btn btn-info"
- (click)="changeSectionTo('Endgame')"
- >
- Endgame
- </button>
+ <div class="d-grid gap-2">
+ <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
+ <button
+ class="btn btn-warning"
+ (click)="changeSectionTo('Place'); addAction({type: 'pickupObjectAction', objectType: ObjectType.kCone});"
+ >
+ CONE
+ </button>
+ <button
+ class="btn btn-primary"
+ (click)="changeSectionTo('Place'); addAction({type: 'pickupObjectAction', objectType: ObjectType.kCube});"
+ >
+ CUBE
+ </button>
+ <!-- 'Balancing' during auto. -->
+ <div *ngIf="autoPhase" class="d-grid gap-2">
+ <label>
+ <input type="checkbox" (change)="dockedValue = $event.target.value" />
+ Docked
+ </label>
+ <label>
+ <input
+ type="checkbox"
+ (change)="engagedValue = $event.target.value"
+ />
+ Engaged
+ </label>
+ <br />
+ <button
+ class="btn btn-info"
+ (click)="addAction({type: 'autoBalanceAction', docked: dockedValue, engaged: engagedValue});"
+ >
+ Submit Balancing
+ </button>
+ </div>
+ <button
+ *ngIf="autoPhase"
+ class="btn btn-info"
+ (click)="autoPhase = false; addAction({type: 'endAutoPhase'});"
+ >
+ Start Teleop
+ </button>
+ <button
+ *ngIf="!autoPhase"
+ class="btn btn-info"
+ (click)="changeSectionTo('Endgame')"
+ >
+ Endgame
+ </button>
+ </div>
</div>
<div *ngSwitchCase="'Place'" id="Place" class="container-fluid">
- <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
- <button
- class="btn btn-success"
- (click)="changeSectionTo('Pickup'); addAction({type: 'placeObjectAction', scoreLevel: ScoreLevel.kHigh});"
- >
- HIGH
- </button>
- <button
- class="btn btn-warning"
- (click)="changeSectionTo('Pickup'); addAction({type: 'placeObjectAction', scoreLevel: ScoreLevel.kMiddle});"
- >
- MID
- </button>
- <button
- class="btn btn-danger"
- (click)="changeSectionTo('Pickup'); addAction({type: 'placeObjectAction', scoreLevel: ScoreLevel.kLow});"
- >
- LOW
- </button>
- <button
- *ngIf="autoPhase"
- class="btn btn-info"
- (click)="autoPhase = false; addAction({type: 'endAutoPhase'});"
- >
- Start Teleop
- </button>
- <button
- *ngIf="!autoPhase"
- class="btn btn-info"
- (click)="changeSectionTo('Endgame')"
- >
- Endgame
- </button>
+ <div class="d-grid gap-2">
+ <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
+ <button
+ class="btn btn-success"
+ (click)="changeSectionTo('Pickup'); addAction({type: 'placeObjectAction', scoreLevel: ScoreLevel.kHigh});"
+ >
+ HIGH
+ </button>
+ <button
+ class="btn btn-warning"
+ (click)="changeSectionTo('Pickup'); addAction({type: 'placeObjectAction', scoreLevel: ScoreLevel.kMiddle});"
+ >
+ MID
+ </button>
+ <button
+ class="btn btn-danger"
+ (click)="changeSectionTo('Pickup'); addAction({type: 'placeObjectAction', scoreLevel: ScoreLevel.kLow});"
+ >
+ LOW
+ </button>
+ <!-- 'Balancing' during auto. -->
+ <div *ngIf="autoPhase" class="d-grid gap-2">
+ <label>
+ <input type="checkbox" (change)="dockedValue = $event.target.value" />
+ Docked
+ </label>
+ <label>
+ <input
+ type="checkbox"
+ (change)="engagedValue = $event.target.value"
+ />
+ Engaged
+ </label>
+ <br />
+ <button
+ class="btn btn-info"
+ (click)="addAction({type: 'autoBalanceAction', docked: dockedValue, engaged: engagedValue});"
+ >
+ Submit Balancing
+ </button>
+ </div>
+ <button
+ *ngIf="autoPhase"
+ class="btn btn-info"
+ (click)="autoPhase = false; addAction({type: 'endAutoPhase'});"
+ >
+ Start Teleop
+ </button>
+ <button
+ *ngIf="!autoPhase"
+ class="btn btn-info"
+ (click)="changeSectionTo('Endgame')"
+ >
+ Endgame
+ </button>
+ </div>
</div>
<div *ngSwitchCase="'Endgame'" id="Endgame" class="container-fluid">
- <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
- <label>
- <input type="checkbox" (change)="dockedValue = $event.target.value" />
- Docked
- </label>
- <label>
- <input type="checkbox" (change)="engagedValue = $event.target.value" />
- Engaged
- </label>
- <button
- *ngIf="!autoPhase"
- class="btn btn-info"
- (click)="changeSectionTo('Review and Submit'); addAction({type: 'endMatchAction', docked: dockedValue, engaged: engagedValue});"
- >
- End Match
- </button>
+ <div class="d-grid gap-2">
+ <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
+ <label>
+ <input type="checkbox" (change)="dockedValue = $event.target.value" />
+ Docked
+ </label>
+ <label>
+ <input type="checkbox" (change)="engagedValue = $event.target.value" />
+ Engaged
+ </label>
+ <button
+ *ngIf="!autoPhase"
+ class="btn btn-info"
+ (click)="changeSectionTo('Review and Submit'); addAction({type: 'endMatchAction', docked: dockedValue, engaged: engagedValue});"
+ >
+ End Match
+ </button>
+ </div>
</div>
<div *ngSwitchCase="'Review and Submit'" id="Review" class="container-fluid">
- <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
- <button
- *ngIf="!autoPhase"
- class="btn btn-warning"
- (click)="submitActions();"
- >
- Submit
- </button>
+ <div class="d-grid gap-2">
+ <button class="btn btn-danger" (click)="undoLastAction()">UNDO</button>
+ <button
+ *ngIf="!autoPhase"
+ class="btn btn-warning"
+ (click)="submitActions();"
+ >
+ Submit
+ </button>
+ </div>
</div>
<div *ngSwitchCase="'Success'" id="Success" class="container-fluid">