NEWS
Binding in Vis-2
-
Ich habe folgendes:
wie kann ich nun dieses Binding so schreiben, dass es den Wert von Objekt ID nimmt ohne dass man den Datenpunkt noch einmal angeben muss?
{a:alias.0.PV.Batterie_kW; a <= 0 ? 'Entladung' : 'Ladung'}
-
@peterk34 versteh ich nicht was du willst ... kannst du deine Frage umformulieren oder das erwartete Endergebniss zeigen ?
-
Ich vermute mal es soll eine Anzeige werden die dann bspw. 13 kW Ladung anzeigt?
In "a" hast du den Wert gespeichert, somit kannst du innerhalb des Bindings auch darauf zugreifen:
{a:alias.0.PV.Batterie_kW; a <= 0 ? a+' kW Entladung' : a+' kW Ladung'}
Die "kW" sind natürlich Geschmackssache, beim "anhängen" sieht das IMO aber komisch aus: 13 Ladung kW
-
sorry, war wohl etwas zu vereinfacht ...
das dargestellte Binding funktiobniert so prima. Ich mache dieses widget aber so ca 20x, ändern tut sich jedes mal die Objekt ID. Somit muss ich dann bei jedem widget die Objekt ID des widgets einstellen und dann noch im HTML das a:alias.0.PV.Batterie_kW durch das jeweilige, ohnehin im Objekt ID des widget stehende ersetzen.
Mein Frage wäre nun, wie und ob ich das Binding a:alias.0.PV.Batterie_kW so verändern kann, dass es den Objekt ID des widgets nimmt. Ich hätte rausgelesen, dass das widgetOid sei - also müsste in meinem Beispiel
{a:alias.0.PV.Batterie_kW; a <= 0 ? 'Entladung' : 'Ladung'} {a:widgetOid; a <= 0 ? 'Entladung' : 'Ladung'}
das gleiche Ergebnis bringen. Tuts aber nicht.
Ich hoffe jetzt ists verstehbar.
Dankeschöööön
-
@peterk34 Ist jetzt zwar nicht unbedingt das, wonach du fragst, aber warum setzt du nicht einen zusätzlichen Alias, der je nach Zustand von alias.0.PV.Batterie_kW mit Entladung oder Ladung gesetzt wird.
-
@chrunchy
genau beantwortet die Frage nicht, ist aber definitiv ein guter anderer Weg. Mein HTML ist allerdings viel komplexer. Es stellt auch noch hach Wert Hintergrundfarbe usw. ein. Das geht mit dem alias nicht. Ich hatte das schon so ähnlich und einfach 2 widgets übereinandergelegt und dann je nach Zustand das eine oder andere ausgeblendet ... brauch ich doppelt soviele Ressourcen und auch zum Warten ein Wahnsinn. So schauts dann schon eher aus:<div style="width: 100px; height: 40px; background-color: {a:alias.0.PV.Batterie_kW; a <= 0 ? 'black' : 'green'}; display: flex; justify-content: center; align-items: center;"> <span> {a:alias.0.PV.Batterie_kW; a <= 0 ? 'Entladung' : 'Ladung'}:<br> {a:alias.0.PV.Batterie_kW; b:alias.0.PV.Batterie_W; (a < 1 && a > -1) ? b + ' W' : a + ' kW'} </span> </div>
-
wie kann ich nun dieses Binding so schreiben, dass es den Wert von Objekt ID nimmt ohne dass man den Datenpunkt noch einmal angeben muss?
Gar nicht. Ist nicht vorgesehen.
-
ok, danke
-
@chrunchy
ich hab deine Idee mal weiterverfolgt und einfach im alias den ganzen html erzeugt:"alias": { "id": "e3dc-rscp.0.EMS.POWER_BAT", "read": "'<div style=\"width: 100px; height: 40px; background-color: ' + (val <= 0 ? \"black\" : \"green\") + '; display: flex; justify-content: center; align-items: center;\"><span>' + (val <= 0 ? 'Entladung: <br>' : 'Ladung: <br>') + ((val < 1000 && val > -1000) ? Math.round(val) + 'W' : (Math.round(val / 100) / 10) + 'kW') + '</span> </div>'" }
und verwende dann im html widget einfach nur {alias.0.VIS.Ladung_Entladung1} ... und schon gehts.
Danke für den Tip!
Wahrscheinlich werde ich es aber nicht mit einem alias sondern einem JS lösen. Damit wird dann einiges mehr konfigurierbar.
-
@peterk34 ist zwar etwas late, aber hier, das wonach du fragtest:
{a: {a:;widget.data.oid}; a <= 0 ? 'Entladung' : 'Ladung'}: