@visactor/vtable
Version:
canvas table width high performance
280 lines (279 loc) • 13.6 kB
TypeScript
import type { CellAddress, CellRange, IPivotTableCellHeaderPaths, LayoutObjectId, CellLocation, IHeaderTreeDefine, IDimension, IIndicator, ITitleDefine, ICornerDefine, IDimensionInfo, IExtensionRowDefine, IPagination, IColumnDimension, IRowDimension, IChartIndicator, IRowSeriesNumber } from '../ts-types';
import type { HeaderData, IndicatorData, LayoutMapAPI, SeriesNumberColumnData, WidthData } from '../ts-types/list-table/layout-map/api';
import type { PivotTable } from '../PivotTable';
import type { PivotChart } from '../PivotChart';
import type { ITreeLayoutHeadNode, LayouTreeNode } from './tree-helper';
import { DimensionTree } from './tree-helper';
import type { Dataset } from '../dataset/dataset';
export declare class PivotHeaderLayoutMap implements LayoutMapAPI {
sharedVar: {
seqId: number;
};
colIndex: number;
_showHeader: boolean;
rowDimensionTree: DimensionTree;
columnDimensionTree: DimensionTree;
rowTree: IHeaderTreeDefine[];
columnTree: IHeaderTreeDefine[];
cornerHeaderObjs: HeaderData[];
columnHeaderObjs: HeaderData[];
rowHeaderObjs: HeaderData[];
private _cornerHeaderCellFullPathIds;
private _columnHeaderCellFullPathIds;
private _rowHeaderCellFullPathIds;
private _rowHeaderCellFullPathIds_FULL;
_cornerHeaderCellIds: number[][];
private _columnHeaderCellIds;
private _rowHeaderCellIds;
private _rowHeaderCellIds_FULL;
private _columnWidths;
private _columnHeaderLevelCount;
private _rowHeaderLevelCount;
rowsDefine: (IRowDimension | string)[];
columnsDefine: (IColumnDimension | string)[];
indicatorsDefine: (IIndicator | IChartIndicator | string)[];
columnPaths: number[][];
_headerObjects: HeaderData[];
private _headerObjectMap;
_indicators: IndicatorData[];
indicatorTitle: string;
indicatorsAsCol: boolean;
hideIndicatorName: boolean;
_showRowHeader: boolean;
_showColumnHeader: boolean;
_rowHeaderTitle: ITitleDefine;
_columnHeaderTitle: ITitleDefine;
cornerSetting: ICornerDefine;
private _indicatorShowType;
rowHierarchyType?: 'grid' | 'tree' | 'grid-tree';
columnHierarchyType?: 'grid' | 'grid-tree';
rowExpandLevel?: number;
columnExpandLevel?: number;
rowHierarchyIndent?: number;
rowHierarchyTextStartAlignment?: boolean;
rowDimensionKeys: string[];
colDimensionKeys: string[];
indicatorKeys: string[];
indicatorDimensionKey: string;
private _largeCellRangeCache;
private _CellHeaderPathMap;
_table: PivotTable | PivotChart;
extensionRows: IExtensionRowDefine[];
_rowHeaderExtensionTree: any;
_extensionRowDimensionKeys: string[][];
fullRowDimensionKeys: string[];
dataset: Dataset;
pagination: IPagination;
currentPageStartIndex: number;
currentPageEndIndex: number;
hasTwoIndicatorAxes: boolean;
_chartItemSpanSize: number;
_chartPaddingInner: number;
_chartPaddingOuter: number;
_chartItemBandSize: number;
_chartPadding?: number | number[];
rowSeriesNumberColumn: SeriesNumberColumnData[];
leftRowSeriesNumberColumn: SeriesNumberColumnData[];
leftRowSeriesNumberColumnCount: number;
rightRowSeriesNumberColumn: SeriesNumberColumnData[];
rightRowSeriesNumberColumnCount: number;
_useGetBodyCache: boolean;
_getBodyCache: Map<number, IndicatorData | SeriesNumberColumnData>;
_useHeaderPathCache: boolean;
_colHeaderPathCache: Map<number, ITreeLayoutHeadNode[]>;
_rowHeaderPathCache: Map<number, ITreeLayoutHeadNode[]>;
constructor(table: PivotTable | PivotChart, dataset: Dataset, columnDimensionTree: DimensionTree, rowDimensionTree: DimensionTree);
handleRowSeriesNumber(rowSeriesNumber: IRowSeriesNumber): void;
_generateColHeaderIds(): void;
_generateRowHeaderIds(): void;
_getRowHeaderTreeExpandedMaxLevelCount(): number;
_getColumnHeaderTreeExpandedMaxLevelCount(): number;
_addHeaders(_headerCellIds: number[][], row: number, header: ITreeLayoutHeadNode[], roots: number[], results: HeaderData[]): void;
_addHeadersForTreeMode(_headerCellIds: number[][], row: number, header: ITreeLayoutHeadNode[], roots: number[], totalLevel: number, show: boolean, dimensions: (IDimension | string)[], results: HeaderData[]): void;
_addHeadersForGridTreeMode(_headerCellIds: number[][], row: number, header: ITreeLayoutHeadNode[], roots: number[], totalLevel: number, expandedMaxLevel: number, show: boolean, dimensions: (IDimension | string)[], results: HeaderData[], isRowTree: boolean): void;
private _addCornerHeaders;
private generateExtensionRowTree;
private setColumnWidths;
get columnWidths(): WidthData[];
getColumnWidthDefined(col: number): WidthData;
get showHeader(): boolean;
set showHeader(_showHeader: boolean);
get showColumnHeader(): boolean;
set showColumnHeader(_showColumnHeader: boolean);
get showRowHeader(): boolean;
set showRowHeader(_showRowHeader: boolean);
get columnHeaderTitle(): ITitleDefine;
set columnHeaderTitle(_columnHeaderTitle: ITitleDefine);
get rowHeaderTitle(): ITitleDefine;
set rowHeaderTitle(_rowHeaderTitle: ITitleDefine);
getHeaderFieldKey(col: number, row: number): undefined;
getCellLocation(col: number, row: number): CellLocation;
isHeader(col: number, row: number): boolean;
isCornerHeader(col: number, row: number): boolean;
isColumnHeader(col: number, row: number): boolean;
isRowHeader(col: number, row: number): boolean;
isFrozen(col: number, row: number): boolean;
isFrozenColumn(col: number, row?: number): boolean;
isRightFrozenColumn(col: number, row?: number): boolean;
isFrozenRow(col: number, row?: number): boolean;
isBottomFrozenRow(col: number, row?: number): boolean;
isLeftTopCorner(col: number, row: number): boolean;
isLeftBottomCorner(col: number, row: number): boolean;
isRightTopCorner(col: number, row: number): boolean;
isRightBottomCorner(col: number, row: number): boolean;
getColumnHeaderRange(): CellRange;
getRowHeaderRange(): CellRange;
getCornerHeaderRange(): CellRange;
getBodyRange(): CellRange;
resetCellIds(): void;
get frozenColCount(): number;
get frozenRowCount(): number;
get headerLevelCount(): number;
resetColumnHeaderLevelCount(): void;
resetRowHeaderLevelCount(): void;
get columnHeaderLevelCount(): number;
set columnHeaderLevelCount(count: number);
get rowHeaderLevelCount(): number;
set rowHeaderLevelCount(count: number);
get colCount(): number;
get rowCount(): number;
get bodyRowSpanCount(): number;
get bottomFrozenRowCount(): number;
get rightFrozenColCount(): number;
get bodyRowCount(): number | undefined;
get bodyColCount(): number | undefined;
get headerObjects(): HeaderData[];
get columnObjects(): IndicatorData[];
getCellId(col: number, row: number): LayoutObjectId;
getHeader(col: number, row: number): HeaderData | SeriesNumberColumnData;
getHeaderField(col: number, row: number): import("../ts-types").FieldDef;
getHeaderCellAdressById(id: number): CellAddress | undefined;
getHeaderCellAddressByField(field: string): CellAddress;
getBody(_col: number, _row: number): IndicatorData | SeriesNumberColumnData;
getCellRange(col: number, row: number): CellRange;
isCellRangeEqual(col: number, row: number, targetCol: number, targetRow: number): boolean;
getBodyIndexByRow(row: number): number;
get bottomHeaderRowCount(): number;
get rightHeaderColCount(): number;
getBodyIndexByCol(col: number): number;
getRecordStartRowByRecordIndex(index: number): number;
getRecordShowIndexByCell(col: number, row: number): number;
getCellHeaderPathsWithTreeNode(col: number, row: number): IPivotTableCellHeaderPaths;
getTreePathByCellIds(row_pathIds: LayoutObjectId[]): ITreeLayoutHeadNode[];
getCellHeaderPaths(col: number, row: number): IPivotTableCellHeaderPaths;
private getIndicatorInfoByIndicatorKey;
private findFullCellIds;
getHeaderDimension(col: number, row: number): IDimension | undefined;
isColumnIndicatorHeader(col: number, row: number): boolean;
isRowIndicatorHeader(col: number, row: number): boolean;
isIndicatorHeader(col: number, row: number): boolean;
toggleHierarchyState(col: number, row: number): {
addCellPositionsRowDirection?: CellAddress[];
removeCellPositionsRowDirection?: CellAddress[];
updateCellPositionsRowDirection?: CellAddress[];
addCellPositionsColumnDirection?: CellAddress[];
removeCellPositionsColumnDirection?: CellAddress[];
updateCellPositionsColumnDirection?: CellAddress[];
};
toggleHierarchyStateForColumnTree(col: number, row: number): {
addCellPositionsColumnDirection: {
col: number;
row: number;
}[];
removeCellPositionsColumnDirection: CellAddress[];
updateCellPositionsColumnDirection: {
col: never;
row: number;
}[];
addCellPositionsRowDirection: {
col: number;
row: number;
}[];
removeCellPositionsRowDirection: {
col: number;
row: number;
}[];
};
isHeaderForColWidth(col: number, row: number): boolean;
getHeaderForColWidth(col: number, row: number): HeaderData | SeriesNumberColumnData;
getPivotCellAdress(dimensions: IDimensionInfo[]): CellAddress | undefined;
getPivotDimensionInfo(col: number, row: number): IDimensionInfo[];
getIndicatorKey(col: number, row: number): string;
getParentCellId(col: number, row: number): LayoutObjectId;
getRowHeaderCellAddressByCellId(cellId: LayoutObjectId): {
col: never;
row: number;
};
canMoveHeaderPosition(source: CellAddress, target: CellAddress): boolean;
moveHeaderPosition(source: CellAddress, target: CellAddress): {
sourceIndex: number;
targetIndex: any;
sourceSize: any;
targetSize: any;
moveType: 'column' | 'row';
};
getCellAdressByHeaderPath(dimensionPaths: IPivotTableCellHeaderPaths | IDimensionInfo[]): CellAddress | undefined;
setChartInstance(_col: number, _row: number, chartInstance: any): void;
getChartInstance(_col: number, _row: number): any;
checkHasChart(): boolean;
getDimension(dimensionKey: string, type: 'column' | 'row'): any;
getAxisConfigInPivotChart(col: number, row: number): any;
isEmpty(col: number, row: number): boolean;
isAxisCell(col: number, row: number): boolean;
getChartAxes(col: number, row: number): any[];
getRawChartSpec(col: number, row: number): any;
getChartSpec(col: number, row: number): any;
isShareChartSpec(col: number, row: number): any;
getChartDataId(col: number, row: number): any;
isNoChartDataRenderNothing(col: number, row: number): boolean;
setPagination(pagination: IPagination): void;
release(): void;
getHeadNode(col: number, row: number): IHeaderTreeDefine;
getHeadNodeByRowOrColDimensions(dimensions: IDimensionInfo[], col?: number, row?: number): IHeaderTreeDefine;
clearCellRangeMap(): void;
getDimensionKeyInChartSpec(_col: number, _row: number): string;
_generateChartState(): {
vtable_selected: {
filter: (datum: any) => boolean;
};
vtable_selected_reverse: {
filter: (datum: any) => boolean;
};
};
updateDataStateToChartInstance(activeChartInstance?: any): void;
updateDataStateToActiveChartInstance(activeChartInstance?: any): void;
getIndicatorKeyInChartSpec(_col: number, _row: number): string[];
getOptimunHeightForChart(row: number): number;
getOptimunWidthForChart(col: number): number;
get leftAxesCount(): number;
get topAxesCount(): number;
get rightAxesCount(): number;
get bottomAxesCount(): number;
getColKeysPath(col: number, row: number): string;
getRowKeysPath(col: number, row: number): string;
getIndicatorInfo(indicatorKey: string, indicatorValue?: string): IIndicator;
getLayoutColumnTree(): LayouTreeNode[];
getLayoutRowTree(): LayouTreeNode[];
getLayoutColumnTreeCount(): number;
getLayoutRowTreeCount(): number;
resetHeaderTree(): void;
isSeriesNumberInHeader(col: number, row: number): boolean;
isSeriesNumberInBody(col: number, row: number): boolean;
isSeriesNumber(col: number, row: number): boolean;
getSeriesNumberHeader(col: number, row: number): SeriesNumberColumnData;
getSeriesNumberBody(col: number, row: number): SeriesNumberColumnData;
changeTreeNodeTitle(col: number, row: number, value: string): void;
changeCornerTitle(col: number, row: number, value: string): void;
generateCellIdsConsiderHideHeader(): void;
enableUseGetBodyCache(): void;
disableUseGetBodyCache(): void;
enableUseHeaderPathCache(): void;
disableUseHeaderPathCache(): void;
getBodyWidthCache(col: number, row: number): IndicatorData | SeriesNumberColumnData;
setBodyWidthCache(col: number, row: number, cache: IndicatorData | SeriesNumberColumnData): void;
getColHeaderPathCache(col: number, row: number): ITreeLayoutHeadNode[];
setColHeaderPathCache(col: number, row: number, cache: ITreeLayoutHeadNode[]): void;
getRowHeaderPathCache(col: number, row: number): ITreeLayoutHeadNode[];
setRowHeaderPathCache(col: number, row: number, cache: ITreeLayoutHeadNode[]): void;
clearHeaderPathCache(): void;
}