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