static linkNodesAndEdges()

in src/utilities/graph-util.js [73:103]


  static linkNodesAndEdges(nodesMap: any, edges: IEdge[]) {
    let nodeMapSourceNode = null;
    let nodeMapTargetNode = null;
    let edge = null;

    for (let i = 0; i < edges.length; i++) {
      edge = edges[i];

      if (edge.target == null) {
        continue;
      }

      const sourceID = `key-${edge.source != null ? edge.source : ''}`;
      const targetID = `key-${edge.target}`;

      nodeMapSourceNode = nodesMap[sourceID];
      nodeMapTargetNode = nodesMap[targetID];

      // avoid an orphaned edge
      if (nodeMapSourceNode && nodeMapTargetNode) {
        nodeMapSourceNode.outgoingEdges.push(edge);
        nodeMapTargetNode.incomingEdges.push(edge);
        nodeMapSourceNode.children.push(nodeMapTargetNode);
        nodeMapTargetNode.parents.push(nodeMapSourceNode);
      } else {
        // This can get noisy because linkNodesAndEdges runs a lot.
        // The consumer should have cleared out the edges before rendering react-digraph
        console.warn('react-digraph: Found orphaned edges');
      }
    }
  }