NEWS
Boolsche Werte in CSS Ausdrücken
-
Hallöchen zusammen,
ich bräuchte mal jemanden, der mir den Wald zeigt, den ich vor lauter Bäumen nicht mehr sehe. Ich steh nämlich so richtig auf dem Schlauch. Folgendes Problem:
Ich habe für einige, kleinere Visu-Elemente eine Bedingung für die CSS-Farbe gesetzt, ähnlich wie diese:{h:mein.knotenpunkt.isInRange;h == 'true' ? "#33cc33" :"#FF0000"}
Ich frage einen Knotenpunkt hab, der entweder true oder false zurückliefert (boolscher Wert, kein String). Egal was ich ausprobiere, es klappt einfach nicht. Bei True soll es grün werden, bei False soll es rot werden.
{h:mein.knotenpunkt.isInRange;h=='true'?"#33cc33":"#FF0000"} {h:mein.knotenpunkt.isInRange;h=='true'? "#33cc33" :"#FF0000"}
Was passiert? Ist der Feldwert "false", dann wird die Farbe "rot" (soweit eigentlich ok). Ist der Feldwert aber "true", dann wirds nicht "grün", sondern bleibt "rot" ...
Ich hab auch verschiedene Varianten ausprobiert. Mit '===', komplett ohne (h?...), mit " statt 'Vielleicht weiß ja einer von euch woran es hängt ._.
Steh aufm Schlauch.Danke für eure Hilfe!
LG Stefi
-
@Stefi
Ich habe zwar keine Ahnung von Vis-Bindings, aber versuche es mal so:{h:mein.knotenpunkt.isInRange;h ? "#33cc33" :"#FF0000"}
-
@Stefi Du schreibst "boolscher Wert, kein String" aber im Code steht == 'true'.
JavaScript (in Chrome) sagt mir:
Versuch mal
h == true
zu schreiben oderh.toString() == 'true'
-
@paul53 sagte in Boolsche Werte in CSS Ausdrücken:
@Stefi
Ich habe zwar keine Ahnung von Vis-Bindings, aber versuche es mal so:{h:mein.knotenpunkt.isInRange;h ? "#33cc33" :"#FF0000"}
... oder so einfach wie es @paul53 geschrieben hat
-
-
@paul53 hab ich alles schon durch, weiß langsam keine Kombination mehr, die ich nicht versucht hab :)))
@UncleSam Ich hab einfach ein Beispiel genommen, wie ich es zuletzt aus letzter Verzweiflung versucht hab ^^ ich habe auch deinen Vorschlag
h.toString() == 'true'
ausprobiert, aber selbst damit ändert sich nichts auchh == true
ist ohne Erfolg geblieben@FredF Entweder bin ich schon wieder blind oder ich sehe bei deinem Beispiel keinen Unterschied zu dem Beispiel, dass ich eingangs angeführt habe und bei dem ich auch keinen Erfolg hatte Und bzgl. der fehlenden Leerzeichen: es hätte mich ehrlich gesagt sehr stark gewundert, wenn fehlende Leerzeichen die Lösung des Problems gewesen wären
Vielleicht nochmal kurz zum Nachstellen des Problems: Ich habe zwei "Basic - String"-Widgets in meiner Visu-Seite. Als Object-ID habe ich je einen Test-Knoten eingefügt, der einmal true (flag1) und einmal false (flag2) zurückliefert. Als Font-CSS habe ich aktuell folgende zwei Zeilen:
{h:javascript.0.datapoints.test.flag1;h == 'true' ? "#33cc33" : "#FF0000"} {h:javascript.0.datapoints.test.flag2;h == 'true' ? "#33cc33" : "#FF0000"}
Ergebnis: Für beide Flags wird mir eine rote Schriftfarbe ausgegeben. Obwohl es mind. für Flag1 grün sein müsste.
Fun Fact: Verwende ich bei beiden nur
h ?
bekommen beide Flags eine grüne Schriftfarbe. Beih == true ?
oderh === true ?
werden beide rot.Erklärt mir einer was er will, aber bool'sche Werte scheinen iwie piepegal zu sein oder ich bin einfach schlicht zu doof es zu verstehen
-
@Stefi sagte in Boolsche Werte in CSS Ausdrücken:
verwende ich bei beiden nur h ? bekommen beide Flags eine grüne Schriftfarbe. Bei h == true ? oder h === true ? werden beide rot.
Na dann funktioniert es doch mit der Farbe.
Da muss was anderes das Problem sein...
Miteinem
Basic String Widget undeinem
Eintrag von{x:DEINDATENPUNKT;x == 'true' ? "#33cc33" : "#FF0000"}
in CSS Font & Text Color ist jedenfalls das Ergebnis in der Vis Runtime bei Änderung von DEINDATENPUNKT true = grün bzw. false = rot
-
Hi,
bei mir funktioniert es z. B. so:
{val:sonoff.0.Sonoff_1.POWER; val == "true" ? "red": "green"}
Versuch mal bei Deinem 'true' dieses mit Anführungszeichen "true"
-
@FredF said in Boolsche Werte in CSS Ausdrücken:
Na dann funktioniert es doch mit der Farbe.
Da muss was anderes das Problem sein...Tut mir leid, aber das zeigt erstmal nur, dass überhaupt irgendwas funktioniert, nicht aber, dass die korrekte Farbwahl funktioniert. Denn dann hätte eines grün und eines rot sein müssen - dann hätte es funktioniert.
Ich habe jetzt aber trotzdem nochmal explizit das ausprobiert, was du gesagt hast. Eine komplett frische View, mit EINEM basic-string Widget und dem Eintrag, wie du es angegeben hast. Es klappt leider trotzdem nicht. Bei "true" bleibt die Font-Farbe weiterhin rot.
Was ich auch noch getestet hab: Mit einem basic-bool-checkbox-Widget werden die Checkbox-Haken richtig angehakt bzw. abgehakt, d.h. an den Feldwerten kann es - aus meiner Sicht - nicht liegen, die werden bei dem Widget ja offensichtlich richtig interpretiert. Bei einem basic-bool-HTML-Widget ebenso. Mit basic-ValueList-Widget funktioniert es beispielsweise auch nicht.
Für mich sieht es so aus, als würden bool'sche Werte nur bei den dafür vorgesehenen Widgets korrekt interpretiert. Bei allen anderen muss man mit Strings oder 0/1 arbeiten
Vielleicht auch nochmal kurz zum Vergleich:
ioBroker: 5.0.0
js-controller: 3.1.6 -
@Stefi sagte in Boolsche Werte in CSS Ausdrücken:
ioBroker: 5.0.0
??? Admin, oder was?
Welche Vis version? Meine ist 1.2.4
-
@qqolli sagte in Boolsche Werte in CSS Ausdrücken:
Versuch mal bei Deinem 'true' dieses mit Anführungszeichen "true"
Das funktioniert beides
-
@FredF said in Boolsche Werte in CSS Ausdrücken:
@Stefi sagte in Boolsche Werte in CSS Ausdrücken:
ioBroker: 5.0.0
??? Admin, oder was?
Welche Vis version? Meine ist 1.2.4
Ja, sry, hab die Vis-Version unterschlagen ^^ Ist bei mir auch die 1.2.4
Witzigerweise hab ich das von @qqolli nun auch nochmal ausprobiert. Mit meinem 'javascript.0.datapoints.test.flag' funktioniert es. Mit dem Knotenpunkt, den ich eigentlich verwenden will, funktioniert es ums Verrecken nicht
Ich hab beide Knotenpunkte verglichen - es sind definitiv beide vom type 'boolean'.Denke, dann können wir das an dieser Stelle erstmal stehen lassen. Scheint wohl ein Problem mit dem Knotenpunkt direkt zu sein. Habe aus dem gleichen Adapter andere Knotenpunkte getestet, die ebenfalls true zurückliefern - bei einigen funktionierts, bei anderen nicht... kann mir aber nicht erklären warum
-
@Stefi Bei mir funktioniert es auch nicht mehr, ich weiss noch nicht seit wann, aber mit den Hex-Farben geht es nicht mehr
-
@guergen true OHNE " oder ' ... also einfach == true .....
-
@harrym Wann hat sich das denn geändert?
-
@harrym said in Boolsche Werte in CSS Ausdrücken:
@guergen true OHNE " oder ' ... also einfach == true .....
Hab ich doch auch schon versucht funktioniert alles nich.... komischerweise geht es bei manchen Knotenpunkten und bei manchen nicht. Hab deswegen schon auf Github ein entsprechendes Issue eröffnet und um Unterstützung gebeten.
Ich kann einfach nicht ausmachen wo genau das Problem liegen soll fuchst mich etwas...
-
@Stefi Hat sich bezüglich des Issues schon was getan? Wo hast Du welches Issue aufgemacht?
-
@guergen sry für die späte Rückmeldung. Ja, am Issue hat sich was getan .. wenn auch eine sehr deprimierende Antwort: true und false sein boolsche Werte und damit keine Strings, deswegen solle man ein passendes Widget wählen .. das eigentliche Problem is irgendwie untergeganen.
Hier habe ich es eröffnet: https://github.com/iobroker-community-adapters/ioBroker.unifi/issues/101
Ist aber leider bereits geschlossen worden