Hallo,
ich kann ja im Chart-Label max und sum verwenden (label="$max, $sum)". Gibt es eine Möglichkeit, die Werte noch zu berechnen, also zB aus Watt kW zu machen (/1000). Habe es schon mit / oder | divide versucht, hat leider nicht geklappt. Also, entweder geht es ganz einfach und ich komme nicht drauf. Oder es geht nicht. Wobei ich eher auf 1. tippe :)
Viele Grüße
Zitat von: Det20 am 05 September 2023, 17:20:00...Wobei ich eher auf 1. tippe :)
Leider nicht.
Hier wird in der chart componente vorab berechnet:
https://github.com/knowthelist/ftui/blob/master/www/ftui/components/chart/chart.component.js#L52
und hier gesetzt als Text:
https://github.com/knowthelist/ftui/blob/master/www/ftui/components/chart/chart.component.js#L59
Mache die Umrechnung doch in deinem Device bzw. Fhem.
LG
Danke dir.
Guten Morgen,
da ich kürzlich auch darüber gestolpert war:
Ich habe die Daten direkt im chart-data angepasst:
<ftui-chart-data color="red" type="line"
log="my_lp"
file="history"
label="Grid (min: $min, max: $max, avg: $avg)"
spec="DbLog:myDbLog,predict,extend=60*60*24:myLGESS:gridPower.av:::$val=$val/1000"
point-radius="0"
fill
[update]="myLGESS:gridPower.av"
>
</ftui-chart-data>
Was mir dabei allerdings aufgefallen ist (speziell bei den $avg werten): Im chart widget werden alle Nachkommastellen dargestellt:
https://github.com/knowthelist/ftui/blob/13db8daa62c845c5f83920498850afef7b624fce/www/ftui/components/chart/chart.component.js#L52-L56
Ich habe mir da jetzt so geholfen um auf eine Nachkommastelle zu runden:
resLabel = resLabel.replace(/\$min/g, Math.round(Math.min(...values)*10)/10);
resLabel = resLabel.replace(/\$max/g, Math.round(Math.max(...values)*10)/10);
resLabel = resLabel.replace(/\$sum/g, Math.round(values.reduce((a, b) => a + b)*10)/10);
resLabel = resLabel.replace(/\$avg/g, Math.round((values.reduce((a, b) => a + b) / values.length)*10)/10);
resLabel = resLabel.replace(/\$last/g, Math.round((values[values.length - 1])*10)/10);
Eventuell könnte man das (oder ähnlich) generell ins chart widget übernehmen?
Gruß,
Tobias
Gibts für das Runden mittlerweile eine Lösung ?
Habe das selbe Problem ...
Zitat von: cotecmania am 14 Juni 2025, 17:18:42Gibts für das Runden mittlerweile eine Lösung ?
Habe das selbe Problem ...
Zitat von: tobi01001 am 29 September 2023, 08:39:46Was mir dabei allerdings aufgefallen ist (speziell bei den $avg werten): Im chart widget werden alle Nachkommastellen dargestellt:
https://github.com/knowthelist/ftui/blob/13db8daa62c845c5f83920498850afef7b624fce/www/ftui/components/chart/chart.component.js#L52-L56 (https://github.com/knowthelist/ftui/blob/13db8daa62c845c5f83920498850afef7b624fce/www/ftui/components/chart/chart.component.js#L52-L56)
Ich habe mir da jetzt so geholfen um auf eine Nachkommastelle zu runden:
Code Auswählen Erweitern
resLabel = resLabel.replace(/\$min/g, Math.round(Math.min(...values)*10)/10);
resLabel = resLabel.replace(/\$max/g, Math.round(Math.max(...values)*10)/10);
resLabel = resLabel.replace(/\$sum/g, Math.round(values.reduce((a, b) => a + b)*10)/10);
resLabel = resLabel.replace(/\$avg/g, Math.round((values.reduce((a, b) => a + b) / values.length)*10)/10);
resLabel = resLabel.replace(/\$last/g, Math.round((values[values.length - 1])*10)/10);
Eventuell könnte man das (oder ähnlich) generell ins chart widget übernehmen?
in /www/ftui/components/chart/chart.component.js ändern?
was ist denn einfach mit
$val=round($val/1000, 1)
? das ist doch perl code der da interpretiert wird oder nicht?
Zitat von: tobi01001 am 14 Juni 2025, 21:23:13Zitat von: cotecmania am 14 Juni 2025, 17:18:42Gibts für das Runden mittlerweile eine Lösung ?
Habe das selbe Problem ...
Zitat von: tobi01001 am 29 September 2023, 08:39:46Was mir dabei allerdings aufgefallen ist (speziell bei den $avg werten): Im chart widget werden alle Nachkommastellen dargestellt:
https://github.com/knowthelist/ftui/blob/13db8daa62c845c5f83920498850afef7b624fce/www/ftui/components/chart/chart.component.js#L52-L56 (https://github.com/knowthelist/ftui/blob/13db8daa62c845c5f83920498850afef7b624fce/www/ftui/components/chart/chart.component.js#L52-L56)
Ich habe mir da jetzt so geholfen um auf eine Nachkommastelle zu runden:
Code Auswählen Erweitern
resLabel = resLabel.replace(/\$min/g, Math.round(Math.min(...values)*10)/10);
resLabel = resLabel.replace(/\$max/g, Math.round(Math.max(...values)*10)/10);
resLabel = resLabel.replace(/\$sum/g, Math.round(values.reduce((a, b) => a + b)*10)/10);
resLabel = resLabel.replace(/\$avg/g, Math.round((values.reduce((a, b) => a + b) / values.length)*10)/10);
resLabel = resLabel.replace(/\$last/g, Math.round((values[values.length - 1])*10)/10);
Eventuell könnte man das (oder ähnlich) generell ins chart widget übernehmen?
in /www/ftui/components/chart/chart.component.js ändern?
und beim nächsten update ists wieder weg ...
Zitat von: Guybrush am 14 Juni 2025, 22:12:48was ist denn einfach mit
$val=round($val/1000, 1)
? das ist doch perl code der da interpretiert wird oder nicht?
Nein, das funktioniert nicht im Label des Charts ....