Skip to content

Commit 444bb3b

Browse files
committed
fix: update types of fetched lap data
1 parent 52ac2fb commit 444bb3b

File tree

6 files changed

+71
-89
lines changed

6 files changed

+71
-89
lines changed

packages/client/src/components/config/lapTableConfig.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { createColumnHelper } from "@tanstack/react-table";
99
const columnHelper = createColumnHelper<IFormattedLapData>();
1010

1111
export const columns = [
12-
columnHelper.accessor("data.timeStamp", {
12+
columnHelper.accessor("TimeStamp", {
1313
cell: (info) => info.getValue(),
1414
header: "Time Stamp",
1515
sortingFn: (rowA, rowB, columnId) => {
@@ -36,44 +36,44 @@ export const columns = [
3636
return dateB - dateA;
3737
},
3838
}),
39-
columnHelper.accessor("data.ampHours", {
39+
columnHelper.accessor("AmpHours", {
4040
cell: (info) => info.getValue(),
4141
header: "Amp Hours",
4242
}),
43-
columnHelper.accessor("data.averagePackCurrent", {
43+
columnHelper.accessor("AveragePackCurrent", {
4444
cell: (info) => info.getValue(),
4545
header: "Average Pack Current",
4646
}),
47-
columnHelper.accessor("data.averageSpeed", {
47+
columnHelper.accessor("AverageSpeed", {
4848
cell: (info) => info.getValue(),
4949
header: "Average Speed",
5050
}),
51-
columnHelper.accessor("data.batterySecondsRemaining", {
51+
columnHelper.accessor("BatterySecondsRemaining", {
5252
cell: (info) => info.getValue(),
5353
header: "Battery Seconds Remaining",
5454
}),
55-
columnHelper.accessor("data.distance", {
55+
columnHelper.accessor("Distance", {
5656
cell: (info) => info.getValue(),
5757
header: "Distance",
5858
}),
59-
columnHelper.accessor("data.energyConsumed", {
59+
columnHelper.accessor("EnergyConsumed", {
6060
cell: (info) => info.getValue(),
6161
header: "Energy Consumed",
6262
}),
63-
columnHelper.accessor("data.lapTime", {
63+
columnHelper.accessor("LapTime", {
6464
cell: (info) => info.getValue(),
6565
header: "Lap Time",
6666
}),
67-
columnHelper.accessor("data.netPowerOut", {
67+
columnHelper.accessor("NetPowerOut", {
6868
cell: (info) => info.getValue(),
6969
header: "Net Power Out",
7070
}),
7171

72-
columnHelper.accessor("data.totalPowerIn", {
72+
columnHelper.accessor("TotalPowerIn", {
7373
cell: (info) => info.getValue(),
7474
header: "Total Power In",
7575
}),
76-
columnHelper.accessor("data.totalPowerOut", {
76+
columnHelper.accessor("TotalPowerOut", {
7777
cell: (info) => info.getValue(),
7878
header: "Total Power Out",
7979
}),

packages/client/src/components/molecules/RaceTabMolecules/RaceTabTable.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default function RaceTabTable({
1717
<tr key={headerGroup.id}>
1818
{headerGroup.headers.map((header) => (
1919
<th
20-
className={`sticky top-0 z-10 w-24 border-b-2 border-r-2 border-t-2 border-helios bg-slate px-4 py-2 text-center text-xs font-medium uppercase text-helios first:border-l-2 dark:bg-lightergrey ${header.id === "data_timeStamp" ? "left-0 z-50" : ""}`}
20+
className={`sticky top-0 z-10 w-24 border-b-2 border-r-2 border-t-2 border-helios bg-slate px-4 py-2 text-center text-xs font-medium uppercase text-helios first:border-l-2 dark:bg-lightergrey ${header.id === "TimeStamp" ? "left-0 z-50" : ""}`}
2121
key={header.id}
2222
>
2323
{header.isPlaceholder
@@ -50,7 +50,7 @@ export default function RaceTabTable({
5050
>
5151
{row.getVisibleCells().map((cell) => (
5252
<td
53-
className={`text-gray-900 w-fullpx-4 sticky w-24 border-b-2 border-r-2 border-helios py-2 text-center text-sm first:border-l-2 dark:text-white ${cell.id.includes("data_timeStamp") ? "left-0 z-10" : ""}`}
53+
className={`text-gray-900 w-fullpx-4 sticky w-24 border-b-2 border-r-2 border-helios py-2 text-center text-sm first:border-l-2 dark:text-white ${cell.id.includes("TimeStamp") ? "left-0 z-10" : ""}`}
5454
key={cell.id}
5555
>
5656
{flexRender(cell.column.columnDef.cell, cell.getContext())}

packages/client/src/components/tabs/RaceTab.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ function RaceTab() {
3636
const [Rfid, setDriverRFID] = useState<number | string>("");
3737
const [driverData, setDriverData] = useState<IDriverData[]>([]);
3838
const [copy, setCopy] = useState<number>(0);
39-
const { fetchLapData, formatLapData, lapData } = useLapDataStore();
39+
const { formatLapData, lapData } = useLapDataStore();
4040
const [filteredLaps, setFilteredLaps] =
4141
useState<IFormattedLapData[]>(lapData);
4242
const [sorting, setSorting] = useState<SortingState>([
43-
{ desc: false, id: "data_timeStamp" },
43+
{ desc: false, id: "TimeStamp" },
4444
]);
4545

4646
const table = useReactTable({
@@ -50,7 +50,7 @@ function RaceTab() {
5050
getCoreRowModel: getCoreRowModel(),
5151
getSortedRowModel: getSortedRowModel(),
5252
initialState: {
53-
sorting: [{ desc: false, id: "data_timeStamp" }],
53+
sorting: [{ desc: false, id: "TimeStamp" }],
5454
},
5555
onSortingChange: setSorting,
5656
state: { sorting },
@@ -120,7 +120,6 @@ function RaceTab() {
120120

121121
// fetching driver names when component mounts
122122
useEffect(() => {
123-
fetchLapData();
124123
fetchDriverNames()
125124
.then((response) => {
126125
const driverData = response.data.map((driver: IDriverData) => ({

packages/client/src/stores/useLapData.ts

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,25 @@ import { notifications } from "@mantine/notifications";
55
import { IFormattedLapData, ILapData, prodURL } from "@shared/helios-types";
66

77
export const formatLapData = (lapPacket: ILapData): IFormattedLapData => ({
8+
AmpHours: parseFloat(lapPacket.AmpHours.toFixed(2)),
9+
AveragePackCurrent: parseFloat(lapPacket.AveragePackCurrent.toFixed(2)),
10+
AverageSpeed: parseFloat(lapPacket.AverageSpeed.toFixed(2)),
11+
BatterySecondsRemaining: parseFloat(
12+
lapPacket.BatterySecondsRemaining.toFixed(2),
13+
),
14+
Distance: parseFloat(lapPacket.Distance.toFixed(2)),
15+
EnergyConsumed: parseFloat(lapPacket.EnergyConsumed.toFixed(2)),
16+
LapTime: parseFloat(lapPacket.LapTime.toFixed(2)),
17+
NetPowerOut: parseFloat(lapPacket.NetPowerOut.toFixed(2)),
818
Rfid: lapPacket.Rfid,
9-
data: {
10-
ampHours: parseFloat(lapPacket.data.ampHours.toFixed(2)),
11-
averagePackCurrent: parseFloat(
12-
lapPacket.data.averagePackCurrent.toFixed(2),
13-
),
14-
averageSpeed: parseFloat(lapPacket.data.averageSpeed.toFixed(2)),
15-
batterySecondsRemaining: parseFloat(
16-
lapPacket.data.batterySecondsRemaining.toFixed(2),
17-
),
18-
distance: parseFloat(lapPacket.data.distance.toFixed(2)),
19-
energyConsumed: parseFloat(lapPacket.data.energyConsumed.toFixed(2)),
20-
lapTime: parseFloat(lapPacket.data.lapTime.toFixed(2)),
21-
netPowerOut: parseFloat(lapPacket.data.netPowerOut.toFixed(2)),
22-
timeStamp: new Date(lapPacket.data.timeStamp).toLocaleString("en-US"),
23-
totalPowerIn: parseFloat(lapPacket.data.totalPowerIn.toFixed(2)),
24-
totalPowerOut: parseFloat(lapPacket.data.totalPowerOut.toFixed(2)),
25-
},
26-
timestamp: lapPacket.timestamp,
19+
TimeStamp: new Date(lapPacket.TimeStamp).toLocaleString("en-US"),
20+
TotalPowerIn: parseFloat(lapPacket.TotalPowerIn.toFixed(2)),
21+
TotalPowerOut: parseFloat(lapPacket.TotalPowerOut.toFixed(2)),
2722
});
2823

2924
interface LapDataState {
3025
formatLapData: (lapPacket: ILapData) => IFormattedLapData;
3126
lapData: IFormattedLapData[];
32-
setLapData: (data: IFormattedLapData[]) => void;
3327
addLapData: (data: IFormattedLapData) => void;
3428
clearLapData: () => void;
3529
fetchLapData: () => Promise<void>;
@@ -51,9 +45,9 @@ export const useLapDataStore = create<LapDataState>((set) => ({
5145
throw new Error("Invalid API response format");
5246
}
5347

54-
set({
55-
lapData: response.data.data.map(formatLapData),
56-
});
48+
const formattedLaps: IFormattedLapData[] =
49+
response.data.data.map(formatLapData);
50+
set({ lapData: formattedLaps });
5751
} catch (error) {
5852
notifications.show({
5953
color: "red",
@@ -64,5 +58,4 @@ export const useLapDataStore = create<LapDataState>((set) => ({
6458
},
6559
formatLapData: formatLapData,
6660
lapData: [],
67-
setLapData: (data) => set({ lapData: data }),
6861
}));

packages/server/src/controllers/LapController/LapController.ts

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ const logger = createLightweightApplicationLogger("LapController.ts");
2828
*
2929
* this controller is responsible for handling lap data, including:
3030
* - setting the finish line location (do we even do this anymore)
31-
* - handling sending lap data to dynamo based on if a lap has been finished or not
31+
* - handling sending lap data to timescale based on if a lap has been finished or not
3232
* - also has other helper functions that are used to calculate the lap data
3333
*
3434
* basically the main thing function is handlePacket() which creates a lapData object
35-
* and sends it to dynamo only when a lap has been completed
35+
* and sends it to timescale only when a lap has been completed
3636
*
3737
* then handleLapData() is called to broadcast the lap data to the frontend for real time changes
38-
* as well as to insert the lap data into the dynamo database
38+
* as well as to insert the lap data into the timescale database
3939
*/
4040
export class LapController implements LapControllerType {
4141
public lastLapPackets: ITelemetryData[] = [] as ITelemetryData[];
@@ -208,25 +208,21 @@ export class LapController implements LapControllerType {
208208
);
209209

210210
const lapData: ILapData = {
211+
AmpHours: amphoursValue, // NOTE THIS IS THE LATEST BATTERY PACK AMPHOURS
212+
AveragePackCurrent: averagePackCurrent,
213+
AverageSpeed: this.calculateAverageLapSpeed(this.lastLapPackets),
214+
BatterySecondsRemaining: this.getSecondsRemainingUntilChargedOrDepleted(
215+
amphoursValue,
216+
averagePackCurrent,
217+
),
218+
Distance: this.getDistanceTravelled(this.lastLapPackets), // CHANGE THIS BASED ON ODOMETER/MOTOR INDEX OR CHANGE TO ITERATE
219+
EnergyConsumed: this.getEnergyConsumption(this.lastLapPackets),
220+
LapTime: this.calculateLapTime(this.lastLapPackets),
221+
NetPowerOut: this.netPower(this.lastLapPackets),
211222
Rfid: packet.Pi.Rfid,
212-
data: {
213-
ampHours: amphoursValue, // NOTE THIS IS THE LATEST BATTERY PACK AMPHOURS
214-
averagePackCurrent: averagePackCurrent,
215-
averageSpeed: this.calculateAverageLapSpeed(this.lastLapPackets),
216-
batterySecondsRemaining:
217-
this.getSecondsRemainingUntilChargedOrDepleted(
218-
amphoursValue,
219-
averagePackCurrent,
220-
),
221-
distance: this.getDistanceTravelled(this.lastLapPackets), // CHANGE THIS BASED ON ODOMETER/MOTOR INDEX OR CHANGE TO ITERATE
222-
energyConsumed: this.getEnergyConsumption(this.lastLapPackets),
223-
lapTime: this.calculateLapTime(this.lastLapPackets),
224-
netPowerOut: this.netPower(this.lastLapPackets),
225-
timeStamp: packet.TimeStamp,
226-
totalPowerIn: this.getAveragePowerIn(this.lastLapPackets),
227-
totalPowerOut: this.getAveragePowerOut(this.lastLapPackets),
228-
},
229-
timestamp: packet.TimeStamp,
223+
TimeStamp: packet.TimeStamp,
224+
TotalPowerIn: this.getAveragePowerIn(this.lastLapPackets),
225+
TotalPowerOut: this.getAveragePowerOut(this.lastLapPackets),
230226
};
231227

232228
logger.info("Lap data inserted into database: ", lapData);

packages/shared/src/types.ts

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -419,21 +419,18 @@ export interface IDriverData {
419419
}
420420

421421
export interface ILapData {
422-
data: {
423-
ampHours: number;
424-
averagePackCurrent: number;
425-
averageSpeed: number;
426-
batterySecondsRemaining: number;
427-
distance: number;
428-
energyConsumed: number;
429-
lapTime: number;
430-
netPowerOut: number;
431-
timeStamp: number;
432-
totalPowerIn: number;
433-
totalPowerOut: number;
434-
};
422+
AmpHours: number;
423+
AveragePackCurrent: number;
424+
AverageSpeed: number;
425+
BatterySecondsRemaining: number;
426+
Distance: number;
427+
EnergyConsumed: number;
428+
LapTime: number;
429+
NetPowerOut: number;
430+
TimeStamp: number;
431+
TotalPowerIn: number;
432+
TotalPowerOut: number;
435433
Rfid: string;
436-
timestamp: number;
437434
}
438435

439436
export class LapData {
@@ -494,19 +491,16 @@ export interface IPlaybackDynamoResponse {
494491
}
495492

496493
export interface IFormattedLapData {
497-
data: {
498-
ampHours: number;
499-
averagePackCurrent: number;
500-
averageSpeed: number;
501-
batterySecondsRemaining: number;
502-
distance: number;
503-
energyConsumed: number;
504-
lapTime: number;
505-
netPowerOut: number;
506-
timeStamp: string;
507-
totalPowerIn: number;
508-
totalPowerOut: number;
509-
};
510-
timestamp: number;
494+
AmpHours: number;
495+
AveragePackCurrent: number;
496+
AverageSpeed: number;
497+
BatterySecondsRemaining: number;
498+
Distance: number;
499+
EnergyConsumed: number;
500+
LapTime: number;
501+
NetPowerOut: number;
502+
TimeStamp: string;
503+
TotalPowerIn: number;
504+
TotalPowerOut: number;
511505
Rfid: string;
512506
}

0 commit comments

Comments
 (0)