Logo
NeoArc Studio

Data View: Graph Canvas

The Data View graph canvas provides force-directed layout, node pinning, real-time spacing control, semantic zoom, group hulls, minimap, and fuzzy search for exploring model entity projections.

Every Data View uses a force-directed graph canvas where model entities appear as interactive nodes and relationships appear as labelled edges. The graph canvas is shared across persistence and search mode views - the view mode determines what the Entity Overlay shows when you click a node, not how the graph itself renders.

Force-Directed Layout

Nodes are positioned by a D3 force simulation that balances several forces: charge repulsion pushes nodes apart, link forces pull connected nodes together, and centre gravity prevents the graph from drifting. The simulation runs when the view first loads, then settles into a stable arrangement.

ForceEffectControl
Charge (repulsion)Pushes all nodes away from each otherNode spacing slider (bottom-right corner)
LinkPulls connected nodes towards each otherAutomatic based on relationship edges
CentrePrevents the graph from drifting off-screenConfigurable centre strength in view settings
CollisionPrevents nodes from overlappingAutomatic based on node size

Node Spacing Slider

The spacing slider in the bottom-right corner of the canvas adjusts how spread out the graph is. Moving the slider changes the D3 charge force strength in real time - nodes flow smoothly to new positions without rebuilding the graph. The spacing value (1-10 scale) is saved with the view and honoured in the published viewer.

Node Pinning

Drag any node and release it to pin it in place. Pinned nodes are exempt from the force simulation - they stay where you put them while unpinned nodes flow around them. This lets you create stable reference points in the layout while allowing the simulation to optimise the rest.

Node Search

Press Ctrl+F (or Cmd+F) to open the search bar. Search uses fuzzy matching with ranked results.

RankMatch TypeExample (query: "order")
1 (highest)Exact matchOrder
2Prefix matchOrderItem, OrderLine
3Fuzzy/substring matchPurchaseOrder, BackOrder

The camera pans to the current search result as you type. Press Enter to cycle through results, Shift+Enter to go backwards. Press Alt+Enter to open the Entity Overlay for the highlighted result. All matching nodes are highlighted on the canvas with a visual indicator, and the search shows the current match index and total (e.g., "1/5").

Semantic Zoom

The graph canvas adjusts its level of detail based on the current zoom level, keeping the visualisation readable at every scale.

Zoom LevelWhat You See
Zoomed out (minimal)Group hulls with domain labels, simplified node circles, no labels except anchor nodes
MediumNode circles with labels, edge lines with cardinality, group hulls subtle
Zoomed in (full)Node circles with labels, full edge detail, hover highlights

Groups and Hulls

If the central model defines groups (representing subdomains, bounded contexts, or logical clusters), Data Views render them as semi-transparent convex hulls around the member nodes. Group hulls provide visual organisation at every zoom level - they become the primary visual element when zoomed out.

FeatureDescription
Auto-filteringGroups are filtered to include only entities selected for this view; empty groups are hidden
Colour codingEach group has an optional colour applied to its hull and member nodes
Counter-scaled labelsGroup name labels scale inversely to zoom, staying readable when zoomed out
Clustering physicsNodes in the same group are drawn together by group-aware simulation forces

Minimap

Toggle the minimap using the control button in the top-right toolbar. The minimap shows a 150x100px overview of the entire graph with all nodes rendered as scaled dots. A viewport rectangle shows the current visible area. Click or drag within the minimap to pan the canvas. Nodes not matching a search query appear faded in the minimap.

Style Overrides

Each node supports optional style overrides that change its visual appearance without modifying the model. Overrides are scoped to the individual view.

OverrideDescription
ColourNode fill/stroke colour
Border colourNode border colour
Text colourNode label text colour

Canvas Navigation

ActionControl
ZoomScroll wheel or pinch gesture
PanRight-click and drag, or use minimap
Zoom to fitClick the fit button in the toolbar
Select nodeClick a node
Open Entity OverlayClick a node, or select and press Alt+Enter
SearchCtrl+F / Cmd+F