NEWS
Buttons triggern Script -> wie resetten?
-
Hallo zusammen,
ich habe eine VIS mit 4 Buttons, die einen String in einen DP schreiben.
Nun möchte ich nach drücken einer der Buttons den DP per Blockly auswerten und entsprechende Aktionen ausführen.Soweit klappt alles wunderbar, das Script startet führt aus und am Ende resette ich den DP wieder mit Null
Dann startet das Script wieder von vorne....Folgende Gedanken:
Ich könnte natürlich nach dem Trigger (on(DP....) eine WENN Abfrage setzen auf nicht null....
Dann wird aber das Script trotzdem 2x durchlaufen (beim 2. mal eben nur kurz)gibt es eine intelligentere Lösung?
VG Michael
-
@mottimuc sagte in Buttons triggern Script -> wie resetten?:
gibt es eine intelligentere Lösung?
dazu müsste man die unintelligente Lösung kennen!
bitte Blockly zeigen
-
@mottimuc die intelligente Lösung:
Da wo du das Skript auslösen willst nutzt du „steure“ , also setzen ohne acknowlege.
Das ist soweit ich weiß aus den Visualisierungen Standard.Im trigger dann auch „steure“ zur Auslösung fordern
Beim zurücksetzen einfach mit ack=true ( oder aktualisieren in blocky ) nutzen. Dann löst das das Skript nicht aus.
A.
Nachtrag zum Probieren. Das folgende Skript löst keine Endlosschleife aus, obwohl im Trigger der Datenpunkt geändert wird auf den getriggert wurde. Grund dafür ist die rot umrandete Einstellung
-
@homoran
Hier die View, die Einstellung des Buttons und die Abfrage im Blockly:Ich habe einen DP(STR) in den die 4 Buttons jeweils andere Buchstaben schreiben werden.
Das Blockly soll bei Änderung / Aktualisierung des DP starten und dann über einen Switch entscheiden was getan wird.
Da da einige längere, aber ähnliche Workflows dahinter liegen, möchte ich aus dem Blockly raus andere Scripte aufrufen und am Ende das Formular resetten. Also Werte Nullen und den DP bttn_VALUE auf NULL setzen.Grundsätzliche Frage:
Hier im Forum wird die Methode über den Trigger DP das Script zu starten positiv bewertet.
Daher vermute ich, dass es eben auch einen Best-Case geben muss.... oder? -
@asgothian sagte in Buttons triggern Script -> wie resetten?:
Da wo du das Skript auslösen willst nutzt du „steure“ , also setzen ohne acknowlege
geht leider nicht, in den MDW Widgets sehe ich die Option nicht? oder bin ich blind?
VG M
PS: ich hab zuerst geschaut, ob ich das in VIS 2 umsetzen möchte. Da hier aber weder eine vernünftige Doku vorliegt, noch der Funktionsumfang der Material Design Widgets gegeben ist, verzichte ich darauf.
-
@mottimuc sagte: Also Werte Nullen und den DP bttn_VALUE auf NULL setzen.
Wozu soll das gut sein? Das ist bei Trigger auf "wurde aktualisiert" nicht nötig.
@mottimuc sagte in Buttons triggern Script -> wie resetten?:
Methode über den Trigger DP das Script zu starten positiv bewertet.
Du setzt aber keinen DP zum Triggern, sondern du startest Skripte, was nicht zu empfehlen ist.
Packe besser den Inhalt zu startenden Skripte in Funktionen. -
@paul53 sagte in Buttons triggern Script -> wie resetten?:
Du setzt aber keinen DP zum Triggern, sondern du startest Skripte, was nicht zu empfehlen ist.
Hi Paul,
sorry, kannst Du mich bitte aufklären?
Ich dachte eben, genauso wäre es gut, da nur kompiliert wird, wenn benötigt?
Wie wäre es Ideal?
Das JS in die VIS packen? Oder die weiteren Prozessschritte in Funktionen und diese aus dem Trigger raus ausrufen?
(Sorry, ich bin noob)ja, mit wurde aktualisiert hatte ich mir fast gedacht, war mir aber nicht sicher, ob das auch so wäre, wenn derselbe Button 2 mal gedrückt werden sollte.... daher der Gedanke mit dem "null"-setzen.
Ich habe nun die Variante von Asgothian getestet, die würde gehen.
(ich gestehe aber, dass ich den Hintergrund zwischen bestätigter und unbestätigter Änderung von DPs mir noch aneignen muss...)Danke vorab!
-
@mottimuc sagte: da nur kompiliert wird, wenn benötigt?
Ja, es wird bei jedem Skriptstart kompiliert - was unnötig Ressourcen zur Laufzeit verbraucht. Im anderen Falle werden alle Skripte nur einmal bei Start der Javascript-Instanz kompiliert.
-
@mottimuc sagte: Hier die View
Wie unterscheidest du "clear" von "cancel"?
-
@paul53
das habe ich auch vorhin gemerkt
Clear heißt nun refresh....VG M
-
@mottimuc sagte: Clear heißt nun refresh....
Ich habe es mal mit L (wie LÖSCHEN) kodiert.