diff --git a/src/components/modals/ActionModal.vue b/src/components/modals/ActionModal.vue index f30ae40..ad7e30e 100644 --- a/src/components/modals/ActionModal.vue +++ b/src/components/modals/ActionModal.vue @@ -37,15 +37,15 @@
- {{ action.parameters.min }} + {{ action.parameters?.min }} {{ numericValue }}{{ getUnit() }} - {{ action.parameters.max }} + {{ action.parameters?.max }}
@@ -157,9 +157,9 @@ watch( (action) => { if (action) { if (action.parameters?.min !== undefined) { - numericValue.value = action.parameters.min + numericValue.value = action.parameters?.min ?? 0 } - if (action.parameters?.options?.length > 0) { + if (action.parameters?.options && action.parameters.options.length > 0) { selectedOption.value = action.parameters.options[0] } toggleValue.value = false diff --git a/src/services/api.ts b/src/services/api.ts index eedf2ed..ef9434d 100644 --- a/src/services/api.ts +++ b/src/services/api.ts @@ -379,14 +379,14 @@ class ApiClient { return await response.json() } - async post(endpoint: string, data?: Record | unknown[]): Promise { + async post(endpoint: string, data?: unknown): Promise { return this.request(endpoint, { method: 'POST', body: data ? JSON.stringify(data) : undefined, }) } - async put(endpoint: string, data?: Record | unknown[]): Promise { + async put(endpoint: string, data?: unknown): Promise { return this.request(endpoint, { method: 'PUT', body: data ? JSON.stringify(data) : undefined, diff --git a/src/stores/websocket.ts b/src/stores/websocket.ts index 4e5a2af..a267b2c 100644 --- a/src/stores/websocket.ts +++ b/src/stores/websocket.ts @@ -5,15 +5,15 @@ import { useRoomStore } from './room' const MAX_DATA_POINTS = 100 -interface SensorReading { +interface WebSocketReading { sensorId: string room: string timestamp: number - energy: { + energy?: { value: number unit: string } - co2: { + co2?: { value: number unit: string } @@ -25,7 +25,7 @@ interface SensorReading { export const useWebSocketStore = defineStore('websocket', () => { const isConnected = ref(false) - const latestMessage = ref(null) + const latestMessage = ref(null) const timeSeriesData = reactive<{ labels: string[] datasets: { data: number[] }[] @@ -35,7 +35,7 @@ export const useWebSocketStore = defineStore('websocket', () => { }) let socket: WebSocket | null = null - const newDataBuffer: SensorReading[] = [] + const newDataBuffer: WebSocketReading[] = [] function connect(url: string): void { if (isConnected.value && socket) { @@ -115,9 +115,9 @@ export const useWebSocketStore = defineStore('websocket', () => { } } - function processIncomingData(data: SensorReading): void { + function processIncomingData(data: WebSocketReading): void { // Skip non-data messages - if ('type' in data && (data.type === 'connection_established' || data.type === 'proxy_info')) { + if ('type' in data && (data as any).type === 'connection_established' || (data as any).type === 'proxy_info') { return } @@ -125,21 +125,21 @@ export const useWebSocketStore = defineStore('websocket', () => { const roomStore = useRoomStore() // Update individual sensor readings first - sensorStore.updateLatestReading(data) + sensorStore.updateLatestReading(data as any) // Update room data if we have room information (accepts partial readings) if (data.room) { if (data.energy) { - sensorStore.updateEnergySensors(data) + sensorStore.updateEnergySensors(data as any) } - roomStore.updateRoomData(data) + roomStore.updateRoomData(data as any) } // Update time series for chart if energy data is available if (data.energy) { const newLabel = new Date(data.timestamp * 1000).toLocaleTimeString() timeSeriesData.labels.push(newLabel) - timeSeriesData.datasets[0].data.push(data.energy?.value) + timeSeriesData.datasets[0].data.push(data.energy.value) } } diff --git a/src/views/AnalyticsView.vue b/src/views/AnalyticsView.vue index 3558718..245e475 100644 --- a/src/views/AnalyticsView.vue +++ b/src/views/AnalyticsView.vue @@ -222,11 +222,11 @@
-

{{ room.name || room.room }}

+

{{ room.room }}

{{ room.sensor_count }} sensors
diff --git a/src/views/SensorManagementView.vue b/src/views/SensorManagementView.vue index e619e4e..5f22d56 100644 --- a/src/views/SensorManagementView.vue +++ b/src/views/SensorManagementView.vue @@ -184,7 +184,7 @@