Skip to content

Commit 358e208

Browse files
committed
Ensuring the graph explorer updates with activity modifications
1 parent 21baefc commit 358e208

2 files changed

Lines changed: 22 additions & 3 deletions

File tree

activity_browser/layouts/panels/right.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,10 @@ def add_tab(self, key, select=True):
8383
log.info("adding graph tab")
8484
new_tab = GraphNavigatorWidget(self, key=key)
8585
self.tabs[key] = new_tab
86-
self.addTab(new_tab, get_activity_name(bd.get_activity(key), str_length=30))
86+
self.addTab(new_tab, new_tab.objectName())
87+
88+
new_tab.objectNameChanged.connect(lambda name: self.setTabText(self.indexOf(new_tab), name))
89+
8790
else:
8891
tab = self.tabs[key]
8992
tab.new_graph(key)

activity_browser/ui/web/navigator.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@
1010
from PySide2.QtCore import Slot
1111

1212
from activity_browser import signals
13-
from activity_browser.mod.bw2data import Database, get_activity
13+
from activity_browser.mod.bw2data import Database, get_activity, databases, Edge
14+
from activity_browser.mod.bw2data.backends import ExchangeDataset
1415

15-
from ...bwutils.commontasks import identify_activity_type
16+
from ...bwutils.commontasks import identify_activity_type, get_activity_name
1617
from .base import BaseGraph, BaseNavigatorWidget
1718

1819
log = getLogger(__name__)
@@ -60,6 +61,8 @@ class GraphNavigatorWidget(BaseNavigatorWidget):
6061

6162
def __init__(self, parent=None, key=None):
6263
super().__init__(parent, css_file="navigator.css")
64+
self.setObjectName(get_activity_name(get_activity(key), str_length=30))
65+
self.key = key
6366

6467
self.graph = Graph()
6568

@@ -113,6 +116,13 @@ def connect_signals(self):
113116
self.update_graph_settings
114117
)
115118
self.checkbox_flip_negative_edges.stateChanged.connect(self.reload_graph)
119+
databases.metadata_changed.connect(self.sync_graph)
120+
121+
def sync_graph(self):
122+
"""Sync the graph with the current project."""
123+
self.graph.update(delete_unstacked=False)
124+
self.send_json()
125+
self.setObjectName(get_activity_name(get_activity(self.key), str_length=30))
116126

117127
def construct_layout(self) -> None:
118128
"""Layout of Graph Navigator"""
@@ -251,9 +261,15 @@ def __init__(self):
251261
self.flip_negative_edges = False # show true flow direction of edges (e.g. for ecoinvent treatment activities, or substitutions)
252262

253263
def update(self, delete_unstacked: bool = True) -> None:
264+
self.update_datasets()
254265
super().update(delete_unstacked)
255266
self.json_data = self.get_json_data()
256267

268+
def update_datasets(self):
269+
"""Update the activities in the graph."""
270+
self.nodes = [get_activity(act.key) for act in self.nodes]
271+
self.edges = [Edge(document=ExchangeDataset.get_by_id(exc._document.id)) for exc in self.edges]
272+
257273
def store_previous(self) -> None:
258274
self.stack.append((deepcopy(self.nodes), deepcopy(self.edges)))
259275

0 commit comments

Comments
 (0)