PivotTable.container
容器 DOM,需要具有宽。
可放到初始化参数中。
PivotTable.records
表格数据。 目前支持传入平坦化的数据格式,以北美大型超市销售情况为例:
[
{
"Category": "Technology",
"Sales": "650.5600051879883",
"City": "Amarillo"
},
{
"Category": "Technology",
"Profit": "94.46999931335449",
"City": "Amarillo"
},
{
"Category": "Furniture",
"Quantity": "14",
"City": "Amarillo"
},
{
"Category": "Furniture",
"Sales": "3048.5829124450684",
"City": "Amarillo"
},
{
"Category": "Furniture",
"Profit": "-507.70899391174316",
"City": "Amarillo"
},
{
"Category": "Office Supplies",
"Quantity": "60",
"City": "Anaheim"
}
]
PivotTable.enableDataAnalysis
透视表是否开启数据分析。 默认 false
如果传入的数据 records 是明细数据,需要 VTable 做聚合分析则开启该配置将其设置为 true。
如传入数据是经过聚合好的,为了提升性能这里设置为 false,同时呢要求传入自己组织好的行头树结构 columnTree 和 rowTree。
PivotTable.dataConfig
数据分析相关配置 enableDataAnalysis 开启后该配置才会有效。
/**
* 数据处理配置
*/
export interface IDataConfig {
aggregationRules?: AggregationRules; //按照行列维度聚合值计算规则;
sortRules?: SortRules; //排序规则;
filterRules?: FilterRules; //过滤规则;
totals?: Totals; //小计或总计;
/**
* 目前mappding还不太好用 不建议使用 建议先用style
*/
mappingRules?: MappingRules;
derivedFieldRules?: DerivedFieldRules;
}
PivotTable.columnTree
列表头树,类型为:IDimensionHeaderNode|IIndicatorHeaderNode[]
。其中 IDimensionHeaderNode 指的是维度非指标的维度值节点,IIndicatorHeaderNode 指的是指标名称节点。
IDimensionHeaderNode 具体配置项如下:
export interface IDimensionHeaderNode {
/**
* 维度的唯一标识,对应数据集的字段名称
*/
dimensionKey: string | number;
/** 维度成员值 */
value: string;
/** 维度成员下的子维度树结构 */
children?: IDimensionHeaderNode|IIndicatorHeaderNode[];
/** 折叠状态 配合树形结构展示使用。注意:仅在rowTree中有效 */
hierarchyState?: HierarchyState;
}
IIndicatorHeaderNode 具体配置项如下:
export interface IIndicatorHeaderNode {
/**
* 指标的key值 对应数据集的字段名
*/
indicatorKey: string | number;
/**
* 指标名称 如:“销售额”,“例如”, 对应到单元格显示的值。可不填,不填的话 从indicators的对应配置中取值显示
*/
value?: string;
}
PivotTable.rowTree
行表头树,结构同 columnTree。
PivotTable.columns
列表头对应各级维度的样式及format配置,每中维度需要分别设置配置项,配置项根据headerType不同有略微差别,headerType可支持:'text' | 'link' | 'image' | 'video'
, 每种headerType的配置项具体如下:
PivotTable.columns-text
指定列类型为'text', headerType可缺省默认为'text'
PivotTable.columns-link
指定列类型为'link', headerType可缺省默认为'text'
PivotTable.columns-image
指定列类型为'image'
, headerType可缺省默认为'text
PivotTable.columns-video
指定列类型为'video'
, headerType可缺省默认为'text'
PivotTable.rows
结构同列表头树形结构columns配置
行表头对应各级维度的样式及format配置,每中维度需要分别设置配置项,配置项根据headerType不同有略微差别,headerType可支持:'text' | 'link' | 'image' | 'video'
, 每种headerType的配置项具体如下:
PivotTable.rows-text
指定列类型为'text', headerType可缺省默认为'text'
PivotTable.rows-link
指定列类型为'link', headerType可缺省默认为'text'
PivotTable.rows-image
指定列类型为'image'
, headerType可缺省默认为'text
PivotTable.rows-video
指定列类型为'video'
, headerType可缺省默认为'text'
PivotTable.indicators
透视表中各个指 标的具体配置,如样式,format,title 等,每种指标需要分别设置配置项,配置项根据 cellType 不同有略微差别,cellType 可支持:'text' | 'link' | 'image' | 'video' | 'progressbar' | 'sparkline'
, 每种 cellType 的配置项具体如下:
PivotTable.indicators-text
指定列类型为'text',cellType 缺省的话会被默认为'text'
PivotTable.indicators-link
指定列类型为'link',cellType 缺省的话会被默认为'text'
PivotTable.indicators-image
指定列类型为'image'
,cellType可缺省默认为'text
PivotTable.indicators-video
指定列类型为'video'
,cellType 缺省的话会被默认为'text'
PivotTable.indicators-progressbar
指定列类型为'progressbar',cellType 缺省的话会被默认为'text'
PivotTable.indicators-sparkline
指定列类型为'sparkline',cellType 缺省的话会被默认为'text'
PivotTable.indicators-chart
指定列类型为'chart',cellType 缺省的话会被默认为'text'
PivotTable.indicatorsAsCol = true
指标显示在列上,默认是 true。如果配置为 false,则显示在行,指标以行展示
PivotTable.extensionRows(IExtensionRowDefine[])
IExtensionRowDefine定义如下:
export interface IExtensionRowDefine {
rows: (IDimension | string)[];
rowTree: IHeaderTreeDefine[] | ((args: { dimensionKey: string | number; value: string }[]) => IHeaderTreeDefine[]);
}
其中rows结构同外层的配置项rows定义相同,注意这里的rows不能省略 必须要填写正确
其中rowTree结构同外层的配置项rowTree定义相同,但这里同时支持配置函数形式
PivotTable.rowExpandLevel
初始化展开层数。除了这里可以配置统一节点的展开层数,还可以结合配置项hierarchyState
设置每个结点的展开状态。
PivotTable.rowHierarchyIndent
如果设置了树形展示,子节点单元格中显示内容相比其父节点内容的缩进距离。
PivotTable.rowHierarchyTextStartAlignment
同层级的结点是否按文字对齐 如没有收起展开图标的节点和有图标的节点文字对齐 默认 false
PivotTable.indicatorTitle
指标标题 用于显示到角头的值
PivotTable.corner
角表头各项配置及样式自定义。
PivotTable.hideIndicatorName
是否隐藏指标名称
PivotTable.showRowHeader = true
是否显示行表 头。
PivotTable.showColumnHeader = true
是否显示列表头。
PivotTable.rowHeaderTitle
行表头最上层增加一行来显示维度名称 可以自定义或者显示 title 组合名
PivotTable.columnHeaderTitle
列表头最上层增加一行来显示维度名称 可以自定义或者显示 title 组合名
PivotTable.columnResizeType
调整列宽的生效范围,可配置项:
column
: 调整列宽 只调整当前列indicator
: 调整列宽时对应相同指标的列都会被调整indicatorGroup
: 调整同父级维度下所有指标列的宽度all
: 所有列宽都被调整
PivotTable.rowResizeType
调整行高的生效范围,可配置项:
row
: 调整行高只调整当前行indicator
: 调整行高时对应相同指标的行都会被调整indicatorGroup
: 调整同父级维度下所有指标行的宽度all
: 所有行高都被调整
PivotTable.pivotSortState
设置排序状态,只对应按钮展示效果 无数据排序逻辑
{
dimensions: IDimensionInfo[];
order: 'desc' | 'asc' | 'normal';
}[];
- dimensions 设置要排序的维度信息,是一个 IDimensionInfo 类型的数组。
IDimensionInfo的定义为:
interface IDimensionInfo {
dimensionKey?: string;
value?: string;
indicatorKey?: string;
isPivotCorner?: boolean;
}
- order 指定排序方式,可以是 'desc'(降序)、'asc'(升序)或 'normal'(不排序)。
PivotTable.widthMode('standard' | 'adaptive' | 'autoWidth') = 'standard'
表格列宽度的计算模式,可以是 'standard'(标准模式)、'adaptive'(自适应容器宽度模式)或 'autoWidth'(自动宽度模式),默认为 'standard'。
- 'standard':使用 width 属性指定的宽度作为列宽度。
- 'adaptive':使用表格容器的宽度分配列宽度。
- 'autoWidth':根据列头和 body 单元格中内容的宽度自动计算列宽度,忽略 width 属性的设置。
PivotTable.heightMode('standard' | 'adaptive' | 'autoHeight') = 'standard'
表格行高的计算模式,可以是 'standard'(标准模式)、'adaptive'(自适应容器高度模式)或 'autoHeight'(自动行高模式),默认为 'standard'。
- 'standard':采用
defaultRowHeight
及defaultHeaderRowHeight
作为行高。 - 'adaptive':使用容器的高度分配每行高度,基于每行内容计算后的高度比例来分配。
- 'autoHeight':根据内容自动计算行高,计算依据 fontSize 和 lineHeight(文字行高),以及 padding。相关搭配设置项
autoWrapText
自动换行,可以根据换行后的多行文本内容来计算行高。
PivotTable.widthAdaptiveMode('only-body' | 'all') = 'only-body'
adaptive 模式下宽度的适应策略,默认为 'only-body'。
- 'only-body':只有 body 部分的列参与宽度适应计算,表 头部分宽度不变。
- 'all':所有列参与宽度适应计算。
PivotTable.heightAdaptiveMode('only-body' | 'all') = 'only-body'
adaptive 模式下高度的适应策略,默认为 'only-body'。
- 'only-body':只有 body 部分的行参与高度适应计算,表头部分高度不变。
- 'all':所有列参与高度适应计算。
PivotTable.autoWrapText
是否自动换行
PivotTable.autoFillWidth
配置项 autoFillWidth,用于控制是否自动撑满容器宽度。区别于宽度模式widthMode
的adaptive
的自适应容器的效果,autoFillWidth 控制的是只有当列数较少 的时候,表格可以自动撑满容器宽度,但是当列数超过容器的时候根据真实情况来定列宽可出现滚动条。
PivotTable.autoFillHeight
配置项 autoFillHeight,用于控制是否自动撑满容器高度。区别于高度模式heightMode
的adaptive
的自适应容器的效果,autoFillHeight 控制的是只有当行数较少的时候,表格可以自动撑满容器高度,但是当行数超过容器的时候根据真实情况来定行高可出现滚动条。
PivotTable.maxCharactersNumber = 200
单元格中可显示最大字符数 默认 200
PivotTable.maxOperatableRecordCount
最大可操作的记录数 如 copy 操作可复制出最大数据条目数
PivotTable.limitMaxAutoWidth = 450
计算列宽时 指定最大列宽 可设置 boolean 或者具体的值 默认为 450
PivotTable.limitMinWidth = 10
最小列宽限制。如设置为 true 则拖拽改变列宽时限制列宽最小为 10px,设置为 false 则不进行限制。或者直接将其设置为某个数字值。默认为 10px。
PivotTable.frozenColCount
冻结列数
PivotTable.rightFrozenColCount
右侧冻结列数
PivotTable.bottomFrozenRowCount
底部冻结行数
PivotTable.allowFrozenColCount
允许冻结列数,表示前多少列会出现冻结操作按钮(基本表格生效)
PivotTable.showFrozenIcon = true
是否显示固定列图钉(基本表格生效)
PivotTable.defaultRowHeight = 40
默认行高
PivotTable.defaultHeaderRowHeight
列表头默认行高 可以按逐行设置 如果没有就取 defaultRowHeight
PivotTable.defaultColWidth = 80
列宽默认值
PivotTable.defaultHeaderColWidth
行表头默认列宽 可以按逐列设置 如果没有就取 defaultColWidth
PivotTable.keyboardOptions
快捷键功能设置,具体配置项:
PivotTable.eventOptions
事件触发相关问题设置,具体配置项:
PivotTable.excelOptions
对齐 excel 高级能力
PivotTable.columnResizeMode = 'all'
鼠标 hover 到单元格右边界可拖拽调整列宽。该操作可触发的范围:
- 'all' 整列包括表头和 body 处的单元格均可调整列宽
- 'none' 禁止调整
- 'header' 只能在表头处单元格调整
- 'body' 只能在 body 单元格调整
PivotTable.rowResizeMode = 'none'
鼠标 hover 到单元格下边界可拖拽调整行高。该操作可触发的范围:
- 'all' 整列包括表头和 body 处的单元格均可调整列宽
- 'none' 禁止调整
- 'header' 只能在表头处单元格调整
- 'body' 只能在 body 单元格调整
PivotTable.dragHeaderMode = 'all'
控制拖拽表头移动位置的开关。选中某个单元格后,鼠标拖拽该单元格可触发移动。 可换位单元格范围限定:
- 'all' 所有表头均可换位
- 'none' 不可换位
- 'column' 只有换列表头可换位
- 'row' 只有换行表头可换位
PivotTable.hover
hover 交互配置,具体配置项如下:
PivotTable.select
选择单元格交互配置,具体配置项如下:
PivotTable.theme
表格主题,其中内置主题名称有DEFAULT, ARCO, BRIGHT, DARK, SIMPLIFY,具体配置方式可用内置类型或者直接使用字符串名称配置:
VTable.themes.DEFAULT
VTable.themes.ARCO;
VTable.themes.BRIGHT
VTable.themes.DARK
VTable.themes.SIMPLIFY
or
'default'
'arco'
'bright'
'dark'
'simplify'
同时可以基于内置主题进行扩展,例如想基于ARCO主题改变字体:
VTable.themes.ARCO.extend({
fontSize: '14px',
fontFamily: 'PingFangSC'
})
或者直接自定义一套专属主题:
{
defaultStyle:{
borderLineWidth:0,
},
headerStyle:{
frameStyle:{
borderColor:'blue',
borderLineWidth:[0,0,1,0]
}
},
rowHeaderStyle:{
frameStyle:{
borderColor:'blue',
borderLineWidth:[0,1,0,0]
}
},
cornerHeaderStyle:{
frameStyle:{
borderColor:'blue',
borderLineWidth:[0,1,1,0]
}
}
}
PivotTable.menu
下拉菜单的相关配置。消失时机:显示后点击菜单区域外自动消失。具体配置项如下:
PivotTable.title
表格标题配置。
PivotTable.tooltip
tooltip 相关配置。具体配置如下:
PivotTable.legends
图例配置,目前提供了三种图例类型,分别是离散图例('discrete'
),连续型颜色图例('color'
),连续型尺寸图例('size'
)。
PivotTable.legends-color
连续型颜色图例配置。
TODO: 补充离散图例图示
PivotTable.legends-size
连续型尺寸图例配置。
TODO: 补充离散图例图示
PivotTable.axes
PivotTable.customRender
自定义渲染 函数形式或者对象形式。类型为:ICustomRenderFuc | ICustomRenderObj
。
其中 ICustomRenderFuc 定义为:
type ICustomRenderFuc = (args: CustomRenderFunctionArg) => ICustomRenderObj;
回调函数参数CustomRenderFunctionArg的类型声明为:
interface CustomRenderFunctionArg {
row: number;
col: number;
table: TableAPI;
/**format之后的值 */
value: string|number;
/**原始值 */
dataValue: string|number;
rect?: RectProps;
}
ICustomRenderObj 的定义如下:
export type ICustomRenderObj = {
/** 配置出来的类型集合 */
elements: ICustomRenderElements;
/** 期望单元格的高度 */
expectedHeight: number;
/** 期望单元格的宽度 */
expectedWidth: number;
/**
* 是否还需要默认渲染内容 只有配置true才绘制 默认 不绘制
*/
renderDefault?: boolean;
};
详细配置说明如下:
PivotTable.overscrollBehavior = 'auto'
表格滚动行为,可设置:'auto'|'none',默认值为'auto'。
'auto': 表格滚动到顶部或者底部时,触发浏览器默认行为;
'none': 表格滚动到顶部或者底部时, 触发浏览器默认行为;
PivotTable.customMergeCell
自定义单元格合并规则,传入的行列号在目标区域内时,返回合并规则:
- text: 合并单元格内的文字
- range: 合并的范围
- style: 合并单元格的样式 示例:
customMergeCell: (col, row, table) => {
if (col > 0 && col < 8 && row > 7 && row < 11) {
return {
text: 'merge text',
range: {
start: {
col: 1,
row: 8
},
end: {
col: 7,
row: 10
}
},
style: {
bgColor: '#ccc'
}
};
}
}
PivotTable.customCellStyle
{
customCellStyle: {id: string;style: ColumnStyleOption}[]
}
自定义单元格样式
- id: 自定义样式的唯一 id
- style: 自定义单元格样式,与
column
中的style
配置相同,最终呈现效果是单元格原有样式与自定义样式融合
PivotTable.customCellStyleArrangement
{
customCellStyleArrangement: {cellPosition: {row?: number; col?: number; range?: {start: {row: number; col: number}; end: {row: number; col: number}}}; customStyleId: string}[]
}
自定义单元格样式分配
- cellPosition: 单元格位置信息,支持配置单个单元格与单元格区域
- 单个单元格:
{ row: number, column: number }
- 单元格区域:
{ range: { start: { row: number, column: number }, end: { row: number, column: number} } }
- 单个单元格:
- customStyleId: 自定义样式 id,与注册自定义样式时定义的 id 相同
PivotTable.editor
全局配置单元格编辑器
editor?: string | IEditor | ((args: BaseCellInfo & { table: BaseTableAPI }) => string | IEditor);
其中 IEditor 是@visactor/vtable-editors 中定义的编辑器接口,具体可以参看源码:https://github.com/VisActor/VTable/blob/main/packages/vtable-editors/src/types.ts。
PivotTable.editCellTrigger('doubleclick' | 'click' | 'api') = 'doubleclick'
进入编辑状态的触发时机。
/** 编辑触发时机:双击事件 | 单击事件 | api手动开启编辑。默认为双击'doubleclick' */
editCellTrigger?: 'doubleclick' | 'click' | 'api';
PivotTable.rowSeriesNumber
配置行序号。