Class PackedBubbleLayoutAlgorithm

  • All Implemented Interfaces:
    Serializable, OptionDataListener, org.zkoss.json.JSONAware

    public class PackedBubbleLayoutAlgorithm
    extends Optionable
    Options for layout algorithm when simulation is enabled. Inside there are options to change the speed, padding, initial bubbles positions and more.
    Since:
    7.2.1.0
    Author:
    rudyhuang
    See Also:
    Serialized Form
    • Constructor Detail

      • PackedBubbleLayoutAlgorithm

        public PackedBubbleLayoutAlgorithm()
    • Method Detail

      • getBubblePadding

        public Number getBubblePadding()
        Returns the distance between two bubbles, when the algorithm starts to treat two bubbles as overlapping. The bubblePadding is also the expected distance between all the bubbles on simulation end.

        Default: 5

      • setBubblePadding

        public void setBubblePadding​(Number bubblePadding)
        Sets the distance between two bubbles, when the algorithm starts to treat two bubbles as overlapping. The bubblePadding is also the expected distance between all the bubbles on simulation end.
      • isDragBetweenSeries

        public boolean isDragBetweenSeries()
        In case of split series, this option allows user to drag and drop points between series, for changing point related series.

        Default: false

      • setDragBetweenSeries

        public void setDragBetweenSeries​(boolean dragBetweenSeries)
        In case of split series, this option allows user to drag and drop points between series, for changing point related series.
      • isEnableSimulation

        public boolean isEnableSimulation()
        Experimental. Returns whether enables live simulation of the algorithm implementation. All nodes are animated as the forces applies on them.

        Default: true

      • setEnableSimulation

        public void setEnableSimulation​(boolean enableSimulation)
        Experimental. Sets whether enables live simulation of the algorithm implementation. All nodes are animated as the forces applies on them.
      • getFriction

        public Number getFriction()
        Returns the friction applied on forces to prevent nodes rushing to fast to the desired positions.

        Default: -0.981.

      • setFriction

        public void setFriction​(Number friction)
        Sets the friction applied on forces to prevent nodes rushing to fast to the desired positions.
      • getGravitationalConstant

        public Number getGravitationalConstant()
        Returns the gravitational const used in the barycenter force of the algorithm.

        Default: 0.01

      • setGravitationalConstant

        public void setGravitationalConstant​(Number gravitationalConstant)
        Sets the gravitational const used in the barycenter force of the algorithm.
      • getInitialPositionRadius

        public Number getInitialPositionRadius()
        When initialPositions are set to 'circle', initialPositionRadius is a distance from the center of circle, in which nodes are created.

        Default: 20

      • setInitialPositionRadius

        public void setInitialPositionRadius​(Number initialPositionRadius)
        When initialPositions are set to 'circle', initialPositionRadius is a distance from the center of circle, in which nodes are created.
      • getInitialPositions

        public Object getInitialPositions()
        Returns the initial layout algorithm for positioning nodes. Can be one of the built-in options ("circle", "random") or a function where positions should be set on each node (this.nodes) as node.plotX and node.plotY.

        Default: "circle"

      • setInitialPositions

        public void setInitialPositions​(String initialPositions)
        Sets the initial layout algorithm for positioning nodes. Can be one of the built-in options ("circle", "random").
      • setInitialPositions

        public void setInitialPositions​(org.zkoss.json.JavaScriptValue initialPositions)
        Sets the initial layout algorithm for positioning nodes. Can be a function where positions should be set on each node (this.nodes) as node.plotX and node.plotY.
      • getIntegration

        public String getIntegration()
        Returns the integration type. Available options are 'euler' and 'verlet'. Integration determines how forces are applied on particles. In Euler integration, force is applied direct as newPosition += velocity;. In Verlet integration, new position is based on a previous position without velocity: newPosition += previousPosition - newPosition. Note that different integrations give different results as forces are different.

        Default: "euler"

      • setIntegration

        public void setIntegration​(String integration)
        Sets the integration type. Available options are 'euler' and 'verlet'. Integration determines how forces are applied on particles. In Euler integration, force is applied direct as newPosition += velocity;. In Verlet integration, new position is based on a previous position without velocity: newPosition += previousPosition - newPosition. Note that different integrations give different results as forces are different.
      • getLinkLength

        public Number getLinkLength()
        Returns the ideal length (px) of the link between two nodes. When not defined, length is calculated as: Math.pow(availableWidth * availableHeight / nodesLength, 0.4); Note: Because of the algorithm specification, length of each link might be not exactly as specified.

        Default: null

      • setLinkLength

        public void setLinkLength​(Number linkLength)
        Sets the ideal length (px) of the link between two nodes. When not defined, length is calculated as: Math.pow(availableWidth * availableHeight / nodesLength, 0.4); Note: Because of the algorithm specification, length of each link might be not exactly as specified.
      • getMaxIterations

        public Number getMaxIterations()
        Returns the max number of iterations before algorithm will stop. In general, algorithm should find positions sooner, but when rendering huge number of nodes, it is recommended to increase this value as finding perfect graph positions can require more time.

        Default: 1000

      • setMaxIterations

        public void setMaxIterations​(Number maxIterations)
        Sets the max number of iterations before algorithm will stop. In general, algorithm should find positions sooner, but when rendering huge number of nodes, it is recommended to increase this value as finding perfect graph positions can require more time.
      • getMaxSpeed

        public Number getMaxSpeed()
        Returns the max speed that node can get in one iteration. In terms of simulation, it's a maximum translation (in pixels) that a node can move (in both, x and y, dimensions). While friction is applied on all nodes, max speed is applied only for nodes that move very fast, for example small or disconnected ones.

        Default: 5

      • setMaxSpeed

        public void setMaxSpeed​(Number maxSpeed)
        Sets the max speed that node can get in one iteration. In terms of simulation, it's a maximum translation (in pixels) that a node can move (in both, x and y, dimensions). While friction is applied on all nodes, max speed is applied only for nodes that move very fast, for example small or disconnected ones.
      • isParentNodeLimit

        public boolean isParentNodeLimit()
        Returns whether bubbles should interact with their parentNode to keep them inside.

        Default: false

      • setParentNodeLimit

        public void setParentNodeLimit​(boolean parentNodeLimit)
        Sets whether bubbles should interact with their parentNode to keep them inside.
      • getParentNodeOptions

        public PackedBubbleParentNodeOptions getParentNodeOptions()
        Returns the layout algorithm options for parent nodes, if any. Otherwise, create a new one.
      • setParentNodeOptions

        public void setParentNodeOptions​(PackedBubbleParentNodeOptions parentNodeOptions)
        Sets the layout algorithm options for parent nodes.
      • isSeriesInteraction

        public boolean isSeriesInteraction()
        Returns whether series should interact with each other or not. When parentNodeLimit is set to true, thi option should be set to false to avoid sticking points in wrong series parentNode.

        Default: true

      • setSeriesInteraction

        public void setSeriesInteraction​(boolean seriesInteraction)
        Sets whether series should interact with each other or not. When parentNodeLimit is set to true, thi option should be set to false to avoid sticking points in wrong series parentNode.
      • isSplitSeries

        public boolean isSplitSeries()
        Returns whether to split series into individual groups or to mix all series together.

        Default: false

      • setSplitSeries

        public void setSplitSeries​(boolean splitSeries)
        Sets whether to split series into individual groups or to mix all series together.
      • getType

        public String getType()
        Returns the type of the algorithm used when positioning nodes.

        Default: "reingold-fruchterman"

      • setType

        public void setType​(String type)
        Sets the type of the algorithm used when positioning nodes.