UNPKG

@antv/s2

Version:

effective spreadsheet render core lib

147 lines (146 loc) 4.87 kB
import type { CellMeta, CustomHeaderField, ViewMeta } from '../common'; import type { Fields, FilterParam, Formatter, Meta, RawData, S2CellType, S2DataConfig, SimpleData, SortParams, ViewMetaData } from '../common/interface'; import type { ValueRange } from '../common/interface/condition'; import type { Node } from '../facet/layout/node'; import type { SpreadSheet } from '../sheet-type'; import type { Indexes } from '../utils/indexes'; import type { GetCellMultiDataParams } from './index'; import type { GetCellDataParams, Query } from './interface'; export declare abstract class BaseDataSet { /** * 字段信息 */ fields: Fields; /** * 字段元信息,包含有字段名、格式化、描述等 */ meta: Meta[]; /** * 原始数据 */ originData: RawData[]; /** * 索引数据 */ indexesData: Record<string, RawData[][] | RawData[]>; /** * 高级排序, 组内排序 */ sortParams: SortParams | undefined; /** * 筛选配置 */ filterParams: FilterParam[] | undefined; /** * 表格实例 */ spreadsheet: SpreadSheet; /** * 展示数据 */ protected displayData: RawData[]; /** * 单元格所对应格式化后的值(用于编辑表) */ displayFormattedValueMap: Map<string, string>; constructor(spreadsheet: SpreadSheet); /** * 获取字段 */ getField: (field: CustomHeaderField) => string; /** * 获取字段信息 */ getFieldMeta: ((field: CustomHeaderField, meta?: Meta[]) => Meta | undefined) & import("lodash").MemoizedFunction; /** * 获取字段名称 * @param field */ getFieldName(field: CustomHeaderField, defaultValue?: string): string; /** * 获取自定义单元格字段名称 * @param cell */ getCustomRowFieldName(cell: S2CellType<ViewMeta | Node>): string | undefined; /** * 获取自定义单元格字段描述 * @param cell */ getCustomFieldDescription: (cell: S2CellType<ViewMeta | Node>) => string | undefined; /** * 获得字段格式化方法 * @param field */ getFieldFormatter(field: CustomHeaderField): Formatter; /** * 获得字段描述 * @param field */ getFieldDescription(field: CustomHeaderField): string | undefined; /** * 设置数据配置 * @param dataCfg */ setDataCfg(dataCfg: S2DataConfig): void; /** * 添加 (角头/数值虚拟字段) 格式化信息 */ processMeta(meta: Meta[] | undefined, defaultExtraFieldText: string): Meta[]; getDisplayDataSet(): RawData[]; isEmpty(): boolean; getEmptyViewIndexes(): Indexes; /** * 获取 field 的取值范围 * ! 取值范围是以传入的 data 作为的值做计算 * ! 没有考虑总计、小计的情况,如果存在总计、小计,但是 data 里面并没有传,这里计算出来的范围就会不准确 * ! 表格会采用计算明细数据得出,而这些计算出来的总计、小计是和布局结构强相关 * ! 而要根据 totals 配置来覆盖所有情况,场景非常复杂 * @param field values 中的具体数值字段 * @returns 对应 field 的取值范围 */ getValueRangeByField(field: string): ValueRange; /** ******************NEED IMPLEMENT BY USER CASE************************ */ /** * Try to process dataConfig in different mode * @param dataCfg */ abstract processDataCfg(dataCfg: S2DataConfig): S2DataConfig; /** * 获取指定字段下的维值 * 1、query !== null * province city => field * 辽宁省 * 达州市 * 芜湖市 * field = province * query = {province: '辽宁省'} * => [达州市,芜湖市] * * 2、query = null * query param is not necessary, when just * get some field's all dimension values * * @param field * @param query */ abstract getDimensionValues(field: string, query?: Query): SimpleData[]; /** * 获取单个的单元格数据 */ abstract getCellData(params: GetCellDataParams): ViewMetaData | SimpleData | undefined; /** * 获取批量的单元格数据 * 如果 query 为空, 则返回全量数据 * @description 默认获取符合 query 的所有数据,包括小计总计等汇总数据; * 如果只希望获取明细数据,请使用 { queryType: QueryDataType.DetailOnly } */ abstract getCellMultiData(params: GetCellMultiDataParams): ViewMetaData[]; /** * 是否超过 1 个数值 */ moreThanOneValue(): boolean; /** * 查询当前整行数据 */ abstract getRowData(cellMeta: CellMeta | ViewMeta | Node): ViewMetaData[] | ViewMetaData; }