addon/utils/graph-view.js
function _updateLinks(links, source) {
  // Enter any new links at the parent's previous position.
  links.enter().insert('path', 'g')
    .attr('class', function (d) {
      var type = d.get('dataMovementType') || "";
      return 'link ' + type.toLowerCase();
    })
    /**
     * IE11 rendering does not work for svg path element with marker set.
     * See https://connect.microsoft.com/IE/feedback/details/801938
     * This can be removed once the bug is fixed in all supported IE versions
     */
    .attr("style", isIE ? "" : Ember.String.htmlSafe("marker-mid: url(" + window.location.pathname + "#arrow-marker);"))
    .attr('d', function(d) {
      var node = _getTargetNode(d, "x0") || source;
      var o = {x: node.x0, y: node.y0};
      return _createPathData({source: o, target: o});
    })
    .on({
      mouseover: _onMouseOver,
      mouseout: _tip.hide
    });

  // Transition links to their new position.
  links.transition()
    .duration(DURATION)
    .attr('d', _createPathData);

  // Transition exiting nodes to the parent's new position.
  links.exit().transition()
    .duration(DURATION)
    .attr('d', function(d) {
      var node = _getTargetNode(d, "x") || source;
      var o = {x: node.x, y: node.y};
      return _createPathData({source: o, target: o});
    })
    .remove();
}
function _updateLinks(links, source) {
  // Enter any new links at the parent's previous position.
  links.enter().insert('path', 'g')
    .attr('class', function (d) {
      var type = d.get('dataMovementType') || "";
      return 'link ' + type.toLowerCase();
    })
    /**
     * IE11 rendering does not work for svg path element with marker set.
     * See https://connect.microsoft.com/IE/feedback/details/801938
     * This can be removed once the bug is fixed in all supported IE versions
     */
    .attr("style", isIE ? "" : Ember.String.htmlSafe("marker-mid: url(" + window.location.pathname + "#arrow-marker);"))
    .attr('d', function(d) {
      var node = _getTargetNode(d, "x0") || source;
      var o = {x: node.x0, y: node.y0};
      return _createPathData({source: o, target: o});
    })
    .on({
      mouseover: _onMouseOver,
      mouseout: _tip.hide
    });

  // Transition links to their new position.
  links.transition()
    .duration(DURATION)
    .attr('d', _createPathData);

  // Transition exiting nodes to the parent's new position.
  links.exit().transition()
    .duration(DURATION)
    .attr('d', function(d) {
      var node = _getTargetNode(d, "x") || source;
      var o = {x: node.x, y: node.y};
      return _createPathData({source: o, target: o});
    })
    .remove();
}
function _updateLinks ( links , source ) { // Enter any new links at the parent's previous position. links . enter ( ) . insert ( 'path' , 'g' ) . attr ( 'class' , function ( d ) { var type = d . get ( 'dataMovementType' ) || "" ; return 'link ' + type . toLowerCase ( ) ; } ) /**
     * IE11 rendering does not work for svg path element with marker set.
     * See https://connect.microsoft.com/IE/feedback/details/801938
     * This can be removed once the bug is fixed in all supported IE versions
     */ . attr ( "style" , isIE ? "" : Ember . String . htmlSafe ( "marker-mid: url(" + window . location . pathname + "#arrow-marker);" ) ) . attr ( 'd' , function ( d ) { var node = _getTargetNode ( d , "x0" ) || source ; var o = { x : node . x0 , y : node . y0 } ; return _createPathData ( { source : o , target : o } ) ; } ) . on ( { mouseover : _onMouseOver , mouseout : _tip . hide } ) ; // Transition links to their new position. links . transition ( ) . duration ( DURATION ) . attr ( 'd' , _createPathData ) ; // Transition exiting nodes to the parent's new position. links . exit ( ) . transition ( ) . duration ( DURATION ) . attr ( 'd' , function ( d ) { var node = _getTargetNode ( d , "x" ) || source ; var o = { x : node . x , y : node . y } ; return _createPathData ( { source : o , target : o } ) ; } ) . remove ( ) ; }
Update position of all links in the list and preform required transitions.
@param links {Array} Links to be updated
@param source {d3 element} Node that trigged the update, in first update source will be root.
Update position of all links in the list and preform required transitions .