NEWS
[gelöst] Skript beim Anzeigen/Öffnen einer View ausführen
-
Hallo zusammende,
gibt es eine Möglichkeit, ein Skript (Javascript) beim Anzeigen/Öffnen einer View auszuführen? Es sollte automatisch starten, nicht erst nach dem Klicken eines Buttons.
Geht das mit dem Reiter Skript im VIS-Editor?
Habt Ihr dazu vielleicht ein Beispiel, an dem man sehen kann, wie das umgesetzt wird?Hitzige Grüße,
Ralf -
@rogerwilco-0
Mit diesen DP
siehst du einen viewwechsel.
Also script schreiben:
- trigger auf command "changeview"
- prüfen welche view aufgerufen wurde: DP data
- wenn ok, dann script ausführen.
-
@bahnuhr Danke für den Tipp! So könnte ein Schuh draus werden, ja...
Weißt Du denn, was es mit dem Reiter "Skripte" im VIS-Editor auf sich hat?
-
@rogerwilco sagte in [Frage] Skript beim Anzeigen/Öffnen einer View ausführen:
@bahnuhr Danke für den Tipp! So könnte ein Schuh draus werden, ja...
Weißt Du denn, was es mit dem Reiter "Skripte" im VIS-Editor auf sich hat?
Da kann man html Scripte laufen lassen.
Aber da bin ich raus. -
@rogerwilco zB. Laufzeit eines Shellys:
Das ist dann ein HTML-Widget:
{val:shelly.0.SHSW-25#123#1.uptime; a=Math.floor(val/86440); a==1 ? "1 Tag," : a>1 ? a+" Tage," : "0 Tage,"}<br/> {val:shelly.0.SHSW-25#123#1.uptime; toHHMMSS(val)}
Hier wird dann im 2. Binding direkt ein Script (toHHMMSS) aufgerufen, welches eben unter "Scripts" definiert wurde:
var toHHMMSS = (secs) => { var sec_num = parseInt(secs, 10) var hours = Math.floor(sec_num / 3600) % 24 var minutes = Math.floor(sec_num / 60) % 60 var seconds = sec_num % 60 return [hours,minutes,seconds] .map(v => v < 10 ? "0" + v : v) .filter((v,i) => v !== "00" || i > 0) .join(":") }
Das ist aber mit äußerster Vorsicht (nicht mein Beispiel) zu genießen, denn hier einen Fehler zu verursachen kann fatale Folgen haben. Die "Scripts" werden auch vom Editor beim laden bereits ausgeführt was dazu führen kann, dass der Editor nicht mehr startet und dann wird es extrem "lustig" den Fehler aus dem Quellcode zu bekommen (für die meisten gleichbedeutend mit Backup einspielen...).