在细胞上的两篇论文之间拖放 - JointJs

时间:2017-08-18 20:42:22

标签: javascript svg jointjs

我正在使用此解决方案(Joint.js Drag and Drop Element between two papers)拖放两张完美合作的论文。

我想知道是否存在一种方法来知道你是否将鬼(即flyPaper图中的单元格)放在主图中的单元格上,如果有可能,我该如何获得这个单元格。

实际上,我想根据主图中放置单元格的位置执行不同的操作。例如,如果将单元格放在另一个单元格(具有精确类型)等上。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这称为“重排”,JointJs的以下代码描述了重排的方法,但是在一篇论文中(不是两篇论文中)-Reparenting

主要思想是将此单元格嵌入父单元格,这是使用以下代码完成的:

$('body').on('mouseup.fly', function(e) {
    var x = e.pageX,
      y = e.pageY,
      target = paper.$el.offset();

    // Dropped over paper ?
    if (x > target.left && x < target.left + paper.$el.width() && y > target.top && y < target.top + paper.$el.height()) {
      var s = flyShape.clone();
      s.position(x - target.left - offset.x, y - target.top - offset.y);
      graph.addCell(s);
      //get the parent cell and embed the dragged cell with it
      if (cellViewsBelow.length) {
        var cellViewBelow;
        for (var i = 0; i < cellViewsBelow.length; i++) {              
          if (cellViewsBelow[i].model.id !== s.id) {
            cellViewBelow = cellViewsBelow[i];
          }
        }
        // Prevent recursive embedding.
        if (cellViewBelow && cellViewBelow.model.get('parent') !== s.id) {
          cellViewBelow.model.embed(s);
        }
      }
    }