Idea detail
control_panel
reqlan rq/extension/module/ideas_summary/graphical_graph.rq:75
Summary
Floating panel in GraphControlPanel.svelte, toggled from ui_controls.
Provides layout algorithm selection, live-physics toggle, compound grouping, physics force sliders, max node count, and truncation basis.
Physics tunables call GraphCyController. setPhysicsSettings; node budget changes re-request the graph slice via loadGraph.
Mounted as a sibling of the cytoscape container ( not inside it ) so range sliders and selects work with native browser events.
When positioned, a ResizeObserver on the surface wrap reclamps panelX / panelY so the panel stays fully inside after the webview is resized; Key panel uses the same reclamp.
Open / closed state and all control values persist per graph_ui_persistence.
Navigation
Attributes
No attributes declared.
Ancestor context
Controls live in ["../../../packages/extension/webviews/ideas-summary/components/GraphControls.svelte"] and dispatch events to GraphView. [manual_reframe] — " Fit to view " calls GraphCyController. reframeToViewport per [reframe_view]. [auto_reframe] and [reframe_animation] are handled by the shared controller; no extra UI beyond pan / zoom / drag. Labels control cycles [graph_label_modes] ( auto / on / off ) and applies [graph_label_auto] via GraphCyController. setLabelMode. Status and tag filters are multi-select dropdowns per [graph_status_tag_filters]. The Key button toggles a draggable legend panel in ["../../../packages/extension/webviews/ideas-summary/components/GraphKeyPanel.svelte"] over the graph canvas. The Controls button toggles [control_panel]. Overlay panels ( Key and Controls ) are siblings of the cytoscape mount inside a graph-surface-wrap — never children of the cy container — so native form controls receive pointer events.
graph_ui_persistenceKey and Controls state is stored in VS Code ExtensionContext. workspaceState under key GRAPH_UI_WORKSPACE_STATE_KEY ( reqlan. ideasSummary. graphUi ). Shape and normalisation live in ["../../../packages/extension/src/webview_module/shared/graph-ui-state.ts"]; the host reads / writes it from ["../../../packages/extension/src/webview_module/ideas-summary-panel.ts"]. On webview ready the extension posts graphUiState; the webview posts persistGraphUiState ( debounced ) whenever AppState. patchGraphUi runs in ["../../../packages/extension/webviews/ideas-summary/state/app.svelte.ts"]. Persisted fields: showKey, showControls, hiddenNodeTypes, layoutId, useCompound, compoundBasisId, animatePhysics, labelMode, maxNodes, truncationBasis, and the five physics sliders ( gravity, repulsion, linkStrength, linkDistance, damping ). GraphView in ["../../../packages/extension/webviews/ideas-summary/components/GraphView.svelte"] treats app. graph. ui as the source of truth and applies layout / physics / hidden types / label mode to GraphCyController when those fields change. The first graph load waits for graphUiState so restored node budget is included in loadGraph.
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| file_reference | ../../../packages/extension/webviews/ideas-summary/components/GraphControlPanel.svelte | reqlan rq/packages/extension/webviews/ideas-summary/components/GraphControlPanel.svelte | GraphControlPanel.svelte |
| references | graph_ui_persistence | reqlan rq/extension/module/ideas_summary/graphical_graph.rq | graph_ui_persistence |
| references | ui_controls | reqlan rq/extension/module/ideas_summary/graphical_graph.rq | ui_controls |
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| references | graphical_graph | reqlan rq/extension/module/ideas_summary/graphical_graph.rq | control_panel |
| references | key_and_controls | reqlan rq/extension/module/ideas_summary/graphical_graph.rq | control_panel |
| references | node_truncation | reqlan rq/extension/module/ideas_summary/graphical_graph.rq | control_panel |
| references | ui_controls | reqlan rq/extension/module/ideas_summary/graphical_graph.rq | control_panel |
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| None | |||
Initialising graph…