Skip to content

Commit f86f5a3

Browse files
committed
SDC indicator Booster
1 parent b1584ba commit f86f5a3

5 files changed

Lines changed: 71 additions & 3 deletions

File tree

control-station/src/components/ImdIndicator/ImdIndicator.module.scss renamed to control-station/src/components/BoolIndicator/BoolIndicator.module.scss

File renamed without changes.

control-station/src/components/ImdIndicator/ImdIndicator.tsx renamed to control-station/src/components/BoolIndicator/ImdIndicator.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { HvscuMeasurements, useGlobalTicker, useMeasurementsStore, usePodDataStore, getPacket } from 'common';
2-
import styles from './ImdIndicator.module.scss';
2+
import styles from './BoolIndicator.module.scss';
33
import thunderIcon from 'assets/svg/thunder-filled.svg'
4-
import { memo, useContext, useState } from 'react';
4+
import { useContext, useState } from 'react';
55
import { LostConnectionContext } from 'services/connections';
66

77
export const ImdIndicator = () => {
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { HvscuCabinetMeasurements, useGlobalTicker, useMeasurementsStore, usePodDataStore } from 'common';
2+
import styles from './BoolIndicator.module.scss';
3+
import thunderIcon from 'assets/svg/thunder-filled.svg'
4+
import { useContext, useState } from 'react';
5+
import { LostConnectionContext } from 'services/connections';
6+
7+
export const SdcIndicator = () => {
8+
const getValue = useMeasurementsStore(
9+
(state) => state.getEnumMeasurementInfo(HvscuCabinetMeasurements.SDC).getUpdate
10+
);
11+
12+
const podData = usePodDataStore((state) => state.podData);
13+
const lostConnection = useContext(LostConnectionContext);
14+
15+
const [hasReceivedData, setHasReceivedData] = useState(false);
16+
const [variant, setVariant] = useState(getValue());
17+
18+
useGlobalTicker(() => {
19+
const boardName = HvscuCabinetMeasurements.SDC.split('/')[0];
20+
21+
const board = podData.boards.find(b => b.name === boardName);
22+
const hasReceivedPackets = board?.packets.some(packet => packet.count > 0) || false;
23+
24+
const currentValue = getValue();
25+
setVariant(currentValue);
26+
27+
if (hasReceivedPackets && !hasReceivedData) {
28+
setHasReceivedData(true);
29+
}
30+
});
31+
32+
const showDisconnected = lostConnection || !hasReceivedData;
33+
const state = showDisconnected ? "DISCONNECTED" : variant;
34+
35+
return (
36+
<div
37+
className={styles.state_indicator}
38+
style={{
39+
backgroundColor: enumToColor[state.toUpperCase()] || enumToColor.default
40+
}}
41+
>
42+
<img className={styles.icon} src={thunderIcon} />
43+
44+
<p className={styles.title}>
45+
{showDisconnected ? 'DISCONNECTED' : enumToText[state.toUpperCase()] || state.toUpperCase()}
46+
</p>
47+
48+
<img className={styles.icon} src={thunderIcon} />
49+
</div>
50+
);
51+
};
52+
53+
const enumToColor: { [key: string]: string } = {
54+
'DISCONNECTED': '#cccccc',
55+
'TRUE': '#ACF293',
56+
'FALSE': '#FBD15B',
57+
default: '#EBF6FF'
58+
};
59+
60+
const enumToText: { [key: string]: string } = {
61+
'TRUE': 'ENGAGED',
62+
'FALSE': 'DISENGAGED'
63+
};

control-station/src/pages/VehiclePage/Boards/HVSCU/HVSCU.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Window } from 'components/Window/Window';
22
import styles from './HVSCU.module.scss';
3-
import { ImdIndicator } from 'components/ImdIndicator/ImdIndicator';
3+
import { ImdIndicator } from 'components/BoolIndicator/ImdIndicator';
44
import { EnumIndicator } from 'components/EnumIndicator/EnumIndicator';
55
import Battery from 'assets/svg/battery-filled.svg'
66
import Contactors from 'assets/svg/open-contactors-icon.svg'

control-station/src/pages/VehiclePage/BoosterPage/BoosterPage.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import Contactors from "assets/svg/open-contactors-icon.svg";
2828
import teamLogo from "assets/svg/team_logo.svg";
2929
import { BigOrderButton } from "components/BigOrderButton";
3030
import { LEDS } from "../MainPage/MainPageModules/Leds";
31+
import { SdcIndicator } from "components/BoolIndicator/SdcIndicator";
3132

3233
interface ModuleData {
3334
id: number | string;
@@ -129,6 +130,10 @@ export function BoosterPage() {
129130
icon={Contactors}
130131
/>
131132
</div>
133+
<div className={styles.text}>
134+
<span className={styles.subtitle}>SDC</span>
135+
<SdcIndicator/>
136+
</div>
132137
<div className={styles.text}>
133138
<span className={styles.subtitle}>BCU General State</span>
134139
<EnumIndicator

0 commit comments

Comments
 (0)