VChart icon indicating copy to clipboard operation
VChart copied to clipboard

[Feature] common formatter of tooltip

Open zamhown opened this issue 1 year ago • 3 comments

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;
}

zamhown avatar Feb 28 '24 08:02 zamhown

还有一个尴尬的点在于,用户在轴上设置了格式化、series上设置了格式化,tooltip上还要设置一遍格式化,大概有两种方案解决?

  • 把 formatter 配在外面(比如series上),让轴、tooltip、label 分别支持
  • tooltip 默认读取其他组件的 formatter,比如 label 的 formatter

zamhown avatar Feb 28 '24 09:02 zamhown

tooltip 需要 3 个 field 才能显示,如果都在系列上读,系列上的配置感觉可以设计成 xFormatteryFormatterseriesFormatter

  • 从使用的角度上来说,至少希望 yFormatter 或者 valueFormatter 能够设置一次,在 label 和 tooltip 上;
  • xFormatter 在时间轴上的格式化、seriesFormatter 在图例上的格式化也都能发挥作用,同时 tooltip 也可以复用。

zamhown avatar Feb 28 '24 09:02 zamhown

或许可以配置在 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;
}

xiaoluoHe avatar Feb 28 '24 09:02 xiaoluoHe