From 08548492433d162cfd49968028239a9222b70d7f Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 17 Aug 2023 19:59:31 +0200 Subject: [PATCH] Add support for loading and storing device configuration from/to database (#6199) --- assets/css/app.css | 13 + assets/js/app.js | 2 + assets/js/components/Config/FormRow.vue | 31 + assets/js/components/Config/PropertyField.vue | 126 + assets/js/components/Config/VehicleModal.vue | 398 +++ assets/js/components/FormRow.vue | 29 +- assets/js/components/Site.vue | 3 - assets/js/components/TopNavigation.vue | 4 +- .../js/components/VehicleIcon/VehicleIcon.vue | 2 +- assets/js/components/VehicleOptions.vue | 22 +- assets/js/components/VehicleSettingsModal.vue | 193 -- assets/js/router.js | 2 + assets/js/views/ChargingSessions.vue | 9 - assets/js/views/Config.vue | 274 ++ cmd/charger.go | 28 +- cmd/charger_ramp.go | 26 +- cmd/config.go | 352 --- cmd/configure/configure.go | 4 +- cmd/configure/helper.go | 2 +- cmd/configure/main.go | 2 +- cmd/configure/types.go | 4 +- cmd/demo.go | 2 +- cmd/device.go | 66 + cmd/dump.go | 18 +- cmd/flags.go | 17 +- cmd/meter.go | 26 +- cmd/root.go | 4 +- cmd/setup.go | 351 ++- cmd/setup_test.go | 2 +- cmd/tariff.go | 17 +- cmd/token.go | 7 +- cmd/token_tronity.go | 3 +- cmd/vehicle.go | 35 +- core/config.go | 10 - core/loadpoint.go | 26 +- core/loadpoint_session.go | 6 +- core/loadpoint_session_test.go | 6 +- core/loadpoint_vehicle.go | 6 +- core/{db => session}/db.go | 24 +- core/{db => session}/format_test.go | 2 +- core/{db => session}/session.go | 2 +- core/site.go | 27 +- go.mod | 2 +- i18n/de.toml | 39 +- i18n/en.toml | 38 +- package-lock.json | 2475 +++++------------ package.json | 2 +- server/http.go | 8 +- server/http_config_handler.go | 442 ++- server/http_config_helper.go | 73 + server/http_session_handler.go | 20 +- server/product.go | 9 + templates/definition/vehicle/dacia.yaml | 2 - templates/definition/vehicle/evnotify.yaml | 6 +- templates/definition/vehicle/flobz.yaml | 6 +- templates/definition/vehicle/iso15118.yaml | 6 +- templates/definition/vehicle/mazda2mqtt.yaml | 6 +- .../definition/vehicle/niu-e-scooter.yaml | 4 +- templates/definition/vehicle/ovms.yaml | 6 +- templates/definition/vehicle/smart.yaml | 2 - templates/definition/vehicle/tesla.yaml | 8 +- templates/definition/vehicle/teslamate.yaml | 6 +- templates/definition/vehicle/tronity.yaml | 6 +- templates/docs/vehicle/dacia_0.yaml | 4 +- templates/docs/vehicle/evnotify_0.yaml | 2 +- templates/docs/vehicle/flobz_0.yaml | 2 +- templates/docs/vehicle/iso15118_0.yaml | 2 +- templates/docs/vehicle/mazda2mqtt_0.yaml | 2 +- templates/docs/vehicle/niu-e-scooter_0.yaml | 4 +- templates/docs/vehicle/ovms_0.yaml | 2 +- templates/docs/vehicle/smart_0.yaml | 4 +- templates/docs/vehicle/tesla_0.yaml | 2 +- templates/docs/vehicle/teslamate_0.yaml | 2 +- templates/docs/vehicle/tronity_0.yaml | 2 +- tests/config-empty.evcc.yaml | 34 + tests/config-with-vehicle.evcc.yaml | 41 + tests/config.spec.js | 122 + util/config/config.go | 153 + util/config/device.go | 72 + util/config/handler.go | 69 + util/config/instance.go | 43 + util/config/types.go | 12 + util/templates/class.go | 8 - util/templates/defaults.yaml | 17 +- util/templates/init.go | 1 - util/templates/types.go | 2 +- 86 files changed, 3259 insertions(+), 2692 deletions(-) create mode 100644 assets/js/components/Config/FormRow.vue create mode 100644 assets/js/components/Config/PropertyField.vue create mode 100644 assets/js/components/Config/VehicleModal.vue delete mode 100644 assets/js/components/VehicleSettingsModal.vue create mode 100644 assets/js/views/Config.vue delete mode 100644 cmd/config.go create mode 100644 cmd/device.go delete mode 100644 core/config.go rename core/{db => session}/db.go (61%) rename core/{db => session}/format_test.go (95%) rename core/{db => session}/session.go (99%) create mode 100644 server/http_config_helper.go create mode 100644 server/product.go create mode 100755 tests/config-empty.evcc.yaml create mode 100755 tests/config-with-vehicle.evcc.yaml create mode 100644 tests/config.spec.js create mode 100644 util/config/config.go create mode 100644 util/config/device.go create mode 100644 util/config/handler.go create mode 100644 util/config/instance.go create mode 100644 util/config/types.go diff --git a/assets/css/app.css b/assets/css/app.css index b05b058e9..043baa7b6 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -408,6 +408,19 @@ input::-webkit-datetime-edit { --bs-tooltip-color: var(--bs-gray-deep); } +.card { + --bs-card-bg: var(--evcc-background); +} + +.form-control { + background-color: var(--evcc-box); + color: var(--evcc-default-text); +} + +input[type="time"]::-webkit-calendar-picker-indicator { + display: none; +} + .table { --bs-table-bg: transparent; } diff --git a/assets/js/app.js b/assets/js/app.js index a52ad19d2..06de1214c 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -3,6 +3,7 @@ import smoothscroll from "smoothscroll-polyfill"; import "../css/app.css"; import { createApp, h } from "vue"; import { createMetaManager, plugin as metaPlugin } from "vue-meta"; +import Vue3linkify from "vue-3-linkify"; import App from "./views/App.vue"; import setupRouter from "./router"; import setupI18n from "./i18n"; @@ -68,6 +69,7 @@ app.use(setupRouter(i18n)); app.use(createMetaManager()); app.use(metaPlugin); app.use(featureflags); +app.use(Vue3linkify); window.app = app.mount("#app"); watchThemeChanges(); diff --git a/assets/js/components/Config/FormRow.vue b/assets/js/components/Config/FormRow.vue new file mode 100644 index 000000000..63a896de9 --- /dev/null +++ b/assets/js/components/Config/FormRow.vue @@ -0,0 +1,31 @@ + + + diff --git a/assets/js/components/Config/PropertyField.vue b/assets/js/components/Config/PropertyField.vue new file mode 100644 index 000000000..7242b679f --- /dev/null +++ b/assets/js/components/Config/PropertyField.vue @@ -0,0 +1,126 @@ +