-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
feat: add default format to tooltip title #5684 #5748
Conversation
这里的测试快照可以先不更新,现在的环境在不同机器上有差异,等我们解决了更新即可。这个 PR 只需要包含代码更新就行。 |
OK, 已更新 |
在 PR 描述里面更新一些 API 的使用方式(通过一些案例体现),同时解释一下实现思路?参考这个 PR 的描述:#5751 |
已更新~ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- format 函数挺好!
- 这里不建议在 tooltip 交互里面做 format,这个在提取 title 数据的过程中比较好,相关的代码在这里 https://github.com/antvis/G2/blob/v5/src/runtime/transform.ts#L187 ,这里可能需要根据数据类型 value1 去设置默认的 formatter
- 参考
__tests__/plots/tooltip/aapl-line.ts
添加一个测试,CI 报错可以不管
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
有两个地方需要改一下:
- 不需要去处理时间字符串,如果是一个字符串就返回字符串,只有当值是 Date 对象的时候再处理。这里的部分原因是
Date.parse
在不同浏览器的兼容性不同。 - 不应该根据 title 的类型(数组?回调?对象)去判断是否格式化时间,而是当 value 是 Date 的时候统一处理,相当于替换默认的
Date.toString
函数,因为 Date 最后展示出来都是字符串。
类似所有情况,作如下的处理:
if (typeof item === 'function') {
const values = [];
for (const i of I) {
const v = item(data[i], i, data, encode);
const v1 = v instanceOf Date ? dynamicFormatDateTime(v) : v ; // 👈
if (isStrictObject(v)) values[i] = v1;
else values[i] = { value: v1 };
}
return values;
}
有几个小问题:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这样更简洁!
Co-authored-by: ben.wen <[email protected]>
Checklist
npm test
passesDescription of change
解决问题
#5684 当图表中 encode 的 x 为日期字段的时候,tooltip title 会默认显示 x 轴的数据,对于日期的默认格式化效果不是很友好。
解决办法
DEMO