From 8e9fe38477fa05eb045afec12610202995576e79 Mon Sep 17 00:00:00 2001 From: Devon Doyle Date: Sun, 11 Jan 2026 13:25:49 -0500 Subject: [PATCH] Device metrics and control reorganization (#2144) --- photon-client/package.json | 1 + photon-client/pnpm-lock.yaml | 27 +- .../components/common/pv-tooltipped-label.vue | 7 +- .../src/components/settings/DeviceCard.vue | 489 ++++++++++++++++++ .../components/settings/DeviceControlCard.vue | 307 ----------- .../src/components/settings/MetricsCard.vue | 276 ---------- .../src/components/settings/MetricsChart.vue | 236 +++++++++ photon-client/src/stores/StateStore.ts | 7 + .../stores/settings/GeneralSettingsStore.ts | 53 +- .../src/views/GeneralSettingsView.vue | 7 +- 10 files changed, 815 insertions(+), 595 deletions(-) create mode 100644 photon-client/src/components/settings/DeviceCard.vue delete mode 100644 photon-client/src/components/settings/DeviceControlCard.vue delete mode 100644 photon-client/src/components/settings/MetricsCard.vue create mode 100644 photon-client/src/components/settings/MetricsChart.vue diff --git a/photon-client/package.json b/photon-client/package.json index db4a7230f..10cc2ae1d 100644 --- a/photon-client/package.json +++ b/photon-client/package.json @@ -22,6 +22,7 @@ "@mdi/font": "^7.4.47", "@msgpack/msgpack": "^3.1.2", "axios": "^1.11.0", + "echarts": "^6.0.0", "jspdf": "^3.0.1", "pinia": "^3.0.2", "three": "^0.178.0", diff --git a/photon-client/pnpm-lock.yaml b/photon-client/pnpm-lock.yaml index 380943670..79f2e693d 100644 --- a/photon-client/pnpm-lock.yaml +++ b/photon-client/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: axios: specifier: ^1.11.0 version: 1.11.0 + echarts: + specifier: ^6.0.0 + version: 6.0.0 jspdf: specifier: ^3.0.1 version: 3.0.1 @@ -848,6 +851,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + echarts@6.0.0: + resolution: {integrity: sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1408,6 +1414,9 @@ packages: peerDependencies: typescript: '>=4.8.4' + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1548,6 +1557,9 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zrender@6.0.0: + resolution: {integrity: sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==} + snapshots: '@babel/helper-string-parser@7.27.1': {} @@ -2062,7 +2074,7 @@ snapshots: typescript: 5.8.3 vue: 3.5.13(typescript@5.8.3) - '@vuetify/loader-shared@2.1.0(vue@3.5.13(typescript@5.8.3))(vuetify@3.8.3)': + '@vuetify/loader-shared@2.1.0(vue@3.5.13(typescript@5.8.3))(vuetify@3.8.3(typescript@5.8.3)(vite-plugin-vuetify@2.1.1)(vue@3.5.13(typescript@5.8.3)))': dependencies: upath: 2.0.1 vue: 3.5.13(typescript@5.8.3) @@ -2215,6 +2227,11 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + echarts@6.0.0: + dependencies: + tslib: 2.3.0 + zrender: 6.0.0 + entities@4.5.0: {} es-define-property@1.0.1: {} @@ -2784,6 +2801,8 @@ snapshots: dependencies: typescript: 5.8.3 + tslib@2.3.0: {} + tslib@2.8.1: {} type-check@0.4.0: @@ -2819,7 +2838,7 @@ snapshots: vite-plugin-vuetify@2.1.1(vite@7.0.5(@types/node@22.15.14)(sass@1.89.2))(vue@3.5.13(typescript@5.8.3))(vuetify@3.8.3): dependencies: - '@vuetify/loader-shared': 2.1.0(vue@3.5.13(typescript@5.8.3))(vuetify@3.8.3) + '@vuetify/loader-shared': 2.1.0(vue@3.5.13(typescript@5.8.3))(vuetify@3.8.3(typescript@5.8.3)(vite-plugin-vuetify@2.1.1)(vue@3.5.13(typescript@5.8.3))) debug: 4.4.0 upath: 2.0.1 vite: 7.0.5(@types/node@22.15.14)(sass@1.89.2) @@ -2889,3 +2908,7 @@ snapshots: xml-name-validator@4.0.0: {} yocto-queue@0.1.0: {} + + zrender@6.0.0: + dependencies: + tslib: 2.3.0 diff --git a/photon-client/src/components/common/pv-tooltipped-label.vue b/photon-client/src/components/common/pv-tooltipped-label.vue index da3c87775..ea95ff34f 100644 --- a/photon-client/src/components/common/pv-tooltipped-label.vue +++ b/photon-client/src/components/common/pv-tooltipped-label.vue @@ -2,14 +2,19 @@ defineProps<{ label?: string; tooltip?: string; + icon?: string; + location?: "top" | "bottom" | "left" | "right"; }>();