From 8772271648cf7a6b0c734ac8069ec3894b580452 Mon Sep 17 00:00:00 2001 From: Lars Date: Sun, 14 Dec 2025 16:15:32 +0100 Subject: [PATCH] bug fix --- app/frontend/ui_graph_cytoscape.py | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/app/frontend/ui_graph_cytoscape.py b/app/frontend/ui_graph_cytoscape.py index df7645f..108d0f2 100644 --- a/app/frontend/ui_graph_cytoscape.py +++ b/app/frontend/ui_graph_cytoscape.py @@ -11,6 +11,7 @@ def render_graph_explorer_cytoscape(graph_service): if "graph_center_id" not in st.session_state: st.session_state.graph_center_id = None + # Getrennter State für Inspektion (Gelber Rahmen) vs. Navigation (Roter Rahmen) if "graph_inspected_id" not in st.session_state: st.session_state.graph_inspected_id = None @@ -78,7 +79,7 @@ def render_graph_explorer_cytoscape(graph_service): center_id, depth=st.session_state.cy_depth ) - # Daten nur für den INSPECTOR laden + # Daten für den INSPECTOR laden inspected_data = graph_service.get_note_with_full_content(inspected_id) # --- ACTION BAR --- @@ -108,7 +109,7 @@ def render_graph_explorer_cytoscape(graph_service): args=(inspected_data,), key="cy_edit_btn") - # --- DATA INSPECTOR (Eingeklappt für mehr Platz) --- + # --- DATA INSPECTOR (Eingeklappt) --- with st.expander("🕵️ Data Inspector", expanded=False): if inspected_data: col_i1, col_i2 = st.columns(2) @@ -128,7 +129,7 @@ def render_graph_explorer_cytoscape(graph_service): for n in nodes_data: is_center = (n.id == center_id) - # Selektion wird visuell übergeben + # Selektion wird visuell über Stylesheet gesteuert is_inspected = (n.id == inspected_id) tooltip_text = n.title if n.title else n.label @@ -176,7 +177,6 @@ def render_graph_explorer_cytoscape(graph_service): "title": "data(tooltip)" } }, - # Selektierter Knoten (Gelb) { "selector": "node:selected", "style": { @@ -186,7 +186,6 @@ def render_graph_explorer_cytoscape(graph_service): "font-weight": "bold" } }, - # Zentrum (Rot) { "selector": ".center", "style": { @@ -210,23 +209,13 @@ def render_graph_explorer_cytoscape(graph_service): } ] - # --- CONFIG: SINGLE SELECT --- - # Das erzwingt, dass beim Klicken einer Node die anderen deselektiert werden - cy_config = { - "selectionType": "single", - "boxSelectionEnabled": False, - "userZoomingEnabled": True, - "userPanningEnabled": True - } - # --- RENDER --- - # Stable Key: Ändert sich NICHT bei Inspektion, nur bei Zentrum/Layout graph_key = f"cy_{center_id}_{st.session_state.cy_depth}_{st.session_state.cy_ideal_edge_len}" clicked_elements = cytoscape( elements=cy_elements, stylesheet=stylesheet, - # Layout Config + # Layout Config (config Argument entfernt!) layout={ "name": "cose", "idealEdgeLength": st.session_state.cy_ideal_edge_len, @@ -234,7 +223,7 @@ def render_graph_explorer_cytoscape(graph_service): "refresh": 20, "fit": True, "padding": 50, - "randomize": False, # WICHTIG gegen das Springen! + "randomize": False, "componentSpacing": 100, "nodeRepulsion": st.session_state.cy_node_repulsion, "edgeElasticity": 100, @@ -244,9 +233,8 @@ def render_graph_explorer_cytoscape(graph_service): "initialTemp": 200, "coolingFactor": 0.95, "minTemp": 1.0, - "animate": False # Animation aus, damit es sofort stabil ist + "animate": False }, - config=cy_config, # Config Objekt übergeben key=graph_key, height="700px" )