-
{{ socTitle || "Fahrzeug" }}
-
+
+ {{ socTitle || "Fahrzeug" }}
+
+
{{ socChargeDisplayValue }}
+
+
+
+ {{ markerLabel() }}
+
+
diff --git a/assets/js/icons.js b/assets/js/icons.js
index 300e4901f6..d4eb4ab0c4 100644
--- a/assets/js/icons.js
+++ b/assets/js/icons.js
@@ -11,7 +11,7 @@ import { faBatteryQuarter } from "@fortawesome/free-solid-svg-icons/faBatteryQua
import { faBatteryThreeQuarters } from "@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters";
import { faChevronDown } from "@fortawesome/free-solid-svg-icons/faChevronDown";
import { faChevronUp } from "@fortawesome/free-solid-svg-icons/faChevronUp";
-import { faClock } from "@fortawesome/free-solid-svg-icons";
+import { faClock } from "@fortawesome/free-solid-svg-icons/faClock";
import { faExclamationTriangle } from "@fortawesome/free-solid-svg-icons/faExclamationTriangle";
import { faLeaf } from "@fortawesome/free-solid-svg-icons/faLeaf";
import { faSun } from "@fortawesome/free-solid-svg-icons/faSun";
@@ -21,6 +21,7 @@ import { faThermometerHalf } from "@fortawesome/free-solid-svg-icons/faThermomet
import { faHeart } from "@fortawesome/free-solid-svg-icons/faHeart";
import { faGift } from "@fortawesome/free-solid-svg-icons/faGift";
import { faBox } from "@fortawesome/free-solid-svg-icons/faBox";
+import { faExclamationCircle } from "@fortawesome/free-solid-svg-icons/faExclamationCircle";
library.add(
faArrowDown,
@@ -41,7 +42,8 @@ library.add(
faThermometerHalf,
faHeart,
faGift,
- faBox
+ faBox,
+ faExclamationCircle
);
Vue.component("fa-icon", FontAwesomeIcon);
diff --git a/assets/js/mixins/formatter.js b/assets/js/mixins/formatter.js
index 4f7ba0544d..40c73ffcb9 100644
--- a/assets/js/mixins/formatter.js
+++ b/assets/js/mixins/formatter.js
@@ -58,5 +58,34 @@ export default {
}
return "m";
},
+ fmtAbsoluteDate: function (date) {
+ return new Intl.DateTimeFormat("de-DE", {
+ weekday: "short",
+ hour: "numeric",
+ minute: "numeric",
+ }).format(date);
+ },
+ fmtRelativeTime: function (date) {
+ var units = {
+ year: 24 * 60 * 60 * 1000 * 365,
+ month: (24 * 60 * 60 * 1000 * 365) / 12,
+ day: 24 * 60 * 60 * 1000,
+ hour: 60 * 60 * 1000,
+ minute: 60 * 1000,
+ second: 1000,
+ };
+
+ var rtf = new Intl.RelativeTimeFormat("de", { numeric: "auto", style: "narrow" });
+
+ var getRelativeTime = (d1, d2 = new Date()) => {
+ var elapsed = d1 - d2;
+
+ // "Math.abs" accounts for both "past" & "future" scenarios
+ for (var u in units)
+ if (Math.abs(elapsed) > units[u] || u == "second")
+ return rtf.format(Math.round(elapsed / units[u]), u);
+ };
+ return getRelativeTime(date);
+ },
},
};
diff --git a/core/loadpoint_api.go b/core/loadpoint_api.go
index 669bc08a23..2cfa07cf75 100644
--- a/core/loadpoint_api.go
+++ b/core/loadpoint_api.go
@@ -119,6 +119,9 @@ func (lp *LoadPoint) SetTargetCharge(finishAt time.Time, targetSoC int) {
lp.publish("targetTime", finishAt)
lp.publish("targetSoC", targetSoC)
+ lp.socTimer.Time = finishAt
+ lp.socTimer.SoC = targetSoC
+
lp.requestUpdate()
}
diff --git a/dist/css/index.6dc6b1ad.css b/dist/css/index.82bccd36.css
similarity index 61%
rename from dist/css/index.6dc6b1ad.css
rename to dist/css/index.82bccd36.css
index dcf38dc42e..9b85123bfd 100644
--- a/dist/css/index.6dc6b1ad.css
+++ b/dist/css/index.82bccd36.css
@@ -1 +1 @@
-.progress-bar-animated{animation-direction:reverse}.btn.caption{opacity:1}.btn.first{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}.value,input[type=radio],label.btn{white-space:nowrap!important}.text-muted a,.text-muted a:hover{color:#6c757d!important;text-decoration:none}.bg-muted{opacity:.25}.fade-enter-active[data-v-a6ded36e],.fade-leave-active[data-v-a6ded36e]{transition:opacity .25s ease-in}.fade-enter[data-v-a6ded36e],.fade-leave-to[data-v-a6ded36e]{opacity:0}.dialog[data-v-a6ded36e]{position:fixed;top:0;left:0;z-index:1050;width:100%;height:100%;overflow:hidden;outline:0}.icon[data-v-a6ded36e]{color:#0fdd42}.text-black a[data-v-a6ded36e]{color:#18191a}.icon[data-v-5f0f38d1]{color:#0fdd42}.text-black a[data-v-5f0f38d1]{color:#18191a}.logo[data-v-459f11b2]{width:85px}.app[data-v-459f11b2]{min-height:100vh}
\ No newline at end of file
+.progress-bar-animated{animation-direction:reverse}.btn.caption{opacity:1}.btn.first{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}.value,input[type=radio],label.btn{white-space:nowrap!important}.text-muted a,.text-muted a:hover{color:#6c757d!important;text-decoration:none}.bg-muted{opacity:.25}.fade-enter-active[data-v-a6ded36e],.fade-leave-active[data-v-a6ded36e]{transition:opacity .25s ease-in}.fade-enter[data-v-a6ded36e],.fade-leave-to[data-v-a6ded36e]{opacity:0}.dialog[data-v-a6ded36e]{position:fixed;top:0;left:0;z-index:1050;width:100%;height:100%;overflow:hidden;outline:0}.icon[data-v-a6ded36e]{color:#0fdd42}.text-black a[data-v-a6ded36e]{color:#18191a}.icon[data-v-5f0f38d1]{color:#0fdd42}.text-black a[data-v-5f0f38d1]{color:#18191a}.logo[data-v-459f11b2]{width:85px}.app[data-v-459f11b2]{min-height:100vh}.subline[data-v-6c9c1346]{display:flex;align-items:center}.progress[data-v-6c9c1346]{overflow:visible}.progress-bar.bg-muted[data-v-6c9c1346]{position:relative;overflow:visible;color:var(--white)}.progress-bar.bg-muted[data-v-6c9c1346]:after{position:absolute;right:0;top:-5px;height:calc(100% + 10px);width:2px;background:var(--dark);content:""}.bg-disabled[data-v-6c9c1346]{background-color:var(--gray)}.bg-light[data-v-6c9c1346]{color:var(--dark)}
\ No newline at end of file
diff --git a/dist/index.html b/dist/index.html
index 3feaad198a..ba89781aef 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -1,4 +1,4 @@
-
evcc
\ No newline at end of file
+ };