| /** |
| * Copyright (c) 2006-2015, JGraph Ltd |
| * Copyright (c) 2006-2015, Gaudenz Alder |
| */ |
| /** |
| * Class: mxGraphHierarchyEdge |
| * |
| * An abstraction of a hierarchical edge for the hierarchy layout |
| * |
| * Constructor: mxGraphHierarchyEdge |
| * |
| * Constructs a hierarchy edge |
| * |
| * Arguments: |
| * |
| * edges - a list of real graph edges this abstraction represents |
| */ |
| function mxGraphHierarchyEdge(edges) |
| { |
| mxGraphAbstractHierarchyCell.apply(this, arguments); |
| this.edges = edges; |
| this.ids = []; |
| |
| for (var i = 0; i < edges.length; i++) |
| { |
| this.ids.push(mxObjectIdentity.get(edges[i])); |
| } |
| }; |
| |
| /** |
| * Extends mxGraphAbstractHierarchyCell. |
| */ |
| mxGraphHierarchyEdge.prototype = new mxGraphAbstractHierarchyCell(); |
| mxGraphHierarchyEdge.prototype.constructor = mxGraphHierarchyEdge; |
| |
| /** |
| * Variable: edges |
| * |
| * The graph edge(s) this object represents. Parallel edges are all grouped |
| * together within one hierarchy edge. |
| */ |
| mxGraphHierarchyEdge.prototype.edges = null; |
| |
| /** |
| * Variable: ids |
| * |
| * The object identities of the wrapped cells |
| */ |
| mxGraphHierarchyEdge.prototype.ids = null; |
| |
| /** |
| * Variable: source |
| * |
| * The node this edge is sourced at |
| */ |
| mxGraphHierarchyEdge.prototype.source = null; |
| |
| /** |
| * Variable: target |
| * |
| * The node this edge targets |
| */ |
| mxGraphHierarchyEdge.prototype.target = null; |
| |
| /** |
| * Variable: isReversed |
| * |
| * Whether or not the direction of this edge has been reversed |
| * internally to create a DAG for the hierarchical layout |
| */ |
| mxGraphHierarchyEdge.prototype.isReversed = false; |
| |
| /** |
| * Function: invert |
| * |
| * Inverts the direction of this internal edge(s) |
| */ |
| mxGraphHierarchyEdge.prototype.invert = function(layer) |
| { |
| var temp = this.source; |
| this.source = this.target; |
| this.target = temp; |
| this.isReversed = !this.isReversed; |
| }; |
| |
| /** |
| * Function: getNextLayerConnectedCells |
| * |
| * Returns the cells this cell connects to on the next layer up |
| */ |
| mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells = function(layer) |
| { |
| if (this.nextLayerConnectedCells == null) |
| { |
| this.nextLayerConnectedCells = []; |
| |
| for (var i = 0; i < this.temp.length; i++) |
| { |
| this.nextLayerConnectedCells[i] = []; |
| |
| if (i == this.temp.length - 1) |
| { |
| this.nextLayerConnectedCells[i].push(this.source); |
| } |
| else |
| { |
| this.nextLayerConnectedCells[i].push(this); |
| } |
| } |
| } |
| |
| return this.nextLayerConnectedCells[layer - this.minRank - 1]; |
| }; |
| |
| /** |
| * Function: getPreviousLayerConnectedCells |
| * |
| * Returns the cells this cell connects to on the next layer down |
| */ |
| mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells = function(layer) |
| { |
| if (this.previousLayerConnectedCells == null) |
| { |
| this.previousLayerConnectedCells = []; |
| |
| for (var i = 0; i < this.temp.length; i++) |
| { |
| this.previousLayerConnectedCells[i] = []; |
| |
| if (i == 0) |
| { |
| this.previousLayerConnectedCells[i].push(this.target); |
| } |
| else |
| { |
| this.previousLayerConnectedCells[i].push(this); |
| } |
| } |
| } |
| |
| return this.previousLayerConnectedCells[layer - this.minRank - 1]; |
| }; |
| |
| /** |
| * Function: isEdge |
| * |
| * Returns true. |
| */ |
| mxGraphHierarchyEdge.prototype.isEdge = function() |
| { |
| return true; |
| }; |
| |
| /** |
| * Function: getGeneralPurposeVariable |
| * |
| * Gets the value of temp for the specified layer |
| */ |
| mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable = function(layer) |
| { |
| return this.temp[layer - this.minRank - 1]; |
| }; |
| |
| /** |
| * Function: setGeneralPurposeVariable |
| * |
| * Set the value of temp for the specified layer |
| */ |
| mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable = function(layer, value) |
| { |
| this.temp[layer - this.minRank - 1] = value; |
| }; |
| |
| /** |
| * Function: getCoreCell |
| * |
| * Gets the first core edge associated with this wrapper |
| */ |
| mxGraphHierarchyEdge.prototype.getCoreCell = function() |
| { |
| if (this.edges != null && this.edges.length > 0) |
| { |
| return this.edges[0]; |
| } |
| |
| return null; |
| }; |