@@ -14,21 +14,36 @@ import {
1414} from '../adapters' ;
1515import { create } from 'zustand' ;
1616import { isNumericType } from '../BackendTypes' ;
17- import { NumericValue } from '../models/PodData/Measurement' ;
17+ import { BooleanMeasurement , EnumMeasurement , NumericValue } from '../models/PodData/Measurement' ;
1818
1919export type Measurements = Record < string , Measurement > ;
2020export type MeasurementId = string ;
2121export type MeasurementName = string ;
2222export type MeasurementColor = string ;
2323export type MeasurementUnits = string ;
24- export type UpdateFunction = ( ) => number ;
24+ export type UpdateFunctionNumeric = ( ) => number ;
25+ export type UpdateFunctionBoolean = ( ) => boolean ;
26+ export type UpdateFunctionEnum = ( ) => string ;
27+
2528export 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
3449export 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