VChart
VChart copied to clipboard
[Feature] common formatter of tooltip
What problem does this feature solve?
在 ITooltipPattern 层级添加 tooltip formatter,在用户想要沿用默认 tooltip title 和 content、又想改 tooltip 内容时可以不用手动重写 ITooltipLinePattern
What does the proposed API look like?
export interface ITooltipPattern {
title: ...;
content: ...;
keyFormatMethod: datum => string;
valueFormatMethod: datum => string;
titleFormatMethod: datum => string;
keyFormater: string;
valueFormater: string;
titleFormater: string;
}
还有一个尴尬的点在于,用户在轴上设置了格式化、series上设置了格式化,tooltip上还要设置一遍格式化,大概有两种方案解决?
- 把 formatter 配在外面(比如series上),让轴、tooltip、label 分别支持
- tooltip 默认读取其他组件的 formatter,比如 label 的 formatter
tooltip 需要 3 个 field 才能显示,如果都在系列上读,系列上的配置感觉可以设计成 xFormatter、yFormatter、seriesFormatter?
- 从使用的角度上来说,至少希望
yFormatter或者valueFormatter能够设置一次,在 label 和 tooltip 上; xFormatter在时间轴上的格式化、seriesFormatter在图例上的格式化也都能发挥作用,同时 tooltip 也可以复用。
或许可以配置在 data.fields 里
export interface IFieldsMeta {
/** TODO: 字段通用format, 暂时先不支持 */
// format?: (datum: Datum, index: number) => unknown;
/** 字段别名 */
alias?: string;
/** 字段取值范围 */
domain?: StringOrNumber[];
/** 是否使用 domain 锁定统计信息。默认为 false */
lockStatisticsByDomain?: boolean;
/** 连续型 还是 离散型 */
type?: 'ordinal' | 'linear';
/** 排序顺序 不设置的话当前维度不进行排序 */
sortIndex?: number;
/** 排序时是否反转 默认为 false */
sortReverse?: boolean;
}