hierarchy icon indicating copy to clipboard operation
hierarchy copied to clipboard

紧凑树计算位置出错

Open huyaocode opened this issue 4 years ago • 3 comments

如下图所示,在第 3 列中绿色卡片与白色卡片并未相交, 但由于第 5 列太宽了,绿色卡片就与白色卡片间出现了间隙。

我 fork 了你的代码,demo 中是造好的数据,你可以下载下来快速查看。链接点我

希望得到您的帮助,谢谢!

position error

huyaocode avatar Jan 06 '21 08:01 huyaocode

我对这个项目也非常感兴趣,如果有解决方案的话可以让我来修改并提 PR

huyaocode avatar Jan 06 '21 08:01 huyaocode

官方 Demo

在紧凑树布局算法中,separate 方法中对于dist 的处理中,只处理了 dist 大于 0 的情况(就是节点有重合的时候,需要将节点的偏移)但是没有处理 dist 小于 0 的情况(节点未重合的情况),因此会出现子节点将父节点的间距撑开的情况。如果需要解决这个问题可以将下面代码中的 if 判断去除,在所有情况下都处理一下节点位置,即可以解决这个问题。 https://github.com/antvis/hierarchy/blob/0e9e4ddbe61342a540426fccd926153fe220fb32/src/layout/non-layered-tidy.js#L134-L137

// if (dist > 0) { 
      mscl += dist; 
      moveSubtree(t, i, ih.index, dist); 
//} 

HuColin avatar Feb 18 '24 02:02 HuColin

如果为了确保兼容性,是否可以增加一个配置来启用这个类型的“紧凑”布局?

HuColin avatar Feb 18 '24 02:02 HuColin