Pluggable layout code must conform to the pluggable layout contract. The following steps outline a simple pluggable layout.
- Diagram calls layout engine with layout context.
- Layout engine loops over nodes using getNodeCount and getNodeByIndex()
- layout engine gets dimensions of node by calling getBounds()
- layout engine sets position on node by calling setPosition()
- Layout engine loops over links using getLinkCount and getLinkByIndex()
- layout engine gets start and end nodes by calling getStartId()/getEndId() on a link object
- layout engine analyzes nodes position and dimensions by calling getPosition() and getBounds() on each node and finds connection points for the link start/end
- layout engine creates a link path by calling setPoints() on a link object
- Diagram applies node positions from layout context
The DvtDiagramLayoutContext interface defines the context for a layout call.
Methods
-
getCommonContainer(nodeId1, nodeId2) : {(K1|null)}
-
The function retrieves nearest common ancestor container for two nodes.
Parameters:
Name Type Description nodeId1K1 first node id nodeId2K1 second node id Returns:
Id for the first common ancestor container or null for top level diagram- Type
- (K1|null)
-
getComponentSize() : {{x: number, y: number, w: number, h: number}}
-
Get the size of the Diagram.
Properties:
Name Type Description xnumber x-coordinate ynumber y-coordinate wnumber width hnumber height Returns:
An object containing properties of the diagram size- Type
- {x: number, y: number, w: number, h: number}
-
getCurrentViewport() : {{x: number, y: number, w: number, h: number}}
-
Get the current viewport used by the component in the layout's coordinate system for the diagram
Properties:
Name Type Description xnumber x-coordinate ynumber y-coordinate wnumber width hnumber height Returns:
An object containing properties of the current viewport- Type
- {x: number, y: number, w: number, h: number}
-
getEventData() : {Object}
-
Gets event data object. Values can be retrieved from the object using 'type' and 'data' keys.
Deprecated:
Since Description 7.1.0The function is supported with DiagramDataSource. Use data providers instead. - Since:
- 4.0.0
Properties:
Name Type Description typestring Event type - "add", "remove" or "change". dataObject Event payload object for the event - see EventType for event details. Returns:
event data object- Type
- Object
-
getLinkById(id) : {DvtDiagramLayoutContextLink<K1, K2, D2>}
-
Get a link context by id.
Parameters:
Name Type Description idK1 id of link context to get Returns:
- Type
- DvtDiagramLayoutContextLink<K1, K2, D2>
-
getLinkByIndex(index) : {DvtDiagramLayoutContextLink<K1, K2, D2>}
-
Get a link context by index.
Parameters:
Name Type Description indexnumber index of link context to get Returns:
- Type
- DvtDiagramLayoutContextLink<K1, K2, D2>
-
getLinkCount() : {number}
-
Get the number of links to layout.
Returns:
- Type
- number
-
getNodeById(id) : {DvtDiagramLayoutContextNode<K1,D1>}
-
Get a node context by id.
Parameters:
Name Type Description idK1 id of node context to get Returns:
- Type
- DvtDiagramLayoutContextNode<K1,D1>
-
getNodeByIndex(index) : {DvtDiagramLayoutContextNode<K1,D1>}
-
Get a node context by index.
Parameters:
Name Type Description indexnumber index of node context to get Returns:
- Type
- DvtDiagramLayoutContextNode<K1,D1>
-
getNodeCount() : {number}
-
Get the number of nodes to layout.
Returns:
- Type
- number
-
getViewport() : {{x: number, y: number, w: number, h: number}}
-
Get the viewport the component should use after the layout, in the layout's coordinate system.
Properties:
Name Type Description xnumber x-coordinate ynumber y-coordinate wnumber width hnumber height Returns:
An object containing properties of the viewport- Type
- {x: number, y: number, w: number, h: number}
-
isLocaleR2L() : {boolean}
-
Get whether the reading direction for the locale is right-to-left.
Returns:
- Type
- boolean
-
setViewport(viewport) : {void}
-
Set the viewport the component should use after the layout, in the layout's coordinate system.
Parameters:
Name Type Description viewport{x: number, y: number, w: number, h: number} An object containing properties of the viewport that the component should use after the layout Properties:
Name Type Description xnumber x-coordinate ynumber y-coordinate wnumber width hnumber height Returns:
- Type
- void