From 4465100a650ea6a2e34c766882fe7dfe2f407783 Mon Sep 17 00:00:00 2001 From: andig Date: Tue, 11 Aug 2026 15:24:40 +0200 Subject: [PATCH] Config UI: allow disabling devices (#29455) Co-authored-by: Michael Geers Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: andig <184815+andig@users.noreply.github.com> --- assets/css/app.css | 17 + assets/js/components/Config/DeviceCard.vue | 39 +- .../components/Config/DeviceModal/Actions.vue | 53 ++- .../Config/DeviceModal/DeviceModalBase.vue | 20 +- .../js/components/Config/DeviceModal/index.ts | 50 +++ .../js/components/Config/LoadpointModal.vue | 59 ++- assets/js/components/Config/MeterCard.vue | 4 +- assets/js/components/Config/MeterModal.vue | 3 +- assets/js/components/Config/TariffCard.vue | 5 +- assets/js/components/Config/TariffModal.vue | 3 +- assets/js/components/Config/VehicleModal.vue | 3 +- .../GlobalSettings/LoadpointOrderSettings.vue | 12 +- assets/js/components/Site/Site.vue | 2 +- assets/js/configModal.ts | 5 + assets/js/types/evcc.ts | 4 + assets/js/views/Config.vue | 60 ++- cmd/dump.go | 2 +- cmd/setup.go | 54 ++- core/keys/loadpoint.go | 1 + core/site.go | 127 ++++-- core/site/api.go | 3 + core/site_api.go | 31 +- core/site_api_test.go | 22 + core/site_battery.go | 2 +- core/site_optimizer.go | 6 +- hems/shm/shm.go | 12 +- i18n/de.json | 6 + i18n/en.json | 6 + server/http.go | 2 +- server/http_config_device_handler.go | 8 +- server/http_config_helper.go | 8 +- server/http_config_helper_test.go | 25 +- server/http_config_loadpoint_handler.go | 173 ++++++-- server/http_config_loadpoint_handler_test.go | 70 +++ server/http_site_handler.go | 2 +- server/influxdb.go | 4 + server/mcp/openapi.json | 4 + server/mqtt.go | 6 +- server/openapi.state.yaml | 3 + tests/config-disable.spec.ts | 415 ++++++++++++++++++ util/config/config.go | 1 + util/config/instance.go | 5 +- vite.config.ts | 1 + 43 files changed, 1149 insertions(+), 189 deletions(-) create mode 100644 core/site_api_test.go create mode 100644 server/http_config_loadpoint_handler_test.go create mode 100644 tests/config-disable.spec.ts diff --git a/assets/css/app.css b/assets/css/app.css index 19658451f..40ba60f0d 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -311,6 +311,23 @@ a:hover { --bs-btn-line-height: 2; } +.btn-pill { + --bs-btn-bg: var(--bs-body-bg); + --bs-btn-color: var(--evcc-default-text); + --bs-btn-border-color: var(--evcc-gray-50); + --bs-btn-hover-bg: var(--bs-body-bg); + --bs-btn-hover-color: var(--evcc-default-text); + --bs-btn-hover-border-color: var(--evcc-default-text); + --bs-btn-active-bg: var(--bs-body-bg); + --bs-btn-active-color: var(--evcc-default-text); + --bs-btn-active-border-color: var(--evcc-default-text); + white-space: nowrap; + text-transform: uppercase; + font-weight: bold; + font-size: 0.75rem; + border-radius: 50rem; +} + .btn-outline-secondary { --bs-btn-color: var(--evcc-default-text); --bs-btn-border-color: var(--evcc-default-text); diff --git a/assets/js/components/Config/DeviceCard.vue b/assets/js/components/Config/DeviceCard.vue index 72a6b3a4c..996ffd4a6 100644 --- a/assets/js/components/Config/DeviceCard.vue +++ b/assets/js/components/Config/DeviceCard.vue @@ -26,7 +26,21 @@ @edit="$emit('edit')" /> -
+ +

.root { - display: block; + display: flex; + flex-direction: column; list-style-type: none; border-radius: 1rem; padding: 1rem 1.5rem; @@ -129,6 +145,23 @@ export default { color: var(--evcc-gray) !important; font-weight: normal !important; } +.disabled-region { + flex: 1; + margin: 0 -1.5rem -1rem; + padding: 1.25rem 1.5rem; + min-height: 5rem; + display: flex; + align-items: center; + justify-content: center; + border-radius: 0 0 1rem 1rem; + background-image: repeating-linear-gradient( + -45deg, + transparent 0, + transparent 10px, + var(--evcc-gray-25) 10px, + var(--evcc-gray-25) 20px + ); +} .icon:empty { display: none; } diff --git a/assets/js/components/Config/DeviceModal/Actions.vue b/assets/js/components/Config/DeviceModal/Actions.vue index a5fe69235..b2b56aeae 100644 --- a/assets/js/components/Config/DeviceModal/Actions.vue +++ b/assets/js/components/Config/DeviceModal/Actions.vue @@ -12,25 +12,36 @@ -
- - +
+
+ + + +