NEWS
Widget ausblenden, wenn anderes Widget aktiv ist
-
@manny4566 Nimm die vis-inventwo-Widgets, das Multi-Widget kann beim Typ "State" mehrere Zustände annehmen - und jeder lässt sich mit einem eigenen Wert, aber auch verschiedenen Datenpunkten festlegen. Treffen mehrere Bedingungen zu wird es meine ich der erste Treffer.
Ich nutze das zum Beispiel um 4 verschiedene Zustände meiner Waschmaschine anzuzeigen (Aus, Standby, Wäscht, ist fertig)
-
@bananajoe said in Widget ausblenden, wenn anderes Widget aktiv ist:
inventwo
danke für den Tipp, aber das hilft mir an der Stelle nicht, da es nicht um einfache Werte geht, sondern um das Widget von TrashSchedule. Hätte ich vielleicht direkt besser beschreiben sollen
@cinimod
Ja das ist mir bekannt@oliverio
ich mach mal paar Bilder rein und eine bessere Erklärung:Es geht um den TrashSchedule:
Ich habe 4 Adapter, da ich gerne für jede Tonne ein Einzelnes Widget haben möchte.
Die nächste Tonne wird mir 2 Tage vorher angezeigt in der VIS an einer dafür definierten Stelle.
Mit der Bedingung wird nur die Tonne angezeigt, die in den nächsten 2 Tagen dran ist, sonst keines der Widgets.
Jetzt hatte ich den speziellen Fall in dieser Woche, dass eine Tonne Dienstag dran war und eine Mittwoch. Am Montag wurden mir somit beide Widgets angezeigt und haben sich dadurch überlagert.
Dieser Fall kommt vielleicht nur einmal im Jahr vor und ist sehr selten. Ich hatte ihn bis vor kurzem gar nicht auf dem Schirm.
Meine Idee war jetzt, ob man nicht eventuell eine weitere Bidungung in form einer if Schleife einbauen könnte unter dem Script Reiter, nach dem Motto, dass das Objekt nur angezeigt werden soll, wenn kein anderes aktiv ist.
In der Hoffnung, dass das geht. -
@manny4566 Es gibt auch die Datenpunkte - ich habe statt dem TrashSchedule Widget einfach meine eigenen gebaut und die Infos aus den Datenpunkten bezogen:
Könnte man natürlich auch übereinander legen bzw. in einem Widget realisieren
-
was ich noch nicht verstehe: wenn beide aktiv sind, überlagern sie sich - dann ist doch die hintere tonne eh nicht sichtbar ? wenn sie die selben größen haben - oder was ist da das problem ? hast du da mal ein bild
theoretisch könnte die datenpunkte in der vis abfragen und mit jquery eines davon ausblenden - dann ist aber die info weg, das beide "eigentlich" fällig sind und beide eigentlich auch angezeigt werden sollten
man könnte auch die position der bilder ändern, in abhängigkeit des trashschedule wertes - dann müßte aber auch die position eines bildes in abhängigkeit verschoben werden - falls du die tage auch noch anzeigst - z.b in der mitte des bildes, müßte auch das bedacht werden
hier mal beispiele, wie man das anzeigen könnte - ich gehe davon aus, du willst immer den selben bereich nutzen, also die größe eines bildes - -ich habe das nicht getestet, aber es müßte mit bindings möglich sein. das erste bild sind 2 hintereinander - das hintere sieht man nicht - das rechte bild finde ich am besten
-
@liv-in-sky
Hi,
ich hab es mal nachgestellt. Vielleicht hab ich da irgendwo auch einen Denkfehler oder einen Wert falsch.
So wäre es normal, mit der Tonne, die heute dran ist:Jetzt hab ich mal den Restmüll dazugeschaltet, die in 6 Tagen dran ist indem ich dort den Wert der Bedingung von 2 auf 6 geändert hab. Es sind somit beide aktiv und überlagern sich:
-
ok - du nutzt die widget von trashschedule und keine eigenene bilder -es überlagern sich nur die texte - ich muss mir mal kurz die widgets ansehen - ich nutze die nicht
-
@liv-in-sky
Ja der Text auf jeden Fall.
Die Tonne auch etwas . Man sieht die Ränder der Tonne im Hintergrund etwas.Vielleicht kann man das auch mit einem Trick umgehen.
Ich weiß leider nicht, was mit jquery so alles möglich ist. Da kenne ich mich nicht aus.
Vielleicht kann man die Größe des hinteren Widgets dynamisch anpassen und verkleinern, wenn was anderes aktiv ist und würde somit das hintere Widget gar nicht sehen.
Oder ggf. ganz ausschalten?Danke dir
-
das müßte doch mit opacity funktionieren
{wert1:trashschedule.0.type.restmüll.daysLeft; wert1<=2 ? 0 : 100 }
das muss in im wertstoff -widget bei ocupacity eingetragen werden
du musst aber deinen datenpunkt (hat andere id wie bei mir) angleichen
-
Hi,
ja damit klappt es. Super danke.
Aber noch eine Frage dazu.Kann man da auch weitere Werte abfragen und mit einem "oder" vergleichen, welcher von beiden eintrifft, damit am Ende das ganze true ist und ausgeblendet wird?
Also sowas z.B.:
{wert1:trashschedule.1.next.daysLeft; wert1 <=2 ? 0 : 100 }||{wert2:trashschedule.2.next.daysLeft; wert2 <=2 ? 0 : 100 }
Leider klappt die Variante nicht.
-
@manny4566 ja geht aber anders
beispiel:
https://forum.iobroker.net/post/704635{wert1:0_userdata.0.CONTROL-OWN.AAATEST.TestLogic2; wert2:0_userdata.0.CONTROL-OWN.AAATEST.TestLogic; wert3:0_userdata.0.CONTROL-OWN.AAATEST.TestHTMLRefresh; wert1=="true" ? wert2=="true" ? wert3=="true" ? "blinker" :"" : "": ""}
du musst alles in einer geschweiften klammer machen!
die if abfrage geht so:
wert==2 ? 0 : 100
wenn wert gleich 2 dann 0 sonst 100
darin musst du dann verschachteln
zu deinem beispiel:
{dp2:trashschedule.0.type.restmüll.daysLeft; dp1:trashschedule.0.type.papierTonne.daysLeft; dp2 == 13 || dp1==8 ? 0 : 100 }
ABER
es gibt wieder mal einen bug (deshalb hat es länger gedauert) in der vis: wenn der zweite dp einen umlaut beinhaltet geht es nicht, daher habe ich das mit papiertonne getestet - steht da biomüll, hat die formel einen fehler
wenn du das nutzen willst, geht das nur über ein alias, dass darf dann keinen umlaut habenhabe github issue eröffnet:
-
Danke für die ausführliche Erklärung. Das hilft mir weiter.