C

MultiLayerSubtreePlacer

The MultiLayerSubtreePlacer arranges the children/subtrees of a local root into multiple layers.

Remarks

Layout Style

The children/subtrees are assigned to the layers with multiLayerSubtreePlacerLayerIndices. If there is no layer mapping provided, the layer assignment is made automatically - the produced structure will be square-like with respect to the child count, ignoring actual subtree sizes. For example, if there are nine children, a structure with three layers each containing three nodes is generated.

The edges from the children to the local root are routed in a bus-like style. The placement of the bus can be configured using the property busPlacement. The alignment of the root node can be configured using rootAlignment. To align the root node with the bus, use BUS_ALIGNED. A bus-aligned root in conjunction with CENTER produces a symmetric multi-layer structure with the bus and root aligned in the middle.

Child nodes are assigned to three layers with a bus-aligned root and the bus placed in the center

Child nodes are assigned to three layers where the root alignment and bus placement are "leading".

Default Values of Properties

NameDefaultDescription
busPlacementBusPlacement.LEADING
The bus is placed leading, left of the child nodes.
rootAlignmentMultiLayerSubtreePlacerRootAlignment.BUS_ALIGNED
spacing20

See Also

Developer's Guide

Members

Show:

Constructors

Creates a new MultiLayerSubtreePlacer instance.

Parameters

rootAlignment?: MultiLayerSubtreePlacerRootAlignment
The alignment of the local root with its subtrees (optional). The default value is BUS_ALIGNED.

Properties

Gets or sets the placement of the bus with respect to the child nodes.
conversionfinal

Property Value

one of the predefined bus placements

Throws

Exception ({ name: 'ArgumentError' })
if the given bus placement is unknown

Default Value

The default value is: BusPlacement.LEADING
The bus is placed leading, left of the child nodes.
Gets or sets the MultiLayerSubtreePlacerRootAlignment that defines how the root node is aligned with its children and their shapes.
conversionfinal

Property Value

The MultiLayerSubtreePlacerRootAlignment value specifying the location relative to the subtrees.

Default Value

Gets or sets the spacing between subtrees.
The spacing needs to be non-negative.
final

Property Value

the distance between subtrees

Throws

Exception ({ name: 'ArgumentError' })
if the given spacing is negative

Default Value

The default value is: 20

Sample Graphs

ShownSetting: Spacing 20 using SingleLayerSubtreePlacer
Gets the modification matrix that defines the direction of the subtree.
conversionfinal

Property Value

the modification matrix

Default Value

The default value is: SubtreeTransform.NONE

Methods

Creates a comparison that sorts the outgoing edges according to the rows and x-coordinates of their target nodes.
Edges that connect to nodes in different rows are ordered by the row index. If two edges connect to the same row, they are sorted by the x-coordinates of their target nodes.
If no layer indices are defined via multiLayerSubtreePlacerLayerIndices, the rows are automatically assigned, and the created from-sketch comparison does not have an effect.
final

Return Value

function(LayoutEdge, LayoutEdge): number
a comparison that orders edges lexicographically by row and x-coordinates of their target nodes

See Also

API
multiLayerSubtreePlacerLayerIndices
Creates an optional ISubtreePlacerProcessor for pre- and post-processing.
This method is called by TreeLayout before arranging the SubtreeShapes. If no pre- or post-processing is needed, this method may return null.
final

Parameters

treeLayout: TreeLayout
the current TreeLayout instance
graph: LayoutGraph
the input graph
currentRoot: LayoutNode
the root node handled by this ISubtreePlacer

Return Value

ISubtreePlacerProcessor
a ISubtreePlacerProcessor instance or null
Provides the direction of the connector to the SubtreeShape for each child node.
This method is called by TreeLayout before the SubtreeShapes for the children of the local root node are calculated. The direction specifiers are stored in the given map for all child nodes of the local root.
final

Parameters

localRoot: LayoutNode
the local root node
connectorMap: IMapper<LayoutNode, ParentConnectorDirection>
the IMapper<K, V> that is used for storing the direction specifiers of the child nodes
Arranges the SubtreeShapes of the local root and its children and routes the edges that connect them.

This method is the main method of the tree layout algorithm. It is called by TreeLayout in each recursion step to place the local root in relation to its children. Their shapes will be merged into one SubtreeShape, which is returned by this method.

The SubtreeShape for the local root can be obtained from the nodeShapeProvider. subtreeShapeProvider contains the SubtreeShapes assigned to the child nodes.

Due to the order in which the tree nodes are processed, it is guaranteed that at the time of the invocation of this method the SubtreeShape of every descendant node has already been calculated.

final

Parameters

nodeShapeProvider: IMapper<LayoutNode, SubtreeShape>
the IMapper<K, V> for obtaining an initial shape of the root node
subtreeShapeProvider: IMapper<LayoutNode, SubtreeShape>
the IMapper<K, V> for accessing the pre-calculated shapes of the subtrees
graph: LayoutGraph
the input graph
localRoot: LayoutNode
the root of the subtree that should be arranged by this method
parentConnectorDirection: ParentConnectorDirection
the direction specifier for the connector of the local root node to its parent node

Return Value

SubtreeShape
the combined shape of the whole subtree

Constants

All constants are filtered. Go to Filters.