Skip to content

Commit 8ccec37

Browse files
updated docs for pinia (#8)
* updated docs for pinia * Moved old docs to archived * Updated Map,Mission,Telemetry typing and archived old docs * fix: Cleaned up structure of state management pages --------- Co-authored-by: PlainOlSoapBar <86759315+PlainOlSoapBar@users.noreply.github.com>
1 parent 1b10a1f commit 8ccec37

File tree

12 files changed

+771
-325
lines changed

12 files changed

+771
-325
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
---
2+
title: Map
3+
---
4+
5+
The Map Store is responsible for managing the states of the Leaflet map and keep-in keep-out zones.
6+
7+
The origin of the map `DEFAULT_MAP_ORIGIN` is set to `(33.932573934575075, -117.63059569114814)`, which is where Demo Day and the [Pomona Valley Model Airplane Club (Prado Airpark)](https://maps.app.goo.gl/EM29k7wvYRPZL1Ee9) are located.
8+
9+
## Types and Interfaces
10+
11+
```ts
12+
// src/lib/MapStore.types.ts
13+
export interface LayerProperties {
14+
color: string;
15+
visibility: boolean;
16+
}
17+
18+
export interface ZoneLayer {
19+
layer: L.Polygon;
20+
properties: LayerProperties;
21+
}
22+
23+
export interface StageLayer {
24+
stageId: number;
25+
polygon: ZoneLayer;
26+
properties: LayerProperties;
27+
}
28+
29+
export interface VehicleLayers {
30+
stages: Record<number, StageLayer>;
31+
}
32+
33+
export interface MissionLayers {
34+
vehicles: Record<VehicleEnum, VehicleLayers>;
35+
zones: {
36+
KeepIn: (ZoneLayer | {})[];
37+
KeepOut: (ZoneLayer | {})[];
38+
};
39+
}
40+
41+
export interface LayerTracking {
42+
missions: Record<number, MissionLayers>;
43+
}
44+
45+
export type LeafletMap = InstanceType<typeof LMap>;
46+
export interface LeafletMapGeoman extends LeafletMap {
47+
leafletObject: LeafletMap['leafletObject'] & L.Map;
48+
}
49+
50+
export interface MapStore {
51+
map: LeafletMapGeoman | null;
52+
mapOrigin: LatLng;
53+
markerCoord: LatLngExpression;
54+
layers: L.FeatureGroup<L.Polygon>;
55+
localTileURL: string;
56+
layerTracking: LayerTracking;
57+
vehicleMarkers: Record<VehicleEnum, LatLngExpression>;
58+
59+
// Map Management
60+
updateMapRef: (ref: LeafletMapGeoman | null) => void;
61+
toggleDrawMode: () => void;
62+
rerenderLayers: () => void;
63+
logMapStore: () => void;
64+
updateVehicleMarker: (vehicle: VehicleEnum, lat: number, lng: number) => void;
65+
updateMarkerCoords: (vehicle: VehicleEnum, coords: LatLngExpression) => void;
66+
getVehicleMarkers: () => Record<VehicleEnum, LatLngExpression>;
67+
68+
// Layer Management
69+
updateStagePolygon: (missionId: number, vehicle: VehicleEnum, stageId: number) => void;
70+
updateZonePolygon: (missionId: number, type: ZoneType, zoneIndex: number) => void;
71+
removeStageLayer: (missionId: number, vehicle: VehicleEnum, stageId: number) => void;
72+
getStageLayer: (missionId: number, vehicle: VehicleEnum, stageId: number) => StageLayer | undefined;
73+
getZoneLayers: (missionId: number, type: ZoneType) => ZoneLayer[];
74+
setZoneLayerVisibility: (missionId: number, type: ZoneType, zoneIndex: number) => void;
75+
setStageLayerVisibility: (missionId: number, vehicle: VehicleEnum, stageId: number) => void;
76+
updateLayerTracking: (state: MissionsStruct) => void;
77+
}
78+
```
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
title: Mission
3+
---
4+
5+
The Mission Store is responsible for managing the states of data related to vehicles, missions, stages, and zones.
6+
7+
## Types and Interfaces
8+
9+
```ts
10+
// src/lib/MissionStore.types.ts
11+
export type ViewType = 'mission' | 'vehicle' | 'stage' | 'zone';
12+
export interface ViewState {
13+
currentView: ViewType;
14+
currentMissionId: number | null;
15+
currentVehicleName: VehicleEnum | null;
16+
currentStageId: number | null;
17+
}
18+
19+
export interface MissionStore {
20+
// Backend State
21+
state: MissionsStruct;
22+
syncRustState: (state: MissionsStruct) => void;
23+
24+
// Frontend State
25+
view: ViewState;
26+
27+
// METHODS
28+
29+
// Frontend State
30+
setCurrentView: (view: ViewType) => void;
31+
setCurrentMissionID: (missionId: number | null) => void;
32+
setCurrentVehicleName: (vehicleName: VehicleEnum | null) => void;
33+
setCurrentStageID: (stageId: number | null) => void;
34+
35+
// Mission Data
36+
getAllMissions: () => MissionStruct[];
37+
getMissionData: (missionId: number) => MissionStruct | undefined;
38+
renameMission: (missionId: number, missionName: string) => Promise<null>;
39+
createNewMission: (missionName: string) => Promise<null>;
40+
deleteMission: (missionId: number) => Promise<null>;
41+
startMission: (missionId: number) => Promise<null>;
42+
43+
// Vehicle Data
44+
getVehicleData: (missionId: number, vehicleName: VehicleEnum) => VehicleStruct | undefined;
45+
setAutoMode: (missionId: number, vehicleName: VehicleEnum, isAuto: boolean) => Promise<null>;
46+
47+
// Stage Data
48+
getStageData: (missionId: number, vehicleName: VehicleEnum, stageId: number) => StageStruct | undefined;
49+
addStage: (missionId: number, vehicleName: VehicleEnum) => Promise<null>;
50+
deleteStage: (missionId: number, vehicleName: VehicleEnum, stageId: number) => Promise<null>;
51+
renameStage: (missionId: number, vehicleName: VehicleEnum, stageId: number, stageName: string) => Promise<null>;
52+
transitionStage: (missionId: number, vehicleName: VehicleEnum) => Promise<null>;
53+
updateStageArea: (missionId: number, vehicleName: VehicleEnum, stageId: number, area: GeoCoordinateStruct[]) => Promise<null>;
54+
55+
// Zone Data
56+
getZoneData: (missionId: number, zoneType: ZoneType) => GeoCoordinateStruct[][] | undefined;
57+
addZone: (missionId: number, zoneType: ZoneType) => Promise<null>;
58+
updateZone: (missionId: number, zoneType: ZoneType, zoneIndex: number, polygon: GeoCoordinateStruct[]) => Promise<null>;
59+
deleteZone: (missionId: number, zoneType: ZoneType, zoneIndex: number) => Promise<null>;
60+
}
61+
```
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
title: Telemetry
3+
---
4+
5+
The Telemetry Store is responsible for managing the states of vehicle telemetry data, as well as their coordinates and map markers.
6+
7+
## Types and Interfaces
8+
9+
```ts
10+
// src/lib/TelemetryStore.types.ts
11+
export interface TelemetryStore {
12+
// Backend State
13+
state: VehicleTelemetryData;
14+
syncRustState: (state: VehicleTelemetryData) => void;
15+
16+
// Methods
17+
updateVehicleMarkers: (state: VehicleTelemetryData) => void;
18+
updateVehicleCoords: (vehicle: VehicleEnum, coords: LatLngExpression) => void;
19+
// simulateMovement: () => void;
20+
21+
// Telemetry Data
22+
getTelemetry: () => VehicleTelemetryData;
23+
}
24+
```

0 commit comments

Comments
 (0)