documentationfor yFiles for HTML 3.0.0.1

Series-parallel Layout

This chapter describes the major API changes to the SeriesParallelLayout introduced with yFiles for HTML 3.0 and how to migrate from the older version.

As with all major layout algorithms, the SeriesParallelLayout no longer inherits from MultiStageLayout, but implements ILayoutAlgorithm directly. The layout stages are now managed by a LayoutStageStack, which can be obtained via the layoutStages property; see the migration chapter Layout Stages and Multi-Stage Layouts for more details.

Renamed, Moved, and Removed Classes and Members

The following table contains the renamed, moved, and removed classes and members of the major classes of the SeriesParallelLayout.

Renamed, moved, and removed members of classes related to the SeriesParallelLayout (classes are bold)
yFiles for HTML 2.6 yFiles for HTML 3.0 Remarks
SeriesParallelLayoutclass name unchanged
Properties in class SeriesParallelLayout
componentLayoutEnabledcomponentLayout.enabled
considerNodeLabelsnodeLabelPlacementThe enum now allows you to choose between considering the node labels and the GenericLabeling algorithm.
defaultEdgeLayoutDescriptordefaultEdgeDescriptor
defaultOutEdgeComparerremovedUse SeriesParallelLayoutData.childOrder instead.
defaultPortAssignmentdefaultPortAssigner
generalGraphHandlingremovedNon-series-parallel graphs are always handled now.
hideGroupsStageremovedThe SeriesParallelLayout is able to handle group nodes itself.
hideGroupsStageEnabled
integratedEdgeLabelingedgeLabelPlacementThe enum now allows you to choose between integrated labeling and the GenericLabeling algorithm.
labelingremovedTo influence the labeling, use the nodeLabelPlacement, edgeLabelPlacement, and nonSeriesParallelEdgeLabelingproperties.
labelingEnabled
minimumEdgeToEdgeDistanceminimumEdgeDistance
minimumNodeToNodeDistanceminimumNodeDistance
nonSeriesParallelEdgeLabelSelectionKeyremovedPLACE_EDGE_LABELS_DATA_KEY is always used now.
nonSeriesParallelEdgeLabelingAlgorithmnonSeriesParallelEdgeLabeling
nonSeriesParallelEdgesDpKeyremovedROUTE_EDGES_DATA_KEY is always used now.
orientationLayoutremovedUse layoutOrientation to set the desired layout orientation.
orientationLayoutEnabled
parallelEdgeRouterEnabledparallelEdgeRouter.enabled
routingStyleedgeRoutingStyle
selfLoopRouterEnabledselfLoopRouter.enabled
subgraphLayoutremovedIf necessary, the SubgraphLayoutStage can be accessed and enabled via method get<T> of property layoutStages, but this may lead to overlaps.
subgraphLayoutEnabled
verticalAlignmentparallelSubgraphAlignment
SeriesParallelLayoutDataSeriesParallelLayoutData<TNode,TEdge,TNodeLabel,TEdgeLabel>
Properties in class SeriesParallelLayoutData
abortHandlerremovedA LayoutAbortController is added by the LayoutExecutor; see Section Maximum Duration and Aborting of Algorithms for more details.
edgeLabelPreferredPlacementedgeLabelPreferredPlacements
edgeLayoutDescriptorsedgeDescriptors
outEdgeComparerschildOrder.outEdgeComparators
portAssignmentsportAssigners
ISeriesParallelLayoutPortAssignmentISeriesParallelLayoutPortAssigner
DefaultSeriesParallelLayoutPortAssignmentSeriesParallelLayoutPortAssigner
Properties in class SeriesParallelLayoutPortAssigner
borderGapToPortGapRatioborderToPortGapRatio
forkStyleremovedHas been combined with mode.
ForkStyleremovedHas been combined with SeriesParallelLayoutPortAssignmentMode.
SeriesParallelLayoutEdgeLayoutDescriptorSeriesParallelLayoutEdgeDescriptor
DefaultOutEdgeComparerremoved

Changed Default Values and Behavior Changes

Non-series-parallel graphs are now handled by default. The property generalGraphHandling is no longer required and has been removed.

Node labels are now considered by default. To change this behavior, set the nodeLabelPlacement property to the desired value. It is now also easier to place the node labels with GenericLabeling by setting the value to GENERIC.

Edge labels are now placed by an integrated edge labeling algorithm. To change this behavior, set the edgeLabelPlacement property to the desired value. It is now also easier to place the edge labels with GenericLabeling by setting the value to GENERIC.

Port placement now takes the specified port candidates into account. The ports are placed in a post-processing step by the PortPlacementStage. Port candidates can be specified via the properties on the sub-data SeriesParallelLayoutData.ports. See also the section Ports.