G6 icon indicating copy to clipboard operation
G6 copied to clipboard

[Bug]: 更新 5.0.49 后,脑图 设置初始只展示两层,手动展开第三层位置错乱

Open Sloth9527 opened this issue 6 months ago • 8 comments

Describe the bug / 问题描述

更新 5.0.49 后,脑图 初始只展示两层,手动展开第三层位置错乱 Image

Reproduction link / 复现链接

https://stackblitz.com/edit/react-ahfxxwsg?file=index.js

Steps to Reproduce the Bug or Issue / 重现步骤

No response

Version / 版本

🆕 5.x

OS / 操作系统

  • [ ] macOS
  • [ ] Windows
  • [ ] Linux
  • [ ] Others / 其他

Browser / 浏览器

  • [ ] Chrome
  • [ ] Edge
  • [ ] Firefox
  • [ ] Safari (Limited support / 有限支持)
  • [ ] IE (Nonsupport / 不支持)
  • [ ] Others / 其他

Sloth9527 avatar Jun 27 '25 06:06 Sloth9527

收到问题反馈,我们会尽快排查

Aarebecca avatar Jun 27 '25 07:06 Aarebecca

我也遇到了同样的问题, 已经暂时回退到使用固定5.0.46版本了, 希望官方能尽快解决

pjqdyd avatar Jun 30 '25 09:06 pjqdyd

@Aarebecca 这里在展开的时候计算布局给删掉了

https://github.com/antvis/G6/pull/7194/files#diff-83fe345610470bb432794e2285ba81377dec1994830e640af22113dfba2bfcb8L727

Image

然后 demo 这里改成了 先全部展开,然后再折叠,完全不管先折叠的节点

Image

这种 break change 确定要这么改话,放到大版本里说明一下吧 =,=

Sloth9527 avatar Jul 01 '25 02:07 Sloth9527

@Aarebecca 这里在展开的时候计算布局给删掉了

https://github.com/antvis/G6/pull/7194/files#diff-83fe345610470bb432794e2285ba81377dec1994830e640af22113dfba2bfcb8L727

Image

然后 demo 这里改成了 先全部展开,然后再折叠,完全不管先折叠的节点

Image

这种 break change 确定要这么改话,放到大版本里说明一下吧 =,=

@Sloth9527 这是来自一位社区用户的贡献,我会尽快评估一下,如果存在问题会回滚相关代码

Aarebecca avatar Jul 01 '25 02:07 Aarebecca

不好意思引入了比较大的变化,原因是我想在折叠/展开的时候保持节点原来的位置不变,而不受到布局的影响,align选项也不好用,所以就删掉了布局,之后我会更加谨慎的。

你们的问题可以尝试加两个配置解决。

layout: {
      type: 'dendrogram',
      nodeSep: 30,
      rankSep: 100,
      preLayout: true,// 这个配置
      isLayoutInvisibleNodes: true,// 还有这个
 }

这个问题解决的原理是:先布局所有的节点(包括折叠的和不可见的)然后再绘制。折叠的节点位置得到了布局。因此再展开会让折叠的节点到达理想的位置。@pjqdyd @Sloth9527

HawtinZeng avatar Jul 02 '25 15:07 HawtinZeng

@Aarebecca 这里在展开的时候计算布局给删掉了

https://github.com/antvis/G6/pull/7194/files#diff-83fe345610470bb432794e2285ba81377dec1994830e640af22113dfba2bfcb8L727

Image

然后 demo 这里改成了 先全部展开,然后再折叠,完全不管先折叠的节点

Image

这种 break change 确定要这么改话,放到大版本里说明一下吧 =,=

已补充 demo。#7262

HawtinZeng avatar Jul 02 '25 16:07 HawtinZeng

不好意思引入了比较大的变化,原因是我想在折叠/展开的时候保持节点原来的位置不变,而不受到布局的影响,align选项也不好用,所以就删掉了布局,之后我会更加谨慎的。

你们的问题可以尝试加两个配置解决。

layout: { type: 'dendrogram', nodeSep: 30, rankSep: 100, preLayout: true,// 这个配置 isLayoutInvisibleNodes: true,// 还有这个 } 这个问题解决的原理是:先布局所有的节点(包括折叠的和不可见的)然后再绘制。折叠的节点位置得到了布局。因此再展开会让折叠的节点到达理想的位置。@pjqdyd @Sloth9527

@HawtinZeng 好的

@Aarebecca 这样的话是不是遍历data里面有 collapsed: true 的数据 就强制打开 preLayout 和 isLayoutInvisibleNodes 这个两个参数比较好

Sloth9527 avatar Jul 03 '25 09:07 Sloth9527

不好意思引入了比较大的变化,原因是我想在折叠/展开的时候保持节点原来的位置不变,而不受到布局的影响,align选项也不好用,所以就删掉了布局,之后我会更加谨慎的。

你们的问题可以尝试加两个配置解决。

layout: { type: 'dendrogram', nodeSep: 30, rankSep: 100, preLayout: true,// 这个配置 isLayoutInvisibleNodes: true,// 还有这个 } 这个问题解决的原理是:先布局所有的节点(包括折叠的和不可见的)然后再绘制。折叠的节点位置得到了布局。因此再展开会让折叠的节点到达理想的位置。@pjqdyd @Sloth9527

我的场景就是折叠和展开就要自动布局,改了以后折叠展开整体就不变化了,现在回退老版本用了。应该加一个options来控制吧

STofone avatar Aug 28 '25 11:08 STofone