Skip to content

Commit 2f29f43

Browse files
committed
fix stats with different lengths returned
1 parent b5444c3 commit 2f29f43

1 file changed

Lines changed: 52 additions & 34 deletions

File tree

client/src/pages/Strategy.tsx

Lines changed: 52 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,17 @@ function Strategy() {
4343
>([]);
4444
const [telemetryType, setTelemetryType] = useState(localGraph["type"] ?? []);
4545
const [messageNumber, setMessageNumber] = useState(
46-
localGraph["number"] ?? []
46+
localGraph["number"] ?? [],
4747
);
4848
const [dataKey, setDataKey] = useState(localGraph["key"] ?? []);
4949
const [startTime, setStartTime] = useState(
50-
localGraph["start"] ?? "2023-04-16 12:00"
50+
localGraph["start"] ?? "2023-04-16 12:00",
5151
);
5252
const [endTime, setEndTime] = useState(
53-
localGraph["end"] ?? "2023-04-16 12:10"
53+
localGraph["end"] ?? "2023-04-16 12:10",
5454
);
5555
const autoUpdate = JSON.parse(
56-
localStorage.getItem("toggleAutoUpdate") ?? "true"
56+
localStorage.getItem("toggleAutoUpdate") ?? "true",
5757
);
5858
const [regStartTime, setRegStartTime] = useState("2023-04-16 12:00");
5959
const [regEndTime, setRegEndTime] = useState("2023-04-16 12:10");
@@ -78,7 +78,7 @@ function Strategy() {
7878
value: combinedString,
7979
label: combinedString,
8080
};
81-
})
81+
}),
8282
);
8383
const [rawData, setRawData] = useState<any[]>([]);
8484
const [rawData2, setRawData2] = useState<any[]>([]);
@@ -95,6 +95,14 @@ function Strategy() {
9595
]);
9696
var statIsUpdated = [false];
9797

98+
//useEffect(() => {
99+
// console.log(dataKey);
100+
//}, [dataKey]);
101+
//
102+
//useEffect(() => {
103+
// console.log(data);
104+
//}, [data]);
105+
98106
async function fetchData(statIndex: number) {
99107
if (
100108
!localStorage.getItem("username")?.trim() ||
@@ -138,7 +146,7 @@ function Strategy() {
138146
$gte: moment(startTime).utc().format("YYYY-MM-DD HH:mm"),
139147
$lte: moment(endTime).utc().format("YYYY-MM-DD HH:mm"),
140148
},
141-
}
149+
},
142150
);
143151
} else {
144152
result = await getAllModuleItem(
@@ -150,7 +158,7 @@ function Strategy() {
150158
$gte: moment(startTime).utc().format("YYYY-MM-DD HH:mm"),
151159
$lte: moment(endTime).utc().format("YYYY-MM-DD HH:mm"),
152160
},
153-
}
161+
},
154162
);
155163
}
156164
setRawData2(result2);
@@ -170,7 +178,8 @@ function Strategy() {
170178

171179
if (
172180
!localStorage.getItem("username")?.trim() ||
173-
!localStorage.getItem("password")?.trim()
181+
!localStorage.getItem("password")?.trim() ||
182+
!dataKey[latestStatChange]
174183
)
175184
return;
176185

@@ -206,7 +215,7 @@ function Strategy() {
206215
"battVoltage",
207216
response2,
208217
"motorCurrentPkAvg",
209-
dataKey
218+
dataKey,
210219
);
211220
} else {
212221
toTransform = response;
@@ -219,34 +228,34 @@ function Strategy() {
219228
.map((dataPoint) => ({
220229
...dataPoint,
221230
dateStamp: Math.floor(
222-
new Date(dataPoint["createdAt"]).getTime() / granularityMs
231+
new Date(dataPoint["createdAt"]).getTime() / granularityMs,
223232
),
224233
}))
225234
.filter(
226235
(dataPoint) =>
227236
dataPoint[dataKey[latestStatChange]] >= minTrimVal &&
228-
dataPoint[dataKey[latestStatChange]] <= maxTrimVal
237+
dataPoint[dataKey[latestStatChange]] <= maxTrimVal,
229238
);
230239
} else {
231240
filteredResponseTemp = toTransform.map((dataPoint) => ({
232241
...dataPoint,
233242
dateStamp: Math.floor(
234-
new Date(dataPoint["createdAt"]).getTime() / granularityMs
243+
new Date(dataPoint["createdAt"]).getTime() / granularityMs,
235244
),
236245
}));
237246
}
238247

239248
const filteredResponse = filteredResponseTemp.reduce(
240249
(accumulator, currentValue) => {
241250
const duplicateDateStamp = accumulator.find(
242-
(item) => item.dateStamp === currentValue.dateStamp
251+
(item) => item.dateStamp === currentValue.dateStamp,
243252
);
244253
if (!duplicateDateStamp) {
245254
accumulator.push(currentValue);
246255
}
247256
return accumulator;
248257
},
249-
[]
258+
[],
250259
);
251260

252261
let sum = 0;
@@ -277,14 +286,15 @@ function Strategy() {
277286

278287
try {
279288
startTimestamp = new Date(
280-
filteredResponse[0]["dateStamp"] * granularityMs
289+
filteredResponse[0]["dateStamp"] * granularityMs,
281290
).getTime();
282291
} catch {
283292
return;
284293
}
285294

286295
const endTimestamp = new Date(
287-
filteredResponse[filteredResponse.length - 1]["dateStamp"] * granularityMs
296+
filteredResponse[filteredResponse.length - 1]["dateStamp"] *
297+
granularityMs,
288298
).getTime();
289299

290300
const givenTimespan = endTimestamp - startTimestamp;
@@ -302,12 +312,12 @@ function Strategy() {
302312

303313
const regStartStamp = Math.max(
304314
oldRegStartStamp,
305-
(startTimestamp + 3600000) / granularityMs
315+
(startTimestamp + 3600000) / granularityMs,
306316
);
307317

308318
const regEndStamp = Math.min(
309319
oldRegEndStamp,
310-
(endTimestamp + 3600000) / granularityMs
320+
(endTimestamp + 3600000) / granularityMs,
311321
);
312322

313323
let filteredRegResponse;
@@ -316,18 +326,18 @@ function Strategy() {
316326
filteredRegResponse = filteredResponse.filter(
317327
(dataPoint) =>
318328
dataPoint["dateStamp"] >= regStartStamp - 3600000 / granularityMs &&
319-
dataPoint["dateStamp"] <= regEndStamp - 3600000 / granularityMs
329+
dataPoint["dateStamp"] <= regEndStamp - 3600000 / granularityMs,
320330
);
321331
} else {
322332
filteredRegResponse = filteredResponse;
323333
}
324334

325335
const regXValues = filteredRegResponse.map(
326-
(dataPoint) => dataPoint["dateStamp"]
336+
(dataPoint) => dataPoint["dateStamp"],
327337
);
328338

329339
const regYValues = filteredRegResponse.map(
330-
(dataPoint) => dataPoint[dataKey[latestStatChange]]
340+
(dataPoint) => dataPoint[dataKey[latestStatChange]],
331341
);
332342

333343
const lastValue =
@@ -354,7 +364,7 @@ function Strategy() {
354364

355365
let scaledXAxis = Array.from(
356366
{ length: xValues.length * toExtrapolate },
357-
(_, i) => i
367+
(_, i) => i,
358368
);
359369

360370
const xValGap =
@@ -394,7 +404,7 @@ function Strategy() {
394404

395405
if (toExtrapolate > 1) {
396406
setDerivedRegressionEnd(
397-
extendedRegression[extendedRegression.length - 1]["regression"]
407+
extendedRegression[extendedRegression.length - 1]["regression"],
398408
);
399409
} else {
400410
setDerivedRegressionEnd(0);
@@ -406,7 +416,7 @@ function Strategy() {
406416
finalAddition = extendedRegression.map((dataPoint) => ({
407417
...dataPoint,
408418
createdAt: new Date(
409-
dataPoint["dateStamp"] * granularityMs
419+
dataPoint["dateStamp"] * granularityMs,
410420
).toISOString(),
411421
regRange:
412422
dataPoint["dateStamp"] >= regStartStamp - 3600000 / granularityMs &&
@@ -418,19 +428,27 @@ function Strategy() {
418428
finalAddition = extendedRegression.map((dataPoint) => ({
419429
...dataPoint,
420430
createdAt: new Date(
421-
dataPoint["dateStamp"] * granularityMs
431+
dataPoint["dateStamp"] * granularityMs,
422432
).toISOString(),
423433
}));
424434
}
425435

426436
let finalToGraph: any[] = [];
427-
if (latestStatChange == 0) {
437+
if (data.length == 0) {
428438
setData(finalAddition);
429439
} else {
430-
for (let i = 0; i < data.length; i++) {
431-
let dataPoint = data[i];
432-
dataPoint[dataKey[latestStatChange]] =
433-
finalAddition[i][dataKey[latestStatChange]];
440+
for (let i = 0; i < Math.max(data.length, finalAddition.length); i++) {
441+
let dataPoint;
442+
if (i < data.length) {
443+
dataPoint = data[i];
444+
if (i < finalAddition.length) {
445+
dataPoint[dataKey[latestStatChange]] =
446+
finalAddition[i][dataKey[latestStatChange]];
447+
}
448+
} else {
449+
dataPoint = finalAddition[i];
450+
}
451+
434452
finalToGraph.push(dataPoint);
435453
}
436454

@@ -483,7 +501,7 @@ function Strategy() {
483501

484502
if (actionMeta.option) {
485503
const changedIndex = selectedOptions.findIndex(
486-
(option) => option.value === actionMeta.option.value
504+
(option) => option.value === actionMeta.option.value,
487505
);
488506
setLatestStatChange(changedIndex);
489507
} else {
@@ -807,7 +825,7 @@ function Strategy() {
807825
defaultValue={granularityMs}
808826
onBlur={(event) =>
809827
setGranularityMs(
810-
parseInt((event.target as HTMLInputElement).value)
828+
parseInt((event.target as HTMLInputElement).value),
811829
)
812830
}
813831
onFocus={(event) => event.target.select()}
@@ -835,7 +853,7 @@ function Strategy() {
835853
onFocus={(event) => event.target.select()}
836854
onBlur={(event) =>
837855
setMaxTrimVal(
838-
parseInt((event.target as HTMLInputElement).value)
856+
parseInt((event.target as HTMLInputElement).value),
839857
)
840858
}
841859
onKeyDown={(event) => {
@@ -862,7 +880,7 @@ function Strategy() {
862880
defaultValue={minTrimVal}
863881
onBlur={(event) =>
864882
setMinTrimVal(
865-
parseInt((event.target as HTMLInputElement).value)
883+
parseInt((event.target as HTMLInputElement).value),
866884
)
867885
}
868886
onFocus={(event) => event.target.select()}

0 commit comments

Comments
 (0)