G2
G2 copied to clipboard
[Bug]: 弹性条形图 tooltip 拾取错误
Describe the bug / 问题描述
官网弹性条形图
当鼠标放到 德国 英国 法国的右半边 rect 时,tootip 拾取错误。
Reproduction link / 复现链接
https://g2.antv.antgroup.com/zh/examples/general/interval/#bar-flex
Steps to Reproduce the Bug or Issue / 重现步骤
当鼠标放到 德国 英国 法国的右半边 rect 时,tootip 拾取错误。
Version / 版本
🆕 5.x
OS / 操作系统
- [x] macOS
- [ ] Windows
- [ ] Linux
- [ ] Others / 其他
Browser / 浏览器
- [x] Chrome
- [ ] Edge
- [ ] Firefox
- [ ] Safari (Limited support / 有限支持)
- [ ] IE (Nonsupport / 不支持)
- [ ] Others / 其他
感觉可能和之前的 tooltip 修改有关系,这个图的 tooltip 拾取需要走图形拾取,而不是数据的拾取。
related: #6516 对于flex转换后的tooltip拾取的时候要做特殊处理,不能按等步长处理。
这个 tooltip 怎么不是使用图形去拾取?数学计算去拾取只在一些场景开启,比如:在柱形图空白地方也能触发 tooltip。
这个 tooltip 怎么不是使用图形去拾取?数学计算去拾取只在一些场景开启,比如:在柱形图空白地方也能触发 tooltip。
是指将 tooltip 监听事件从整个 canvas 身上移动到 rect 和 line 这些 shape 身上吗?可能有一个问题,就是无效数据像 null 和未定义这样的根本不存在 element ,可能这种需要做一些特殊监听处理,就是默认打开空白地方也能触发 tooltip,我觉得这个方法可以试试,确实每个图形单独拾取可以解决数学计算很多边缘情况无法考虑到的问题。🤔
是指将 tooltip 监听事件从整个 canvas 身上移动到 rect 和 line 这些 shape 身上吗?可能有一个问题,就是无效数据像 null 和未定义这样的根本不存在 element ,可能这种需要做一些特殊监听处理,就是默认打开空白地方也能触发 tooltip,我觉得这个方法可以试试,确实每个图形单独拾取可以解决数学计算很多边缘情况无法考虑到的问题。🤔
是的,我记得之前是有不同模式,大部分图形,其实监听元素事件,比如散点图,基本只有柱形图才有数学拾取的情况。是之前某个 pr 修改了逻辑吗?
有的,有个 isBar 的判断
所以该怎么修呢?🤔 感觉在柱状图的情况下数学计算是不可避免的,现在需要找到一个最准确的方法来进行数学计算捕获 element,或者能不能添加一些 props 来规避这些问题,所有的 tooltip 问题总结如下
- [ ] 不等的 xDomain 会导致数学计算捕获错误。相关 issue:https://github.com/antvis/G2/issues/6720
- [ ] 数值为 null 时,因不存在 element 导致数值捕获错误,无法展示 null 这个值在 tooltip 上。相关 issue:https://github.com/antvis/G2/issues/6753, https://github.com/antvis/G2/issues/6699, https://github.com/antvis/G2/issues/6754, https://github.com/antvis/G2/issues/6773, https://github.com/antvis/G2/issues/6774
- [ ] groupItem 捕获错误。相关 issue:https://github.com/antvis/G2/issues/6710
- [ ] 图表 resize重新渲染,最后几列的tooltip渲染不出。相关 issue:https://github.com/antvis/G2/issues/6756
第一个问题和第二个问题耦合性较强,第三个和第四个问题不是 tooltip findElement 函数的问题,可以单独修复。