Skip to content

Commit e4ef673

Browse files
committed
functions to select boolean and enum measurements
1 parent 78ee196 commit e4ef673

2 files changed

Lines changed: 51 additions & 4 deletions

File tree

common-front/lib/selectors/OBCCU.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ export enum ObccuMeasurements {
4141
isBalancing9 = "OBCCU/is_balancing9",
4242
isBalancing10 = "OBCCU/is_balancing10",
4343
dclvTemperature = "OBCCU/dclv_temperature",
44+
inverterTemperature = "OBCCU/inverter_temperature",
45+
transformerTemperature = "OBCCU/transformer_temperature",
46+
rectifierTemperature = "OBCCU/rectifier_temperature",
47+
resonantTankTemperature = "OBCCU/resonant_tank_temperature",
4448
battery_temperature_1 = "OBCCU/battery_temperature_1",
4549
battery_temperature_2 = "OBCCU/battery_temperature_2",
4650
battery_temperature_3 = "OBCCU/battery_temperature_3",

common-front/lib/store/measurementsStore.ts

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,36 @@ import {
1414
} from '../adapters';
1515
import { create } from 'zustand';
1616
import { isNumericType } from '../BackendTypes';
17-
import { NumericValue } from '../models/PodData/Measurement';
17+
import { BooleanMeasurement, EnumMeasurement, NumericValue } from '../models/PodData/Measurement';
1818

1919
export type Measurements = Record<string, Measurement>;
2020
export type MeasurementId = string;
2121
export type MeasurementName = string;
2222
export type MeasurementColor = string;
2323
export type MeasurementUnits = string;
24-
export type UpdateFunction = () => number;
24+
export type UpdateFunctionNumeric = () => number;
25+
export type UpdateFunctionBoolean = () => boolean;
26+
export type UpdateFunctionEnum = () => string;
27+
2528
export type NumericMeasurementInfo = {
2629
readonly id: MeasurementId;
2730
readonly name: MeasurementName;
2831
readonly range: [number | null, number | null];
2932
readonly color: MeasurementColor;
3033
readonly units: MeasurementUnits;
31-
readonly getUpdate: UpdateFunction;
34+
readonly getUpdate: UpdateFunctionNumeric;
35+
};
36+
37+
export type BooleanMeasurementInfo = {
38+
readonly id: MeasurementId;
39+
readonly name: MeasurementName;
40+
readonly getUpdate: UpdateFunctionBoolean;
41+
};
42+
43+
export type EnumMeasurementInfo = {
44+
readonly id: MeasurementId;
45+
readonly name: MeasurementName;
46+
readonly getUpdate: UpdateFunctionEnum;
3247
};
3348

3449
export interface MeasurementsStore {
@@ -39,6 +54,8 @@ export interface MeasurementsStore {
3954
showMeasurementLatest: (id: string, showLatest: boolean) => void;
4055
getMeasurement: (id: MeasurementId) => Measurement;
4156
getNumericMeasurementInfo: (id: MeasurementId) => NumericMeasurementInfo;
57+
getBooleanMeasurementInfo: (id: MeasurementId) => BooleanMeasurementInfo;
58+
getEnumMeasurementInfo: (id: MeasurementId) => EnumMeasurementInfo;
4259
getMeasurementFallback: (id: MeasurementId) => Measurement;
4360
clearMeasurements: (board: string) => void;
4461
}
@@ -148,7 +165,33 @@ export const useMeasurementsStore = create<MeasurementsStore>((set, get) => ({
148165
return get().measurements[id];
149166
},
150167

151-
getNumericMeasurementInfo: (id: string) => {
168+
getBooleanMeasurementInfo: (id: string) : BooleanMeasurementInfo => {
169+
const meas = get().measurements[id] as BooleanMeasurement;
170+
return {
171+
id: meas.id,
172+
name: meas.name,
173+
getUpdate: () => {
174+
const meas = get().measurements[id] as BooleanMeasurement;
175+
if (meas == undefined) return false;
176+
return meas.value;
177+
}
178+
};
179+
},
180+
181+
getEnumMeasurementInfo: (id: string) : EnumMeasurementInfo => {
182+
const meas = get().measurements[id] as EnumMeasurement;
183+
return {
184+
id: meas.id,
185+
name: meas.name,
186+
getUpdate: () => {
187+
const meas = get().measurements[id] as EnumMeasurement;
188+
if (meas == undefined) return "Default";
189+
return meas.value;
190+
}
191+
};
192+
},
193+
194+
getNumericMeasurementInfo: (id: string) : NumericMeasurementInfo => {
152195
const meas = get().measurements[id] as NumericMeasurement;
153196
return {
154197
id: meas.id,

0 commit comments

Comments
 (0)