code: 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();
  }
docs: 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.