跳至主要内容

add-field

描述

当新字段添加到行、列或值区域时触发

用法

"add-field": ({
id?: string | number,
area: string,
field: string | number,
method?: string
}) => boolean;

参数

该操作的回调函数接收一个包含以下参数的对象:

  • id - (可选)新字段的指定 id;如果未设置,则使用自动生成的 id
  • area - (必填)添加新字段的区域名称,可以是 "rows"、"columns" 或 "values" 区域
  • field - (必填)字段名称
  • method - (可选)定义数据聚合的方法(如果未指定,则使用适合该数据类型的第一个方法);方法可以是以下之一:
    • 对于 values 区域为必填项,是一个包含数据操作类型的字符串:默认方法
    • 对于 rowscolumns 区域为可选项,如果设置了值则为谓词;可以是自定义谓词,也可以是默认值之一:"year"、"quarter"、"month"、"week"、"day"、"hour"、"minute"。默认情况下使用原始值。 如果设置了自定义谓词或方法,应为 predicatesmethods 属性指定 id。
信息

如需处理内部事件,可以使用 Event Bus 方法

示例

以下示例中,我们使用 api.intercept() 方法为 number 数据类型的值字段添加新方法:

const table = new pivot.Pivot("#root", {
fields,
data: dataset,
config: {
rows: ["studio", "genre"],
columns: [],
values: [
{
field: "title",
method: "count"
},
{
field: "score",
method: "max"
}
]
}
});
//使用预定义方法添加值
table.api.intercept("add-field", (ev) => {
const { fields } = table.api.getState();
const type = fields.find((f) => f.id == ev.field).type;

if (ev.area == "values" && type == "number") {
ev.method = "min";
}
});

相关文章api.intercept()