Idea detail
reframe_view
reqlan rq/extension/library/graph.rq:150
Summary
Shared viewport behaviour for every surface that mounts GraphCyController ( Ideas Summary graph tab, activity bar mini graph, and future consumers ).
Implementation: reframeGraphToViewport and GraphCyController. reframeToViewport in graph-cy-controller.ts.
manual_reframe
auto_reframe
reframe_animation
Constants: GRAPH_VIEWPORT_PADDING ( 36 px padding around the element bounding box ), GRAPH_REFRAME_ANIMATION_MS ( 400 ms animated transition ).
Reframes resize the cytoscape container first, then fit all elements and centre the camera.
Does not clear selection, centreId, user-pinned drag positions, or live physics state — viewport only.
Attributes
No attributes declared.
Ancestor context
Users can explicitly reframe the viewport when pan / zoom has moved the graph off-screen or they want to see the whole neighbourhood again. - " Fit to view " control in ["../../../packages/extension/webviews/ideas-summary/components/GraphControls.svelte"] dispatches to GraphView → GraphCyController. reframeToViewport ( ). - " Fit to view " control in ["../../../packages/extension/webviews/activity-bar/components/MiniGraphCanvas.svelte"] calls the same API on the mini-graph controller. Every graph surface that mounts GraphCyController should expose this control.
auto_reframeThe graph should automatically fit to the viewport when the loaded node set changes — without requiring the user to click " Fit to view ". After each successful syncSlice, GraphCyController compares the sorted node-id set of the incoming slice with fittedNodeSetKey ( the set the viewport was last fitted to ). When they differ, finishRender triggers an automatic reframe via reframeToViewport. Triggers when any node is added or removed from the slice ( new neighbourhood, focus change, filter change that changes membership ). Does not trigger for metadata-only updates on the same node ids ( label, colour, isCenter flag, etc. ) — those keep the user's current pan / zoom. Does not trigger on requestLayout relayout when the node-id set is unchanged.
reframe_animationThe first reframe on a controller mount is instant ( synchronous cy. fit + cy. center ) so the graph appears immediately on first paint. Every subsequent reframe — automatic ( [auto_reframe] ) or manual ( [manual_reframe] ) — animates pan and zoom smoothly over GRAPH_REFRAME_ANIMATION_MS using cytoscape. animate ( { fit, easing: ' ease-out-cubic ' } ). Callers may pass `reframeToViewport({ animate: false })` to force an instant reframe. Initial batch layouts use fit: false ( see [graph_cytoscape] ) so the controller owns the first fit and later animated handoffs are not double-applied.
graph_cytoscapebuilds cytoscape elements and stylesheet from a generic node / edge slice. registers batch layout options ( fcose, cola, breadthfirst, circle, concentric, grid, random ) and seeds positions for new nodes. exposes CompoundBasis ( single-membership folder tree ) and GroupBasis ( flat multi-membership ) as grouping inputs. per ["../../../packages/extension/webviews/shared/graph/graph-cytoscape.ts"] and ["../../../packages/extension/webviews/shared/graph/graph-theme.ts"]. getLayoutConfig sets fit: false for initial ( mode = = = ' initial' ) batch layouts so [auto_reframe] owns the first viewport fit; relayout modes may still fit via the layout algorithm.
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| file_reference | ../../../packages/extension/webviews/shared/graph/graph-cy-controller.ts | packages/extension/webviews/shared/graph/graph-cy-controller.ts | graph-cy-controller.ts |
| references | auto_reframe | reqlan rq/extension/library/graph.rq | auto_reframe |
| references | manual_reframe | reqlan rq/extension/library/graph.rq | manual_reframe |
| references | reframe_animation | reqlan rq/extension/library/graph.rq | reframe_animation |
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| references | graph_cy_controller | reqlan rq/extension/library/graph.rq | reframe_view |
| references | graph_label_auto | reqlan rq/extension/library/graph.rq | reframe_view |
| references | view_controls | reqlan rq/extension/library/graph.rq | reframe_view |
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| None | |||
Initialising graph…