diff --git a/assets/js/components/Loadpoints.vue b/assets/js/components/Loadpoints.vue
index 3cf8779bb..f043aa9dd 100644
--- a/assets/js/components/Loadpoints.vue
+++ b/assets/js/components/Loadpoints.vue
@@ -11,6 +11,7 @@
Willkommen bei evcc
evcc ist dient zur flexiblen Ladesteuerung von Elektrofahrzeugen.
Es sieht aus, als w\xE4re Dein evcc noch nicht konfiguriert. Um evcc zu konfigurieren sind die folgenden Schritte notwendig:
evcc.yaml. Die Standardkonfiguration evcc.dist.yaml kann daf\xFCr als Vorlage dienen (Download). chargers.meters. site. In einer Site wird der Netzanschluss mit dem konfigurierten EVU Z\xE4hler (meter) verbunden. loadpoints. In einem Ladepunkt wird die konfigurierte Wallbox (charger) mit dem Ladepunkt verbunden. evcc -c evcc.yamlMinimale Beispielkonfiguration f\xFCr evcc:
Willkommen bei evcc evcc ist dient zur flexiblen Ladesteuerung von Elektrofahrzeugen. Es sieht aus, als w\xE4re Dein evcc noch nicht konfiguriert. Um evcc zu konfigurieren sind die folgenden Schritte notwendig: Minimale Beispielkonfiguration f\xFCr evcc: uri: localhost:7070 # Adresse f\xFCr UI
+ ${t.fmtShortDurationUnit(i.chargeDurationInterpolated)}`,align:"end"},null,8,["label","value"]))]),ex,se(c,tn(s.vehicle,{onTargetSocUpdated:s.setTargetSoC,onTargetTimeUpdated:s.setTargetTime,onTargetTimeRemoved:s.removeTargetTime,onChangeVehicle:s.changeVehicle,onRemoveVehicle:s.removeVehicle}),null,16,["onTargetSocUpdated","onTargetTimeUpdated","onTargetTimeRemoved","onChangeVehicle","onRemoveVehicle"])])}const nx=Oe(Wk,[["render",tx],["__scopeId","data-v-ee5b11d7"]]),rx={name:"Site",components:{Loadpoint:nx},props:{loadpoints:Array,vehicles:Array},data(){return{selectedIndex:0,snapTimeout:null}},mounted(){this.$refs.carousel.addEventListener("scroll",this.handleCarouselScroll,!1)},unmounted(){this.$refs.carousel.removeEventListener("scroll",this.handleCarouselScroll)},methods:{handleCarouselScroll(){const{scrollLeft:t}=this.$refs.carousel,{offsetWidth:e}=this.$refs.carousel.children[0];this.selectedIndex=Math.round((t-7.5)/e)},selected(t){return this.selectedIndex===t},scrollTo(t){if(this.selectedIndex===t)return;this.selectedIndex=t;const e=this.$refs.carousel,n=e.children[0].offsetWidth;e.style.scrollSnapType="none",e.scrollTo({top:0,left:7.5+n*t,behavior:"smooth"}),clearTimeout(this.snapTimeout),this.snapTimeout=setTimeout(()=>{this.$refs.carousel.style.scrollSnapType="x mandatory"},1e3)}}},ix=t=>(Rt("data-v-b3da0c52"),t=t(),Mt(),t),sx={class:"container container--loadpoint px-0 mb-md-2 d-flex flex-column justify-content-center"},ox={ref:"carousel",class:"carousel d-lg-flex flex-wrap"},ax={key:0,class:"d-flex d-lg-none justify-content-center"},lx=["onClick"],cx=ix(()=>O("shopicon-filled-circle",{class:"indicator-icon"},null,-1)),ux=[cx];function fx(t,e,n,r,i,s){const o=ve("Loadpoint");return F(),Y("div",sx,[O("div",ox,[(F(!0),Y(Ve,null,yn(n.loadpoints,(a,l)=>(F(),Y("div",{key:l,class:"flex-grow-1 mb-3 m-lg-0 p-lg-0"},[se(o,tn(a,{id:l,vehicles:n.vehicles,class:["h-100",{"loadpoint-unselected":!s.selected(l)}],onClick:c=>s.scrollTo(l)}),null,16,["id","vehicles","class","onClick"])]))),128))],512),n.loadpoints.length>1?(F(),Y("div",ax,[(F(!0),Y(Ve,null,yn(n.loadpoints,(a,l)=>(F(),Y("button",{key:l,class:Be(["btn btn-sm btn-link p-0 mx-1 indicator d-flex justify-content-center align-items-center evcc-default-text",{"indicator--selected":s.selected(l)}]),onClick:c=>s.scrollTo(l)},ux,10,lx))),128))])):Le("",!0)])}const dx=Oe(rx,[["render",fx],["__scopeId","data-v-b3da0c52"]]);var hx='';class mx extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=hx}}window.customElements.define("shopicon-regular-refresh",mx);const px={name:"Vehicles",components:{Vehicle:vc},data(){return{refreshing:!1,vehicles:[{vehiclePresent:!0,vehicleTitle:"Ford Mustang Mach-E",vehicleSoC:46,vehicleRange:182,targetSoC:100},{vehiclePresent:!0,vehicleTitle:"Renault Twingo Electric",vehicleSoC:77,vehicleRange:98,targetSoC:90},{vehiclePresent:!0,vehicleTitle:"Blauer VW ID.4",vehicleSoC:16,vehicleRange:52,minSoC:35,targetSoC:60}]}},methods:{refresh(){this.refreshing=!0,window.setTimeout(()=>{this.refreshing=!1},5e3)}}},gx=t=>(Rt("data-v-7430d6bb"),t=t(),Mt(),t),_x={class:"container px-4 mb-3 mb-sm-4 d-flex justify-content-start align-items-center"},vx={class:"m-0"},bx=["disabled"],yx=gx(()=>O("shopicon-regular-refresh",{class:"refresh-icon"},null,-1)),Ex=[yx];function wx(t,e,n,r,i,s){const o=ve("Vehicle");return F(),Y("div",null,[O("div",_x,[O("h2",vx,X(t.$t("main.vehicles")),1),O("button",{class:Be(["btn btn-link d-flex evcc-default-text p-2 ms-1 refresh",{"refresh--in-progress":i.refreshing}]),disabled:i.refreshing,onClick:e[0]||(e[0]=(...a)=>s.refresh&&s.refresh(...a))},Ex,10,bx)]),O("div",{class:Be(["container vehicles px-0 mb-5",`vehicles-${i.vehicles.length}`])},[(F(!0),Y(Ve,null,yn(i.vehicles,(a,l)=>(F(),Fe(o,tn(a,{id:`vehicle_${l}`,key:l,class:"vehicle",parked:""}),null,16,["id"]))),128))],2)])}const Tx=Oe(px,[["render",wx],["__scopeId","data-v-7430d6bb"]]);var Cx='';class Sx extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=Cx}}window.customElements.define("shopicon-filled-testtube",Sx);const Ax={name:"Logo"},Bu=t=>(Rt("data-v-9d6237eb"),t=t(),Mt(),t),Ox={viewBox:"0 0 122 35",xmlns:"http://www.w3.org/2000/svg","fill-rule":"evenodd","clip-rule":"evenodd","stroke-linejoin":"round","stroke-miterlimit":"2"},Nx=Bu(()=>O("path",{d:"M13.082 29.071a12.384 12.384 0 01-9-3.42 12.192 12.192 0 01-3.54-9.12v-.64a15.394 15.394 0 011.47-6.83 10.825 10.825 0 014.17-4.64 11.64 11.64 0 016.15-1.63 10.45 10.45 0 018.21 3.26c2 2.194 3 5.297 3 9.31v2.76H7.382a6.348 6.348 0 002 4 5.997 5.997 0 004.16 1.49 7.305 7.305 0 006.1-2.84l3.31 3.73a10 10 0 01-4.13 3.39 13.309 13.309 0 01-5.74 1.18zm-.77-20.84a4.216 4.216 0 00-3.26 1.37 7.141 7.141 0 00-1.6 3.91h9.39v-.55a5.005 5.005 0 00-1.22-3.49 4.304 4.304 0 00-3.31-1.24zM36.452 20.331l4.7-17.09h7l-8.48 25.36h-6.44l-8.52-25.36h7l4.74 17.09zM85.542 23.611a4.444 4.444 0 003-1 3.638 3.638 0 001.22-2.75h6.32a8.668 8.668 0 01-1.4 4.73 9.145 9.145 0 01-3.79 3.3 11.736 11.736 0 01-5.29 1.19 10.912 10.912 0 01-8.54-3.46c-2.087-2.3-3.13-5.483-3.13-9.55v-.45c0-3.9 1.033-7.016 3.1-9.35a10.868 10.868 0 018.51-3.5c2.791-.134 5.524.84 7.6 2.71a9.626 9.626 0 012.9 7.21h-6.3a4.663 4.663 0 00-1.2-3.22 4.005 4.005 0 00-3.08-1.24 4.068 4.068 0 00-3.56 1.73c-.8 1.15-1.2 3-1.2 5.6v.7c0 2.61.39 4.49 1.19 5.63a4.092 4.092 0 003.65 1.72zM110.422 23.611a4.454 4.454 0 003-1 3.63 3.63 0 001.21-2.75h6.33a8.668 8.668 0 01-1.4 4.73 9.143 9.143 0 01-3.73 3.3 11.76 11.76 0 01-5.29 1.18 10.912 10.912 0 01-8.54-3.46c-2.087-2.3-3.13-5.483-3.13-9.55v-.45c0-3.9 1.033-7.016 3.1-9.35a10.85 10.85 0 018.57-3.49 10.575 10.575 0 017.6 2.71 9.598 9.598 0 012.91 7.21h-6.33a4.651 4.651 0 00-1.21-3.22 4.492 4.492 0 00-6.64.49c-.8 1.15-1.21 3-1.21 5.6v.7c0 2.607.4 4.484 1.2 5.63a4.09 4.09 0 003.56 1.72z",fill:"#fff",class:"letter","fill-rule":"nonzero"},null,-1)),Lx=Bu(()=>O("path",{d:"M58.462.751h9.22l-6.14 12.3h6.15l-11.53 21.51 2.3-15.36h-7.68l7.68-18.45z",fill:"#0fdd42","fill-rule":"nonzero"},null,-1)),kx=Bu(()=>O("path",{fill:"none",d:"M-24.458-22.109h170v76h-170z"},null,-1)),xx=[Nx,Lx,kx];function Px(t,e,n,r,i,s){return F(),Y("svg",Ox,xx)}const Ix=Oe(Ax,[["render",Px],["__scopeId","data-v-9d6237eb"]]);var Rx='';class Mx extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=Rx}}window.customElements.define("shopicon-regular-gift",Mx);var Dx='';class $x extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=Dx}}window.customElements.define("shopicon-regular-moonstars",$x);const Fx={name:"Version",components:{Logo:Ix},props:{installed:String,available:String,releaseNotes:String,commit:String,hasUpdater:Boolean,uploadMessage:String,uploadProgress:Number},data:function(){return{updateStarted:!1,updateStatus:""}},computed:{githubHashUrl:function(){return`https://github.com/evcc-io/evcc/commit/${this.commit}`},newVersionAvailable:function(){return this.available&&this.installed!="[[.Version]]"&&this.installed!="0.0.1-alpha"&&this.available!=this.installed}},methods:{update:async function(){try{await An.post("update"),this.updateStatus=this.$t("footer.version.modalUpdateStatusStart"),this.updateStarted=!0}catch(t){this.updateStatus=this.$t("footer.version.modalUpdateStatusStart")+t}},releaseNotesUrl:function(t){return`https://github.com/evcc-io/evcc/releases/tag/${t}`}}},Ia=t=>(Rt("data-v-3d9edeb8"),t=t(),Mt(),t),Vx=["href"],Hx=Ia(()=>O("shopicon-regular-moonstars",{class:"ms-2 text-gray-light"},null,-1)),Ux={class:"ms-2 text-gray-light d-none d-sm-inline"},Bx={key:1,href:"#","data-bs-toggle":"modal","data-bs-target":"#updateModal",class:"btn btn-link ps-0 text-decoration-none evcc-default-text text-nowrap d-flex align-items-end"},jx=Ia(()=>O("shopicon-regular-gift",{class:"me-2 text-evcc"},null,-1)),Wx={class:"ms-2 d-none d-xs-block d-sm-none text-decoration-underline"},zx={class:"ms-2 d-none d-sm-block text-gray-medium text-decoration-underline"},Kx=["href"],Yx={id:"updateModal",class:"modal fade text-dark",tabindex:"-1",role:"dialog","aria-hidden":"true"},qx={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},Gx={class:"modal-content"},Xx={class:"modal-header"},Qx={class:"modal-title"},Jx=Ia(()=>O("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"},null,-1)),Zx={class:"modal-body"},eP={key:0},tP={class:"progress my-3"},nP={key:1},rP=["innerHTML"],iP={key:1},sP=["href"],oP=nt(". "),aP={class:"modal-footer d-flex justify-content-between"},lP=["disabled"],cP=["disabled"],uP={key:0},fP=Ia(()=>O("span",{class:"spinner-border spinner-border-sm",role:"status","aria-hidden":"true"},null,-1)),dP={key:1},hP=["href"];function mP(t,e,n,r,i,s){const o=ve("Logo");return F(),Y("div",null,[n.commit?(F(),Y("a",{key:0,href:s.githubHashUrl,target:"_blank",class:"btn btn-link ps-0 text-decoration-none evcc-default-text text-nowrap d-flex align-items-end"},[se(o,{class:"logo me-2"}),nt(" v"+X(n.installed)+" ",1),Hx,O("span",Ux,"["+X(n.commit)+"]",1)],8,Vx)):s.newVersionAvailable?(F(),Y("button",Bx,[jx,nt(" v"+X(n.installed)+" ",1),O("span",Wx,X(t.$t("footer.version.availableShort")),1),O("span",zx,X(t.$t("footer.version.availableLong")),1)])):(F(),Y("a",{key:2,href:s.releaseNotesUrl(n.installed),target:"_blank",class:"btn btn-link evcc-default-text ps-0 text-decoration-none text-nowrap d-flex align-items-end"},[se(o,{class:"logo me-2"}),nt(" v"+X(n.installed),1)],8,Kx)),(F(),Fe(ya,{to:"body"},[O("div",Yx,[O("div",qx,[O("div",Gx,[O("div",Xx,[O("h5",Qx,X(t.$t("footer.version.modalTitle")),1),Jx]),O("div",Zx,[t.updateStarted?(F(),Y("div",eP,[O("p",null,X(t.$t("footer.version.modalUpdateStarted")),1),O("div",tP,[O("div",{class:"progress-bar progress-bar-striped progress-bar-animated",role:"progressbar",style:Ot({width:n.uploadProgress+"%"})},null,4)]),O("p",null,X(t.updateStatus)+X(n.uploadMessage),1)])):(F(),Y("div",nP,[O("p",null,[O("small",null,X(t.$t("footer.version.modalInstalledVersion"))+": "+X(n.installed),1)]),n.releaseNotes?(F(),Y("div",{key:0,innerHTML:n.releaseNotes},null,8,rP)):(F(),Y("p",iP,[nt(X(t.$t("footer.version.modalNoReleaseNotes"))+" ",1),O("a",{href:s.releaseNotesUrl(n.available)},"GitHub",8,sP),oP]))]))]),O("div",aP,[O("button",{type:"button",class:"btn btn-outline-secondary",disabled:t.updateStarted,"data-bs-dismiss":"modal"},X(t.$t("footer.version.modalCancel")),9,lP),O("div",null,[n.hasUpdater?(F(),Y("button",{key:0,type:"button",class:"btn btn-primary",disabled:t.updateStarted,onClick:e[0]||(e[0]=(...a)=>s.update&&s.update(...a))},[t.updateStarted?(F(),Y("span",uP,[fP,nt(" "+X(t.$t("footer.version.modalUpdate")),1)])):(F(),Y("span",dP,X(t.$t("footer.version.modalUpdateNow")),1))],8,cP)):(F(),Y("a",{key:1,href:s.releaseNotesUrl(n.available),class:"btn btn-primary"},X(t.$t("footer.version.modalDownload")),9,hP))])])])])])]))])}const pP=Oe(Fx,[["render",mP],["__scopeId","data-v-3d9edeb8"]]);var Xs={};(function t(e,n,r,i){var s=!!(e.Worker&&e.Blob&&e.Promise&&e.OffscreenCanvas&&e.OffscreenCanvasRenderingContext2D&&e.HTMLCanvasElement&&e.HTMLCanvasElement.prototype.transferControlToOffscreen&&e.URL&&e.URL.createObjectURL);function o(){}function a(I){var P=n.exports.Promise,j=P!==void 0?P:e.Promise;return typeof j=="function"?new j(I):(I(o,o),null)}var l=function(){var I=Math.floor(16.666666666666668),P,j,z={},ne=0;return typeof requestAnimationFrame=="function"&&typeof cancelAnimationFrame=="function"?(P=function(ie){var ae=Math.random();return z[ae]=requestAnimationFrame(function ce(he){ne===he||ne+I-1evcc.yaml. Die Standardkonfiguration evcc.dist.yaml kann daf\xFCr als Vorlage dienen (Download). chargers.meters. site. In einer Site wird der Netzanschluss mit dem konfigurierten EVU Z\xE4hler (meter) verbunden. loadpoints. In einem Ladepunkt wird die konfigurierte Wallbox (charger) mit dem Ladepunkt verbunden. evcc -c evcc.yaml uri: localhost:7070 # Adresse f\xFCr UI
interval: 10s # Regelintervall
meters:
- name: evu-z\xE4hler
diff --git a/dist/index.html b/dist/index.html
index 66ea47928..da0cabfab 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -20,8 +20,8 @@