diff --git a/src/pages/vimp/composables/query/use-channels-query.ts b/src/pages/vimp/composables/query/use-channels-query.ts index 052b372..1a4703b 100644 --- a/src/pages/vimp/composables/query/use-channels-query.ts +++ b/src/pages/vimp/composables/query/use-channels-query.ts @@ -134,6 +134,7 @@ export const useChannelsQuery = () => { codeSites, compiledCodeAreas, }); + cameraStore.buildCameraRecord(siteCodeToCamerasMap); alarmStore.buildLineTabPanes({ sites: alarmSites, @@ -142,6 +143,7 @@ export const useChannelsQuery = () => { codeSites, compiledCodeAreas, }); + alarmStore.buildAlarmRecord(siteCodeToAlarmsMap); return null; }, diff --git a/src/pages/vimp/stores/alarm.ts b/src/pages/vimp/stores/alarm.ts index a98bf8f..0807d58 100644 --- a/src/pages/vimp/stores/alarm.ts +++ b/src/pages/vimp/stores/alarm.ts @@ -16,6 +16,7 @@ const buildSubAreaNodeKey = (siteCode: string, areaCode: string) => `${siteCode} export const useAlarmStore = defineStore('vimp-alarm-store', () => { const lineTabPanes = shallowRef([]); + const alarmRecord = shallowRef>({}); const buildLineTabPanes = (params: BuildLineTabPanesParams) => { const { sites, siteCodeToAlarmsMap, codeLines, codeSites, compiledCodeAreas } = params; @@ -154,8 +155,21 @@ export const useAlarmStore = defineStore('vimp-alarm-store', () => { lineTabPanes.value = result; }; + const buildAlarmRecord = (siteCodeToAlarmsMap: Map) => { + const record: Record = {}; + for (const [, alarms] of siteCodeToAlarmsMap) { + for (const alarm of alarms) { + record[alarm.code] = alarm; + } + } + alarmRecord.value = record; + }; + return { lineTabPanes, + alarmRecord, + buildLineTabPanes, + buildAlarmRecord, }; }); diff --git a/src/pages/vimp/stores/camera.ts b/src/pages/vimp/stores/camera.ts index 8924b63..2e00b1d 100644 --- a/src/pages/vimp/stores/camera.ts +++ b/src/pages/vimp/stores/camera.ts @@ -1,6 +1,6 @@ import { defineStore } from 'pinia'; import type { VimpChannel, VimpSite } from '../apis'; -import { shallowRef } from 'vue'; +import { ref, shallowRef } from 'vue'; import type { CameraMainAreaNodeOption, CameraNodeOption, CodeLines, CodeSites, CameraLineTabPane, CameraSiteNodeOption, CameraSubAreaNodeOption, CompiledCodeAreas } from '../types'; interface BuildLineTabPanesParams { @@ -16,6 +16,7 @@ const buildSubAreaNodeKey = (siteCode: string, areaCode: string) => `${siteCode} export const useCameraStore = defineStore('vimp-camera-store', () => { const lineTabPanes = shallowRef([]); + const cameraRecord = shallowRef>({}); const buildLineTabPanes = (params: BuildLineTabPanesParams) => { const { sites, siteCodeToCamerasMap, codeLines, codeSites, compiledCodeAreas } = params; @@ -153,8 +154,21 @@ export const useCameraStore = defineStore('vimp-camera-store', () => { lineTabPanes.value = result; }; + const buildCameraRecord = (siteCodeToCamerasMap: Map) => { + const record: Record = {}; + for (const [, cameras] of siteCodeToCamerasMap) { + for (const camera of cameras) { + record[camera.code] = camera; + } + } + cameraRecord.value = record; + }; + return { lineTabPanes, + cameraRecord, + buildLineTabPanes, + buildCameraRecord, }; });