FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: Det20 am 05 September 2023, 17:20:00

Titel: FTUI3 Chart: Label
Beitrag von: Det20 am 05 September 2023, 17:20:00
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
Titel: Aw: FTUI3 Chart: Label
Beitrag von: mr_petz am 05 September 2023, 21:07:46
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
Titel: Aw: FTUI3 Chart: Label
Beitrag von: Det20 am 19 September 2023, 14:28:31
Danke dir.
Titel: Aw: FTUI3 Chart: Label
Beitrag von: tobi01001 am 29 September 2023, 08:39:46
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
Titel: Aw: FTUI3 Chart: Label
Beitrag von: cotecmania am 14 Juni 2025, 17:18:42
Gibts für das Runden mittlerweile eine Lösung ?
Habe das selbe Problem ...
Titel: Aw: FTUI3 Chart: Label
Beitrag von: tobi01001 am 14 Juni 2025, 21:23:13
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?
Titel: Aw: FTUI3 Chart: Label
Beitrag von: Guybrush am 14 Juni 2025, 22:12:48
was ist denn einfach mit

$val=round($val/1000, 1)
? das ist doch perl code der da interpretiert wird oder nicht?
Titel: Aw: FTUI3 Chart: Label
Beitrag von: cotecmania am 15 Juni 2025, 13:59:07
Zitat von: tobi01001 am 14 Juni 2025, 21:23:13
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?

und beim nächsten update ists wieder weg ...
Titel: Aw: FTUI3 Chart: Label
Beitrag von: cotecmania am 15 Juni 2025, 14:01:56
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 ....