C

LevelAlignedSubtreePlacer

A LevelAlignedSubtreePlacer arranges the nodes of a subtree into layers such that nodes on the same level/depth are aligned.

Remarks

Layout Style

Nodes that have the same depth in the tree will be placed in the same horizontal layer. They will be vertically aligned.

Default Values of Properties

NameDefaultDescription
busAlignment0.5
dendrogramStylefalse
The nodes are assigned to the topmost layer.
edgeRoutingStyleLevelAlignedSubtreePlacerRoutingStyle.STRAIGHT_LINE
layerSpacing40
rootAlignmentSubtreeRootAlignment.TRAILING
spacing20
verticalAlignment0.5
Nodes are center aligned.

See Also

Developer's Guide

Members

No filters for this type

Constructors

Creates a new LevelAlignedSubtreePlacer instance.

Parameters

id?: any
The ID of this instance, used for identifying LevelAlignedSubtreePlacers that share information about the layer height. Using different IDs allows aligned layouts within different subtrees.

Properties

Gets or sets whether nodes are placed so that the source and target port of an edge are aligned.

Dependent on the SubtreeRootAlignment type the subtree root is moved in a way that the edge connecting the root to one of its children is straightened.

This setting only applies to the following SubtreeRootAlignments:

final

Property Value

true if the ports are to be aligned, false otherwise

Default Value

The default value is: false
Ports are not aligned.

Sample Graphs

ShownSetting: false
Gets or sets the vertical bus alignment for orthogonally routed edges.

The bus alignment determines the relative position of an edge bus in between two subsequent layers of nodes.

Values for a valid vertical alignment are in the range [0..1], such that:

  • A value of 0.0 places the bus at the top, right below the parent node.
  • A value of 0.5 places the bus in the middle between parent and child nodes.
  • A value of 1.0 places the bus at the bottom, right above the child nodes.
Bus alignment only applies if the routing style is set to ORTHOGONAL.
final

Property Value

the relative bus alignment

Throws

Exception ({ name: 'ArgumentError' })
if the specified alignment is outside [0..1]

Default Value

The default value is: 0.5

Sample Graphs

ShownSetting: 0.3

See Also

Developer's Guide
Gets or sets whether or not the layering is done dendrogram-like.
When enabled, leaves are placed in the same layer and remaining tree nodes are assigned to a layer as close to their children as possible.
final

Property Value

true if the graph is layered as a dendrogram, false otherwise

Default Value

The default value is: false
The nodes are assigned to the topmost layer.

Sample Graphs

ShownSetting: false
Gets or sets the routing style for the edges in the subtree.
conversionfinal

Property Value

one of the predefined edge routing styles

Throws

Exception ({ name: 'ArgumentError' })
if the specified routing style specifier is unknown

Default Value

Gets or sets the distance between two adjacent layers.
The spacing needs to be non-negative.
final

Property Value

the spacing between two layers

Throws

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

Default Value

The default value is: 40

Sample Graphs

ShownSetting: 40

See Also

Developer's Guide
Gets or sets whether or not straight edges are extended to avoid label overlaps.
If enabled, polyline connectors between the parent and its children are added to the according subtree shape. Node or edge labels will not be crossed.
Polyline labeling only has an effect if the routing style is STRAIGHT_LINE.
final

Property Value

true if polyline connectors are added, false otherwise

Default Value

The default value is: false
Edges are only routed straight.

Sample Graphs

ShownSetting: false
Gets or sets the SubtreeRootAlignment that defines how the root node is aligned with its children and their shapes.
conversionfinal

Property Value

the SubtreeRootAlignment value specifying the location relative to the subtrees

Throws

Exception ({ name: 'ArgumentError' })
if the given root alignment is null

Default Value

The default value is: SubtreeRootAlignment.TRAILING
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

See Also

Developer's Guide
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
Gets or sets the relative vertical alignment of nodes within their respective layers.

A value of 0 means that nodes are top-aligned; a value of 0.5 means that nodes are center-aligned; a value of 1 means that nodes are bottom-aligned;

Values for a valid vertical alignment are in the range [0..1].

final

Property Value

the vertical alignment of nodes within their layers

Throws

Exception ({ name: 'ArgumentError' })
if the specified alignment is outside [0..1]

Default Value

The default value is: 0.5
Nodes are center aligned.

Sample Graphs

ShownSetting: 0

Methods

Creates an edge comparison which takes the initial coordinates of the nodes into account.
This comparison defines the order of the outgoing edges of a node before the actual placement of the node's subtree is calculated.
final

Return Value

function(LayoutEdge, LayoutEdge): number
the comparison for the edges
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