Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
font-size: 0.7rem;
line-height: 90%;

color: white;
color: #333333; // Dark text color for better contrast on light background
background-color: var(--light-color);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@

.payload {
font-size: 0.7rem;
color: #333333; // Dark text color for better contrast
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
border-radius: 0.5rem;
filter: (--shadow);
font-size: 0.8rem;
color: #333333; // Dark text color for better contrast
}

.icon {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
column-gap: 1rem;
font-size: 0.8rem;
row-gap: 0.5rem;
color: #333333; // Dark text color for better contrast
}
22 changes: 18 additions & 4 deletions control-station/src/components/EnumIndicator/EnumIndicator.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useGlobalTicker, useMeasurementsStore } from "common";
import { useGlobalTicker, useMeasurementsStore, usePodDataStore } from "common";
import styles from "./EnumIndicator.module.scss";
import { memo, useContext, useState } from "react";
import { LostConnectionContext } from "services/connections";
Expand All @@ -13,15 +13,29 @@ export const EnumIndicator = memo(({ measurementId, icon }: Props) => {
(state) => state.getEnumMeasurementInfo(measurementId).getUpdate,
);

const podData = usePodDataStore((state) => state.podData);
const lostConnection = useContext(LostConnectionContext);

const [hasReceivedData, setHasReceivedData] = useState(false);
const [variant, setVariant] = useState(getValue());
const state = lostConnection ? "DISCONNECTED" : variant;

useGlobalTicker(() => {
setVariant(getValue());
const boardName = measurementId.split('/')[0];

const board = podData.boards.find(b => b.name === boardName);
const hasReceivedPackets = board?.packets.some(packet => packet.count > 0) || false;

const currentValue = getValue();
setVariant(currentValue);

if (hasReceivedPackets && !hasReceivedData) {
setHasReceivedData(true);
}
});

const showDisconnected = lostConnection || !hasReceivedData;
const state = showDisconnected ? "DISCONNECTED" : variant;

return (
<div
className={styles.enum_indicator}
Expand All @@ -32,7 +46,7 @@ export const EnumIndicator = memo(({ measurementId, icon }: Props) => {
>
<img className={styles.icon} src={icon} />

<p className={styles.title}>{lostConnection ? "DISCONNECTED" : state.toUpperCase()}</p>
<p className={styles.title}>{showDisconnected ? "DISCONNECTED" : state.toUpperCase()}</p>

<img className={styles.icon} src={icon} />
</div>
Expand Down
30 changes: 22 additions & 8 deletions control-station/src/components/EnumIndicator/VehicleState.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useGlobalTicker, useMeasurementsStore, VcuMeasurements } from 'common';
import { useGlobalTicker, useMeasurementsStore, VcuMeasurements, usePodDataStore } from 'common';
import styles from './EnumIndicator.module.scss';
import { useContext, useState } from 'react';
import { LostConnectionContext } from 'services/connections';
Expand All @@ -12,19 +12,33 @@ export const VehicleState = () => {
(state) => state.getEnumMeasurementInfo(VcuMeasurements.operationalState).getUpdate
);

const podData = usePodDataStore((state) => state.podData);
const lostConnection = useContext(LostConnectionContext);

const [generalState, setGeneralState] = useState(generalStateMeasurement);
const [operationalState, setOperationalState] = useState(operationalStateMeasurement);
const state = lostConnection
? 'DISCONNECTED'
: (generalState == 'OPERATIONAL') ? operationalState : generalState;
const [hasReceivedData, setHasReceivedData] = useState(false);
const [generalState, setGeneralState] = useState('FAULT');
const [operationalState, setOperationalState] = useState('FAULT');

useGlobalTicker(() => {
setGeneralState(generalStateMeasurement);
setOperationalState(operationalStateMeasurement);
const vcuBoard = podData.boards.find(board => board.name === 'VCU');
const hasReceivedPackets = vcuBoard?.packets.some(packet => packet.count > 0) || false;

const currentGeneralState = generalStateMeasurement();
const currentOperationalState = operationalStateMeasurement();
setGeneralState(currentGeneralState);
setOperationalState(currentOperationalState);

if (hasReceivedPackets && !hasReceivedData) {
setHasReceivedData(true);
}
});

const showDisconnected = lostConnection || !hasReceivedData;

const state = showDisconnected
? 'DISCONNECTED'
: (generalState == 'OPERATIONAL') ? operationalState : generalState;

return (
<div
className={styles.enum_indicator}
Expand Down
27 changes: 17 additions & 10 deletions control-station/src/components/ImdIndicator/ImdIndicator.tsx
Original file line number Diff line number Diff line change
@@ -1,36 +1,43 @@
import { HvscuMeasurements, useGlobalTicker, useMeasurementsStore } from 'common';
import { HvscuMeasurements, useGlobalTicker, useMeasurementsStore, usePodDataStore, getPacket } from 'common';
import styles from './ImdIndicator.module.scss';
import thunderIcon from 'assets/svg/thunder-filled.svg'
import { memo, useContext, useState } from 'react';
import { LostConnectionContext } from 'services/connections';

interface Props {
measurementId: string;
icon: string;
}

export const ImdIndicator = () => {
const getValue = useMeasurementsStore(
(state) => state.getBooleanMeasurementInfo(HvscuMeasurements.IsImdOk).getUpdate
);

const podData = usePodDataStore((state) => state.podData);
const lostConnection = useContext(LostConnectionContext);

const [IsImdOk, setVariant] = useState(getValue());
const [hasReceivedData, setHasReceivedData] = useState(false);
const [IsImdOk, setVariant] = useState(true);

useGlobalTicker(() => {
setVariant(getValue());
const hvscuBoard = podData.boards.find(board => board.name === 'HVSCU');
const hasReceivedPackets = hvscuBoard?.packets.some(packet => packet.count > 0) || false;

const currentValue = getValue();
setVariant(currentValue);

if (hasReceivedPackets && !hasReceivedData) {
setHasReceivedData(true);
}
});

const showDisconnected = lostConnection || !hasReceivedData;

return (
<div
className={styles.state_indicator}
style={{ backgroundColor: lostConnection ? '#cccccc' : IsImdOk ? '#ACF293' : '#EF9A87' }}
style={{ backgroundColor: showDisconnected ? '#cccccc' : IsImdOk ? '#ACF293' : '#EF9A87' }}
>
<img className={styles.icon} src={thunderIcon} />

<p className={styles.title}>
{lostConnection ? 'DISCONNECTED' : IsImdOk ? 'ISOLATED' : 'ISOLATION FAULT'}
{showDisconnected ? 'DISCONNECTED' : IsImdOk ? 'ISOLATED' : 'ISOLATION FAULT'}
</p>

<img className={styles.icon} src={thunderIcon} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@
height: 100%;
}

.emergency_wrapper {
justify-content: center;
min-height: 0;
height: 3rem;
}
.statusIndicators {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
} from "common";
import { OrdersContainer } from "components/OrdersContainer/OrdersContainer";
import { Window } from "components/Window/Window";
import { getHardcodedOrders } from "../BatteriesPage/FixedOrders";
import { emergencyStopOrders, getHardcodedOrders } from "../BatteriesPage/FixedOrders";
import { usePodDataUpdate } from "hooks/usePodDataUpdate";
import { Connection, useConnections } from "common";
import { LostConnectionContext } from "services/connections";
Expand All @@ -26,6 +26,7 @@ import thunder from "assets/svg/thunder-filled.svg";
import thermometer from "assets/svg/thermometer-field.svg";
import Contactors from "assets/svg/open-contactors-icon.svg";
import teamLogo from "assets/svg/team_logo.svg";
import { BigOrderButton } from "components/BigOrderButton";

interface ModuleData {
id: number | string;
Expand Down Expand Up @@ -153,6 +154,15 @@ export function BoosterPage() {
<Window title="Messages" className={styles.messages}>
<MessagesContainer />
</Window>
<div className={styles.emergency_wrapper}>
<BigOrderButton
orders={emergencyStopOrders}
label="⚠️ EMERGENCY STOP"
shortcut=" "
className={`${styles.emergency_button} ${styles.emergency_stop}`}
brightness={3}
/>
</div>
<Window title="Orders" className={styles.orders}>
<div className={styles.order_column}>
<OrdersContainer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export const MainPage = () => {
<HVSCU />
<LCU />
</div>
<Pneumatic/>
{/* <Pneumatic/> */}

<Batteries/>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { VcuMeasurements, useGlobalTicker, useMeasurementsStore } from "common";
import { VcuMeasurements, useGlobalTicker, useMeasurementsStore, usePodDataStore } from "common";
import { useContext, useState } from "react";
import { LostConnectionContext } from "services/connections";
import styles from '../MainPage.module.scss';
Expand All @@ -8,18 +8,30 @@ export const BrakeState = () => {
(state) => state.getBooleanMeasurementInfo(VcuMeasurements.allReeds).getUpdate
);

const lostConnection = useContext(LostConnectionContext);

const [ReedsState, setVariant] = useState(getValue());

useGlobalTicker(() => {
setVariant(getValue());
});
const podData = usePodDataStore((state) => state.podData);
const lostConnection = useContext(LostConnectionContext);

const [hasReceivedData, setHasReceivedData] = useState(false);
const [ReedsState, setVariant] = useState(false);

useGlobalTicker(() => {
const vcuBoard = podData.boards.find(board => board.name === 'VCU');
const hasReceivedPackets = vcuBoard?.packets.some(packet => packet.count > 0) || false;

const currentValue = getValue();
setVariant(currentValue);

if (hasReceivedPackets && !hasReceivedData) {
setHasReceivedData(true);
}
});

const showDisconnected = lostConnection || !hasReceivedData;

return (
<div className={styles.break_state} style={{ backgroundColor: lostConnection ? '#cccccc' : ReedsState ? '#f3785c' : '#99ccff' }}>
<div style={{ color: lostConnection ? '#888888' : ReedsState ? '#571500' : '#0059b3' }}>
{lostConnection ? 'DISCONNECTED' : ReedsState ? 'BRAKED' : 'UNBRAKED'}
<div className={styles.break_state} style={{ backgroundColor: showDisconnected ? '#cccccc' : ReedsState ? '#f3785c' : '#99ccff' }}>
<div style={{ color: showDisconnected ? '#888888' : ReedsState ? '#571500' : '#0059b3' }}>
{showDisconnected ? 'DISCONNECTED' : ReedsState ? 'BRAKED' : 'UNBRAKED'}
</div>
</div>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export const Pneumatic = () => {
const CoolingPCB = getNumericMeasurementInfo('');

return (
<Window title='Pneumatic and Cooling'>
{/* <Window title='Pneumatic and Cooling'>
<div className={styles.pneumatic}>
<BarIndicator
name="High Pressure"
Expand Down Expand Up @@ -68,6 +68,6 @@ export const Pneumatic = () => {
units={CoolingPCB.units}
/>
</div>
</Window>
</Window> */}
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
font-size: small;
line-height: 90%;

color: white;
color: var(--main-color); // Use main color for better contrast
background-color: var(--light-color);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,8 @@
overflow: hidden;
text-overflow: ellipsis;
}

.payload {
font-size: 0.9rem;
color: black; // Inherit from parent which has proper theme color
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const InfoMessageView = ({ message, className }: Props) => {
return (
<div className={`${styles.infoMessageView} ${className}`}>
<div className={styles.board}>{message.board}</div>
<div>{message.payload}</div>
<div className={styles.payload}>{message.payload}</div>
</div>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
display: grid;
grid-template-rows: auto 1fr;
gap: 0.5rem;
color: black;
}

.kindAndOrigin {
Expand Down