不允许2个节点之间的链接 - 定向图编辑器d3.js

时间:2015-04-27 18:37:35

标签: javascript svg d3.js

我已经为我的研究项目使用了“定向图编辑器” - http://bl.ocks.org/rkirsling/5001347,我已经更新了它,现在看起来像这样 - http://jsfiddle.net/fb89orLt/2/。 我的问题是,我怎么能不允许在2个蓝色圆圈之间画一个链接(例如,我不想让d3在“星巴克”和“仁人家园”之间画出链接)。我正在考虑实现比较“拖动到自我”线上的2个节点的内容,如在定向图编辑器中已经完成的那样,但是没有想到解决方案。

这是添加了新节点并检查“拖到自我”条件的代码片段:

enter code here

  // select node
  mousedown_node = d;
  if(mousedown_node === selected_node) selected_node = null;
  else selected_node = mousedown_node;
  selected_link = null;

enter code here

  // reposition drag line
  drag_line
    .style('marker-end', 'url(#end-arrow)')
    .classed('hidden', false)
    .attr('d', 'M' + mousedown_node.x + ',' + mousedown_node.y + 'L' + mousedown_node.x + ',' + mousedown_node.y);

enter code here

  restart();
})
.on('mouseup', function(d) {
  if(!mousedown_node) return;

enter code here

  // needed by FF
  drag_line
    .classed('hidden', true)
    .style('marker-end', '');

enter code here

  // check for drag-to-self
  mouseup_node = d;
  if(mouseup_node === mousedown_node) { resetMouseVars(); return; }

  // unenlarge target node
  d3.select(this).attr('transform', '');

请帮我解决这个问题。谢谢。非常感谢任何帮助。

0 个答案:

没有答案