addon/utils/graph-view.js
function _updateNodes(nodes, source) {
  // Enter any new nodes at the parent's previous position.
  nodes.enter().append('g')
    .attr('transform', function(d) {
      var node = _getVertexNode(d, "x0") || source;
      node = _layout.projector(node.x0, node.y0);
      return 'translate(' + node.x + ',' + node.y + ')';
    })
    .on({
      mouseover: _onMouseOver,
      mouseout: _tip.hide,
      mousedown: _onMouse,
      mousemove: _onMouse,
      dblclick: _onDblclick
    })
    .style('opacity', 1e-6)
    .each(_addContent);

  // Transition nodes to their new position.
  nodes.transition()
    .duration(DURATION)
    .attr('transform', function(d) {
      d = _layout.projector(d.x, d.y);
      return 'translate(' + d.x + ',' + d.y + ')';
    })
    .style('opacity', 1);

  // Transition exiting nodes to the parent's new position.
  nodes.exit().transition()
    .duration(DURATION)
    .attr('transform', function(d) {
      var node = _getVertexNode(d, "x") || source;
      node = _layout.projector(node.x, node.y);
      return 'translate(' + node.x + ',' + node.y + ')';
    })
    .style('opacity', 1e-6)
    .remove();
}
function _updateNodes(nodes, source) {
  // Enter any new nodes at the parent's previous position.
  nodes.enter().append('g')
    .attr('transform', function(d) {
      var node = _getVertexNode(d, "x0") || source;
      node = _layout.projector(node.x0, node.y0);
      return 'translate(' + node.x + ',' + node.y + ')';
    })
    .on({
      mouseover: _onMouseOver,
      mouseout: _tip.hide,
      mousedown: _onMouse,
      mousemove: _onMouse,
      dblclick: _onDblclick
    })
    .style('opacity', 1e-6)
    .each(_addContent);

  // Transition nodes to their new position.
  nodes.transition()
    .duration(DURATION)
    .attr('transform', function(d) {
      d = _layout.projector(d.x, d.y);
      return 'translate(' + d.x + ',' + d.y + ')';
    })
    .style('opacity', 1);

  // Transition exiting nodes to the parent's new position.
  nodes.exit().transition()
    .duration(DURATION)
    .attr('transform', function(d) {
      var node = _getVertexNode(d, "x") || source;
      node = _layout.projector(node.x, node.y);
      return 'translate(' + node.x + ',' + node.y + ')';
    })
    .style('opacity', 1e-6)
    .remove();
}
function _updateNodes ( nodes , source ) { // Enter any new nodes at the parent's previous position. nodes . enter ( ) . append ( 'g' ) . attr ( 'transform' , function ( d ) { var node = _getVertexNode ( d , "x0" ) || source ; node = _layout . projector ( node . x0 , node . y0 ) ; return 'translate(' + node . x + ',' + node . y + ')' ; } ) . on ( { mouseover : _onMouseOver , mouseout : _tip . hide , mousedown : _onMouse , mousemove : _onMouse , dblclick : _onDblclick } ) . style ( 'opacity' , 1e-6 ) . each ( _addContent ) ; // Transition nodes to their new position. nodes . transition ( ) . duration ( DURATION ) . attr ( 'transform' , function ( d ) { d = _layout . projector ( d . x , d . y ) ; return 'translate(' + d . x + ',' + d . y + ')' ; } ) . style ( 'opacity' , 1 ) ; // Transition exiting nodes to the parent's new position. nodes . exit ( ) . transition ( ) . duration ( DURATION ) . attr ( 'transform' , function ( d ) { var node = _getVertexNode ( d , "x" ) || source ; node = _layout . projector ( node . x , node . y ) ; return 'translate(' + node . x + ',' + node . y + ')' ; } ) . style ( 'opacity' , 1e-6 ) . remove ( ) ; }
Update position of all nodes in the list and preform required transitions.
@param nodes {Array} Nodes to be updated
@param source {d3 element} Node that trigged the update, in first update source will be root.
Update position of all nodes in the list and preform required transitions .