dabeng / OrgChart

It's a simple and direct organization chart plugin. Anytime you want a tree-like chart, you can turn to OrgChart.
MIT License
2.83k stars 767 forks source link

为增加兄弟节点函数增加指定增加到右边的参数选项 #748

Open easythd opened 1 month ago

easythd commented 1 month ago

因为默认的增加兄弟节点函数addSiblings固定把新节点增加到指定节点的左边,而在项目使用过程中,我需要用到指定增加到右边,找了一圈issues,发现也有人有类似需求但一直没有解决这个问题,所以通过跟踪尝试,调整了一下源码,给addSiblings函数加了个指定增加到右边的参数,调整了2个函数,addSiblings和buildSiblingNode,这两个函数在源代码里本身是就是紧挨在一起的,调整如下,有用的请参考。

` 修改的jquery.orgchart.js文件

// build the sibling nodes of specific node
buildSiblingNode: function ($nodeChart, data, isRight=false) {
  ..............原来的代码不变...................
  if ($nodeChart.closest('.nodes').parent().is('.hierarchy')) {
  ..............原来的代码不变..................
  } else { // build the sibling nodes and parent node for the specific ndoe
    if (isRight) { //如果传入了isRight参数并且为true,则将新兄弟节点插入到指定节点的后面,否则默认插入到前面
      this.buildHierarchy($nodeChart.parent().append($('<li class="hierarchy">')).children('.hierarchy:last'), data);
    } else {
      this.buildHierarchy($nodeChart.parent().prepend($('<li class="hierarchy">')).children('.hierarchy:first'), data);
    }
    $nodeChart.prevAll('.hierarchy').children('.nodes').children().eq(insertPostion).after($nodeChart);
  }
},
//
addSiblings: function ($node, data, isRight=false) {
  this.buildSiblingNode($node.closest('.hierarchy'), data, isRight);
  ..............原来的代码不变...................

`

@dabeng 因为不知道是否还有别的什么地方涉及这个需求,我也没改别的,改的上述这点已经够我的项目中需求用了。如果合适,希望可以加入下一发布版本。谢谢