@visactor/vtable 0.15.2 → 0.15.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/cjs/ListTable.d.ts +3 -2
  2. package/cjs/ListTable.js +21 -14
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.d.ts +4 -3
  5. package/cjs/PivotChart.js +19 -20
  6. package/cjs/PivotChart.js.map +1 -1
  7. package/cjs/PivotTable.d.ts +9 -3
  8. package/cjs/PivotTable.js +117 -17
  9. package/cjs/PivotTable.js.map +1 -1
  10. package/cjs/body-helper/body-helper.js.map +1 -1
  11. package/cjs/core/BaseTable.d.ts +4 -3
  12. package/cjs/core/BaseTable.js +1 -1
  13. package/cjs/core/BaseTable.js.map +1 -1
  14. package/cjs/core/tableHelper.js +1 -1
  15. package/cjs/core/tableHelper.js.map +1 -1
  16. package/cjs/data/DataSource.d.ts +1 -1
  17. package/cjs/data/DataSource.js +8 -12
  18. package/cjs/data/DataSource.js.map +1 -1
  19. package/cjs/dataset/dataset-pivot-table.js +2 -1
  20. package/cjs/dataset/dataset-pivot-table.js.map +1 -1
  21. package/cjs/dataset/dataset.d.ts +3 -1
  22. package/cjs/dataset/dataset.js +35 -11
  23. package/cjs/dataset/dataset.js.map +1 -1
  24. package/cjs/dataset/flatDataToObject.d.ts +3 -1
  25. package/cjs/dataset/flatDataToObject.js +27 -5
  26. package/cjs/dataset/flatDataToObject.js.map +1 -1
  27. package/cjs/dataset/statistics-helper.d.ts +1 -0
  28. package/cjs/dataset/statistics-helper.js +3 -0
  29. package/cjs/dataset/statistics-helper.js.map +1 -1
  30. package/cjs/index.d.ts +1 -1
  31. package/cjs/index.js +1 -1
  32. package/cjs/index.js.map +1 -1
  33. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +9 -7
  34. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  35. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  36. package/cjs/scenegraph/group-creater/init-scenegraph.js +1 -4
  37. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  38. package/cjs/scenegraph/layout/frozen.js +2 -2
  39. package/cjs/scenegraph/layout/frozen.js.map +1 -1
  40. package/cjs/scenegraph/scenegraph.d.ts +0 -1
  41. package/cjs/scenegraph/scenegraph.js +4 -8
  42. package/cjs/scenegraph/scenegraph.js.map +1 -1
  43. package/cjs/tools/util.d.ts +1 -1
  44. package/cjs/tools/util.js +12 -11
  45. package/cjs/tools/util.js.map +1 -1
  46. package/cjs/ts-types/base-table.d.ts +4 -3
  47. package/cjs/ts-types/base-table.js.map +1 -1
  48. package/cjs/ts-types/pivot-table/indicator/basic-indicator.d.ts +6 -1
  49. package/cjs/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  50. package/cjs/ts-types/table-engine.d.ts +4 -1
  51. package/cjs/ts-types/table-engine.js.map +1 -1
  52. package/dist/vtable.js +477 -283
  53. package/dist/vtable.min.js +2 -2
  54. package/es/ListTable.d.ts +3 -2
  55. package/es/ListTable.js +21 -14
  56. package/es/ListTable.js.map +1 -1
  57. package/es/PivotChart.d.ts +4 -3
  58. package/es/PivotChart.js +19 -22
  59. package/es/PivotChart.js.map +1 -1
  60. package/es/PivotTable.d.ts +9 -3
  61. package/es/PivotTable.js +103 -20
  62. package/es/PivotTable.js.map +1 -1
  63. package/es/body-helper/body-helper.js.map +1 -1
  64. package/es/core/BaseTable.d.ts +4 -3
  65. package/es/core/BaseTable.js +1 -1
  66. package/es/core/BaseTable.js.map +1 -1
  67. package/es/core/tableHelper.js +1 -1
  68. package/es/core/tableHelper.js.map +1 -1
  69. package/es/data/DataSource.d.ts +1 -1
  70. package/es/data/DataSource.js +8 -12
  71. package/es/data/DataSource.js.map +1 -1
  72. package/es/dataset/dataset-pivot-table.js +2 -1
  73. package/es/dataset/dataset-pivot-table.js.map +1 -1
  74. package/es/dataset/dataset.d.ts +3 -1
  75. package/es/dataset/dataset.js +36 -10
  76. package/es/dataset/dataset.js.map +1 -1
  77. package/es/dataset/flatDataToObject.d.ts +3 -1
  78. package/es/dataset/flatDataToObject.js +27 -5
  79. package/es/dataset/flatDataToObject.js.map +1 -1
  80. package/es/dataset/statistics-helper.d.ts +1 -0
  81. package/es/dataset/statistics-helper.js +3 -0
  82. package/es/dataset/statistics-helper.js.map +1 -1
  83. package/es/index.d.ts +1 -1
  84. package/es/index.js +1 -1
  85. package/es/index.js.map +1 -1
  86. package/es/scenegraph/graphic/contributions/chart-render-helper.js +9 -7
  87. package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  88. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  89. package/es/scenegraph/group-creater/init-scenegraph.js +0 -5
  90. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  91. package/es/scenegraph/layout/frozen.js +2 -2
  92. package/es/scenegraph/layout/frozen.js.map +1 -1
  93. package/es/scenegraph/scenegraph.d.ts +0 -1
  94. package/es/scenegraph/scenegraph.js +5 -7
  95. package/es/scenegraph/scenegraph.js.map +1 -1
  96. package/es/tools/util.d.ts +1 -1
  97. package/es/tools/util.js +6 -4
  98. package/es/tools/util.js.map +1 -1
  99. package/es/ts-types/base-table.d.ts +4 -3
  100. package/es/ts-types/base-table.js.map +1 -1
  101. package/es/ts-types/pivot-table/indicator/basic-indicator.d.ts +6 -1
  102. package/es/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  103. package/es/ts-types/table-engine.d.ts +4 -1
  104. package/es/ts-types/table-engine.js.map +1 -1
  105. package/package.json +2 -2
@@ -41,14 +41,15 @@ export declare class ListTable extends BaseTable implements ListTableAPI {
41
41
  getCellRangeByField(field: FieldDef, index: number): CellRange | null;
42
42
  getHierarchyState(col: number, row: number): HierarchyState;
43
43
  toggleHierarchyState(col: number, row: number): void;
44
- hasHierarchyTreeHeader(): boolean;
44
+ _refreshHierarchyState(col: number, row: number): void;
45
+ _hasHierarchyTreeHeader(): boolean;
45
46
  getMenuInfo(col: number, row: number, type: string): DropDownMenuEventInfo;
46
47
  protected _getSortFuncFromHeaderOption(columns: ColumnsDefine | undefined, field: FieldDef, fieldKey?: FieldKeyDef): ((v1: any, v2: any, order: SortOrder) => 0 | 1 | -1) | undefined;
47
48
  updateSortState(sortState: SortState[] | SortState | null, executeSort?: boolean): void;
48
49
  getCheckboxState(field?: string | number): boolean[] | Record<string | number, boolean>[];
49
50
  getCellCheckboxState(col: number, row: number): boolean;
50
51
  setRecords(records: Array<any>, sort?: SortState | SortState[]): void;
51
- setRecord(record: any, col?: number, row?: number): void;
52
+ setRecordChildren(records: any[], col: number, row: number): void;
52
53
  startEditCell(col?: number, row?: number): void;
53
54
  completeEditCell(): void;
54
55
  getEditor(col: number, row: number): IEditor;
package/cjs/ListTable.js CHANGED
@@ -291,21 +291,27 @@ class ListTable extends core_1.BaseTable {
291
291
  }
292
292
  toggleHierarchyState(col, row) {
293
293
  const hierarchyState = this.getHierarchyState(col, row);
294
- hierarchyState === ts_types_1.HierarchyState.expand ? this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {
294
+ if (hierarchyState === ts_types_1.HierarchyState.expand) this._refreshHierarchyState(col, row),
295
+ this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {
295
296
  col: col,
296
297
  row: row,
297
298
  hierarchyState: ts_types_1.HierarchyState.collapse
298
- }) : hierarchyState === ts_types_1.HierarchyState.collapse && this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {
299
- col: col,
300
- row: row,
301
- hierarchyState: ts_types_1.HierarchyState.expand,
302
- originData: this.getCellOriginRecord(col, row)
303
- });
299
+ }); else if (hierarchyState === ts_types_1.HierarchyState.collapse) {
300
+ const record = this.getCellOriginRecord(col, row);
301
+ Array.isArray(record.children) && this._refreshHierarchyState(col, row), this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {
302
+ col: col,
303
+ row: row,
304
+ hierarchyState: ts_types_1.HierarchyState.expand,
305
+ originData: record
306
+ });
307
+ }
308
+ }
309
+ _refreshHierarchyState(col, row) {
304
310
  const index = this.getRecordIndexByCell(col, row), diffDataIndices = this.dataSource.toggleHierarchyState(index), diffPositions = this.internalProps.layoutMap.toggleHierarchyState(diffDataIndices);
305
311
  this.refreshRowColCount(), this.clearCellStyleCache(), this.scenegraph.updateHierarchyIcon(col, row),
306
312
  this.scenegraph.updateRow(diffPositions.removeCellPositions, diffPositions.addCellPositions);
307
313
  }
308
- hasHierarchyTreeHeader() {
314
+ _hasHierarchyTreeHeader() {
309
315
  var _a, _b;
310
316
  return null === (_b = null !== (_a = this.options.columns) && void 0 !== _a ? _a : this.options.header) || void 0 === _b ? void 0 : _b.some(((column, i) => column.tree));
311
317
  }
@@ -378,9 +384,11 @@ class ListTable extends core_1.BaseTable {
378
384
  this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row), this.internalProps.title && !this.internalProps.title.isReleased && (this._updateSize(),
379
385
  this.internalProps.title.resize(), this.scenegraph.resize()), this.render();
380
386
  }
381
- setRecord(record, col, row) {
387
+ setRecordChildren(records, col, row) {
388
+ const record = this.getCellOriginRecord(col, row);
389
+ record.children = records;
382
390
  const index = this.getRecordIndexByCell(col, row);
383
- this.dataSource.setRecord(record, index);
391
+ this.dataSource.setRecord(record, index), this._refreshHierarchyState(col, row);
384
392
  }
385
393
  startEditCell(col, row) {
386
394
  var _a;
@@ -408,10 +416,9 @@ class ListTable extends core_1.BaseTable {
408
416
  return "string" == typeof editorDefine ? editors.get(editorDefine) : editorDefine;
409
417
  }
410
418
  changeCellValue(col, row, value) {
411
- const recordIndex = this.getRecordIndexByCell(col, row), {field: field, fieldFormat: fieldFormat} = this.internalProps.layoutMap.getBody(col, row);
412
- this.dataSource.changeFieldValue(value, recordIndex, field, col, row, this);
413
- const cell_value = this.getFieldData(fieldFormat || field, col, row);
414
- if (this.scenegraph.updateCellValue(col, row, cell_value), "adaptive" === this.widthMode || this.autoFillWidth && this.getAllColsWidth() <= this.tableNoFrameWidth) 0 === this.internalProps._widthResizedColMap.size && this.scenegraph.recalculateColWidths(); else if (!this.internalProps._widthResizedColMap.has(col)) {
419
+ const recordIndex = this.getRecordIndexByCell(col, row), {field: field} = this.internalProps.layoutMap.getBody(col, row);
420
+ if (this.dataSource.changeFieldValue(value, recordIndex, field, col, row, this),
421
+ this.scenegraph.updateCellContent(col, row), "adaptive" === this.widthMode || this.autoFillWidth && this.getAllColsWidth() <= this.tableNoFrameWidth) 0 === this.internalProps._widthResizedColMap.size && this.scenegraph.recalculateColWidths(); else if (!this.internalProps._widthResizedColMap.has(col)) {
415
422
  const oldWidth = this.getColWidth(col), newWidth = (0, compute_col_width_1.computeColWidth)(col, 0, this.rowCount - 1, this, !1);
416
423
  newWidth !== oldWidth && this.scenegraph.updateColWidth(col, newWidth - oldWidth);
417
424
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ListTable.ts"],"names":[],"mappings":"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","file":"ListTable.js","sourcesContent":["import type {\n CellAddress,\n CellRange,\n ColumnsDefine,\n DropDownMenuEventInfo,\n FieldData,\n FieldDef,\n FieldFormat,\n FieldKeyDef,\n IPagination,\n ListTableAPI,\n ListTableConstructorOptions,\n MaybePromiseOrUndefined,\n SortOrder,\n SortState\n} from './ts-types';\nimport { HierarchyState } from './ts-types';\nimport { SimpleHeaderLayoutMap } from './layout';\nimport { isValid } from '@visactor/vutils';\nimport { _setDataSource, _setRecords } from './core/tableHelper';\nimport { BaseTable } from './core';\nimport type { ListTableProtected } from './ts-types/base-table';\nimport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nimport { Title } from './components/title/title';\nimport { cloneDeep } from '@visactor/vutils';\nimport { Env } from './tools/env';\nimport { editor } from './register';\nimport * as editors from './edit/editors';\nimport { EditManeger } from './edit/edit-manager';\nimport { computeColWidth } from './scenegraph/layout/compute-col-width';\nimport { computeRowHeight } from './scenegraph/layout/compute-row-height';\nimport { defaultOrderFn } from './tools/util';\nimport type { IEditor } from '@visactor/vtable-editors';\n\nexport class ListTable extends BaseTable implements ListTableAPI {\n declare internalProps: ListTableProtected;\n /**\n * 用户配置的options 只读 勿直接修改\n */\n declare options: ListTableConstructorOptions;\n showHeader = true;\n editorManager: EditManeger;\n // eslint-disable-next-line default-param-last\n constructor(options: ListTableConstructorOptions);\n constructor(container: HTMLElement, options: ListTableConstructorOptions);\n constructor(container?: HTMLElement | ListTableConstructorOptions, options?: ListTableConstructorOptions) {\n if (Env.mode === 'node') {\n options = container as ListTableConstructorOptions;\n container = null;\n } else if (!(container instanceof HTMLElement)) {\n options = container as ListTableConstructorOptions;\n if ((container as ListTableConstructorOptions).container) {\n container = (container as ListTableConstructorOptions).container;\n } else {\n container = null;\n }\n }\n super(container as HTMLElement, options);\n\n const internalProps = this.internalProps;\n //分页配置\n this.pagination = options.pagination;\n internalProps.sortState = options.sortState;\n internalProps.columns = options.columns\n ? cloneDeep(options.columns)\n : options.header\n ? cloneDeep(options.header)\n : [];\n\n this.showHeader = options.showHeader ?? true;\n\n this.transpose = options.transpose ?? false;\n if (Env.mode !== 'node') {\n this.editorManager = new EditManeger(this);\n }\n this.refreshHeader();\n\n if (options.dataSource) {\n _setDataSource(this, options.dataSource);\n } else if (options.records) {\n this.setRecords(options.records as any, internalProps.sortState);\n } else {\n this.setRecords([]);\n }\n if (options.title) {\n internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n //为了确保用户监听得到这个事件 这里做了异步 确保vtable实例已经初始化完成\n setTimeout(() => {\n this.fireListeners(TABLE_EVENT_TYPE.INITIALIZED, null);\n }, 0);\n }\n isListTable(): true {\n return true;\n }\n isPivotTable(): false {\n return false;\n }\n isPivotChart(): false {\n return false;\n }\n /**\n * Get the sort state.\n */\n get sortState(): SortState | SortState[] {\n return this.internalProps.sortState;\n }\n // /**\n // * Gets the define of the header.\n // */\n // get columns(): ColumnsDefine {\n // return this.internalProps.columns;\n // }\n // /**\n // * Sets the define of the column.\n // */\n // set columns(columns: ColumnsDefine) {\n // this.internalProps.columns = columns;\n // this.options.columns = columns;\n // }\n /**\n * Sets the define of the column.\n */\n updateColumns(columns: ColumnsDefine) {\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n this.internalProps.columns = cloneDeep(columns);\n this.options.columns = columns;\n this.refreshHeader();\n this.scenegraph.clearCells();\n this.headerStyleCache = new Map();\n this.bodyStyleCache = new Map();\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n this.renderAsync();\n }\n /**\n *@deprecated 请使用columns\n */\n get header(): ColumnsDefine {\n return this.internalProps.columns;\n }\n /**\n * @deprecated 请使用columns\n */\n set header(header: ColumnsDefine) {\n this.internalProps.columns = header;\n this.options.header = header;\n this.refreshHeader();\n //需要异步等待其他事情都完成后再绘制\n this.renderAsync();\n }\n /**\n * Get the transpose.\n */\n get transpose(): boolean {\n return this.internalProps.transpose ?? false;\n }\n /**\n * Set the transpose from given\n */\n set transpose(transpose: boolean) {\n if (this.internalProps.transpose === transpose) {\n return;\n }\n this.internalProps.transpose = transpose;\n this.options.transpose = transpose;\n if (this.internalProps.layoutMap) {\n //后面如果修改是否转置\n this.internalProps.layoutMap.transpose = transpose;\n this.refreshRowColCount();\n\n // 转置后为行布局,列宽只支持依据该列所有内容自适应宽度\n this._resetFrozenColCount();\n this.renderAsync();\n }\n }\n /** 获取单元格展示值 */\n getCellValue(col: number, row: number): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n const customMergeText = this.getCustomMergeValue(col, row);\n if (customMergeText) {\n return customMergeText;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n const { field, fieldFormat } = table.internalProps.layoutMap.getBody(col, row);\n return table.getFieldData(fieldFormat || field, col, row);\n }\n /** 获取单元格展示数据的format前的值 */\n getCellOriginValue(col: number, row: number): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n return table.getFieldData(field, col, row);\n }\n /** 获取单元格展示数据源最原始值 */\n getCellRawValue(col: number, row: number): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n return table.getRawFieldData(field, col, row);\n }\n /** @private */\n getRecordIndexByCell(col: number, row: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getRecordIndexByCell(col, row);\n }\n\n getTableIndexByRecordIndex(recordIndex: number) {\n if (this.transpose) {\n return this.dataSource.getTableIndex(recordIndex) + this.rowHeaderLevelCount;\n }\n return this.dataSource.getTableIndex(recordIndex) + this.columnHeaderLevelCount;\n }\n getTableIndexByField(field: FieldDef) {\n const colObj = this.internalProps.layoutMap.columnObjects.find((col: any) => col.field === field);\n const layoutRange = this.internalProps.layoutMap.getBodyLayoutRangeById(colObj.id);\n if (this.transpose) {\n return layoutRange.start.row;\n }\n return layoutRange.start.col;\n }\n /**\n * 根据数据源中的index和field获取单元格行列号\n * @param field\n * @param recordIndex\n * @returns\n */\n getCellAddrByFieldRecord(field: FieldDef, recordIndex: number): CellAddress {\n if (this.transpose) {\n return { col: this.getTableIndexByRecordIndex(recordIndex), row: this.getTableIndexByField(field) };\n }\n return { col: this.getTableIndexByField(field), row: this.getTableIndexByRecordIndex(recordIndex) };\n }\n /**\n *\n * @param field 获取整体数据记录。可编辑单元格的话 对应编辑后format前\n * @param col\n * @param row\n */\n getCellOriginRecord(col: number, row: number): MaybePromiseOrUndefined {\n const table = this;\n const index = table.getRecordIndexByCell(col, row);\n if (index > -1) {\n return table.dataSource.get(index);\n }\n return undefined;\n }\n /**\n *\n * @param field 获取整体数据记录。可编辑的话 对应编辑前\n * @param col\n * @param row\n */\n getCellRawRecord(col: number, row: number): MaybePromiseOrUndefined {\n const table = this;\n const index = table.getRecordIndexByCell(col, row);\n if (index > -1) {\n return table.dataSource.getRaw(index);\n }\n return undefined;\n }\n /**\n * 该列是否可调整列宽\n * @param col\n * @returns\n */\n _canResizeColumn(col: number, row: number): boolean {\n const ifCan = super._canResizeColumn(col, row);\n if (ifCan) {\n if (!this.transpose) {\n // 列上是否配置了禁止拖拽列宽的配置项disableColumnResize\n const cellDefine = this.internalProps.layoutMap.getBody(col, this.columnHeaderLevelCount);\n if (cellDefine?.disableColumnResize) {\n return false;\n }\n }\n }\n return ifCan;\n }\n updateOption(options: ListTableConstructorOptions, accelerateFirstScreen = false) {\n const internalProps = this.internalProps;\n super.updateOption(options);\n //分页配置\n this.pagination = options.pagination;\n //更新protectedSpace\n this.showHeader = options.showHeader ?? true;\n internalProps.columns = options.columns\n ? cloneDeep(options.columns)\n : options.header\n ? cloneDeep(options.header)\n : [];\n // 处理转置\n this.transpose = options.transpose ?? false;\n // 更新表头\n this.refreshHeader();\n\n // this.hasMedia = null; // 避免重复绑定\n // 清空目前数据\n if (internalProps.releaseList) {\n internalProps.releaseList.forEach(releaseObj => releaseObj?.release?.());\n internalProps.releaseList = null;\n }\n // // 恢复selection状态\n // internalProps.selection.range = range;\n // this._updateSize();\n // 传入新数据\n if (options.dataSource) {\n _setDataSource(this, options.dataSource);\n } else if (options.records) {\n this.setRecords(options.records as any, options.sortState);\n } else {\n this._resetFrozenColCount();\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n this.render();\n }\n if (options.title) {\n internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n return new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n }\n /**\n * 更新页码\n * @param pagination 修改页码\n */\n updatePagination(pagination: IPagination): void {\n if (this.pagination) {\n typeof pagination.currentPage === 'number' &&\n pagination.currentPage >= 0 &&\n (this.pagination.currentPage = pagination.currentPage);\n pagination.perPageCount &&\n (this.pagination.perPageCount = pagination.perPageCount || this.pagination.perPageCount);\n // 清空单元格内容\n this.scenegraph.clearCells();\n //数据源缓存数据更新\n this.dataSource.updatePagination(this.pagination);\n this.refreshRowColCount();\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n this.renderAsync();\n }\n }\n /** @private */\n refreshHeader(): void {\n const table = this;\n const internalProps = table.internalProps;\n const transpose = table.transpose;\n const showHeader = table.showHeader;\n const layoutMap = (internalProps.layoutMap = new SimpleHeaderLayoutMap(\n this,\n internalProps.columns ?? [],\n showHeader,\n table.options.hierarchyIndent\n ));\n\n layoutMap.transpose = transpose;\n\n if (!transpose) {\n //设置列宽 这里需要优化,考虑转置表格的情况 transpose,转置表格不需要设置colWidth TODO\n for (let col = 0; col < layoutMap.columnWidths.length; col++) {\n const { width, minWidth, maxWidth } = layoutMap.columnWidths?.[col] ?? {};\n // width 为 \"auto\" 时先不存储ColWidth\n if (width && ((typeof width === 'string' && width !== 'auto') || (typeof width === 'number' && width > 0))) {\n table._setColWidth(col, width);\n }\n if (minWidth && ((typeof minWidth === 'number' && minWidth > 0) || typeof minWidth === 'string')) {\n table.setMinColWidth(col, minWidth);\n }\n if (maxWidth && ((typeof maxWidth === 'number' && maxWidth > 0) || typeof maxWidth === 'string')) {\n table.setMaxColWidth(col, maxWidth);\n }\n }\n }\n //刷新表头,原来这里是_refreshRowCount 后改名为_refreshRowColCount 因为表头定义会影响行数,而转置模式下会影响列数\n this.refreshRowColCount();\n }\n\n refreshRowColCount(): void {\n const table = this;\n const { layoutMap } = table.internalProps;\n if (!layoutMap) {\n return;\n }\n layoutMap.recordsCount = table.internalProps.dataSource?.length ?? 0;\n if (table.transpose) {\n table.rowCount = layoutMap.rowCount ?? 0;\n table.colCount =\n (table.internalProps.dataSource?.length ?? 0) * layoutMap.bodyRowSpanCount + layoutMap.headerLevelCount;\n table.frozenRowCount = 0;\n // table.frozenColCount = layoutMap.headerLevelCount; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n this.internalProps.frozenColCount = layoutMap.headerLevelCount ?? 0;\n table.rightFrozenColCount = this.options.rightFrozenColCount ?? 0;\n } else {\n table.colCount = layoutMap.colCount ?? 0;\n table.rowCount =\n (table.internalProps.dataSource?.length ?? 0) * layoutMap.bodyRowSpanCount + layoutMap.headerLevelCount;\n // table.frozenColCount = table.options.frozenColCount ?? 0; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n this.internalProps.frozenColCount = this.options.frozenColCount ?? 0;\n table.frozenRowCount = layoutMap.headerLevelCount;\n\n table.bottomFrozenRowCount = this.options.bottomFrozenRowCount ?? 0;\n table.rightFrozenColCount = this.options.rightFrozenColCount ?? 0;\n }\n this.stateManager.setFrozenCol(this.internalProps.frozenColCount);\n }\n /**\n * 获取records数据源中 字段对应的value 值是format之后的\n * @param field\n * @param col\n * @param row\n * @returns\n */\n getFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n if (field === null) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return null;\n }\n const index = table.getRecordIndexByCell(col, row);\n return table.internalProps.dataSource.getField(index, field, col, row, this);\n }\n /**\n * 获取records数据源中 字段对应的value 值是数据源中原始值\n * @param field\n * @param col\n * @param row\n * @returns\n */\n getRawFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n if (field === null) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return null;\n }\n const index = table.getRecordIndexByCell(col, row);\n return table.internalProps.dataSource.getRawField(index, field, col, row, this);\n }\n /**\n * 拖拽移动表头位置\n * @param source 移动源位置\n * @param target 移动目标位置\n */\n moveHeaderPosition(source: CellAddress, target: CellAddress) {\n // 调用布局类 布局数据结构调整为移动位置后的\n const moveContext = this.internalProps.layoutMap.moveHeaderPosition(source, target);\n if (moveContext) {\n if (moveContext.moveType === 'column') {\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n this.colWidthsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.moveSize);\n if (!this.transpose) {\n //下面代码取自refreshHeader列宽设置逻辑\n //设置列宽极限值 TODO 目前是有问题的 最大最小宽度限制 移动列位置后不正确\n this.colWidthsLimit = {}; //需要先清空\n for (let col = 0; col < this.internalProps.layoutMap.columnWidths.length; col++) {\n const { minWidth, maxWidth } = this.internalProps.layoutMap.columnWidths?.[col] ?? {};\n if (minWidth && ((typeof minWidth === 'number' && minWidth > 0) || typeof minWidth === 'string')) {\n this.setMinColWidth(col, minWidth);\n }\n if (maxWidth && ((typeof maxWidth === 'number' && maxWidth > 0) || typeof maxWidth === 'string')) {\n this.setMaxColWidth(col, maxWidth);\n }\n }\n }\n // 清空相关缓存\n const colStart = Math.min(moveContext.sourceIndex, moveContext.targetIndex);\n const colEnd = Math.max(moveContext.sourceIndex, moveContext.targetIndex);\n for (let col = colStart; col <= colEnd; col++) {\n this._clearColRangeWidthsMap(col);\n }\n } else {\n // 清空相关缓存\n const rowStart = Math.min(moveContext.sourceIndex, moveContext.targetIndex);\n const rowEnd = Math.max(moveContext.sourceIndex, moveContext.targetIndex);\n for (let row = rowStart; row <= rowEnd; row++) {\n this._clearRowRangeHeightsMap(row);\n }\n }\n return true;\n }\n return false;\n }\n\n /**\n * 方法适用于获取body中某条数据的行列号\n * @param findTargetRecord 通过数据对象或者指定函数来计算数据条目index\n * @param field\n * @returns\n */\n getCellAddress(findTargetRecord: any | ((record: any) => boolean), field: FieldDef): CellAddress {\n let targetRecordIndex: number;\n\n for (let i = 0; i < this.internalProps.records.length; i++) {\n const record = this.internalProps.records[i];\n if (typeof findTargetRecord === 'function') {\n if ((<Function>findTargetRecord)(record)) {\n targetRecordIndex = i;\n }\n } else {\n let isAllRight = true;\n for (const prop in findTargetRecord) {\n if (record[prop] !== findTargetRecord[prop]) {\n isAllRight = false;\n break;\n }\n }\n if (isAllRight) {\n targetRecordIndex = i;\n }\n }\n if (isValid(targetRecordIndex)) {\n break;\n }\n }\n const cellRange = this.getCellRangeByField(field, targetRecordIndex);\n if (cellRange) {\n return { row: cellRange.start.row, col: cellRange.start.col };\n }\n return undefined;\n }\n /**\n * 获取指定field及指定数据条index的单元格位置\n * @param {*} field\n * @param {number} index 要获取的第几条数据\n * @return {number} 返回单元格的坐标范围 TODO 转置表有问题bug\n */\n getCellRangeByField(field: FieldDef, index: number): CellRange | null {\n const { layoutMap } = this.internalProps;\n const colObj = layoutMap.columnObjects.find((col: any) => col.field === field);\n if (colObj) {\n const layoutRange = layoutMap.getBodyLayoutRangeById(colObj.id);\n let startRow;\n if (isValid(index)) {\n startRow = layoutMap.getRecordStartRowByRecordIndex(index);\n }\n if (this.transpose) {\n return {\n start: {\n row: layoutRange.start.row,\n col: isValid(startRow) ? startRow + layoutRange.start.col : undefined\n },\n end: {\n row: layoutRange.end.row,\n col: isValid(startRow) ? startRow + layoutRange.end.col : undefined\n }\n };\n }\n return {\n start: {\n col: layoutRange.start.col,\n row: isValid(startRow) ? startRow + layoutRange.start.row : undefined // layoutRange.start.row这里是0 所以无意义\n },\n end: {\n col: layoutRange.end.col,\n row: isValid(startRow) ? startRow + layoutRange.end.row : undefined // layoutRange.start.row这里是0 所以无意义\n }\n };\n }\n return null;\n }\n /**\n * 获取层级节点收起展开的状态\n * @param col\n * @param row\n * @returns\n */\n getHierarchyState(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row);\n if (!define.tree) {\n return HierarchyState.none;\n }\n const index = this.getRecordIndexByCell(col, row);\n return this.dataSource.getHierarchyState(index);\n }\n /**\n * 表头切换层级状态\n * @param col\n * @param row\n */\n toggleHierarchyState(col: number, row: number) {\n const hierarchyState = this.getHierarchyState(col, row);\n if (hierarchyState === HierarchyState.expand) {\n this.fireListeners(TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.collapse\n });\n } else if (hierarchyState === HierarchyState.collapse) {\n this.fireListeners(TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.expand,\n originData: this.getCellOriginRecord(col, row)\n });\n }\n\n const index = this.getRecordIndexByCell(col, row);\n const diffDataIndices = this.dataSource.toggleHierarchyState(index);\n const diffPositions = this.internalProps.layoutMap.toggleHierarchyState(diffDataIndices);\n //影响行数\n this.refreshRowColCount();\n // //TODO 这里可以优化计算性能 针对变化的行高列宽进行计算\n // //更新列宽\n // this.computeColsWidth();\n // //更新行高\n // this.computeRowsHeight();\n // 重新判断下行表头宽度是否过宽\n // this._resetFrozenColCount();\n //更改滚动条size\n //重绘\n // this.invalidate();\n\n this.clearCellStyleCache();\n this.scenegraph.updateHierarchyIcon(col, row);\n this.scenegraph.updateRow(diffPositions.removeCellPositions, diffPositions.addCellPositions);\n }\n\n hasHierarchyTreeHeader() {\n return (this.options.columns ?? this.options.header)?.some((column, i) => column.tree);\n }\n\n getMenuInfo(col: number, row: number, type: string): DropDownMenuEventInfo {\n const result: DropDownMenuEventInfo = {\n field: this.getHeaderField(col, row),\n value: this.getCellValue(col, row),\n cellLocation: this.getCellLocation(col, row)\n };\n return result;\n }\n protected _getSortFuncFromHeaderOption(\n columns: ColumnsDefine | undefined,\n field: FieldDef,\n fieldKey?: FieldKeyDef\n ): ((v1: any, v2: any, order: SortOrder) => 0 | 1 | -1) | undefined {\n if (!columns) {\n columns = this.internalProps.columns;\n }\n if (field && columns && columns.length > 0) {\n for (let i = 0; i < columns.length; i++) {\n const header = columns[i];\n if (\n ((fieldKey && fieldKey === header.fieldKey) || (!fieldKey && header.field === field)) &&\n header.sort &&\n typeof header.sort === 'function'\n ) {\n return header.sort;\n } else if (header.columns) {\n const sort = this._getSortFuncFromHeaderOption(header.columns, field, fieldKey);\n if (sort) {\n return sort;\n }\n }\n }\n }\n return undefined;\n }\n /**\n * 更新排序状态\n * @param sortState 要设置的排序状态\n * @param executeSort 是否执行内部排序逻辑,设置false将只更新图标状态\n */\n updateSortState(sortState: SortState[] | SortState | null, executeSort: boolean = true) {\n if (!sortState) {\n // 解除排序状态\n if (this.internalProps.sortState) {\n if (Array.isArray(this.internalProps.sortState)) {\n for (let i = 0; i < (<SortState[]>this.internalProps.sortState).length; i++) {\n const sortState: SortState = this.internalProps.sortState[i];\n sortState.order = 'normal';\n }\n } else {\n (<SortState>this.internalProps.sortState).order = 'normal';\n }\n }\n } else {\n this.internalProps.sortState = sortState;\n // 这里的sortState需要有field属性\n // this.stateManager.setSortState(sortState as SortState);\n }\n let order: any;\n let field: any;\n let fieldKey: any;\n if (Array.isArray(this.internalProps.sortState)) {\n ({ order, field, fieldKey } = this.internalProps.sortState?.[0]);\n } else {\n ({ order, field, fieldKey } = this.internalProps.sortState as SortState);\n }\n if (field && executeSort) {\n const sortFunc = this._getSortFuncFromHeaderOption(this.internalProps.columns, field, fieldKey);\n let hd;\n if (fieldKey) {\n hd = this.internalProps.layoutMap.headerObjects.find((col: any) => col && col.fieldKey === fieldKey);\n } else {\n hd = this.internalProps.layoutMap.headerObjects.find((col: any) => col && col.field === field);\n }\n if (hd?.define?.sort) {\n this.dataSource.sort(hd.field, order, sortFunc);\n\n // clear cell range cache\n this.internalProps.layoutMap.clearCellRangeMap();\n this.scenegraph.sortCell();\n }\n }\n this.stateManager.updateSortState(sortState as SortState);\n }\n /** 获取某个字段下checkbox 全部数据的选中状态 顺序对应原始传入数据records 不是对应表格展示row的状态值 */\n getCheckboxState(field?: string | number) {\n if (this.stateManager.checkedState.length < this.rowCount - this.columnHeaderLevelCount) {\n this.stateManager.initLeftRecordsCheckState(this.records);\n }\n if (isValid(field)) {\n return this.stateManager.checkedState.map(state => {\n return state[field];\n });\n }\n return this.stateManager.checkedState;\n }\n /** 获取某个单元格checkbox的状态 */\n getCellCheckboxState(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row);\n const field = define?.field;\n const cellType = define?.cellType;\n if (isValid(field) && cellType === 'checkbox') {\n const dataIndex = this.dataSource.getIndexKey(this.getRecordIndexByCell(col, row));\n return this.stateManager.checkedState[dataIndex as number][field as string | number];\n }\n return undefined;\n }\n /**\n * 设置表格数据 及排序状态\n * @param records\n * @param sort\n */\n setRecords(records: Array<any>, sort?: SortState | SortState[]): void {\n const time = typeof window !== 'undefined' ? window.performance.now() : 0;\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n // 清空单元格内容\n this.scenegraph.clearCells();\n\n //重复逻辑抽取updateWidthHeight\n if (sort !== undefined) {\n this.internalProps.sortState = sort;\n this.stateManager.setSortState((this as any).sortState as SortState);\n }\n if (records) {\n _setRecords(this, records);\n if ((this as any).sortState) {\n let order: any;\n let field: any;\n let fieldKey: any;\n if (Array.isArray((this as any).sortState)) {\n if ((this as any).sortState.length !== 0) {\n ({ order, field, fieldKey } = (this as any).sortState?.[0]);\n }\n } else {\n ({ order, field, fieldKey } = (this as any).sortState as SortState);\n }\n // 根据sort规则进行排序\n if (order && field && order !== 'normal') {\n const sortFunc = this._getSortFuncFromHeaderOption(undefined, field, fieldKey);\n // 如果sort传入的信息不能生成正确的sortFunc,直接更新表格,避免首次加载无法正常显示内容\n let hd;\n if (fieldKey) {\n hd = this.internalProps.layoutMap.headerObjects.find((col: any) => col && col.fieldKey === fieldKey);\n } else {\n hd = this.internalProps.layoutMap.headerObjects.find((col: any) => col && col.field === field);\n }\n // hd?.define?.sort && //如果这里也判断 那想要利用sortState来排序 但不显示排序图标就实现不了\n this.dataSource.sort(hd.field, order, sortFunc ?? defaultOrderFn);\n }\n }\n this.refreshRowColCount();\n } else {\n _setRecords(this, records);\n }\n this.stateManager.initCheckedState(records);\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n if (this.internalProps.title && !this.internalProps.title.isReleased) {\n this._updateSize();\n this.internalProps.title.resize();\n this.scenegraph.resize();\n }\n\n this.render();\n console.log('setRecords cost time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time);\n }\n /**\n * 基本表格树形展示场景下,如果需要动态插入子节点的数据可以配合使用该接口,其他情况不适用\n * @param col col position of the record, it is optional\n * @param row row position of the record, it is optional\n */\n setRecord(record: any, col?: number, row?: number) {\n const index = this.getRecordIndexByCell(col, row);\n this.dataSource.setRecord(record, index);\n }\n /** 开启单元格编辑 */\n startEditCell(col?: number, row?: number) {\n if (isValid(col) && isValid(row)) {\n this.editorManager.startEditCell(col, row);\n } else if (this.stateManager.select?.cellPos) {\n const { col, row } = this.stateManager.select.cellPos;\n if (isValid(col) && isValid(row)) {\n this.editorManager.startEditCell(col, row);\n }\n }\n }\n /** 结束编辑 */\n completeEditCell() {\n this.editorManager.completeEdit();\n }\n /** 获取单元格对应的编辑器 */\n getEditor(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row);\n let editorDefine = define?.editor ?? this.options.editor;\n\n if (typeof editorDefine === 'function') {\n const arg = {\n col,\n row,\n dataValue: this.getCellOriginValue(col, row),\n value: this.getCellValue(col, row) || '',\n table: this\n };\n editorDefine = (editorDefine as Function)(arg);\n }\n if (typeof editorDefine === 'string') {\n return editors.get(editorDefine);\n }\n return editorDefine as IEditor;\n }\n /** 更改单元格数据 会触发change_cell_value事件*/\n changeCellValue(col: number, row: number, value: string | number | null) {\n const recordIndex = this.getRecordIndexByCell(col, row);\n const { field, fieldFormat } = this.internalProps.layoutMap.getBody(col, row);\n this.dataSource.changeFieldValue(value, recordIndex, field, col, row, this);\n const cell_value = this.getFieldData(fieldFormat || field, col, row);\n this.scenegraph.updateCellValue(col, row, cell_value);\n if (this.widthMode === 'adaptive' || (this.autoFillWidth && this.getAllColsWidth() <= this.tableNoFrameWidth)) {\n if (this.internalProps._widthResizedColMap.size === 0) {\n //如果没有手动调整过行高列宽 则重新计算一遍并重新分配\n this.scenegraph.recalculateColWidths();\n }\n } else if (!this.internalProps._widthResizedColMap.has(col)) {\n const oldWidth = this.getColWidth(col);\n const newWidth = computeColWidth(col, 0, this.rowCount - 1, this, false);\n if (newWidth !== oldWidth) {\n this.scenegraph.updateColWidth(col, newWidth - oldWidth);\n }\n }\n if (this.heightMode === 'adaptive' || (this.autoFillHeight && this.getAllRowsHeight() <= this.tableNoFrameHeight)) {\n this.scenegraph.recalculateRowHeights();\n } else if (this.heightMode === 'autoHeight') {\n const oldHeight = this.getRowHeight(row);\n const newHeight = computeRowHeight(row, 0, this.colCount - 1, this);\n this.scenegraph.updateRowHeight(row, newHeight - oldHeight);\n }\n this.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {\n col,\n row,\n rawValue: this.getCellRawValue(col, row),\n changedValue: this.getCellOriginValue(col, row)\n });\n this.scenegraph.updateNextFrame();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/ListTable.ts"],"names":[],"mappings":"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","file":"ListTable.js","sourcesContent":["import type {\n CellAddress,\n CellRange,\n ColumnsDefine,\n DropDownMenuEventInfo,\n FieldData,\n FieldDef,\n FieldFormat,\n FieldKeyDef,\n IPagination,\n ListTableAPI,\n ListTableConstructorOptions,\n MaybePromiseOrUndefined,\n SortOrder,\n SortState\n} from './ts-types';\nimport { HierarchyState } from './ts-types';\nimport { SimpleHeaderLayoutMap } from './layout';\nimport { isValid } from '@visactor/vutils';\nimport { _setDataSource, _setRecords } from './core/tableHelper';\nimport { BaseTable } from './core';\nimport type { ListTableProtected } from './ts-types/base-table';\nimport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nimport { Title } from './components/title/title';\nimport { cloneDeep } from '@visactor/vutils';\nimport { Env } from './tools/env';\nimport { editor } from './register';\nimport * as editors from './edit/editors';\nimport { EditManeger } from './edit/edit-manager';\nimport { computeColWidth } from './scenegraph/layout/compute-col-width';\nimport { computeRowHeight } from './scenegraph/layout/compute-row-height';\nimport { defaultOrderFn } from './tools/util';\nimport type { IEditor } from '@visactor/vtable-editors';\n\nexport class ListTable extends BaseTable implements ListTableAPI {\n declare internalProps: ListTableProtected;\n /**\n * 用户配置的options 只读 勿直接修改\n */\n declare options: ListTableConstructorOptions;\n showHeader = true;\n editorManager: EditManeger;\n // eslint-disable-next-line default-param-last\n constructor(options: ListTableConstructorOptions);\n constructor(container: HTMLElement, options: ListTableConstructorOptions);\n constructor(container?: HTMLElement | ListTableConstructorOptions, options?: ListTableConstructorOptions) {\n if (Env.mode === 'node') {\n options = container as ListTableConstructorOptions;\n container = null;\n } else if (!(container instanceof HTMLElement)) {\n options = container as ListTableConstructorOptions;\n if ((container as ListTableConstructorOptions).container) {\n container = (container as ListTableConstructorOptions).container;\n } else {\n container = null;\n }\n }\n super(container as HTMLElement, options);\n\n const internalProps = this.internalProps;\n //分页配置\n this.pagination = options.pagination;\n internalProps.sortState = options.sortState;\n internalProps.columns = options.columns\n ? cloneDeep(options.columns)\n : options.header\n ? cloneDeep(options.header)\n : [];\n\n this.showHeader = options.showHeader ?? true;\n\n this.transpose = options.transpose ?? false;\n if (Env.mode !== 'node') {\n this.editorManager = new EditManeger(this);\n }\n this.refreshHeader();\n\n if (options.dataSource) {\n _setDataSource(this, options.dataSource);\n } else if (options.records) {\n this.setRecords(options.records as any, internalProps.sortState);\n } else {\n this.setRecords([]);\n }\n if (options.title) {\n internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n //为了确保用户监听得到这个事件 这里做了异步 确保vtable实例已经初始化完成\n setTimeout(() => {\n this.fireListeners(TABLE_EVENT_TYPE.INITIALIZED, null);\n }, 0);\n }\n isListTable(): true {\n return true;\n }\n isPivotTable(): false {\n return false;\n }\n isPivotChart(): false {\n return false;\n }\n /**\n * Get the sort state.\n */\n get sortState(): SortState | SortState[] {\n return this.internalProps.sortState;\n }\n // /**\n // * Gets the define of the header.\n // */\n // get columns(): ColumnsDefine {\n // return this.internalProps.columns;\n // }\n // /**\n // * Sets the define of the column.\n // */\n // set columns(columns: ColumnsDefine) {\n // this.internalProps.columns = columns;\n // this.options.columns = columns;\n // }\n /**\n * Sets the define of the column.\n */\n updateColumns(columns: ColumnsDefine) {\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n this.internalProps.columns = cloneDeep(columns);\n this.options.columns = columns;\n this.refreshHeader();\n this.scenegraph.clearCells();\n this.headerStyleCache = new Map();\n this.bodyStyleCache = new Map();\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n this.renderAsync();\n }\n /**\n *@deprecated 请使用columns\n */\n get header(): ColumnsDefine {\n return this.internalProps.columns;\n }\n /**\n * @deprecated 请使用columns\n */\n set header(header: ColumnsDefine) {\n this.internalProps.columns = header;\n this.options.header = header;\n this.refreshHeader();\n //需要异步等待其他事情都完成后再绘制\n this.renderAsync();\n }\n /**\n * Get the transpose.\n */\n get transpose(): boolean {\n return this.internalProps.transpose ?? false;\n }\n /**\n * Set the transpose from given\n */\n set transpose(transpose: boolean) {\n if (this.internalProps.transpose === transpose) {\n return;\n }\n this.internalProps.transpose = transpose;\n this.options.transpose = transpose;\n if (this.internalProps.layoutMap) {\n //后面如果修改是否转置\n this.internalProps.layoutMap.transpose = transpose;\n this.refreshRowColCount();\n\n // 转置后为行布局,列宽只支持依据该列所有内容自适应宽度\n this._resetFrozenColCount();\n this.renderAsync();\n }\n }\n /** 获取单元格展示值 */\n getCellValue(col: number, row: number): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n const customMergeText = this.getCustomMergeValue(col, row);\n if (customMergeText) {\n return customMergeText;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n const { field, fieldFormat } = table.internalProps.layoutMap.getBody(col, row);\n return table.getFieldData(fieldFormat || field, col, row);\n }\n /** 获取单元格展示数据的format前的值 */\n getCellOriginValue(col: number, row: number): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n return table.getFieldData(field, col, row);\n }\n /** 获取单元格展示数据源最原始值 */\n getCellRawValue(col: number, row: number): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n return table.getRawFieldData(field, col, row);\n }\n /** @private */\n getRecordIndexByCell(col: number, row: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getRecordIndexByCell(col, row);\n }\n\n getTableIndexByRecordIndex(recordIndex: number) {\n if (this.transpose) {\n return this.dataSource.getTableIndex(recordIndex) + this.rowHeaderLevelCount;\n }\n return this.dataSource.getTableIndex(recordIndex) + this.columnHeaderLevelCount;\n }\n getTableIndexByField(field: FieldDef) {\n const colObj = this.internalProps.layoutMap.columnObjects.find((col: any) => col.field === field);\n const layoutRange = this.internalProps.layoutMap.getBodyLayoutRangeById(colObj.id);\n if (this.transpose) {\n return layoutRange.start.row;\n }\n return layoutRange.start.col;\n }\n /**\n * 根据数据源中的index和field获取单元格行列号\n * @param field\n * @param recordIndex\n * @returns\n */\n getCellAddrByFieldRecord(field: FieldDef, recordIndex: number): CellAddress {\n if (this.transpose) {\n return { col: this.getTableIndexByRecordIndex(recordIndex), row: this.getTableIndexByField(field) };\n }\n return { col: this.getTableIndexByField(field), row: this.getTableIndexByRecordIndex(recordIndex) };\n }\n /**\n *\n * @param field 获取整体数据记录。可编辑单元格的话 对应编辑后format前\n * @param col\n * @param row\n */\n getCellOriginRecord(col: number, row: number): MaybePromiseOrUndefined {\n const table = this;\n const index = table.getRecordIndexByCell(col, row);\n if (index > -1) {\n return table.dataSource.get(index);\n }\n return undefined;\n }\n /**\n *\n * @param field 获取整体数据记录。可编辑的话 对应编辑前\n * @param col\n * @param row\n */\n getCellRawRecord(col: number, row: number): MaybePromiseOrUndefined {\n const table = this;\n const index = table.getRecordIndexByCell(col, row);\n if (index > -1) {\n return table.dataSource.getRaw(index);\n }\n return undefined;\n }\n /**\n * 该列是否可调整列宽\n * @param col\n * @returns\n */\n _canResizeColumn(col: number, row: number): boolean {\n const ifCan = super._canResizeColumn(col, row);\n if (ifCan) {\n if (!this.transpose) {\n // 列上是否配置了禁止拖拽列宽的配置项disableColumnResize\n const cellDefine = this.internalProps.layoutMap.getBody(col, this.columnHeaderLevelCount);\n if (cellDefine?.disableColumnResize) {\n return false;\n }\n }\n }\n return ifCan;\n }\n updateOption(options: ListTableConstructorOptions, accelerateFirstScreen = false) {\n const internalProps = this.internalProps;\n super.updateOption(options);\n //分页配置\n this.pagination = options.pagination;\n //更新protectedSpace\n this.showHeader = options.showHeader ?? true;\n internalProps.columns = options.columns\n ? cloneDeep(options.columns)\n : options.header\n ? cloneDeep(options.header)\n : [];\n // 处理转置\n this.transpose = options.transpose ?? false;\n // 更新表头\n this.refreshHeader();\n\n // this.hasMedia = null; // 避免重复绑定\n // 清空目前数据\n if (internalProps.releaseList) {\n internalProps.releaseList.forEach(releaseObj => releaseObj?.release?.());\n internalProps.releaseList = null;\n }\n // // 恢复selection状态\n // internalProps.selection.range = range;\n // this._updateSize();\n // 传入新数据\n if (options.dataSource) {\n _setDataSource(this, options.dataSource);\n } else if (options.records) {\n this.setRecords(options.records as any, options.sortState);\n } else {\n this._resetFrozenColCount();\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n this.render();\n }\n if (options.title) {\n internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n return new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n }\n /**\n * 更新页码\n * @param pagination 修改页码\n */\n updatePagination(pagination: IPagination): void {\n if (this.pagination) {\n typeof pagination.currentPage === 'number' &&\n pagination.currentPage >= 0 &&\n (this.pagination.currentPage = pagination.currentPage);\n pagination.perPageCount &&\n (this.pagination.perPageCount = pagination.perPageCount || this.pagination.perPageCount);\n // 清空单元格内容\n this.scenegraph.clearCells();\n //数据源缓存数据更新\n this.dataSource.updatePagination(this.pagination);\n this.refreshRowColCount();\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n this.renderAsync();\n }\n }\n /** @private */\n refreshHeader(): void {\n const table = this;\n const internalProps = table.internalProps;\n const transpose = table.transpose;\n const showHeader = table.showHeader;\n const layoutMap = (internalProps.layoutMap = new SimpleHeaderLayoutMap(\n this,\n internalProps.columns ?? [],\n showHeader,\n table.options.hierarchyIndent\n ));\n\n layoutMap.transpose = transpose;\n\n if (!transpose) {\n //设置列宽 这里需要优化,考虑转置表格的情况 transpose,转置表格不需要设置colWidth TODO\n for (let col = 0; col < layoutMap.columnWidths.length; col++) {\n const { width, minWidth, maxWidth } = layoutMap.columnWidths?.[col] ?? {};\n // width 为 \"auto\" 时先不存储ColWidth\n if (width && ((typeof width === 'string' && width !== 'auto') || (typeof width === 'number' && width > 0))) {\n table._setColWidth(col, width);\n }\n if (minWidth && ((typeof minWidth === 'number' && minWidth > 0) || typeof minWidth === 'string')) {\n table.setMinColWidth(col, minWidth);\n }\n if (maxWidth && ((typeof maxWidth === 'number' && maxWidth > 0) || typeof maxWidth === 'string')) {\n table.setMaxColWidth(col, maxWidth);\n }\n }\n }\n //刷新表头,原来这里是_refreshRowCount 后改名为_refreshRowColCount 因为表头定义会影响行数,而转置模式下会影响列数\n this.refreshRowColCount();\n }\n\n refreshRowColCount(): void {\n const table = this;\n const { layoutMap } = table.internalProps;\n if (!layoutMap) {\n return;\n }\n layoutMap.recordsCount = table.internalProps.dataSource?.length ?? 0;\n if (table.transpose) {\n table.rowCount = layoutMap.rowCount ?? 0;\n table.colCount =\n (table.internalProps.dataSource?.length ?? 0) * layoutMap.bodyRowSpanCount + layoutMap.headerLevelCount;\n table.frozenRowCount = 0;\n // table.frozenColCount = layoutMap.headerLevelCount; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n this.internalProps.frozenColCount = layoutMap.headerLevelCount ?? 0;\n table.rightFrozenColCount = this.options.rightFrozenColCount ?? 0;\n } else {\n table.colCount = layoutMap.colCount ?? 0;\n table.rowCount =\n (table.internalProps.dataSource?.length ?? 0) * layoutMap.bodyRowSpanCount + layoutMap.headerLevelCount;\n // table.frozenColCount = table.options.frozenColCount ?? 0; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n this.internalProps.frozenColCount = this.options.frozenColCount ?? 0;\n table.frozenRowCount = layoutMap.headerLevelCount;\n\n table.bottomFrozenRowCount = this.options.bottomFrozenRowCount ?? 0;\n table.rightFrozenColCount = this.options.rightFrozenColCount ?? 0;\n }\n this.stateManager.setFrozenCol(this.internalProps.frozenColCount);\n }\n /**\n * 获取records数据源中 字段对应的value 值是format之后的\n * @param field\n * @param col\n * @param row\n * @returns\n */\n getFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n if (field === null) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return null;\n }\n const index = table.getRecordIndexByCell(col, row);\n return table.internalProps.dataSource.getField(index, field, col, row, this);\n }\n /**\n * 获取records数据源中 字段对应的value 值是数据源中原始值\n * @param field\n * @param col\n * @param row\n * @returns\n */\n getRawFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n if (field === null) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return null;\n }\n const index = table.getRecordIndexByCell(col, row);\n return table.internalProps.dataSource.getRawField(index, field, col, row, this);\n }\n /**\n * 拖拽移动表头位置\n * @param source 移动源位置\n * @param target 移动目标位置\n */\n moveHeaderPosition(source: CellAddress, target: CellAddress) {\n // 调用布局类 布局数据结构调整为移动位置后的\n const moveContext = this.internalProps.layoutMap.moveHeaderPosition(source, target);\n if (moveContext) {\n if (moveContext.moveType === 'column') {\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n this.colWidthsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.moveSize);\n if (!this.transpose) {\n //下面代码取自refreshHeader列宽设置逻辑\n //设置列宽极限值 TODO 目前是有问题的 最大最小宽度限制 移动列位置后不正确\n this.colWidthsLimit = {}; //需要先清空\n for (let col = 0; col < this.internalProps.layoutMap.columnWidths.length; col++) {\n const { minWidth, maxWidth } = this.internalProps.layoutMap.columnWidths?.[col] ?? {};\n if (minWidth && ((typeof minWidth === 'number' && minWidth > 0) || typeof minWidth === 'string')) {\n this.setMinColWidth(col, minWidth);\n }\n if (maxWidth && ((typeof maxWidth === 'number' && maxWidth > 0) || typeof maxWidth === 'string')) {\n this.setMaxColWidth(col, maxWidth);\n }\n }\n }\n // 清空相关缓存\n const colStart = Math.min(moveContext.sourceIndex, moveContext.targetIndex);\n const colEnd = Math.max(moveContext.sourceIndex, moveContext.targetIndex);\n for (let col = colStart; col <= colEnd; col++) {\n this._clearColRangeWidthsMap(col);\n }\n } else {\n // 清空相关缓存\n const rowStart = Math.min(moveContext.sourceIndex, moveContext.targetIndex);\n const rowEnd = Math.max(moveContext.sourceIndex, moveContext.targetIndex);\n for (let row = rowStart; row <= rowEnd; row++) {\n this._clearRowRangeHeightsMap(row);\n }\n }\n return true;\n }\n return false;\n }\n\n /**\n * 方法适用于获取body中某条数据的行列号\n * @param findTargetRecord 通过数据对象或者指定函数来计算数据条目index\n * @param field\n * @returns\n */\n getCellAddress(findTargetRecord: any | ((record: any) => boolean), field: FieldDef): CellAddress {\n let targetRecordIndex: number;\n\n for (let i = 0; i < this.internalProps.records.length; i++) {\n const record = this.internalProps.records[i];\n if (typeof findTargetRecord === 'function') {\n if ((<Function>findTargetRecord)(record)) {\n targetRecordIndex = i;\n }\n } else {\n let isAllRight = true;\n for (const prop in findTargetRecord) {\n if (record[prop] !== findTargetRecord[prop]) {\n isAllRight = false;\n break;\n }\n }\n if (isAllRight) {\n targetRecordIndex = i;\n }\n }\n if (isValid(targetRecordIndex)) {\n break;\n }\n }\n const cellRange = this.getCellRangeByField(field, targetRecordIndex);\n if (cellRange) {\n return { row: cellRange.start.row, col: cellRange.start.col };\n }\n return undefined;\n }\n /**\n * 获取指定field及指定数据条index的单元格位置\n * @param {*} field\n * @param {number} index 要获取的第几条数据\n * @return {number} 返回单元格的坐标范围 TODO 转置表有问题bug\n */\n getCellRangeByField(field: FieldDef, index: number): CellRange | null {\n const { layoutMap } = this.internalProps;\n const colObj = layoutMap.columnObjects.find((col: any) => col.field === field);\n if (colObj) {\n const layoutRange = layoutMap.getBodyLayoutRangeById(colObj.id);\n let startRow;\n if (isValid(index)) {\n startRow = layoutMap.getRecordStartRowByRecordIndex(index);\n }\n if (this.transpose) {\n return {\n start: {\n row: layoutRange.start.row,\n col: isValid(startRow) ? startRow + layoutRange.start.col : undefined\n },\n end: {\n row: layoutRange.end.row,\n col: isValid(startRow) ? startRow + layoutRange.end.col : undefined\n }\n };\n }\n return {\n start: {\n col: layoutRange.start.col,\n row: isValid(startRow) ? startRow + layoutRange.start.row : undefined // layoutRange.start.row这里是0 所以无意义\n },\n end: {\n col: layoutRange.end.col,\n row: isValid(startRow) ? startRow + layoutRange.end.row : undefined // layoutRange.start.row这里是0 所以无意义\n }\n };\n }\n return null;\n }\n /**\n * 获取层级节点收起展开的状态\n * @param col\n * @param row\n * @returns\n */\n getHierarchyState(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row);\n if (!define.tree) {\n return HierarchyState.none;\n }\n const index = this.getRecordIndexByCell(col, row);\n return this.dataSource.getHierarchyState(index);\n }\n /**\n * 表头切换层级状态\n * @param col\n * @param row\n */\n toggleHierarchyState(col: number, row: number) {\n const hierarchyState = this.getHierarchyState(col, row);\n if (hierarchyState === HierarchyState.expand) {\n this._refreshHierarchyState(col, row);\n this.fireListeners(TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.collapse\n });\n } else if (hierarchyState === HierarchyState.collapse) {\n const record = this.getCellOriginRecord(col, row);\n if (Array.isArray(record.children)) {\n this._refreshHierarchyState(col, row);\n }\n this.fireListeners(TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.expand,\n originData: record\n });\n }\n }\n /** 刷新当前节点收起展开状态,如手动更改过 */\n _refreshHierarchyState(col: number, row: number) {\n const index = this.getRecordIndexByCell(col, row);\n const diffDataIndices = this.dataSource.toggleHierarchyState(index);\n const diffPositions = this.internalProps.layoutMap.toggleHierarchyState(diffDataIndices);\n //影响行数\n this.refreshRowColCount();\n\n this.clearCellStyleCache();\n this.scenegraph.updateHierarchyIcon(col, row);\n this.scenegraph.updateRow(diffPositions.removeCellPositions, diffPositions.addCellPositions);\n }\n\n _hasHierarchyTreeHeader() {\n return (this.options.columns ?? this.options.header)?.some((column, i) => column.tree);\n }\n\n getMenuInfo(col: number, row: number, type: string): DropDownMenuEventInfo {\n const result: DropDownMenuEventInfo = {\n field: this.getHeaderField(col, row),\n value: this.getCellValue(col, row),\n cellLocation: this.getCellLocation(col, row)\n };\n return result;\n }\n protected _getSortFuncFromHeaderOption(\n columns: ColumnsDefine | undefined,\n field: FieldDef,\n fieldKey?: FieldKeyDef\n ): ((v1: any, v2: any, order: SortOrder) => 0 | 1 | -1) | undefined {\n if (!columns) {\n columns = this.internalProps.columns;\n }\n if (field && columns && columns.length > 0) {\n for (let i = 0; i < columns.length; i++) {\n const header = columns[i];\n if (\n ((fieldKey && fieldKey === header.fieldKey) || (!fieldKey && header.field === field)) &&\n header.sort &&\n typeof header.sort === 'function'\n ) {\n return header.sort;\n } else if (header.columns) {\n const sort = this._getSortFuncFromHeaderOption(header.columns, field, fieldKey);\n if (sort) {\n return sort;\n }\n }\n }\n }\n return undefined;\n }\n /**\n * 更新排序状态\n * @param sortState 要设置的排序状态\n * @param executeSort 是否执行内部排序逻辑,设置false将只更新图标状态\n */\n updateSortState(sortState: SortState[] | SortState | null, executeSort: boolean = true) {\n if (!sortState) {\n // 解除排序状态\n if (this.internalProps.sortState) {\n if (Array.isArray(this.internalProps.sortState)) {\n for (let i = 0; i < (<SortState[]>this.internalProps.sortState).length; i++) {\n const sortState: SortState = this.internalProps.sortState[i];\n sortState.order = 'normal';\n }\n } else {\n (<SortState>this.internalProps.sortState).order = 'normal';\n }\n }\n } else {\n this.internalProps.sortState = sortState;\n // 这里的sortState需要有field属性\n // this.stateManager.setSortState(sortState as SortState);\n }\n let order: any;\n let field: any;\n let fieldKey: any;\n if (Array.isArray(this.internalProps.sortState)) {\n ({ order, field, fieldKey } = this.internalProps.sortState?.[0]);\n } else {\n ({ order, field, fieldKey } = this.internalProps.sortState as SortState);\n }\n if (field && executeSort) {\n const sortFunc = this._getSortFuncFromHeaderOption(this.internalProps.columns, field, fieldKey);\n let hd;\n if (fieldKey) {\n hd = this.internalProps.layoutMap.headerObjects.find((col: any) => col && col.fieldKey === fieldKey);\n } else {\n hd = this.internalProps.layoutMap.headerObjects.find((col: any) => col && col.field === field);\n }\n if (hd?.define?.sort) {\n this.dataSource.sort(hd.field, order, sortFunc);\n\n // clear cell range cache\n this.internalProps.layoutMap.clearCellRangeMap();\n this.scenegraph.sortCell();\n }\n }\n this.stateManager.updateSortState(sortState as SortState);\n }\n /** 获取某个字段下checkbox 全部数据的选中状态 顺序对应原始传入数据records 不是对应表格展示row的状态值 */\n getCheckboxState(field?: string | number) {\n if (this.stateManager.checkedState.length < this.rowCount - this.columnHeaderLevelCount) {\n this.stateManager.initLeftRecordsCheckState(this.records);\n }\n if (isValid(field)) {\n return this.stateManager.checkedState.map(state => {\n return state[field];\n });\n }\n return this.stateManager.checkedState;\n }\n /** 获取某个单元格checkbox的状态 */\n getCellCheckboxState(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row);\n const field = define?.field;\n const cellType = define?.cellType;\n if (isValid(field) && cellType === 'checkbox') {\n const dataIndex = this.dataSource.getIndexKey(this.getRecordIndexByCell(col, row));\n return this.stateManager.checkedState[dataIndex as number][field as string | number];\n }\n return undefined;\n }\n /**\n * 设置表格数据 及排序状态\n * @param records\n * @param sort\n */\n setRecords(records: Array<any>, sort?: SortState | SortState[]): void {\n const time = typeof window !== 'undefined' ? window.performance.now() : 0;\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n // 清空单元格内容\n this.scenegraph.clearCells();\n\n //重复逻辑抽取updateWidthHeight\n if (sort !== undefined) {\n this.internalProps.sortState = sort;\n this.stateManager.setSortState((this as any).sortState as SortState);\n }\n if (records) {\n _setRecords(this, records);\n if ((this as any).sortState) {\n let order: any;\n let field: any;\n let fieldKey: any;\n if (Array.isArray((this as any).sortState)) {\n if ((this as any).sortState.length !== 0) {\n ({ order, field, fieldKey } = (this as any).sortState?.[0]);\n }\n } else {\n ({ order, field, fieldKey } = (this as any).sortState as SortState);\n }\n // 根据sort规则进行排序\n if (order && field && order !== 'normal') {\n const sortFunc = this._getSortFuncFromHeaderOption(undefined, field, fieldKey);\n // 如果sort传入的信息不能生成正确的sortFunc,直接更新表格,避免首次加载无法正常显示内容\n let hd;\n if (fieldKey) {\n hd = this.internalProps.layoutMap.headerObjects.find((col: any) => col && col.fieldKey === fieldKey);\n } else {\n hd = this.internalProps.layoutMap.headerObjects.find((col: any) => col && col.field === field);\n }\n // hd?.define?.sort && //如果这里也判断 那想要利用sortState来排序 但不显示排序图标就实现不了\n this.dataSource.sort(hd.field, order, sortFunc ?? defaultOrderFn);\n }\n }\n this.refreshRowColCount();\n } else {\n _setRecords(this, records);\n }\n this.stateManager.initCheckedState(records);\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n if (this.internalProps.title && !this.internalProps.title.isReleased) {\n this._updateSize();\n this.internalProps.title.resize();\n this.scenegraph.resize();\n }\n\n this.render();\n console.log('setRecords cost time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time);\n }\n /**\n * 基本表格树形展示场景下,如果需要动态插入子节点的数据可以配合使用该接口,其他情况不适用\n * @param col col position of the record, it is optional\n * @param row row position of the record, it is optional\n */\n setRecordChildren(records: any[], col: number, row: number) {\n const record = this.getCellOriginRecord(col, row);\n record.children = records;\n const index = this.getRecordIndexByCell(col, row);\n this.dataSource.setRecord(record, index);\n this._refreshHierarchyState(col, row);\n }\n /** 开启单元格编辑 */\n startEditCell(col?: number, row?: number) {\n if (isValid(col) && isValid(row)) {\n this.editorManager.startEditCell(col, row);\n } else if (this.stateManager.select?.cellPos) {\n const { col, row } = this.stateManager.select.cellPos;\n if (isValid(col) && isValid(row)) {\n this.editorManager.startEditCell(col, row);\n }\n }\n }\n /** 结束编辑 */\n completeEditCell() {\n this.editorManager.completeEdit();\n }\n /** 获取单元格对应的编辑器 */\n getEditor(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row);\n let editorDefine = define?.editor ?? this.options.editor;\n\n if (typeof editorDefine === 'function') {\n const arg = {\n col,\n row,\n dataValue: this.getCellOriginValue(col, row),\n value: this.getCellValue(col, row) || '',\n table: this\n };\n editorDefine = (editorDefine as Function)(arg);\n }\n if (typeof editorDefine === 'string') {\n return editors.get(editorDefine);\n }\n return editorDefine as IEditor;\n }\n /** 更改单元格数据 会触发change_cell_value事件*/\n changeCellValue(col: number, row: number, value: string | number | null) {\n const recordIndex = this.getRecordIndexByCell(col, row);\n const { field } = this.internalProps.layoutMap.getBody(col, row);\n this.dataSource.changeFieldValue(value, recordIndex, field, col, row, this);\n // const cell_value = this.getCellValue(col, row);\n this.scenegraph.updateCellContent(col, row);\n if (this.widthMode === 'adaptive' || (this.autoFillWidth && this.getAllColsWidth() <= this.tableNoFrameWidth)) {\n if (this.internalProps._widthResizedColMap.size === 0) {\n //如果没有手动调整过行高列宽 则重新计算一遍并重新分配\n this.scenegraph.recalculateColWidths();\n }\n } else if (!this.internalProps._widthResizedColMap.has(col)) {\n const oldWidth = this.getColWidth(col);\n const newWidth = computeColWidth(col, 0, this.rowCount - 1, this, false);\n if (newWidth !== oldWidth) {\n this.scenegraph.updateColWidth(col, newWidth - oldWidth);\n }\n }\n if (this.heightMode === 'adaptive' || (this.autoFillHeight && this.getAllRowsHeight() <= this.tableNoFrameHeight)) {\n this.scenegraph.recalculateRowHeights();\n } else if (this.heightMode === 'autoHeight') {\n const oldHeight = this.getRowHeight(row);\n const newHeight = computeRowHeight(row, 0, this.colCount - 1, this);\n this.scenegraph.updateRowHeight(row, newHeight - oldHeight);\n }\n this.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {\n col,\n row,\n rawValue: this.getCellRawValue(col, row),\n changedValue: this.getCellOriginValue(col, row)\n });\n this.scenegraph.updateNextFrame();\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { FieldData, FieldDef, FieldFormat, SortRules, PivotSortState, CellAddress, ICellHeaderPaths, DropDownMenuEventInfo, FieldKeyDef, IDimensionInfo, SortOrder, PivotChartConstructorOptions, AnyFunction, FilterRules, IPivotTableCellHeaderPaths, PivotChartAPI } from './ts-types';
1
+ import type { FieldData, FieldDef, SortRules, PivotSortState, CellAddress, ICellHeaderPaths, DropDownMenuEventInfo, FieldKeyDef, IDimensionInfo, SortOrder, PivotChartConstructorOptions, AnyFunction, FilterRules, IPivotTableCellHeaderPaths, PivotChartAPI } from './ts-types';
2
2
  import { HierarchyState } from './ts-types';
3
3
  import { PIVOT_CHART_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';
4
4
  import { Dataset } from './dataset/dataset';
@@ -40,10 +40,11 @@ export declare class PivotChart extends BaseTable implements PivotChartAPI {
40
40
  getCellAddrByFieldRecord(field: FieldDef, recordIndex: number): CellAddress;
41
41
  getBodyIndexByRow(row: number): number;
42
42
  getBodyIndexByCol(col: number): number;
43
- getFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData;
44
43
  getCellValue(col: number, row: number): FieldData;
45
44
  getCellOriginValue(col: number, row: number): FieldData;
45
+ getCellRawValue(col: number, row: number): any;
46
46
  getCellOriginRecord(col: number, row: number): any[];
47
+ getCellRawRecord(col: number, row: number): any[];
47
48
  updateSortRules(sortRules: SortRules): void;
48
49
  updatePivotSortState(pivotSortStateConfig: {
49
50
  dimensions: IDimensionInfo[];
@@ -59,7 +60,7 @@ export declare class PivotChart extends BaseTable implements PivotChartAPI {
59
60
  y: number;
60
61
  }): ICellHeaderPaths;
61
62
  getHierarchyState(col: number, row: number): HierarchyState;
62
- hasHierarchyTreeHeader(): boolean;
63
+ _hasHierarchyTreeHeader(): boolean;
63
64
  getMenuInfo(col: number, row: number, type: string): DropDownMenuEventInfo;
64
65
  private _generateCollectValuesConfig;
65
66
  private _generateAggregationRules;
package/cjs/PivotChart.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.PivotChart = void 0;
6
6
 
7
- const ts_types_1 = require("./ts-types"), ts_types_2 = require("./ts-types"), DataSource_1 = require("./data/DataSource"), pivot_header_layout_1 = require("./layout/pivot-header-layout"), PIVOT_TABLE_EVENT_TYPE_1 = require("./ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE"), helper_1 = require("./tools/helper"), dataset_1 = require("./dataset/dataset"), BaseTable_1 = require("./core/BaseTable"), update_chart_1 = require("./scenegraph/refresh-node/update-chart"), vutils_1 = require("@visactor/vutils"), title_1 = require("./components/title/title"), env_1 = require("./tools/env"), TABLE_EVENT_TYPE_1 = require("./core/TABLE_EVENT_TYPE");
7
+ const ts_types_1 = require("./ts-types"), ts_types_2 = require("./ts-types"), pivot_header_layout_1 = require("./layout/pivot-header-layout"), PIVOT_TABLE_EVENT_TYPE_1 = require("./ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE"), helper_1 = require("./tools/helper"), dataset_1 = require("./dataset/dataset"), BaseTable_1 = require("./core/BaseTable"), update_chart_1 = require("./scenegraph/refresh-node/update-chart"), vutils_1 = require("@visactor/vutils"), title_1 = require("./components/title/title"), env_1 = require("./tools/env"), TABLE_EVENT_TYPE_1 = require("./core/TABLE_EVENT_TYPE");
8
8
 
9
9
  class PivotChart extends BaseTable_1.BaseTable {
10
10
  constructor(container, options) {
@@ -130,21 +130,8 @@ class PivotChart extends BaseTable_1.BaseTable {
130
130
  const {layoutMap: layoutMap} = this.internalProps;
131
131
  return layoutMap.getBodyIndexByCol(col);
132
132
  }
133
- getFieldData(field, col, row) {
134
- var _a;
135
- if (null == field) return null;
136
- const table = this;
137
- if (table.internalProps.layoutMap.isHeader(col, row)) return null;
138
- const rowIndex = this.getBodyIndexByRow(row), colIndex = this.getBodyIndexByCol(col), dataValue = null === (_a = table.dataSource) || void 0 === _a ? void 0 : _a.getField(rowIndex, colIndex, col, row, this);
139
- if ("string" != typeof field) {
140
- const cellHeaderPaths = table.internalProps.layoutMap.getCellHeaderPaths(col, row);
141
- return (0, DataSource_1.getField)(Object.assign({
142
- dataValue: dataValue
143
- }, cellHeaderPaths), field, col, row, this, helper_1.emptyFn);
144
- }
145
- return dataValue;
146
- }
147
133
  getCellValue(col, row) {
134
+ var _a;
148
135
  const customMergeText = this.getCustomMergeValue(col, row);
149
136
  if (customMergeText) return customMergeText;
150
137
  if (this.internalProps.layoutMap.isHeader(col, row)) {
@@ -161,10 +148,16 @@ class PivotChart extends BaseTable_1.BaseTable {
161
148
  })), aggregator = this.dataset.getAggregator(this.internalProps.layoutMap.indicatorsAsCol ? rowKeys : rowKeys.slice(0, -1), this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys, this.internalProps.layoutMap.getIndicatorKey(col, row));
162
149
  return aggregator.value ? aggregator.value() : void 0;
163
150
  }
164
- const {field: field, fieldFormat: fieldFormat} = this.internalProps.layoutMap.getBody(col, row);
165
- return this.getFieldData(fieldFormat || field, col, row);
151
+ const {fieldFormat: fieldFormat} = this.internalProps.layoutMap.getBody(col, row), rowIndex = this.getBodyIndexByRow(row), colIndex = this.getBodyIndexByCol(col), dataValue = null === (_a = this.records[rowIndex]) || void 0 === _a ? void 0 : _a[colIndex], cellHeaderPaths = this.internalProps.layoutMap.getCellHeaderPaths(col, row);
152
+ if ("function" == typeof fieldFormat) {
153
+ return fieldFormat(Object.assign({
154
+ dataValue: dataValue
155
+ }, cellHeaderPaths), col, row, this);
156
+ }
157
+ return dataValue;
166
158
  }
167
159
  getCellOriginValue(col, row) {
160
+ var _a;
168
161
  const table = this;
169
162
  if (table.internalProps.layoutMap.isHeader(col, row)) {
170
163
  const {title: title} = table.internalProps.layoutMap.getHeader(col, row);
@@ -180,8 +173,11 @@ class PivotChart extends BaseTable_1.BaseTable {
180
173
  })), aggregator = this.dataset.getAggregator(this.internalProps.layoutMap.indicatorsAsCol ? rowKeys : rowKeys.slice(0, -1), this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys, this.internalProps.layoutMap.getIndicatorKey(col, row));
181
174
  return aggregator.value ? aggregator.value() : void 0;
182
175
  }
183
- const {field: field} = table.internalProps.layoutMap.getBody(col, row);
184
- return table.getFieldData(field, col, row);
176
+ const rowIndex = this.getBodyIndexByRow(row), colIndex = this.getBodyIndexByCol(col);
177
+ return null === (_a = this.records[rowIndex]) || void 0 === _a ? void 0 : _a[colIndex];
178
+ }
179
+ getCellRawValue(col, row) {
180
+ return this.getCellOriginValue(col, row);
185
181
  }
186
182
  getCellOriginRecord(col, row) {
187
183
  if (!this.internalProps.layoutMap.isHeader(col, row) && this.dataset) {
@@ -195,6 +191,9 @@ class PivotChart extends BaseTable_1.BaseTable {
195
191
  return this.dataset.getAggregator(this.internalProps.layoutMap.indicatorsAsCol ? rowKeys : rowKeys.slice(0, -1), this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys, this.internalProps.layoutMap.getIndicatorKey(col, row)).records;
196
192
  }
197
193
  }
194
+ getCellRawRecord(col, row) {
195
+ return this.getCellOriginRecord(col, row);
196
+ }
198
197
  updateSortRules(sortRules) {
199
198
  this.internalProps.dataConfig.sortRules = sortRules, this.dataset.updateSortRules(sortRules),
200
199
  this.internalProps.layoutMap.updateDataset(this.dataset), this.render();
@@ -274,7 +273,7 @@ class PivotChart extends BaseTable_1.BaseTable {
274
273
  var _a;
275
274
  return null === (_a = this._getHeaderLayoutMap(col, row)) || void 0 === _a ? void 0 : _a.hierarchyState;
276
275
  }
277
- hasHierarchyTreeHeader() {
276
+ _hasHierarchyTreeHeader() {
278
277
  return "tree" === this.internalProps.layoutMap.rowHierarchyType;
279
278
  }
280
279
  getMenuInfo(col, row, type) {