Added grid icons labels and mov grid import to the right (#1620)

This commit is contained in:
Michael Geers 2021-09-23 11:20:15 +02:00 • committed by GitHub
parent 5fbceba461
commit 9fca67b620
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 98 additions and 24 deletions

View file

@ -0,0 +1,64 @@
<template>
<div :class="{ 'power-import': this.import, 'power-export': this.export }">
<svg
viewBox="0 0 512 512"
xmlns="http://www.w3.org/2000/svg"
xml:space="preserve"
class="grid svg-inline--fa fa-home fa-w-18"
style="
fill-rule: evenodd;
clip-rule: evenodd;
stroke-linejoin: round;
stroke-miterlimit: 2;
"
>
<path
fill="currentColor"
d="M166.815 224.933h-64.054a11.55 11.55 0 0 0-.916-.037h-22.5c-6.209 0-11.25 5.041-11.25 11.25v4.14a16.22 16.22 0 0 0-.011.585v31.876c0 .197.004.392.011.586v33.406c0 6.209 5.041 11.25 11.25 11.25h22.5c6.209 0 11.25-5.041 11.25-11.25v-18.053h29.592C105.897 385.94 72.74 473.78 72.74 473.78c-3.4 8.328.46 17.901 8.61 21.375l29.51 12.578c8.15 3.474 17.52-.47 20.91-8.797l49.19-120.719h150.07l49.2 120.719c3.4 8.337 12.76 12.271 20.91 8.797l29.51-12.578c8.15-3.474 12-13.047 8.61-21.375 0 0-33.103-87.922-69.773-185.094H398.2v18.003c0 6.257 5.08 11.337 11.337 11.337h22.674c6.257 0 11.337-5.08 11.337-11.337V236.27c0-6.257-5.08-11.337-11.337-11.337h-86.794c-6.992-18.51-13.88-36.732-20.464-54.135H398.2v18.003c0 6.257 5.08 11.337 11.337 11.337h22.674c6.257 0 11.337-5.08 11.337-11.337v-70.419c0-6.257-5.08-11.337-11.337-11.337H300.803c-15.742-41.475-26.669-70.049-27.848-72.584-16.553-35.597-17.28-36.651-33.105-1.138-1.386 3.108-12.466 32.042-28.319 73.722h-108.77a11.55 11.55 0 0 0-.916-.037h-22.5c-6.209 0-11.25 5.041-11.25 11.25v4.14a16.22 16.22 0 0 0-.011.585v31.877c0 .196.004.391.011.585v33.406c0 6.209 5.041 11.25 11.25 11.25h22.5c6.209 0 11.25-5.041 11.25-11.25v-18.053h74.232a139451.94 139451.94 0 0 0-20.512 54.135Zm129.566 63.753 7.999 24.139h-96.76l8.189-24.139h80.572Zm-21.126-63.753h-37.817l18.366-54.135h1.512l17.939 54.135Z"
style="fill-rule: nonzero"
/>
</svg>
<fa-icon class="arrow" icon="angle-double-right"></fa-icon>
</div>
</template>
<script>
export default {
name: "GridIcon",
props: {
import: { type: Boolean },
export: { type: Boolean },
},
};
</script>
<style scoped>
.grid {
transform: translateX(0.35rem);
transition-property: transform;
transition-duration: 250ms;
transition-timing-function: ease;
}
.power-export .grid {
transform: translateX(0.9rem);
}
.power-import .grid {
transform: translateX(0rem);
}
.arrow {
margin-left: -0.2rem;
opacity: 0;
transform: translateX(-0.5rem);
transition-property: opacity, transform;
transition-duration: 250ms;
transition-timing-function: ease;
}
.power-export .arrow {
opacity: 1;
transform: translateX(-1.1rem) scaleX(1);
}
.power-import .arrow {
opacity: 1;
transform: translateX(-0.1rem) scaleX(1);
}
</style>

View file

@ -1,27 +1,19 @@
<template>
<div class="visualization" :class="{ 'visualization--ready': visualizationReady }">
<div class="label-scale">
<div class="d-flex justify-content-end">
<div class="d-flex justify-content-start">
<LabelBar v-bind="labelBarProps('top', 'pvProduction')">
<fa-icon icon="sun"></fa-icon>
</LabelBar>
<LabelBar v-bind="labelBarProps('top', 'batteryDischarge')">
<BatteryIcon :soc="batterySoC" discharge />
</LabelBar>
<LabelBar v-bind="labelBarProps('top', 'pvProduction')">
<fa-icon icon="sun"></fa-icon>
<LabelBar v-bind="labelBarProps('top', 'gridImport')">
<GridIcon import />
</LabelBar>
</div>
</div>
<div class="site-progress" ref="site_progress">
<div
class="site-progress-bar grid-import"
:style="{ width: widthTotal(gridImportAdjusted) }"
>
<span class="power" v-if="powerLabelEnoughSpace(gridImport)">
{{ kw(gridImport) }}
</span>
<span class="power" v-else-if="powerLabelSomeSpace(gridImport)">
{{ kwNoUnit(gridImport) }}
</span>
</div>
<div
class="site-progress-bar self-consumption"
:style="{ width: widthTotal(selfConsumptionAdjusted) }"
@ -33,6 +25,17 @@
{{ kwNoUnit(selfConsumption) }}
</span>
</div>
<div
class="site-progress-bar grid-import"
:style="{ width: widthTotal(gridImportAdjusted) }"
>
<span class="power" v-if="powerLabelEnoughSpace(gridImport)">
{{ kw(gridImport) }}
</span>
<span class="power" v-else-if="powerLabelSomeSpace(gridImport)">
{{ kwNoUnit(gridImport) }}
</span>
</div>
<div
class="site-progress-bar pv-export"
:style="{ width: widthTotal(pvExportAdjusted) }"
@ -59,6 +62,9 @@
<LabelBar v-bind="labelBarProps('bottom', 'batteryCharge')">
<BatteryIcon :soc="batterySoC" charge />
</LabelBar>
<LabelBar v-bind="labelBarProps('bottom', 'gridExport')">
<GridIcon export />
</LabelBar>
</div>
</div>
</div>
@ -68,11 +74,12 @@
import "../../icons";
import formatter from "../../mixins/formatter";
import BatteryIcon from "./BatteryIcon.vue";
import GridIcon from "./GridIcon.vue";
import LabelBar from "./LabelBar.vue";
export default {
name: "Visualization",
components: { BatteryIcon, LabelBar },
components: { BatteryIcon, LabelBar, GridIcon },
props: {
showDetails: Boolean,
gridImport: { type: Number, default: 0 },
@ -100,6 +107,9 @@ export default {
},
mixins: [formatter],
computed: {
gridExport: function () {
return this.pvExport;
},
totalRaw: function () {
return this.gridImport + this.selfConsumption + this.pvExport;
},
@ -169,8 +179,8 @@ export default {
},
isLabel(position, name, last) {
const labels = {
top: ["batteryDischarge", "pvProduction"],
bottom: ["houseConsumption", "loadpoints", "batteryCharge"],
top: ["pvProduction", "batteryDischarge", "gridImport"],
bottom: ["houseConsumption", "loadpoints", "batteryCharge", "gridExport"],
};
const entries = [...labels[position]];
if (last) {
@ -186,7 +196,7 @@ export default {
},
labelBarProps(position, name) {
const value = this[name];
const minWidth = name.startsWith("battery") ? 44 : 32;
const minWidth = name.startsWith("battery") || name.startsWith("grid") ? 44 : 32;
return {
value,
hideIcon: this.hideLabelIcon(value, minWidth),

File diff suppressed because one or more lines are too long

1
dist/css/index.c4286c47.css vendored Normal file

File diff suppressed because one or more lines are too long

4
dist/index.html vendored
View file

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="EV Charge Controller"><meta name="author" content="andig"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><link rel="apple-touch-icon" sizes="180x180" href="ico/apple-touch-icon.png?[[.Version]]"><link rel="icon" type="image/png" sizes="32x32" href="ico/favicon-32x32.png?[[.Version]]"><link rel="icon" type="image/png" sizes="16x16" href="ico/favicon-16x16.png?[[.Version]]"><link rel="manifest" href="ico/site.webmanifest"><link rel="mask-icon" href="ico/safari-pinned-tab.svg?[[.Version]]" color="#18191a"><link rel="shortcut icon" href="ico/favicon.ico?[[.Version]]"><meta name="apple-mobile-web-app-title" content="evcc"><meta name="application-name" content="evcc"><meta name="msapplication-TileColor" content="#18191a"><meta name="msapplication-config" content="ico/browserconfig.xml"><meta name="theme-color" content="#18191a"><title>evcc</title><link href="css/chunk-vendors.63c5e34a.css" rel="preload" as="style"><link href="css/index.7916d96a.css" rel="preload" as="style"><link href="js/chunk-vendors.0dc6e0ff.js" rel="preload" as="script"><link href="js/index.c0c67f42.js" rel="preload" as="script"><link href="css/chunk-vendors.63c5e34a.css" rel="stylesheet"><link href="css/index.7916d96a.css" rel="stylesheet"></head><body><script>window.evcc = {
<!DOCTYPE html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="EV Charge Controller"><meta name="author" content="andig"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><link rel="apple-touch-icon" sizes="180x180" href="ico/apple-touch-icon.png?[[.Version]]"><link rel="icon" type="image/png" sizes="32x32" href="ico/favicon-32x32.png?[[.Version]]"><link rel="icon" type="image/png" sizes="16x16" href="ico/favicon-16x16.png?[[.Version]]"><link rel="manifest" href="ico/site.webmanifest"><link rel="mask-icon" href="ico/safari-pinned-tab.svg?[[.Version]]" color="#18191a"><link rel="shortcut icon" href="ico/favicon.ico?[[.Version]]"><meta name="apple-mobile-web-app-title" content="evcc"><meta name="application-name" content="evcc"><meta name="msapplication-TileColor" content="#18191a"><meta name="msapplication-config" content="ico/browserconfig.xml"><meta name="theme-color" content="#18191a"><title>evcc</title><link href="css/chunk-vendors.63c5e34a.css" rel="preload" as="style"><link href="css/index.c4286c47.css" rel="preload" as="style"><link href="js/chunk-vendors.0dc6e0ff.js" rel="preload" as="script"><link href="js/index.d79696c8.js" rel="preload" as="script"><link href="css/chunk-vendors.63c5e34a.css" rel="stylesheet"><link href="css/index.c4286c47.css" rel="stylesheet"></head><body><script>window.evcc = {
version: "[[.Version]]",
configured: "[[.Configured]]",
};</script><div id="app"></div><script src="js/chunk-vendors.0dc6e0ff.js"></script><script src="js/index.c0c67f42.js"></script></body></html>
};</script><div id="app"></div><script src="js/chunk-vendors.0dc6e0ff.js"></script><script src="js/index.d79696c8.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
dist/js/index.d79696c8.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/index.d79696c8.js.map vendored Normal file

File diff suppressed because one or more lines are too long