From 3202cbb59258a2d7903fa3b9540f7e6f848636b3 Mon Sep 17 00:00:00 2001 From: Michael Geers Date: Wed, 16 Aug 2023 15:30:24 +0200 Subject: [PATCH] Sessions: add charge duration (#9263) --- assets/js/components/ChargingSessionModal.vue | 29 ++-- assets/js/components/CustomSelect.vue | 4 +- assets/js/components/Loadpoint.vue | 10 +- assets/js/components/TargetChargePlan.vue | 2 +- assets/js/components/VehicleStatus.test.js | 14 +- assets/js/components/VehicleStatus.vue | 8 +- assets/js/mixins/breakpoint.js | 33 ++++ assets/js/mixins/formatter.js | 48 ++---- assets/js/mixins/formatter.test.js | 32 ++++ assets/js/settings.js | 6 +- assets/js/views/ChargingSessions.vue | 154 ++++++++++++------ core/db/session.go | 29 ++-- core/loadpoint_session.go | 1 + i18n/de.toml | 8 +- i18n/en.toml | 2 + tests/sessions.spec.js | 47 +++--- tests/sessions.sql | 11 +- 17 files changed, 278 insertions(+), 160 deletions(-) create mode 100644 assets/js/mixins/breakpoint.js diff --git a/assets/js/components/ChargingSessionModal.vue b/assets/js/components/ChargingSessionModal.vue index 2ae882ef5..8c7998649 100644 --- a/assets/js/components/ChargingSessionModal.vue +++ b/assets/js/components/ChargingSessionModal.vue @@ -63,16 +63,15 @@ - + {{ $t("sessions.energy") }} - {{ - fmtKWh( - session.chargedEnergy * 1e3, - session.chargedEnergy >= 1 - ) - }} + {{ fmtKWh(chargedEnergy, chargedEnergy >= 1e3) }} +
+ {{ fmtDurationNs(session.chargeDuration) }} + (~{{ fmtKw(avgPower) }}) +
@@ -81,9 +80,7 @@ {{ fmtNumber(session.solarPercentage, 1) }}% ({{ - fmtKWh( - session.chargedEnergy * 10 * session.solarPercentage - ) + fmtKWh(solarEnergy, solarEnergy >= 1e3) }}) @@ -195,6 +192,18 @@ export default { vehicles: [Object], }, emits: ["session-changed"], + computed: { + chargedEnergy: function () { + return this.session.chargedEnergy * 1e3; + }, + avgPower: function () { + const hours = this.session.chargeDuration / 1e9 / 3600; + return this.chargedEnergy / hours; + }, + solarEnergy: function () { + return this.chargedEnergy * (this.session.solarPercentage / 100); + }, + }, methods: { openSessionDetailsModal() { const modal = Modal.getOrCreateInstance(document.getElementById("sessionDetailsModal")); diff --git a/assets/js/components/CustomSelect.vue b/assets/js/components/CustomSelect.vue index b214dbeb3..3c1ee851b 100644 --- a/assets/js/components/CustomSelect.vue +++ b/assets/js/components/CustomSelect.vue @@ -2,10 +2,10 @@