Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

透视表树模式根节点没有后代也展示展开/收起图标 #2804

Closed
1 of 5 tasks
ggcfcmd opened this issue Jul 3, 2024 · 8 comments · Fixed by #2806
Closed
1 of 5 tasks

透视表树模式根节点没有后代也展示展开/收起图标 #2804

ggcfcmd opened this issue Jul 3, 2024 · 8 comments · Fixed by #2806
Assignees
Labels
🐛 bug 这个是一个 bug ❔question 疑问/使用问题 released on @next released

Comments

@ggcfcmd
Copy link

ggcfcmd commented Jul 3, 2024

🏷 Version

Package Version
@antv/s2 1.54.7
@antv/s2-react 1.46.4
@antv/s2-vue

Sheet Type

  • PivotSheet
  • TableSheet
  • GridAnalysisSheet
  • StrategySheet
  • EditableSheet

🖋 Description

当前使用s2-react透视表的树模式,一级节点(同时也是叶子节点)没有子节点的情况默认也显示了展开图标

🔗 Reproduce Link

image

感觉现在一级节点的isLeaf字段并没有被维护,在不使用CustomRowCell自定义展开收起的情况下是否可以实现没有子节点的一级节点不展示图标

😊 Expected Behavior

没有子节点的一级节点不展示展开图标(图中蓝色)

😅 Current Behavior

没有子节点的一级节点也展示展开图标

@ggcfcmd ggcfcmd added the ❔question 疑问/使用问题 label Jul 3, 2024
@lijinke666
Copy link
Member

lijinke666 commented Jul 3, 2024

一级节点(同时也是叶子节点)没有子节点的情况默认也显示了展开图标

一级节点同时也是叶子节点是什么意思, 是数据本身就没有子节点, 但是错误的展示了 icon ?

还是说有, 只是折叠后没有 children 了? 折叠后没有 children 符合预期.

感觉现在一级节点的isLeaf字段并没有被维护

只有叶子节点才会写入 isLeaf 属性

是否可以实现没有子节点的一级节点不展示图标

官网能复现吗? 没有子节点就是不展示 icon 呀, 是指这一组数据只有一条? 看你截图是当做明细表再用, 但是又需要树状功能? 不能的话请使用 mock 数据, 用 codesandbox 提供一个最小可复现 demo 吧, 看代码才好理解你的意思

@lijinke666 lijinke666 added the 🤔 need reproduce 需要一个在线复现链接 label Jul 4, 2024
Copy link
Contributor

github-actions bot commented Jul 4, 2024

你好 @ggcfcmd,请提供一个可以在线访问的链接, 或者使用 codesandbox 提供示例并详细说明复现步骤 (查看更多模板), 15 天内未回复issue自动关闭。

Hello, @ggcfcmd, please provide an accessible link or usage codesandbox to describe the reproduction steps (more template). The issue will be closed without any replay within 15 days.

@ggcfcmd
Copy link
Author

ggcfcmd commented Jul 4, 2024

一级节点(同时也是叶子节点)没有子节点的情况默认也显示了展开图标

一级节点同时也是叶子节点是什么意思, 是数据本身就没有子节点, 但是错误的展示了 icon ?

还是说有, 只是折叠后没有 children 了? 折叠后没有 children 符合预期.

感觉现在一级节点的isLeaf字段并没有被维护

只有叶子节点才会写入 isLeaf 属性

是否可以实现没有子节点的一级节点不展示图标

官网能复现吗? 没有子节点就是不展示 icon 呀, 是指这一组数据只有一条? 看你截图是当做明细表再用, 但是又需要树状功能? 不能的话请使用 mock 数据, 用 codesandbox 提供一个最小可复现 demo 吧, 看代码才好理解你的意思

数据本身没有子节点 但是也展示了icon

@github-actions github-actions bot removed the 🤔 need reproduce 需要一个在线复现链接 label Jul 4, 2024
@lijinke666
Copy link
Member

lijinke666 commented Jul 4, 2024

在不使用CustomRowCell自定义展开收起的情况下是否可以实现没有子节点的一级节点不展示图标

尝试复现了下, 算是一个 bug, 树状模式下一级节点同时还有行小计的含义, 数据虽然只有一条, 内部布局时会生成一条额外的虚拟小计节点, 所以才造成了 children 为空时 isLeaf 没有值

const emptyChildren = !pivotMetaValue?.children?.size;
if (emptyChildren || isTotals) {
node.isLeaf = true;
}

近期修复, 1.x 历史包袱比较重, 可能会在 2.x 版本中修复, 你可以暂时还是先用 CustomRowCell 重写一下 showTreeIcon, 通过 rowPivotMeta 来判断是否有子节点.

import { TOTAL_VALUE } from '@antv/s2'

  protected showTreeIcon() {
    if (!this.spreadsheet.isHierarchyTreeType() || this.meta.isLeaf) {
      return false;
    }

    const pivotMetaValue = (
      this.spreadsheet.dataSet as PivotDataSet
    ).rowPivotMeta.get(this.meta.value);
    const children = [...(pivotMetaValue?.children?.keys() || [])].filter(
      (child) => child !== TOTAL_VALUE,
    );
    return children.length > 0;
  }

image

@lijinke666 lijinke666 self-assigned this Jul 4, 2024
@lijinke666 lijinke666 reopened this Jul 4, 2024
@lijinke666 lijinke666 added the 🐛 bug 这个是一个 bug label Jul 4, 2024
Copy link
Contributor

github-actions bot commented Jul 4, 2024

你好 @ggcfcmd,很抱歉给你带来了不好的体验, 我们会尽快排查问题并修复, 请关注后续发布日志.

Hello, @ggcfcmd, We are so sorry for the bad experience. We will troubleshoot and fix the problem as soon as possible. Please pay attention to the follow-up change logs.

@ggcfcmd
Copy link
Author

ggcfcmd commented Jul 4, 2024

rowPivotMeta
我试下 感谢回复🙏

@lijinke666
Copy link
Member

🎉 This issue has been resolved in version @antv/s2-v1.55.7 🎉

The release is available on:

Your semantic-release bot 📦🚀

@lijinke666
Copy link
Member

🎉 This issue has been resolved in version @antv/s2-v2.0.0-next.25 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 bug 这个是一个 bug ❔question 疑问/使用问题 released on @next released
Projects
None yet
2 participants