FTUI3 Chart: Label

Begonnen von Det20, 05 September 2023, 17:20:00

Vorheriges Thema - Nächstes Thema

Det20

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

mr_petz


Det20


tobi01001

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
FHEM@UbuntuServer on Lenovo ThinkCentre M900 [i5-6500T / 8GB RAM] MySQL-DbLog, Grafana, FTUI3 / HmIP incl. CCU3 / LGESS / Wärempumpe über TA CMI und CANoE / Shellies u.v.m.

cotecmania

Gibts für das Runden mittlerweile eine Lösung ?
Habe das selbe Problem ...
FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI

tobi01001

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

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?
FHEM@UbuntuServer on Lenovo ThinkCentre M900 [i5-6500T / 8GB RAM] MySQL-DbLog, Grafana, FTUI3 / HmIP incl. CCU3 / LGESS / Wärempumpe über TA CMI und CANoE / Shellies u.v.m.

Guybrush

was ist denn einfach mit

$val=round($val/1000, 1)
? das ist doch perl code der da interpretiert wird oder nicht?