* Add a new edge
(n1: GraphNode | number | string, n2: GraphNode | number | string, dataIndex?: number)
| 106 | * Add a new edge |
| 107 | */ |
| 108 | addEdge(n1: GraphNode | number | string, n2: GraphNode | number | string, dataIndex?: number) { |
| 109 | const nodesMap = this._nodesMap; |
| 110 | const edgesMap = this._edgesMap; |
| 111 | |
| 112 | // PENDING |
| 113 | if (zrUtil.isNumber(n1)) { |
| 114 | n1 = this.nodes[n1]; |
| 115 | } |
| 116 | if (zrUtil.isNumber(n2)) { |
| 117 | n2 = this.nodes[n2]; |
| 118 | } |
| 119 | |
| 120 | if (!(n1 instanceof GraphNode)) { |
| 121 | n1 = nodesMap[generateNodeKey(n1)]; |
| 122 | } |
| 123 | if (!(n2 instanceof GraphNode)) { |
| 124 | n2 = nodesMap[generateNodeKey(n2)]; |
| 125 | } |
| 126 | if (!n1 || !n2) { |
| 127 | return; |
| 128 | } |
| 129 | |
| 130 | const key = n1.id + '-' + n2.id; |
| 131 | |
| 132 | const edge = new GraphEdge(n1, n2, dataIndex); |
| 133 | edge.hostGraph = this; |
| 134 | |
| 135 | if (this._directed) { |
| 136 | n1.outEdges.push(edge); |
| 137 | n2.inEdges.push(edge); |
| 138 | } |
| 139 | n1.edges.push(edge); |
| 140 | if (n1 !== n2) { |
| 141 | n2.edges.push(edge); |
| 142 | } |
| 143 | |
| 144 | this.edges.push(edge); |
| 145 | edgesMap[key] = edge; |
| 146 | |
| 147 | return edge; |
| 148 | }; |
| 149 | |
| 150 | /** |
| 151 | * Get edge by data index |
no test coverage detected