Browse Source

Enable a "minimal rerender"

Yentl Van Tendeloo 7 years ago
parent
commit
194f743d58

+ 2 - 2
classes/canvas/canvas.xml

@@ -322,7 +322,7 @@
 
 
                             <transition event="mv_response" target="../../../waiting_for_clear">
                             <transition event="mv_response" target="../../../waiting_for_clear">
                                 <parameter name="ID"/>
                                 <parameter name="ID"/>
-                                <raise event="rerender_model" scope="narrow" target="'parent'"/>
+                                <raise event="minimal_rerender_model" scope="narrow" target="'parent'"/>
                             </transition>
                             </transition>
                         </state>
                         </state>
                     </state>
                     </state>
@@ -375,7 +375,7 @@
                         <script>
                         <script>
                             self.to_move[ID] = self.create_location
                             self.to_move[ID] = self.create_location
                         </script>
                         </script>
-                        <raise event="rerender_model" scope="narrow" target="'parent'"/>
+                        <raise event="minimal_rerender_model" scope="narrow" target="'parent'"/>
                     </transition>
                     </transition>
                 </state>
                 </state>
 
 

+ 2 - 2
classes/canvas/canvas_element.xml

@@ -301,7 +301,7 @@
                 <state id="check">
                 <state id="check">
                     <transition cond="current_rendered_model" target="../do"/>
                     <transition cond="current_rendered_model" target="../do"/>
                     <transition cond="not current_rendered_model" target="../../../main">
                     <transition cond="not current_rendered_model" target="../../../main">
-                        <raise event="rerender_model" scope="narrow" target="'parent/parent'"/>
+                        <raise event="minimal_rerender_model" scope="narrow" target="'parent/parent'"/>
                     </transition>
                     </transition>
                 </state>
                 </state>
 
 
@@ -313,7 +313,7 @@
                         </raise>
                         </raise>
                     </onentry>
                     </onentry>
                     <transition event="mv_response" target="../../../main">
                     <transition event="mv_response" target="../../../main">
-                        <raise event="rerender_model" scope="narrow" target="'parent/parent'"/>
+                        <raise event="minimal_rerender_model" scope="narrow" target="'parent/parent'"/>
                     </transition>
                     </transition>
                 </state>
                 </state>
             </state>
             </state>

+ 3 - 3
classes/canvas/connecting_line.xml

@@ -173,7 +173,7 @@
                 <transition event="mv_response" target="../prompt">
                 <transition event="mv_response" target="../prompt">
                     <parameter name="result"/>
                     <parameter name="result"/>
                     <script>
                     <script>
-                        self.prev_results = result
+                        self.prev_results = {k: json.dumps(v) for k, v in result.items()}
                     </script>
                     </script>
                 </transition>
                 </transition>
             </state>
             </state>
@@ -230,7 +230,7 @@
                     </script>
                     </script>
                     <raise event="mv_request" scope="broad">
                     <raise event="mv_request" scope="broad">
                         <parameter expr="'attr_assign'"/>
                         <parameter expr="'attr_assign'"/>
-                        <parameter expr="[current_model, self.as_element, k, v]"/>
+                        <parameter expr="[current_model, self.as_element, k, json.loads(v)]"/>
                     </raise>
                     </raise>
                 </transition>
                 </transition>
                 <transition cond="self.remaining_responses == 0" target="../mark_dirty"/>
                 <transition cond="self.remaining_responses == 0" target="../mark_dirty"/>
@@ -249,7 +249,7 @@
                     </raise>
                     </raise>
                 </onentry>
                 </onentry>
                 <transition event="mv_response" target="../../main">
                 <transition event="mv_response" target="../../main">
-                    <raise event="rerender_model" scope="narrow" target="'parent/parent'"/>
+                    <raise event="minimal_rerender_model" scope="narrow" target="'parent/parent'"/>
                 </transition>
                 </transition>
             </state>
             </state>
         </state>
         </state>

+ 2 - 1
classes/window/main_window.xml

@@ -117,6 +117,7 @@
                         <transition event="create_new_model" target="../create_new_model"/>
                         <transition event="create_new_model" target="../create_new_model"/>
                         <transition event="open_model" target="../open_model"/>
                         <transition event="open_model" target="../open_model"/>
                         <transition event="rerender_model" target="../rerender_model"/>
                         <transition event="rerender_model" target="../rerender_model"/>
+                        <transition event="minimal_rerender_model" target="../rerender_model/request_render"/>
                         <transition event="new_rendered" cond="current_mapper is not None" target="../new_rendered"/>
                         <transition event="new_rendered" cond="current_mapper is not None" target="../new_rendered"/>
                         <transition event="verify" target="../verify_model"/>
                         <transition event="verify" target="../verify_model"/>
                         <transition event="conf_bottom" target="../conf_bottom"/>
                         <transition event="conf_bottom" target="../conf_bottom"/>
@@ -213,7 +214,7 @@
                                 </raise>
                                 </raise>
                             </onentry>
                             </onentry>
 
 
-                            <transition event="mv_response" target="../../rerender_model"/>
+                            <transition event="mv_response" target="../../rerender_model/request_render"/>
                         </state>
                         </state>
                     </state>
                     </state>
 
 

+ 58 - 52
frontend.py

@@ -1,7 +1,7 @@
 """
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
 
-Date:   Mon May 28 11:45:20 2018
+Date:   Mon May 28 12:44:43 2018
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -3509,8 +3509,11 @@ class Modelverse(RuntimeClassBase):
     
     
     def _initialized_behaviour_operations_read_attrs_0_exec(self, parameters):
     def _initialized_behaviour_operations_read_attrs_0_exec(self, parameters):
         response = self.responses.pop(0).split(": ", 1)[1].strip()
         response = self.responses.pop(0).split(": ", 1)[1].strip()
-        values = {line.split(" : ", 1)[0]: line.split(" : ", 1)[1] for line in response.split("\n")}
-        values = {key: json.loads(values[key].split(" = ", 1)[1]) for key in values}
+        if "\n" in response:
+            values = {line.split(" : ", 1)[0]: line.split(" : ", 1)[1] for line in response.split("\n")}
+            values = {key: json.loads(values[key].split(" = ", 1)[1]) for key in values}
+        else:
+            values = {}
         self.raiseInternalEvent(Event("result", None, [values]))
         self.raiseInternalEvent(Event("result", None, [values]))
     
     
     def _initialized_behaviour_operations_read_attrs_0_guard(self, parameters):
     def _initialized_behaviour_operations_read_attrs_0_guard(self, parameters):
@@ -5688,59 +5691,62 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         _init_init_running_idle_2 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/rerender_model"]])
         _init_init_running_idle_2 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/rerender_model"]])
         _init_init_running_idle_2.setTrigger(Event("rerender_model", None))
         _init_init_running_idle_2.setTrigger(Event("rerender_model", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_2)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_2)
-        _init_init_running_idle_3 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/new_rendered"]])
-        _init_init_running_idle_3.setTrigger(Event("new_rendered", None))
-        _init_init_running_idle_3.setGuard(self._init_init_running_idle_3_guard)
+        _init_init_running_idle_3 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/rerender_model/request_render"]])
+        _init_init_running_idle_3.setTrigger(Event("minimal_rerender_model", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_3)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_3)
-        _init_init_running_idle_4 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/verify_model"]])
-        _init_init_running_idle_4.setTrigger(Event("verify", None))
+        _init_init_running_idle_4 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/new_rendered"]])
+        _init_init_running_idle_4.setTrigger(Event("new_rendered", None))
+        _init_init_running_idle_4.setGuard(self._init_init_running_idle_4_guard)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_4)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_4)
-        _init_init_running_idle_5 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/conf_bottom"]])
-        _init_init_running_idle_5.setTrigger(Event("conf_bottom", None))
+        _init_init_running_idle_5 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/verify_model"]])
+        _init_init_running_idle_5.setTrigger(Event("verify", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_5)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_5)
-        _init_init_running_idle_6 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/custom_MM"]])
-        _init_init_running_idle_6.setTrigger(Event("custom_MM", None))
+        _init_init_running_idle_6 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/conf_bottom"]])
+        _init_init_running_idle_6.setTrigger(Event("conf_bottom", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_6)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_6)
-        _init_init_running_idle_7 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/upload_MVC"]])
-        _init_init_running_idle_7.setTrigger(Event("upload_MVC", None))
+        _init_init_running_idle_7 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/custom_MM"]])
+        _init_init_running_idle_7.setTrigger(Event("custom_MM", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_7)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_7)
-        _init_init_running_idle_8 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/add_object_diagrams"]])
-        _init_init_running_idle_8.setTrigger(Event("add_object_diagrams", None))
+        _init_init_running_idle_8 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/upload_MVC"]])
+        _init_init_running_idle_8.setTrigger(Event("upload_MVC", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_8)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_8)
-        _init_init_running_idle_9 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/execute_activity"]])
-        _init_init_running_idle_9.setTrigger(Event("activity", None))
+        _init_init_running_idle_9 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/add_object_diagrams"]])
+        _init_init_running_idle_9.setTrigger(Event("add_object_diagrams", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_9)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_9)
-        _init_init_running_idle_10 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/create_activity"]])
-        _init_init_running_idle_10.setTrigger(Event("create_activity", None))
+        _init_init_running_idle_10 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/execute_activity"]])
+        _init_init_running_idle_10.setTrigger(Event("activity", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_10)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_10)
-        _init_init_running_idle_11 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/enact_process"]])
-        _init_init_running_idle_11.setTrigger(Event("enact_process", None))
+        _init_init_running_idle_11 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/create_activity"]])
+        _init_init_running_idle_11.setTrigger(Event("create_activity", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_11)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_11)
-        _init_init_running_idle_12 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/modify_defined_attrs"]])
-        _init_init_running_idle_12.setAction(self._init_init_running_idle_12_exec)
-        _init_init_running_idle_12.setTrigger(Event("modify_defined_attrs", None))
+        _init_init_running_idle_12 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/enact_process"]])
+        _init_init_running_idle_12.setTrigger(Event("enact_process", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_12)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_12)
-        _init_init_running_idle_13 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/change_metamodel"]])
+        _init_init_running_idle_13 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/modify_defined_attrs"]])
         _init_init_running_idle_13.setAction(self._init_init_running_idle_13_exec)
         _init_init_running_idle_13.setAction(self._init_init_running_idle_13_exec)
-        _init_init_running_idle_13.setTrigger(Event("change_metamodel", None))
+        _init_init_running_idle_13.setTrigger(Event("modify_defined_attrs", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_13)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_13)
-        _init_init_running_idle_14 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/change_mapper"]])
+        _init_init_running_idle_14 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/change_metamodel"]])
         _init_init_running_idle_14.setAction(self._init_init_running_idle_14_exec)
         _init_init_running_idle_14.setAction(self._init_init_running_idle_14_exec)
-        _init_init_running_idle_14.setTrigger(Event("change_mapper", None))
+        _init_init_running_idle_14.setTrigger(Event("change_metamodel", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_14)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_14)
-        _init_init_running_idle_15 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/change_rendered"]])
+        _init_init_running_idle_15 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/change_mapper"]])
         _init_init_running_idle_15.setAction(self._init_init_running_idle_15_exec)
         _init_init_running_idle_15.setAction(self._init_init_running_idle_15_exec)
-        _init_init_running_idle_15.setTrigger(Event("change_rendered", None))
+        _init_init_running_idle_15.setTrigger(Event("change_mapper", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_15)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_15)
-        _init_init_running_idle_16 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/idle"]])
+        _init_init_running_idle_16 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/change_rendered"]])
         _init_init_running_idle_16.setAction(self._init_init_running_idle_16_exec)
         _init_init_running_idle_16.setAction(self._init_init_running_idle_16_exec)
-        _init_init_running_idle_16.setTrigger(Event("select_for_creation", None))
+        _init_init_running_idle_16.setTrigger(Event("change_rendered", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_16)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_16)
-        _init_init_running_idle_17 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/open_model/search_metamodels"]])
+        _init_init_running_idle_17 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/idle"]])
         _init_init_running_idle_17.setAction(self._init_init_running_idle_17_exec)
         _init_init_running_idle_17.setAction(self._init_init_running_idle_17_exec)
-        _init_init_running_idle_17.setTrigger(None)
-        _init_init_running_idle_17.setGuard(self._init_init_running_idle_17_guard)
+        _init_init_running_idle_17.setTrigger(Event("select_for_creation", None))
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_17)
         self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_17)
+        _init_init_running_idle_18 = Transition(self, self.states["/init/init/running/idle"], [self.states["/init/init/running/open_model/search_metamodels"]])
+        _init_init_running_idle_18.setAction(self._init_init_running_idle_18_exec)
+        _init_init_running_idle_18.setTrigger(None)
+        _init_init_running_idle_18.setGuard(self._init_init_running_idle_18_guard)
+        self.states["/init/init/running/idle"].addTransition(_init_init_running_idle_18)
         
         
         # transition /init/init/running/modify_defined_attrs/create_window
         # transition /init/init/running/modify_defined_attrs/create_window
         _init_init_running_modify_defined_attrs_create_window_0 = Transition(self, self.states["/init/init/running/modify_defined_attrs/create_window"], [self.states["/init/init/running/modify_defined_attrs/wait_for_finished"]])
         _init_init_running_modify_defined_attrs_create_window_0 = Transition(self, self.states["/init/init/running/modify_defined_attrs/create_window"], [self.states["/init/init/running/modify_defined_attrs/wait_for_finished"]])
@@ -5755,7 +5761,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.states["/init/init/running/modify_defined_attrs/wait_for_finished"].addTransition(_init_init_running_modify_defined_attrs_wait_for_finished_0)
         self.states["/init/init/running/modify_defined_attrs/wait_for_finished"].addTransition(_init_init_running_modify_defined_attrs_wait_for_finished_0)
         
         
         # transition /init/init/running/modify_defined_attrs/mark_dirty
         # transition /init/init/running/modify_defined_attrs/mark_dirty
-        _init_init_running_modify_defined_attrs_mark_dirty_0 = Transition(self, self.states["/init/init/running/modify_defined_attrs/mark_dirty"], [self.states["/init/init/running/rerender_model"]])
+        _init_init_running_modify_defined_attrs_mark_dirty_0 = Transition(self, self.states["/init/init/running/modify_defined_attrs/mark_dirty"], [self.states["/init/init/running/rerender_model/request_render"]])
         _init_init_running_modify_defined_attrs_mark_dirty_0.setTrigger(Event("mv_response", None))
         _init_init_running_modify_defined_attrs_mark_dirty_0.setTrigger(Event("mv_response", None))
         self.states["/init/init/running/modify_defined_attrs/mark_dirty"].addTransition(_init_init_running_modify_defined_attrs_mark_dirty_0)
         self.states["/init/init/running/modify_defined_attrs/mark_dirty"].addTransition(_init_init_running_modify_defined_attrs_mark_dirty_0)
         
         
@@ -6335,21 +6341,21 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         tk_elem = parameters[0]
         tk_elem = parameters[0]
         tk_elem.pack(side=tk.BOTTOM, fill=tk.X, expand=tk.TRUE)
         tk_elem.pack(side=tk.BOTTOM, fill=tk.X, expand=tk.TRUE)
     
     
-    def _init_init_running_idle_3_guard(self, parameters):
+    def _init_init_running_idle_4_guard(self, parameters):
         return current_mapper is not None
         return current_mapper is not None
     
     
-    def _init_init_running_idle_12_exec(self, parameters):
+    def _init_init_running_idle_13_exec(self, parameters):
         as_element = parameters[0]
         as_element = parameters[0]
         cs_element = parameters[1]
         cs_element = parameters[1]
         self.as_element = as_element
         self.as_element = as_element
         self.cs_element = cs_element
         self.cs_element = cs_element
     
     
-    def _init_init_running_idle_13_exec(self, parameters):
+    def _init_init_running_idle_14_exec(self, parameters):
         new_metamodel = parameters[0]
         new_metamodel = parameters[0]
         global current_metamodel
         global current_metamodel
         current_metamodel = new_metamodel
         current_metamodel = new_metamodel
     
     
-    def _init_init_running_idle_14_exec(self, parameters):
+    def _init_init_running_idle_15_exec(self, parameters):
         new_mapper = parameters[0]
         new_mapper = parameters[0]
         global current_mapper
         global current_mapper
         if new_mapper == "(none)":
         if new_mapper == "(none)":
@@ -6357,22 +6363,22 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         else:
         else:
             current_mapper = new_mapper
             current_mapper = new_mapper
     
     
-    def _init_init_running_idle_15_exec(self, parameters):
+    def _init_init_running_idle_16_exec(self, parameters):
         new_rendered = parameters[0]
         new_rendered = parameters[0]
         global current_rendered_model
         global current_rendered_model
         current_rendered_model = new_rendered
         current_rendered_model = new_rendered
     
     
-    def _init_init_running_idle_16_exec(self, parameters):
+    def _init_init_running_idle_17_exec(self, parameters):
         element_name = parameters[0]
         element_name = parameters[0]
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'canvas', Event("select_for_creation", None, [element_name])]))
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'canvas', Event("select_for_creation", None, [element_name])]))
     
     
-    def _init_init_running_idle_17_exec(self, parameters):
+    def _init_init_running_idle_18_exec(self, parameters):
         global current_model
         global current_model
         current_model = self.preload_model
         current_model = self.preload_model
         self.preload_model = None
         self.preload_model = None
         self.locations = {}
         self.locations = {}
     
     
-    def _init_init_running_idle_17_guard(self, parameters):
+    def _init_init_running_idle_18_guard(self, parameters):
         return self.preload_model is not None
         return self.preload_model is not None
     
     
     def _init_init_running_modify_defined_attrs_create_window_0_exec(self, parameters):
     def _init_init_running_modify_defined_attrs_create_window_0_exec(self, parameters):
@@ -13702,7 +13708,7 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
     
     
     def _ready_process_events_creating_line_create_in_mv_create_0_exec(self, parameters):
     def _ready_process_events_creating_line_create_in_mv_create_0_exec(self, parameters):
         ID = parameters[0]
         ID = parameters[0]
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("rerender_model", None, [])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("minimal_rerender_model", None, [])]))
     
     
     def _ready_process_events_creating_group_0_exec(self, parameters):
     def _ready_process_events_creating_group_0_exec(self, parameters):
         assoc_name = parameters[0]
         assoc_name = parameters[0]
@@ -13721,7 +13727,7 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
     def _ready_process_events_creating_element_0_exec(self, parameters):
     def _ready_process_events_creating_element_0_exec(self, parameters):
         ID = parameters[0]
         ID = parameters[0]
         self.to_move[ID] = self.create_location
         self.to_move[ID] = self.create_location
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("rerender_model", None, [])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("minimal_rerender_model", None, [])]))
     
     
     def _ready_update_loading_updating_0_exec(self, parameters):
     def _ready_update_loading_updating_0_exec(self, parameters):
         for i in self.elems:
         for i in self.elems:
@@ -14032,7 +14038,7 @@ class ConnectingLine(RuntimeClassBase, SCCDWidget):
     
     
     def _update_attrs_query_0_exec(self, parameters):
     def _update_attrs_query_0_exec(self, parameters):
         result = parameters[0]
         result = parameters[0]
-        self.prev_results = result
+        self.prev_results = {k: json.dumps(v) for k, v in result.items()}
     
     
     def _update_attrs_prompt_0_exec(self, parameters):
     def _update_attrs_prompt_0_exec(self, parameters):
         name = parameters[0]
         name = parameters[0]
@@ -14060,7 +14066,7 @@ class ConnectingLine(RuntimeClassBase, SCCDWidget):
     
     
     def _update_attrs_process_results_0_exec(self, parameters):
     def _update_attrs_process_results_0_exec(self, parameters):
         k, v = self.diff_results.popitem()
         k, v = self.diff_results.popitem()
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_assign', [current_model, self.as_element, k, v]])]))
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_assign', [current_model, self.as_element, k, json.loads(v)]])]))
     
     
     def _update_attrs_process_results_0_guard(self, parameters):
     def _update_attrs_process_results_0_guard(self, parameters):
         return len(self.diff_results) > 0
         return len(self.diff_results) > 0
@@ -14072,7 +14078,7 @@ class ConnectingLine(RuntimeClassBase, SCCDWidget):
         self.remaining_responses -= 1
         self.remaining_responses -= 1
     
     
     def _update_attrs_mark_dirty_0_exec(self, parameters):
     def _update_attrs_mark_dirty_0_exec(self, parameters):
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/parent', Event("rerender_model", None, [])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/parent', Event("minimal_rerender_model", None, [])]))
     
     
     def initializeStatechart(self):
     def initializeStatechart(self):
         # enter default state
         # enter default state
@@ -14579,13 +14585,13 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
         return current_rendered_model
         return current_rendered_model
     
     
     def _update_attrs_mark_dirty_check_1_exec(self, parameters):
     def _update_attrs_mark_dirty_check_1_exec(self, parameters):
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/parent', Event("rerender_model", None, [])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/parent', Event("minimal_rerender_model", None, [])]))
     
     
     def _update_attrs_mark_dirty_check_1_guard(self, parameters):
     def _update_attrs_mark_dirty_check_1_guard(self, parameters):
         return not current_rendered_model
         return not current_rendered_model
     
     
     def _update_attrs_mark_dirty_do_0_exec(self, parameters):
     def _update_attrs_mark_dirty_do_0_exec(self, parameters):
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/parent', Event("rerender_model", None, [])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/parent', Event("minimal_rerender_model", None, [])]))
     
     
     def _update_mv_check_0_guard(self, parameters):
     def _update_mv_check_0_guard(self, parameters):
         return current_rendered_model
         return current_rendered_model