feat: Update averageValue calculation to consider only hardware sensors and improve error handling for sensor data fetching

This commit is contained in:
Siwat Sirichai 2025-06-21 15:45:47 +07:00
parent 738ae59c69
commit 9eb57f675b

View file

@ -103,13 +103,14 @@ export const useBedPressureStore = create<BedPressureStore>((set, get) => ({
setSelectedTimespan: (timespan) => set({ selectedTimespan: timespan }),
setActiveAlarms: (alarms) => set({ activeAlarms: alarms }),
// Computed values
// Computed values
averageValue: () => {
const { sensorData } = get();
const sensors = Object.values(sensorData) as SensorData[];
if (sensors.length === 0) return 0;
return sensors.reduce((sum: number, sensor: SensorData) => sum + sensor.currentValue, 0) / sensors.length;
// Only calculate average for sensors with hardware data
const hardwareSensors = sensors.filter(sensor => sensor.source === 'hardware');
if (hardwareSensors.length === 0) return 0;
return hardwareSensors.reduce((sum: number, sensor: SensorData) => sum + sensor.currentValue, 0) / hardwareSensors.length;
},
criticalSensors: () => {
@ -258,20 +259,29 @@ export const useBedPressureStore = create<BedPressureStore>((set, get) => ({
warningDelayMs,
warningStartTime
};
});
set({
}); set({
sensorData: updated,
isConnected: data.connected,
isConnected: data.connected || false,
activeAlarms: alarmManager.getActiveAlarms()
});
if (newAlerts.length > 0) {
get().addAlerts(newAlerts);
}
}
} catch (error) {
} else { // No sensor data available - set as disconnected
const { alarmManager } = get();
set({
isConnected: false,
activeAlarms: alarmManager.getActiveAlarms()
});
} } catch (error) {
console.error('Failed to fetch sensor data:', error);
// Set as disconnected on error
const { alarmManager } = get();
set({
isConnected: false,
activeAlarms: alarmManager.getActiveAlarms()
});
}
},