@antv/s2
Version:
effective spreadsheet render core lib
147 lines (146 loc) • 4.87 kB
TypeScript
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;
}