Verbesserung
Wichtig
Detail
Fehlerbehebung
Detail
Detail
#25858
Modell-Editor läd bei Script-Ausführung Seite neu
Wenn man ein Test-Script laufen lässt (z.B. TestFormatOptions.script.xml), bei dem der Modell-Editor über ein Goto angesprungen wird, erscheint die Log-Meldung, dass die Seite neu geladen wurde und der Script-Recorder hängt nach Ausführung des Skriptes.
Ursache
Durch das GoTo zu DemoTypes.A wird der Tab Diagramm im Modell-Editor geöffnet und DemoTypes.A im Diagramm selektiert. Um ein entsprechendes Diagramm anzeigen zu können, wird das clientseitiges Control tl:DiagramJSGraphControl erstellt. Das Control enthält einen tl:ObjectScope, der u. a. den Graphen selbst enthält, und wird synchron mit seinem serverseitigen Pendant gehalten. Für den clientseitigen tl:ObjectScope im Modell-Editor sind zwei tl:ScopeListener registriert:
- Ein Listener, der das Diagramm mit Hilfe von uml.js bzw. diagram.js rendert.
- Ein Listener, der Änderungen des clientseitigen ObjectScopes zum Server sendet (nach 150ms) um dort den serverseitigen ObjectScope upzudaten bzw. synchron zu halten.
Zurzeit werden zuerst die Listener am clientseitigen ObjectScope registriert. Anschließend wird der ObjectScope geupdated, sodass er den Stand des serverseitigen ObjectScopes entspricht. Danach werden die Listener informiert, d. h. das Diagramm wird gerendert und die Änderungen an den Server geschickt, damit er seinen serverseitigen ObjectScope aktualisieren kann. Die letztgenannte Aktion ist im Falle der Diagrammerstellung sinnfrei. Bei der Erstellung des tl:ObjectScope sollte der Listener, der die beiden Scopes synchron hält erst registriert werden, wenn der clientseitige Scope initialisiert wurde.
Führt der Benutzer ein Skript aus, dass den Graphen und dadurch den clientseitigen Scope ändert und anschließend das Diagramm ausblendet (z. B. durch Tabwechsel), dann führt dies i. A. zum Neuladen der Seite, da das Kommando zum Updaten des serverseitigen Graphen bzw. tl:ObjectScope erst nach dem Ausblenden des Diagramms ausgeführt wird, da der entsprechende tl:CommandListener nicht mehr sichtbar ist bzw. existiert.
Test
TestFormatOptions.script.xml ausführen. Der Script-Recorder sollte nicht anhalten. Insbesondere sollte die Seite nicht neu geladen werden.