[FTUI3] Color Mapping gegen existierendes Mapping

Begonnen von LordVoodoo, 24 April 2024, 11:22:02

Vorheriges Thema - Nächstes Thema

LordVoodoo

Hallo,

ich möchte mir eine Kalenderansicht im Schachbrettmuster bauen. Dazu möchte ich den Feld-Wert gegen ein existierendes Reading vergleichen:

Konkret:
Haus_Kalenderansicht:row_4_column_1 - 23.04.2024
Haus_Kalenderansicht:row_4_column_2 - 24.04.2024
Haus_Kalenderansicht:current_date - 24.04.2024

in FTUI3 würde ich jetzt schreiben:
[color]="Haus_Kalenderansicht:row_4_column_2 | map('Haus_Kalenderansicht:current_date:primary, .*:grey')"

Klappt nur leider nicht, was auch logisch ist, schon wegen des Doppelpunktes. Bevor ich mir das vorberechne, wollte ich sicher stellen, dass es nicht mit Bordmitteln geht.

Falls nicht, sehe ich zwei Möglichkeiten:

1. Ein Flag setzen und über eine Substr-Funktion auslesen.

2. Mittels JS-Funktion das aktuelle Datum ermitteln, vergleichen und true/false zurückgeben.

yersinia

#1
Ich denke, dass es nicht so einfach mit Bordmitteln funktionieren würde.

Ich würde auch eher zu einem userReading oder reading-spezifische Farbdefinition im FHEM-Device raten, da ansonsten die Berechnung auf FTUI3-Seite erfolgt und einiges an Ressourcen kosten könnte. Insbesondere, da die Prüfung bei jedem refresh und für jeden Tag des Kalenderblattes durchgeführt wird. Da kann es effizienter sein, den color-wert aus FHEM zu übernehmen. Auf FHEM-seite musst du eh nur einmal täglich den Farbwert entsprechend berechnen.

Immerhin setzt du ja auch das Reading irgendwie:
Haus_Kalenderansicht:current_date - 24.04.2024demnach würde ich auch dynamisch ein Reading in etwa
Haus_Kalenderansicht:row_4_column_1_color grey
Haus_Kalenderansicht:row_4_column_2_color primary
generieren und in FTUI3 dann
[color]="Haus_Kalenderansicht:row_4_column_2_color"nutzen.

Allerdings geht es auch in FTUI3, als grober Lösungsansatz:
[color]="Haus_Kalenderansicht:row_4_column_2 | v=>this.v=v; Haus_Kalenderansicht:current_date | t=>t===this.v | map('true:primary, false:grey')"
Evtl fällt @mr_petz noch eine bessere Lösung ein. :)


@setstate: ggf wäre eine pipe
isToday()sinnvoll?
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

LordVoodoo

Ich habe mich den Abend abgemüht am Lösungsansatz von Yersinia, leider ohne Erfolg.

[color]="Haus_Kalender_Ansicht:row_3_column_3 | caldate => this.caldate = caldate; Haus_Kalender_Ansicht:current_date | today => today === this.caldate | map('true:ok, false:error')"

yersinia

Zitat von: LordVoodoo am 25 April 2024, 00:18:14[color]="Haus_Kalender_Ansicht:row_3_column_3 | caldate => this.caldate = caldate; Haus_Kalender_Ansicht:current_date | today => today === this.caldate | map('true:ok, false:error')"
komisch, sieht irgendwie nicht nach
[color]="Haus_Kalenderansicht:row_4_column_2 | v=>this.v=v; Haus_Kalenderansicht:current_date | t=>t===this.v | map('true:primary, false:grey')"aus. Hast du es genauso probiert?
Mit den spärlichen, von dir bisher zur Verfügung gestellten Device-Information funktioniert dies bei mir.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl