feat(ui): render the CCTV panel's buttons, CAL chip and meta line from a store

CctvControls presents the switch, navigation and toggle buttons, the CAL
chip and the meta line with a pure presentCctvPanel() and publishes them
to the gev-cctv store; CctvPanel renders them. The controls keep their
listeners on the same elements, and still write the picker, frame, source
badge, calibration readout and summary, which carry no bindings.

A page that imports ui/cctv with its own markup no longer has these
elements painted for it, as with Street Level.
This commit is contained in:
Sameh Khamis committed 2026-10-30 20:57:03 -07:00
1 parent e6aee52ea0
commit 5b8cb40fce
14 files changed
+469 -215

No files matched your search

+10 -4
View File
@@ -46,6 +46,8 @@
"src/i18n/locales/zh-CN.json",
"src/i18n/locales/zh-Hant.json",
"src/ui/views/panels/StreetLevelPanel.vue",
"src/ui/views/panels/CctvPanel.vue",
"src/ui/stores/cctv.js",
"src/ui/stores/streetLevel.js",
"src/ui/rail/RailChips.vue"
],
@@ -654,9 +656,11 @@
"src/i18n/locales/zh-CN.json",
"src/i18n/locales/zh-Hant.json",
"src/ui/unitLabels.js",
"src/ui/statusBadge.js"
"src/ui/statusBadge.js",
"src/ui/vueRuntime.js",
"src/ui/stores/cctv.js"
],
"external": []
"external": ["vue", "pinia"]
},
"context-controls": {
"exports": ["./ui/context", "./ui/context/policy"],
@@ -948,7 +952,8 @@
"src/ui/rail/RailTimeline.vue",
"src/ui/rail/rangeValue.js",
"src/ui/weather/WeatherReadout.vue",
"src/ui/stores/streetLevel.js"
"src/ui/stores/streetLevel.js",
"src/ui/stores/cctv.js"
],
"external": ["cesium", "vue", "pinia"]
},
@@ -2914,7 +2919,8 @@
"src/ui/weather/WeatherReadout.vue",
"src/ui/recentImagery/RecentImageryCard.vue",
"src/ui/recentImagery/RecentImageryReadout.vue",
"src/ui/stores/streetLevel.js"
"src/ui/stores/streetLevel.js",
"src/ui/stores/cctv.js"
],
"external": [
"hls.js",