NEWS
Anzuzeigenen Text ändern?
-
Ich habe jetzt schon sehr lange nichts mehr mit VIS gemacht.
Nun aber doch eine Frage.
Von einem Datenpunkt kommt entweder "true" oder "false".
Kann ich das direkt in Vis in "Eingeschaltet" und "Ausgeschaltet" ersetzen?
Grüße
-
@beowolf
Klar, z.B. mit einem "basic bool html"
Oder per Binding{wert: 0_userdata.0.Test.test_bool; wert == "true" ? "eingeschaltet" : "ausgeschaltet"}
-
Danke für die Hilfe.
Mit Binding kenne ich mich nicht wirklich aus. Das ist alles so kryptisch.
-
@beowolf sagte in Anzuzeigenen Text ändern?:
Mit Binding kenne ich mich nicht wirklich aus. Das ist alles so kryptisch.
OK, dann nehmen wir das mal ein bisschen auseinander:
Wenn man den "ternären Operator" einmal verstanden hat, ist es ganz einfach:
Vorne (vor dem Fragezeichen) steht ein Ausdruck, der als Ganzes entweder wahr oder falsch liefert.
Nach dem Fragezeichen folgt, was zurückgeliefert werden soll wenn dieser Ausdruck "wahr" liefert.
Nach dem Doppelpunkt folgt, was im Falle von "falsch" zurückgeliefert werden soll.
Das kann man auch bis zum Sanktnimmerleinstag miteinander verschachteln. Dann wird's aber tatsächlich schnell unübersichtlich.Der ternäre Operator hat den Vorteil, dass er Ergebnisse sowohl für "wahr" als auch für "falsch" liefert.
In Pseudocode ausgedrückt würde das in etwa so aussehen:if (wert == 'true') { return 'eingeschaltet' } else { return 'ausgeschaltet' }
-
OK.
Dann sollte das doch die Hintergrundfarbe entsprechend ändern, oder?
Bei CSS Hintergrund
{wert: sonoff.0.Kellerlüfter-1.POWER_bool; wert ? "#ff0000" : "#ffffff"}
-
@beowolf
Sieht jedenfalls richtig aus -
Leider funktioniert es aber nicht.
Die erste Farbe wird angezeigt. Ein wechsel findet aber nicht statt.
Muß der Farbwechsel noch durch etwas anderes angestossen werden?
-
@beowolf sagte in Anzuzeigenen Text ändern?:
Muß der Farbwechsel noch durch etwas anderes angestossen werden?
durch Änderung des Wertes
-
@beowolf sagte in Anzuzeigenen Text ändern?:
sonoff.0.Kellerlüfter-1.POWER_bool
Ansonsten sind da Zeichen verwendet, die wahrscheinlich für IDs verboten sind, oder zumindest möglicherweise das Binding irritierdn, wie das Minus
-
-
@homoran sagte in Anzuzeigenen Text ändern?:
durch Änderung des Wertes
Eben!
Stehtsonoff.0.Kellerlüfter-1.POWER_bool
auftrue
, sollte die Farbe auf rot wechseln.
Ändert sich der Wert auffalse
, sollte es weiß werden. -
-
@homoran sagte in Anzuzeigenen Text ändern?:
Ansonsten sind da Zeichen verwendet, die wahrscheinlich für IDs verboten sind, oder zumindest möglicherweise das Binding irritierdn, wie das Minus
Und Umlaute machen auch gerne Probleme. Sowas sollte man tunlichst vermeiden.
Edit
Versuch's mal so:{wert:0_userdata.0.Test.test_bool;wert=="true"?"#ff0000":"#ffffff"}
Hintergrund: Ein Binding arbeitet immer mit strings. Also muss das auch als solcher verarbeitet werden.
Sollten die Umlaute/Sonderzeichen immer noch Probleme bereiten:
- DP umbenennen
- oder einen Alias darauf anlegen - natürlich ohne Sonderzeichen in der ID
-
VIS 1.5.6
Bool HTML -
So, habe jetzt nochmal einen "neutralen" Datenpunkt angelegt.
Egal ob Bool Select, HTML oder Checkbox.
Tut nicht.
-
@beowolf
Und wie genau sieht Dein Binding dazu aus? -
@codierknecht sagte in Anzuzeigenen Text ändern?:
{wert:0_userdata.0.Test.test_bool;wert=="true"?"#ff0000":"#ffffff"}
Das was du geschrieben hattest.
{wert:0_userdata.0.Test.test_bool;wert=="true"?"#ff0000":"#ffffff"}
-
@beowolf
Den hast Du genau so angelegt?Meiner sieht so aus:
{ "common": { "name": "Bewegung erkannt", "desc": "Manuell erzeugt", "role": "state", "type": "boolean", "read": true, "write": true, "def": false }, "type": "state", "native": { "type": "string" }, "_id": "0_userdata.0.Test.test_bool", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1721155559353 }
Dass das so einwandfrei funktioniert, sieht man in dem kurzen Video.
Mein Basic-HTML:
-
Ich verstehe die Welt nicht mehr.
Habe es gerade noch einmal versucht. Nichts verändert, einfach das alles eingegeben/kopiert wie gestern.
Was soll ich sagen - es fuktioniert.
Ich freue mich natürlich, aber es macht mich auch kirre nicht zu wissen warum es gestern nicht funktioniert hat.
Alle Befehle usw. hatte ich mir gestern in eine Textdatei abgespeichert. Genau diese heute reinkopiert und fertig.
Trotzdem vielen Dank für die nette Hilfe.
Bindings sind doch nicht so kryptisch.
PS
Es funktioniert auch mit Umlauten
Widget ist "Bool HTML"{wert:sonoff.0.Kellerlüfter1.alive;wert=="true"?"#ff0000":"#ffffff"}
-
@beowolf sagte in Anzuzeigenen Text ändern?:
Es funktioniert auch mit Umlauten
Sollte man trotzdem nach Möglichkeit vermeiden.
Aber egal: Hauptsache es funzt jetzt