Skip to content

Commit

Permalink
Improve node view loading
Browse files Browse the repository at this point in the history
  • Loading branch information
edan-bainglass committed Nov 20, 2024
1 parent bbb2935 commit bd79a4d
Showing 1 changed file with 18 additions and 26 deletions.
44 changes: 18 additions & 26 deletions src/aiidalab_qe/app/result/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,7 @@ def render(self):
"selected_nodes",
)

self.container = ipw.VBox(
children=[
self.process_tree,
],
)
self.node_view_container = ipw.VBox()

self.process_monitor = ProcessMonitor(
timeout=0.2,
Expand All @@ -115,7 +111,8 @@ def render(self):
],
layout=ipw.Layout(margin="0 3px"),
),
self.container,
self.process_tree,
self.node_view_container,
]

self.rendered = True
Expand Down Expand Up @@ -188,31 +185,26 @@ def _update_node_view(self, nodes, refresh=False):
# check if the viewer is already added
if node.uuid in self.node_views and not refresh:
self.node_view = self.node_views[node.uuid]
else:
self.container.children = [
self.process_tree,
self.node_view_loading_message,
]
if not isinstance(node, orm.WorkChainNode):
self.node_view = node_viewer(node)
self.node_views[node.uuid] = self.node_view
elif node.process_label == "QeAppWorkChain":
self._create_workchain_viewer(node)

self.container.children = [
self.process_tree,
self.node_view,
]

def _create_workchain_viewer(self, node):
elif not isinstance(node, orm.WorkChainNode):
self.node_view_container.children = [self.node_view_loading_message]
self.node_view = node_viewer(node)
self.node_views[node.uuid] = self.node_view
elif node.process_label == "QeAppWorkChain":
self.node_view_container.children = [self.node_view_loading_message]
self.node_view = self._create_workchain_viewer(node)
self.node_views[node.uuid] = self.node_view

self.node_view_container.children = [self.node_view]

def _create_workchain_viewer(self, node: orm.WorkChainNode):
model = WorkChainViewerModel()
ipw.dlink(
(self._model, "monitor_counter"),
(model, "monitor_counter"),
)
self.node_view: WorkChainViewer = node_viewer(node, model=model)
self.node_view.render()
self.node_views[node.uuid] = self.node_view
node_view: WorkChainViewer = node_viewer(node, model=model) # type: ignore
node_view.render()
return node_view

def _update_kill_button_layout(self):
if not self.rendered:
Expand Down

0 comments on commit bd79a4d

Please sign in to comment.