commit 3d9df83809175c6962ca2366e266e47e08e8d4ae
parent d21294fe151cadbc9f195c294544221ba9ce8392
Author: Andy Khramtsov <>
Date: Sat, 30 May 2026 03:20:27 +0300
feat: deselect on second click
Diffstat:
1 file changed, 9 insertions(+), 0 deletions(-)
diff --git a/src/deps/pages/home.py b/src/deps/pages/home.py
@@ -35,6 +35,7 @@ class ids:
selected_node_details: str = "selected-node-details"
cache_store: str = "cache-store"
+ selected_node_store: str = "selected-node-store"
class colors:
@@ -81,6 +82,7 @@ def layout():
children=[
html.H2("Cargo dependency visualisation"),
dcc.Store(id=ids.cache_store, storage_type="memory"),
+ dcc.Store(id=ids.selected_node_store, storage_type="memory"),
html.Div(
className="vertical-content",
children=[
@@ -598,6 +600,7 @@ def display_cargo_lock_packages(inputs, state):
dict(
graph=Output(ids.dependency_graph, "figure"),
cache=Output(ids.cache_store, "data"),
+ selected_node_store=Output(ids.selected_node_store, "data"),
details=Output(ids.selected_node_details, "children"),
),
dict(
@@ -609,6 +612,8 @@ def display_cargo_lock_packages(inputs, state):
cargo_toml=State(ids.cargo_toml_textarea, "value"),
cargo_lock=State(ids.cargo_lock_textarea, "value"),
cache=State(ids.cache_store, "data"),
+ selected_node_store=State(ids.selected_node_store, "data"),
+ figure=State(ids.dependency_graph, "figure"),
),
prevent_initial_call=True,
)
@@ -632,6 +637,8 @@ def visualize(inputs, state):
selected = point.get("customdata", None)
else:
selected = None
+ if state["selected_node_store"] and state["selected_node_store"].get("selected") == selected:
+ selected = None
if clean:
if not state["cargo_lock"]:
@@ -670,9 +677,11 @@ def visualize(inputs, state):
]
fig = draw_graph_figure(df_graph, positions, selected)
+ fig.update_layout(uirevision="1")
return dict(
graph=fig,
cache=cache,
details=details,
+ selected_node_store=dict(selected=selected),
)