Merge pull request #32 from andig/flexi

Fix responsive columns
This commit is contained in:
andig 2020-04-13 22:25:29 +02:00 • committed by GitHub
commit 327aefbcbc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 117 additions and 101 deletions

View file

@ -109,12 +109,12 @@
<span class="d-inline d-sm-none">Sofort</span>
<span class="d-none d-sm-inline">Sofortladen</span>
</label>
<label class="btn btn-outline-primary shadow-none" v-bind:class="{active:mode=='minpv'}" v-if="state.pvMeter">
<label class="btn btn-outline-primary shadow-none" v-bind:class="{active:mode=='minpv'}" v-if="state.gridMeter">
<input type="radio" value="minpv" v-on:click="mode='minpv'">
<span class="d-inline d-sm-none">Min</span>
<span class="d-none d-sm-inline">Minimum + PV</span>
</label>
<label class="btn btn-outline-primary shadow-none" v-bind:class="{active:mode=='pv'}" v-if="state.pvMeter">
<label class="btn btn-outline-primary shadow-none" v-bind:class="{active:mode=='pv'}" v-if="state.gridMeter">
<input type="radio" value="pv" v-on:click="mode='pv'">
<span class="d-inline d-sm-none">PV</span>
<span class="d-none d-sm-inline">Nur PV</span>
@ -127,7 +127,9 @@
<div>
<div class="card-deck mb-3 text-center">
<div class="col-12 col-md-6 col-lg-3" v-if="state.soc">
<div class="col-12" v-if="state.soc" v-bind:class="{
'col-md-6':items==2, 'col-md-4':items==3, 'col-md-6':items==4,
'col-lg-6':items==2, 'col-lg-3':items==4 }">
<div class="card mb-4 shadow-sm">
<div class="card-header">
<h4 class="my-0 font-weight-normal">Batterie</h4>
@ -141,8 +143,9 @@
</div>
</div>
<div class="col-12"
v-bind:class="{'col-md-6':state.soc, 'col-md-4':!state.soc, 'col-lg-3':state.soc, 'col-lg-4':!state.soc}">
<div class="col-12" v-bind:class="{
'col-md-6':items==2, 'col-md-4':items==3, 'col-md-6':items==4,
'col-lg-6':items==2, 'col-lg-3':items==4 }">
<div class="card mb-4 shadow-sm">
<div class="card-header">
<h4 class="my-0 font-weight-normal">Wallbox</h4>
@ -156,9 +159,10 @@
</div>
</div>
<div class="col-12"
v-bind:class="{'col-md-6':state.soc, 'col-md-4':!state.soc, 'col-lg-3':state.soc, 'col-lg-4':!state.soc}">
<div class="card mb-4 shadow-sm" v-if="state.gridMeter">
<div class="col-12" v-if="state.gridMeter" v-bind:class="{
'col-md-6':items==2, 'col-md-4':items==3, 'col-md-6':items==4,
'col-lg-6':items==2, 'col-lg-3':items==4 }">
<div class="card mb-4 shadow-sm">
<div class="card-header">
<h4 class="my-0 font-weight-normal">Netz</h4>
</div>
@ -175,8 +179,9 @@
</div>
</div>
<div class="col-12"
v-bind:class="{'col-md-6':state.soc, 'col-md-4':!state.soc, 'col-lg-3':state.soc, 'col-lg-4':!state.soc}">
<div class="col-12" v-if="state.pvMeter" v-bind:class="{
'col-md-6':items==2, 'col-md-4':items==3, 'col-md-6':items==4,
'col-lg-6':items==2, 'col-lg-3':items==4 }">
<div class="card mb-4 shadow-sm">
<div class="card-header">
<h4 class="my-0 font-weight-normal">PV</h4>

View file

@ -114,6 +114,17 @@ Vue.component("datapanel", {
state: store.state // global state
};
},
computed: {
items: function() {
if (this.state.soc && this.state.pvMeter) {
return 4;
} else if (this.state.soc || this.state.pvMeter) {
return 3;
} else {
return 2;
}
}
},
watch: {
"state.chargeDuration": function() {
window.clearInterval(this.tickerHandle);

View file

@ -424,7 +424,6 @@ func (lp *LoadPoint) updateModePV(mode api.ChargeMode) error {
func (lp *LoadPoint) updateMeter(name string, meter api.Meter, power *float64) error {
value, err := meter.CurrentPower()
if err != nil {
log.ERROR.Printf("%s %v", lp.Name, err)
return err
}
@ -438,26 +437,27 @@ func (lp *LoadPoint) updateMeter(name string, meter api.Meter, power *float64) e
// updateMeter updates and publishes single meter
func (lp *LoadPoint) updateMeters() (err error) {
var wg sync.WaitGroup
var mux sync.Mutex
// var wg sync.WaitGroup
// var mux sync.Mutex
retry := func(s string, m api.Meter, f *float64) {
e := retry.Do(func() error {
return lp.updateMeter(s, m, f)
})
if e != nil {
mux.Lock()
log.ERROR.Printf("%s %v", lp.Name, err)
// mux.Lock()
err = e
mux.Unlock()
// mux.Unlock()
}
wg.Done()
// wg.Done()
}
wg.Add(3)
go retry("grid", lp.GridMeter, &lp.gridPower)
go retry("pv", lp.PVMeter, &lp.pvPower)
go retry("charge", lp.ChargeMeter, &lp.chargePower)
wg.Wait()
// read PV meter before charge meter
retry("grid", lp.GridMeter, &lp.gridPower)
if lp.PVMeter != nil {
retry("pv", lp.PVMeter, &lp.pvPower)
}
retry("charge", lp.ChargeMeter, &lp.chargePower)
return err
}

View file

@ -3768,95 +3768,95 @@ BwBgGCOZLZiHR9hNqCPBTjirhEBqFhcmTaJ5/x/SW+FktvBUn2VO1+2iUlsc3soK2al4t7STSqRlvxkO
"/index.html": {
name: "index.html",
local: "../assets/index.html",
size: 12453,
size: 12664,
modtime: 1566640112,
compressed: `
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
AA==
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
AAD//805aVt4MQAA
`,
},
"/js/app.js": {
name: "app.js",
local: "../assets/js/app.js",
size: 4814,
size: 5047,
modtime: 1566640112,
compressed: `
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
Nn7OEgAA
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
`,
},