layout Object
The layout of a diagram consists in arranging the shapes (sometimes also the connections) in some fashion in order to achieve an aesthetically pleasing experience to the user. It aims at giving a more direct insight in the information contained within the diagram and its relational structure.
On a technical level, layout consists of a multitude of algorithms and optimizations:
- analysis of the relational structure (loops, multi-edge occurrence...)
- connectedness of the diagram and the splitting into disconnected components
- crossings of connections
- bends and length of links
and various ad-hoc calculations which depend on the type of layout. The criteria on which an algorithm is based vary but the common denominator is:
- a clean separation of connected components (subgraphs)
- an orderly organization of the shapes in such a way that siblings are close to another, i.e. a tight packing of shapes which belong together (parent of child relationship)
- a minimum of connection crossings
Kendo diagram includes three of the most used layout algorithms which should cover most of your layout needs - tree layout, force-directed layout and layered layout. Please, check the type property for more details regarding each type.
The generic way to apply a layout is by calling the layout() method on the diagram. The method has a single parameter options. It is an object, which can contain parameters which are specific to the layout as well as parameters customizing the global grid layout. Parameters which apply to other layout algorithms can be included but are overlooked if not applicable to the chose layout type. This means that you can define a set of parameters which cover all possible layout types and simply pass it in the method whatever the layout define in the first parameter.
Related Properties
- layout.endRadialAngle
- layout.grid
- layout.grid.componentSpacingX
- layout.grid.componentSpacingY
- layout.grid.offsetX
- layout.grid.offsetY
- layout.grid.width
- layout.horizontalSeparation
- layout.iterations
- layout.layerSeparation
- layout.nodeDistance
- layout.radialFirstLevelSeparation
- layout.radialSeparation
- layout.startRadialAngle
- layout.subtype
- layout.tipOverTreeStartLevel
- layout.type
- layout.underneathHorizontalOffset
- layout.underneathVerticalSeparation
- layout.underneathVerticalTopOffset
- layout.verticalSeparation