@visactor/vtable 0.22.0 → 0.22.2-alpha.0

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 (103) hide show
  1. package/cjs/ListTable.js.map +1 -1
  2. package/cjs/body-helper/style/Style.d.ts +3 -0
  3. package/cjs/body-helper/style/Style.js +22 -15
  4. package/cjs/body-helper/style/Style.js.map +1 -1
  5. package/cjs/core/BaseTable.d.ts +1 -1
  6. package/cjs/core/BaseTable.js +23 -8
  7. package/cjs/core/BaseTable.js.map +1 -1
  8. package/cjs/data/DataSource.js +5 -1
  9. package/cjs/data/DataSource.js.map +1 -1
  10. package/cjs/event/event.js +2 -1
  11. package/cjs/event/event.js.map +1 -1
  12. package/cjs/header-helper/style/Style.d.ts +3 -0
  13. package/cjs/header-helper/style/Style.js +26 -19
  14. package/cjs/header-helper/style/Style.js.map +1 -1
  15. package/cjs/index.d.ts +1 -1
  16. package/cjs/index.js +1 -1
  17. package/cjs/index.js.map +1 -1
  18. package/cjs/layout/pivot-header-layout.js +1 -1
  19. package/cjs/layout/pivot-header-layout.js.map +1 -1
  20. package/cjs/scenegraph/component/custom.js +1 -1
  21. package/cjs/scenegraph/component/custom.js.map +1 -1
  22. package/cjs/scenegraph/group-creater/cell-helper.d.ts +1 -0
  23. package/cjs/scenegraph/group-creater/cell-helper.js +19 -27
  24. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  25. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js +5 -4
  26. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  27. package/cjs/scenegraph/group-creater/column-helper.js +3 -2
  28. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  29. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +1 -1
  30. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  31. package/cjs/scenegraph/group-creater/progress/proxy.js +1 -1
  32. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  33. package/cjs/scenegraph/layout/compute-col-width.js +7 -4
  34. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  35. package/cjs/scenegraph/layout/compute-row-height.js +70 -71
  36. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  37. package/cjs/scenegraph/layout/update-height.js +18 -11
  38. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  39. package/cjs/scenegraph/layout/update-width.js +19 -13
  40. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  41. package/cjs/scenegraph/select/update-select-border.d.ts +2 -0
  42. package/cjs/scenegraph/select/update-select-border.js +19 -2
  43. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  44. package/cjs/scenegraph/utils/text-icon-layout.js +1 -1
  45. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  46. package/cjs/scenegraph/utils/text-measure.js +6 -6
  47. package/cjs/scenegraph/utils/text-measure.js.map +1 -1
  48. package/cjs/ts-types/new-data-set.d.ts +2 -1
  49. package/cjs/ts-types/new-data-set.js.map +1 -1
  50. package/cjs/vrender.js.map +1 -1
  51. package/dist/vtable.js +245 -172
  52. package/dist/vtable.min.js +2 -2
  53. package/es/ListTable.js.map +1 -1
  54. package/es/body-helper/style/Style.d.ts +3 -0
  55. package/es/body-helper/style/Style.js +22 -15
  56. package/es/body-helper/style/Style.js.map +1 -1
  57. package/es/core/BaseTable.d.ts +1 -1
  58. package/es/core/BaseTable.js +22 -8
  59. package/es/core/BaseTable.js.map +1 -1
  60. package/es/data/DataSource.js +5 -1
  61. package/es/data/DataSource.js.map +1 -1
  62. package/es/event/event.js +2 -1
  63. package/es/event/event.js.map +1 -1
  64. package/es/header-helper/style/Style.d.ts +3 -0
  65. package/es/header-helper/style/Style.js +26 -19
  66. package/es/header-helper/style/Style.js.map +1 -1
  67. package/es/index.d.ts +1 -1
  68. package/es/index.js +1 -1
  69. package/es/index.js.map +1 -1
  70. package/es/layout/pivot-header-layout.js +1 -1
  71. package/es/layout/pivot-header-layout.js.map +1 -1
  72. package/es/scenegraph/component/custom.js +1 -1
  73. package/es/scenegraph/component/custom.js.map +1 -1
  74. package/es/scenegraph/group-creater/cell-helper.d.ts +1 -0
  75. package/es/scenegraph/group-creater/cell-helper.js +14 -25
  76. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  77. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js +6 -3
  78. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  79. package/es/scenegraph/group-creater/column-helper.js +5 -4
  80. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  81. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +1 -1
  82. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  83. package/es/scenegraph/group-creater/progress/proxy.js +1 -1
  84. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  85. package/es/scenegraph/layout/compute-col-width.js +6 -4
  86. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  87. package/es/scenegraph/layout/compute-row-height.js +69 -70
  88. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  89. package/es/scenegraph/layout/update-height.js +16 -9
  90. package/es/scenegraph/layout/update-height.js.map +1 -1
  91. package/es/scenegraph/layout/update-width.js +19 -10
  92. package/es/scenegraph/layout/update-width.js.map +1 -1
  93. package/es/scenegraph/select/update-select-border.d.ts +2 -0
  94. package/es/scenegraph/select/update-select-border.js +16 -0
  95. package/es/scenegraph/select/update-select-border.js.map +1 -1
  96. package/es/scenegraph/utils/text-icon-layout.js +1 -1
  97. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  98. package/es/scenegraph/utils/text-measure.js +6 -6
  99. package/es/scenegraph/utils/text-measure.js.map +1 -1
  100. package/es/ts-types/new-data-set.d.ts +2 -1
  101. package/es/ts-types/new-data-set.js.map +1 -1
  102. package/es/vrender.js.map +1 -1
  103. package/package.json +5 -5
@@ -249,7 +249,11 @@ export class DataSource extends EventTarget {
249
249
  }
250
250
  if ("string" == typeof field || "number" == typeof field) {
251
251
  const beforeChangedValue = this.beforeChangedRecordsMap[dataIndex][field], record = this.getOriginalRecord(dataIndex);
252
- "number" == typeof beforeChangedValue && isAllDigits(value) ? record[field] = parseFloat(value) : record[field] = value;
252
+ let formatValue = value;
253
+ "number" == typeof beforeChangedValue && isAllDigits(value) && (formatValue = parseFloat(value)),
254
+ isPromise(record) ? record.then((record => {
255
+ record[field] = formatValue;
256
+ })).catch((err => {})) : record[field] = formatValue;
253
257
  }
254
258
  }
255
259
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/DataSource.ts"],"names":[],"mappings":"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","file":"DataSource.js","sourcesContent":["import * as sort from '../tools/sort';\nimport type {\n CustomAggregation,\n DataSourceAPI,\n FieldAssessor,\n FieldData,\n FieldDef,\n FieldFormat,\n FilterRules,\n IListTableDataConfig,\n IPagination,\n MaybePromiseOrCallOrUndefined,\n MaybePromiseOrUndefined,\n SortOrder\n} from '../ts-types';\nimport { AggregationType, HierarchyState } from '../ts-types';\nimport { applyChainSafe, getOrApply, obj, isPromise, emptyFn } from '../tools/helper';\nimport { EventTarget } from '../event/EventTarget';\nimport { getValueByPath, isAllDigits } from '../tools/util';\nimport { calculateArrayDiff } from '../tools/diff-cell';\nimport { arrayEqual, cloneDeep, isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport {\n RecordAggregator,\n type Aggregator,\n SumAggregator,\n CountAggregator,\n MaxAggregator,\n MinAggregator,\n AvgAggregator,\n NoneAggregator,\n CustomAggregator\n} from '../dataset/statistics-helper';\nimport type { ColumnData } from '../ts-types/list-table/layout-map/api';\n\n/**\n * 判断字段数据是否为访问器的格式\n * @param field\n * @returns boolean\n */\nfunction isFieldAssessor(field: FieldDef | FieldFormat | number): field is FieldAssessor {\n if (obj.isObject(field)) {\n const a = field as FieldAssessor;\n if (isValid(a.get) && isValid(a.set)) {\n return true;\n }\n }\n return false;\n}\nconst EVENT_TYPE = {\n SOURCE_LENGTH_UPDATE: 'source_length_update',\n CHANGE_ORDER: 'change_order'\n} as const;\ntype PromiseBack = (value: MaybePromiseOrUndefined) => void;\n\n/**\n * 获取到的某个filed的值 处理可能为promise的情况\n * @param value\n * @param promiseCallBack\n * @returns\n */\nfunction getValue(value: MaybePromiseOrCallOrUndefined, promiseCallBack: PromiseBack): MaybePromiseOrUndefined {\n const maybePromiseOrValue = getOrApply(value);\n if (isPromise(maybePromiseOrValue)) {\n const promiseValue = maybePromiseOrValue.then((r: any) => {\n promiseCallBack(r);\n return r;\n });\n\n promiseCallBack(promiseValue);\n return promiseValue;\n }\n return maybePromiseOrValue;\n}\n/**\n * 根据field获取数据源record对应的值 获取到的可能是个异步Promise 需要设置回调处理逻辑\n * @param record\n * @param field\n * @param promiseCallBack\n * @returns\n */\nexport function getField(\n record: MaybePromiseOrUndefined,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI,\n promiseCallBack: PromiseBack\n): FieldData {\n if (record === null || record === undefined) {\n return undefined;\n }\n if (isPromise(record)) {\n return record.then((r: any) => getField(r, field, col, row, table, promiseCallBack));\n }\n const fieldGet: any = isFieldAssessor(field) ? field.get : field;\n if (fieldGet in (record as any)) {\n const fieldResult = (record as any)[fieldGet];\n\n return getValue(fieldResult, promiseCallBack);\n }\n if (typeof fieldGet === 'function') {\n const fieldResult = fieldGet(record, col, row, table);\n return getValue(fieldResult, promiseCallBack);\n }\n if (Array.isArray(fieldGet)) {\n const fieldResult = getValueByPath(record, [...fieldGet]);\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldArray = `${fieldGet}`.split('.');\n if (fieldArray.length <= 1) {\n const fieldResult = (record as any)[fieldGet];\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldResult = applyChainSafe(\n record,\n (val, name) => getField(val, name, col, row, table, emptyFn as any),\n ...fieldArray\n );\n return getValue(fieldResult, promiseCallBack);\n}\n\nfunction _getIndex(sortedIndexMap: null | (number | number[])[], index: number): number | number[] {\n if (!sortedIndexMap) {\n return index;\n }\n const mapIndex = sortedIndexMap[index];\n return isValid(mapIndex) ? mapIndex : index;\n}\n\nexport interface DataSourceParam {\n get: (index: number) => any;\n length: number;\n source?: any;\n}\nexport interface ISortedMapItem {\n asc?: (number | number[])[];\n desc?: (number | number[])[];\n normal?: (number | number[])[];\n}\n\nexport class DataSource extends EventTarget implements DataSourceAPI {\n dataConfig: IListTableDataConfig;\n dataSourceObj: DataSourceParam | DataSource;\n private _get: (index: number | number[]) => any;\n /** 数据条目数 如果是树形结构的数据 则是第一层父节点的数量 */\n private _sourceLength: number;\n\n private _source: any;\n /**\n * 缓存按字段进行排序的结果\n */\n protected sortedIndexMap: Map<FieldDef, ISortedMapItem>;\n /**\n * 记录最近一次排序规则 当展开树形结构的节点时需要用到\n */\n private lastOrder: SortOrder;\n private lastOrderFn: (a: any, b: any, order: string) => number;\n private lastOrderField: FieldDef;\n /** 每一行对应源数据的索引 */\n currentIndexedData: (number | number[])[] | null = [];\n protected userPagination: IPagination;\n protected pagination: IPagination;\n /** 当前页每一行对应源数据的索引 */\n _currentPagerIndexedData: (number | number[])[];\n // 当前是否为层级的树形结构 排序时判断该值确实是否继续进行子节点排序\n hierarchyExpandLevel: number = 0;\n static get EVENT_TYPE(): typeof EVENT_TYPE {\n return EVENT_TYPE;\n }\n hasHierarchyStateExpand: boolean = false;\n // treeDataHierarchyState: Map<number | string, HierarchyState> = new Map();\n beforeChangedRecordsMap: Record<number, any>[] = [];\n\n // 注册聚合类型\n registedAggregators: {\n [key: string]: {\n new (dimension: string | string[], formatFun?: any, isRecord?: boolean, aggregationFun?: Function): Aggregator;\n };\n } = {};\n // columns对应各个字段的聚合类对象\n fieldAggregators: Aggregator[] = [];\n layoutColumnObjects: ColumnData[] = [];\n constructor(\n dataSourceObj?: DataSourceParam | DataSource,\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columnObjs?: ColumnData[],\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ) {\n super();\n this.registerAggregators();\n this.dataSourceObj = dataSourceObj;\n this.dataConfig = dataConfig;\n this._get = dataSourceObj?.get.bind(dataSourceObj) || (undefined as any);\n this.layoutColumnObjects = columnObjs;\n this._source = this.processRecords(dataSourceObj?.source ?? dataSourceObj);\n this._sourceLength = this._source?.length || 0;\n this.sortedIndexMap = new Map<string, ISortedMapItem>();\n\n this._currentPagerIndexedData = [];\n this.userPagination = pagination;\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n if (hierarchyExpandLevel >= 1) {\n this.hierarchyExpandLevel = hierarchyExpandLevel;\n }\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n // 初始化currentIndexedData 正常未排序。设置其状态\n if (rowHierarchyType === 'tree') {\n this.initTreeHierarchyState();\n }\n this.updatePagerData();\n }\n initTreeHierarchyState() {\n // if (this.hierarchyExpandLevel) {\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n // if (this.hierarchyExpandLevel > 1) {\n let nodeLength = this._sourceLength;\n for (let i = 0; i < nodeLength; i++) {\n const indexKey = this.currentIndexedData[i];\n const nodeData = this.getOriginalRecord(indexKey);\n if ((nodeData as any).children?.length > 0) {\n if (this.hierarchyExpandLevel > 1) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.expand);\n } else {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n this.hasHierarchyStateExpand = true;\n if (nodeData.hierarchyState === HierarchyState.collapse) {\n continue;\n }\n const childrenLength = this.initChildrenNodeHierarchy(indexKey, this.hierarchyExpandLevel, 2, nodeData);\n i += childrenLength;\n nodeLength += childrenLength;\n } else if ((nodeData as any).children === true) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n // }\n // }\n }\n\n //将聚合类型注册 收集到aggregators\n registerAggregator(type: string, aggregator: any) {\n this.registedAggregators[type] = aggregator;\n }\n //将聚合类型注册\n registerAggregators() {\n this.registerAggregator(AggregationType.RECORD, RecordAggregator);\n this.registerAggregator(AggregationType.SUM, SumAggregator);\n this.registerAggregator(AggregationType.COUNT, CountAggregator);\n this.registerAggregator(AggregationType.MAX, MaxAggregator);\n this.registerAggregator(AggregationType.MIN, MinAggregator);\n this.registerAggregator(AggregationType.AVG, AvgAggregator);\n this.registerAggregator(AggregationType.NONE, NoneAggregator);\n this.registerAggregator(AggregationType.CUSTOM, CustomAggregator);\n }\n _generateFieldAggragations() {\n const columnObjs = this.layoutColumnObjects;\n for (let i = 0; i < columnObjs?.length; i++) {\n columnObjs[i].aggregator = null; //重置聚合器 如更新了过滤条件都需要重新计算\n const field = columnObjs[i].field;\n const aggragation = columnObjs[i].aggregation;\n if (!aggragation) {\n continue;\n }\n if (Array.isArray(aggragation)) {\n for (let j = 0; j < aggragation.length; j++) {\n const item = aggragation[j];\n const aggregator = new this.registedAggregators[item.aggregationType](\n field as string,\n item.formatFun,\n true,\n (item as CustomAggregation).aggregationFun\n );\n this.fieldAggregators.push(aggregator);\n if (!columnObjs[i].aggregator) {\n columnObjs[i].aggregator = [];\n }\n columnObjs[i].aggregator.push(aggregator);\n }\n } else {\n const aggregator = new this.registedAggregators[aggragation.aggregationType](\n field as string,\n aggragation.formatFun,\n true,\n (aggragation as CustomAggregation).aggregationFun\n );\n this.fieldAggregators.push(aggregator);\n columnObjs[i].aggregator = aggregator;\n }\n }\n }\n processRecords(records: any[]) {\n this._generateFieldAggragations();\n const filteredRecords = [];\n const isHasAggregation = this.fieldAggregators.length >= 1;\n const isHasFilterRule = this.dataConfig?.filterRules?.length >= 1;\n if (isHasFilterRule || isHasAggregation) {\n for (let i = 0, len = records.length; i < len; i++) {\n const record = records[i];\n if (isHasFilterRule) {\n if (this.filterRecord(record)) {\n filteredRecords.push(record);\n isHasAggregation && this.processRecord(record);\n }\n } else if (isHasAggregation) {\n this.processRecord(record);\n }\n }\n if (isHasFilterRule) {\n return filteredRecords;\n }\n }\n return records;\n }\n\n processRecord(record: any) {\n for (let i = 0; i < this.fieldAggregators.length; i++) {\n const aggregator = this.fieldAggregators[i];\n aggregator.push(record);\n }\n }\n /**\n * 初始化子节点的层次信息\n * @param indexKey 父节点的indexKey 即currentLevel-1的节点\n * @param hierarchyExpandLevel 需要展开层级数\n * @param currentLevel 当前要展开的是第几层\n * @param nodeData 父节点数据 即currentLevel-1的节点\n * @returns\n */\n initChildrenNodeHierarchy(\n indexKey: number | number[],\n // subNodeIndex:number,\n hierarchyExpandLevel: number,\n currentLevel: number,\n nodeData: any\n ): number {\n // if (currentLevel > hierarchyExpandLevel) {\n // return 0;\n // }\n let childTotalLength = 0;\n const nodeLength = nodeData.children?.length ?? 0;\n for (let j = 0; j < nodeLength; j++) {\n if (currentLevel <= hierarchyExpandLevel || nodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += 1;\n }\n const childNodeData = nodeData.children[j];\n const childIndexKey = Array.isArray(indexKey) ? indexKey.concat(j) : [indexKey, j];\n if (currentLevel <= hierarchyExpandLevel || nodeData.hierarchyState === HierarchyState.expand) {\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childTotalLength,\n // childTotalLength,\n 0,\n childIndexKey\n );\n }\n if (childNodeData.children?.length > 0) {\n if (currentLevel < hierarchyExpandLevel || childNodeData.hierarchyState === HierarchyState.expand) {\n // this.treeDataHierarchyState.set(\n // Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n // HierarchyState.expand\n // );\n !childNodeData.hierarchyState && (childNodeData.hierarchyState = HierarchyState.expand);\n this.hasHierarchyStateExpand = true;\n } else {\n // this.treeDataHierarchyState.set(\n // Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n // HierarchyState.collapse\n // );\n !childNodeData.hierarchyState && (childNodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n if (childNodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += this.initChildrenNodeHierarchy(\n childIndexKey,\n hierarchyExpandLevel,\n currentLevel + 1,\n childNodeData\n );\n }\n }\n return childTotalLength;\n }\n updatePagination(pagination?: IPagination): void {\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n this.updatePagerData();\n }\n protected updatePagerData(): void {\n const { currentIndexedData } = this;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n this._currentPagerIndexedData.length = 0;\n if (currentIndexedData && currentIndexedData.length > 0) {\n // this._currentPagerIndexedData = currentIndexedData.slice(startIndex, endIndex);\n let firstLevelIndex = -1;\n for (let i = 0; i < currentIndexedData.length; i++) {\n //计算第一层父级节点数量\n if (\n (Array.isArray(currentIndexedData[i]) && (currentIndexedData[i] as Array<number>).length === 1) ||\n !Array.isArray(currentIndexedData[i])\n ) {\n firstLevelIndex++;\n }\n if (firstLevelIndex >= startIndex && firstLevelIndex < endIndex) {\n this._currentPagerIndexedData.push(currentIndexedData[i]);\n } else if (firstLevelIndex >= endIndex) {\n break;\n }\n }\n } else if (this._sourceLength > 0) {\n throw new Error(`currentIndexedData should has values!`);\n }\n }\n\n get source(): any {\n return this._source;\n }\n get(index: number): MaybePromiseOrUndefined {\n return this.getOriginalRecord(_getIndex(this.currentPagerIndexedData, index));\n }\n getRaw(index: number): MaybePromiseOrUndefined {\n return this.getRawRecord(_getIndex(this.currentPagerIndexedData, index) as number);\n }\n getIndexKey(index: number): number | number[] {\n return _getIndex(this.currentPagerIndexedData, index);\n }\n getTableIndex(colOrRow: number | number[]): number {\n if (Array.isArray(colOrRow)) {\n return this.currentPagerIndexedData.findIndex(value => arrayEqual(value, colOrRow));\n }\n return this.currentPagerIndexedData.findIndex(value => value === colOrRow);\n }\n /** 获取数据源中第index位置的field字段数据。传入col row是因为后面的format函数参数使用*/\n getField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getOriginalField(_getIndex(this.currentPagerIndexedData, index), field, col, row, table);\n }\n\n getRawField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getRawFieldData(_getIndex(this.currentPagerIndexedData, index) as number, field, col, row, table);\n }\n\n hasField(index: number, field: FieldDef): boolean {\n return this.hasOriginalField(_getIndex(this.currentPagerIndexedData, index), field);\n }\n /**\n * 获取第index条数据的展示收起状态\n * @param index\n * @returns\n */\n getHierarchyState(index: number): HierarchyState {\n // const indexed = this.getIndexKey(index);\n const record = this.getOriginalRecord(this.currentIndexedData[index]);\n return record?.hierarchyState ?? null;\n // return this.treeDataHierarchyState.get(Array.isArray(indexed) ? indexed.join(',') : indexed) ?? null;\n }\n /**\n * 展开或者收起数据index\n * @param index\n */\n toggleHierarchyState(index: number) {\n const oldIndexedData = this.currentIndexedData.slice(0);\n const indexed = this.getIndexKey(index);\n const state = this.getHierarchyState(index);\n const data = this.getOriginalRecord(indexed);\n\n this.clearSortedIndexMap();\n if (state === HierarchyState.collapse) {\n // 将节点状态置为expand\n // this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.expand);\n data.hierarchyState = HierarchyState.expand;\n this.pushChildrenNode(indexed, HierarchyState.expand, data);\n this.hasHierarchyStateExpand = true;\n } else if (state === HierarchyState.expand) {\n // 记录状态变化影响的子节点行数\n let childrenLength = 0;\n /**\n * 当某个节点由展开变为折叠,需要计算出影响的节点数量 使用childrenLength来标记。同样需递归\n * @param indexKey\n * @param hierarchyState\n * @param nodeData\n * @returns\n */\n const computeChildrenNodeLength = (\n indexKey: number | number[],\n hierarchyState: HierarchyState,\n nodeData: any\n ) => {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return;\n }\n if (nodeData.children) {\n for (let i = 0; i < nodeData.children.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey) ? indexKey.concat([i]) : [indexKey, i];\n\n computeChildrenNodeLength(\n childIndex,\n // this.treeDataHierarchyState.get(childIndex.join(',')),\n nodeData.children[i].hierarchyState,\n nodeData.children[i]\n );\n }\n }\n };\n computeChildrenNodeLength(indexed, state, data);\n\n this.currentIndexedData.splice(this.currentIndexedData.indexOf(indexed) + 1, childrenLength);\n // this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.collapse);\n data.hierarchyState = HierarchyState.collapse;\n }\n // 变更了pagerConfig所以需要更新分页数据 TODO待定 因为只关注根节点的数量的话 可能不会影响到\n this.updatePagerData();\n\n const newDiff = calculateArrayDiff(oldIndexedData, this.currentIndexedData);\n // const oldDiff = diffCellIndices(oldIndexedData, this.currentIndexedData);\n\n // return oldDiff;\n return newDiff;\n }\n /**\n * 某个节点状态由折叠变为展开,往this.currentIndexedData中插入展开后的新增节点,注意需要递归,因为展开节点下面的子节点也能是展开状态\n * @param recordRowIndex 要计算节点的行号(从body部分开始计算)\n * @param indexKey 需要判断节点的index\n * @param hierarchyState 当前节点状态\n * @param nodeData 当前节点数据 取children时用\n * @returns\n */\n pushChildrenNode(indexKey: number | number[], hierarchyState: HierarchyState, nodeData: any): number {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return 0;\n }\n let childrenLength = 0;\n if (nodeData.children) {\n const subNodeSortedIndexArray: Array<number> = Array.from({ length: nodeData.children.length }, (_, i) => i);\n this.lastOrder &&\n this.lastOrder !== 'normal' &&\n this.lastOrderField &&\n sort.sort(\n index =>\n isValid(subNodeSortedIndexArray[index])\n ? subNodeSortedIndexArray[index]\n : (subNodeSortedIndexArray[index] = index),\n (index, rel) => {\n subNodeSortedIndexArray[index] = rel;\n },\n nodeData.children.length,\n this.lastOrderFn,\n this.lastOrder,\n index =>\n this.getOriginalField(\n Array.isArray(indexKey) ? indexKey.concat([index]) : [indexKey, index],\n this.lastOrderField\n )\n );\n for (let i = 0; i < subNodeSortedIndexArray.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey)\n ? indexKey.concat([subNodeSortedIndexArray[i]])\n : [indexKey, subNodeSortedIndexArray[i]];\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childrenLength,\n // this.pagination.currentPage * this.pagination.perPageCount +\n // recordRowIndex +\n // childrenLength,\n 0,\n childIndex\n );\n\n // const preChildState = this.treeDataHierarchyState.get(childIndex.join(','));\n const childData = this.getOriginalRecord(childIndex);\n if (!nodeData.children[i].hierarchyState && (childData as any).children) {\n // this.treeDataHierarchyState.set(childIndex.join(','), HierarchyState.collapse);\n nodeData.children[i].hierarchyState = HierarchyState.collapse;\n }\n childrenLength += this.pushChildrenNode(\n childIndex,\n // this.treeDataHierarchyState.get(childIndex.join(',')),\n nodeData.children[i].hierarchyState,\n nodeData.children[subNodeSortedIndexArray[i]]\n );\n }\n }\n return childrenLength;\n }\n changeFieldValue(\n value: FieldData,\n index: number,\n field: FieldDef,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n if (index >= 0) {\n const dataIndex = this.getIndexKey(index) as number;\n\n if (!this.beforeChangedRecordsMap[dataIndex]) {\n const originRecord = this.getOriginalRecord(dataIndex);\n this.beforeChangedRecordsMap[dataIndex] = cloneDeep(originRecord);\n }\n if (typeof field === 'string' || typeof field === 'number') {\n const beforeChangedValue = this.beforeChangedRecordsMap[dataIndex][field]; // this.getOriginalField(index, field, col, row, table);\n const record = this.getOriginalRecord(dataIndex);\n if (typeof beforeChangedValue === 'number' && isAllDigits(value)) {\n record[field] = parseFloat(value);\n } else {\n record[field] = value;\n }\n }\n }\n // return getField(record, field);\n }\n /**\n * 将数据record 替换到index位置处\n * @param record\n * @param index\n */\n setRecord(record: any, index: number) {\n const indexed = this.getIndexKey(index);\n if (!Array.isArray(indexed)) {\n this.source.splice(indexed, 1, record);\n } else {\n const c_node_index = (indexed as Array<any>)[indexed.length - 1];\n const p_node = this.getOriginalRecord(indexed.slice(0, indexed.length - 1));\n (p_node as any).children.splice(c_node_index, 1, record);\n }\n }\n /**\n * 将单条数据record 添加到index位置处\n * @param record 被添加的单条数据\n * @param index 代表的数据源中的index\n */\n addRecord(record: any, index: number) {\n this.source.splice(index, 0, record);\n this.currentIndexedData.push(this.currentIndexedData.length);\n this._sourceLength += 1;\n this.initTreeHierarchyState();\n if (this.userPagination) {\n //如果用户配置了分页\n this.pagination.totalCount = this._sourceLength;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (index < endIndex) {\n this.updatePagerData();\n }\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n }\n /**\n * 将多条数据recordArr 依次添加到index位置处\n * @param recordArr\n * @param index 代表的数据源中的index\n */\n addRecords(recordArr: any, index: number) {\n if (Array.isArray(recordArr)) {\n this.source.splice(index, 0, ...recordArr);\n for (let i = 0; i < recordArr.length; i++) {\n this.currentIndexedData.push(this.currentIndexedData.length);\n }\n this._sourceLength += recordArr.length;\n }\n\n if (this.userPagination) {\n //如果用户配置了分页\n this.pagination.totalCount = this._sourceLength;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (index < endIndex) {\n this.updatePagerData();\n }\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n }\n\n /**\n * 将单条数据record 添加到index位置处\n * @param record 被添加的单条数据\n * @param index 代表的数据源中的index\n */\n addRecordForSorted(record: any) {\n this.source.push(record);\n this.currentIndexedData.push(this.currentIndexedData.length);\n this._sourceLength += 1;\n this.sortedIndexMap.clear();\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n /**\n * 将多条数据recordArr 依次添加到index位置处\n * @param recordArr\n * @param index 代表的数据源中的index\n */\n addRecordsForSorted(recordArr: any) {\n if (Array.isArray(recordArr)) {\n this.source.push(...recordArr);\n for (let i = 0; i < recordArr.length; i++) {\n this.currentIndexedData.push(this.currentIndexedData.length);\n }\n this._sourceLength += recordArr.length;\n this.sortedIndexMap.clear();\n }\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n\n /**\n * 删除多条数据recordIndexs\n */\n deleteRecords(recordIndexs: number[]) {\n const realDeletedRecordIndexs = [];\n const recordIndexsMaxToMin = recordIndexs.sort((a, b) => b - a);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n realDeletedRecordIndexs.push(recordIndex);\n this.source.splice(recordIndex, 1);\n this.currentIndexedData.pop();\n this._sourceLength -= 1;\n }\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n return realDeletedRecordIndexs;\n }\n /**\n * 删除多条数据recordIndexs\n */\n deleteRecordsForSorted(recordIndexs: number[]) {\n const recordIndexsMaxToMin = recordIndexs.sort((a, b) => b - a);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n const rawIndex = this.currentIndexedData[recordIndex];\n this.source.splice(rawIndex, 1);\n this._sourceLength -= 1;\n }\n this.sortedIndexMap.clear();\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n\n /**\n * 修改多条数据recordIndexs\n */\n updateRecords(records: any[], recordIndexs: number[]) {\n const realDeletedRecordIndexs = [];\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n realDeletedRecordIndexs.push(recordIndex);\n this.source[recordIndex] = records[index];\n }\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n }\n return realDeletedRecordIndexs;\n }\n\n /**\n * 删除多条数据recordIndexs\n */\n updateRecordsForSorted(records: any[], recordIndexs: number[]) {\n const realDeletedRecordIndexs: number[] = [];\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n const rawIndex = this.currentIndexedData[recordIndex];\n if (typeof rawIndex !== 'number') {\n return;\n }\n realDeletedRecordIndexs.push(recordIndex);\n this.source[rawIndex] = records[index];\n }\n this.sortedIndexMap.clear();\n }\n\n sort(\n field: FieldDef,\n order: SortOrder,\n orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1 = order !== 'desc'\n ? (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 > v2 ? 1 : -1)\n : (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 < v2 ? 1 : -1)\n ): void {\n this.lastOrderField = field;\n this.lastOrder = order;\n this.lastOrderFn = orderFn;\n let filedMap = this.sortedIndexMap.get(field);\n let orderedData;\n\n if (filedMap) {\n orderedData = filedMap[order];\n if (orderedData && orderedData.length > 0) {\n this.currentIndexedData = orderedData;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n return;\n }\n }\n const sortedIndexArray = [] as number[];\n if (order === 'normal') {\n for (let i = 0; i < this._sourceLength; i++) {\n sortedIndexArray[i] = i;\n }\n } else {\n sort.sort(\n index => (isValid(sortedIndexArray[index]) ? sortedIndexArray[index] : (sortedIndexArray[index] = index)),\n (index, rel) => {\n sortedIndexArray[index] = rel;\n },\n this._sourceLength,\n orderFn,\n order,\n index => this.getOriginalField(index, field)\n );\n }\n this.currentIndexedData = sortedIndexArray;\n\n if (this.hierarchyExpandLevel) {\n let nodeLength = sortedIndexArray.length;\n const t0 = window.performance.now();\n for (let i = 0; i < nodeLength; i++) {\n const record = this.getOriginalRecord(sortedIndexArray[i]);\n const subNodeLength = this.pushChildrenNode(\n sortedIndexArray[i],\n // this.treeDataHierarchyState.get(sortedIndexArray[i]),\n record.hierarchyState,\n this.getOriginalRecord(sortedIndexArray[i]) // ?sortedIndexArray 在这个过程中不是变化了吗 通过i取id还是对的吗? 对哦!因为i和nodeLength都+subNodeLength 来动态调整过了!\n );\n nodeLength += subNodeLength;\n i += subNodeLength;\n }\n }\n if (!filedMap) {\n filedMap = { asc: [], desc: [], normal: [] };\n this.sortedIndexMap.set(field, filedMap);\n }\n filedMap[order] = sortedIndexArray;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n }\n\n private filterRecord(record: any) {\n let isReserved = true;\n for (let i = 0; i < this.dataConfig.filterRules.length; i++) {\n const filterRule = this.dataConfig?.filterRules[i];\n if (filterRule.filterKey) {\n const filterValue = record[filterRule.filterKey];\n if (filterRule.filteredValues.indexOf(filterValue) === -1) {\n isReserved = false;\n break;\n }\n } else if (!filterRule.filterFunc?.(record)) {\n isReserved = false;\n break;\n }\n }\n return isReserved;\n }\n\n updateFilterRulesForSorted(filterRules?: FilterRules): void {\n this.dataConfig.filterRules = filterRules;\n this._source = this.processRecords(this.dataSourceObj?.source ?? this.dataSourceObj);\n this._sourceLength = this._source?.length || 0;\n this.sortedIndexMap.clear();\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n\n updateFilterRules(filterRules?: FilterRules): void {\n this.dataConfig.filterRules = filterRules;\n this._source = this.processRecords(this.dataSourceObj?.source ?? this.dataSourceObj);\n this._sourceLength = this._source?.length || 0;\n // 初始化currentIndexedData 正常未排序。设置其状态\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n }\n /**\n * 当节点折叠或者展开时 将排序缓存清空(非当前排序规则的缓存)\n */\n clearSortedIndexMap() {\n if (this.lastOrderField && this.lastOrder) {\n this.sortedIndexMap.forEach((sortMap, key) => {\n if (key !== this.lastOrderField) {\n this.sortedIndexMap.delete(key);\n } else if (this.lastOrder === 'asc') {\n sortMap.desc = [];\n sortMap.normal = [];\n } else if (this.lastOrder === 'desc') {\n sortMap.asc = [];\n sortMap.normal = [];\n } else {\n sortMap.desc = [];\n sortMap.asc = [];\n }\n });\n }\n }\n get sourceLength(): number {\n return this._sourceLength;\n }\n set sourceLength(sourceLen: number) {\n if (this._sourceLength === sourceLen) {\n return;\n }\n this._sourceLength = sourceLen;\n this.fireListeners(EVENT_TYPE.SOURCE_LENGTH_UPDATE, this._sourceLength);\n }\n get length(): number {\n return this.currentPagerIndexedData.length;\n }\n get dataSource(): DataSource {\n return this;\n }\n get currentPagerIndexedData(): (number | number[])[] {\n if (this._currentPagerIndexedData.length > 0) {\n return this._currentPagerIndexedData;\n }\n return []; //this.currentIndexedData || [];\n }\n release(): void {\n super.release?.();\n }\n clearSortedMap() {\n this.currentIndexedData && (this.currentIndexedData.length = 0);\n this.currentIndexedData = null;\n this.sortedIndexMap.forEach(item => {\n item.asc && (item.asc.length = 0);\n item.desc && (item.desc.length = 0);\n });\n this.sortedIndexMap.clear();\n }\n clearCurrentIndexedData(): void {\n this.currentIndexedData = null;\n this.currentPagerIndexedData.length = 0;\n }\n protected getOriginalRecord(dataIndex: number | number[]): MaybePromiseOrUndefined {\n if (this.dataConfig?.filterRules) {\n return (this.source as Array<any>)[dataIndex as number];\n }\n return getValue(this._get(dataIndex), (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(dataIndex, val);\n });\n }\n protected getRawRecord(dataIndex: number): MaybePromiseOrUndefined {\n if (this.beforeChangedRecordsMap?.[dataIndex as number]) {\n return this.beforeChangedRecordsMap[dataIndex as number];\n }\n return getValue(this._get(dataIndex), (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(dataIndex, val);\n });\n }\n protected getOriginalField(\n index: number | number[],\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getOriginalRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected getRawFieldData(\n index: number,\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getRawRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected hasOriginalField(index: number | number[], field: FieldDef): boolean {\n if (field === null) {\n return false;\n }\n if (typeof field === 'function') {\n return true;\n }\n const record = this.getOriginalRecord(index);\n return Boolean(record && (field as any) in (record as any));\n }\n\n protected fieldPromiseCallBack(\n _index: number | number[],\n _field: FieldDef | FieldFormat | number,\n _value: MaybePromiseOrUndefined\n ): void {\n //\n }\n protected recordPromiseCallBack(_index: number | number[], _record: MaybePromiseOrUndefined): void {\n //\n }\n /** 静态变量 代表数据为空 */\n static EMPTY = new DataSource({\n get() {\n /* noop */\n },\n length: 0\n });\n isCanExchangeOrder(sourceIndex: number, targetIndex: number) {\n // if (this.treeDataHierarchyState?.size > 0) {\n if (this.hasHierarchyStateExpand) {\n let sourceIndexs = this.currentPagerIndexedData[sourceIndex] as number[];\n let targetIndexs = this.currentPagerIndexedData[targetIndex] as number[];\n if (Array.isArray(sourceIndexs)) {\n sourceIndexs = [...sourceIndexs];\n } else {\n sourceIndexs = [sourceIndexs];\n }\n\n if (Array.isArray(targetIndexs)) {\n targetIndexs = [...targetIndexs];\n } else {\n targetIndexs = [targetIndexs];\n }\n\n if (targetIndex > sourceIndex) {\n if (targetIndexs.length > sourceIndexs.length) {\n let targetNextIndexs = this.currentPagerIndexedData[targetIndex + 1] as number[];\n if (Array.isArray(targetNextIndexs)) {\n targetNextIndexs = [...targetNextIndexs];\n } else {\n targetNextIndexs = [targetNextIndexs];\n }\n\n if (targetNextIndexs.length < targetIndexs.length) {\n targetIndexs.splice(targetIndexs.length - 1, 1);\n }\n }\n }\n if (sourceIndexs.length === targetIndexs.length) {\n for (let i = 0; i <= sourceIndexs.length - 2; i++) {\n if (sourceIndexs[i] !== targetIndexs[i]) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n }\n return true;\n }\n reorderRecord(sourceIndex: number, targetIndex: number) {\n if (this.lastOrder === 'asc' || this.lastOrder === 'desc') {\n // const sourceIds = this._currentPagerIndexedData.splice(sourceIndex, 1);\n // sourceIds.unshift(targetIndex, 0);\n // Array.prototype.splice.apply(this._currentPagerIndexedData, sourceIds);\n return;\n } else if (this.isCanExchangeOrder(sourceIndex, targetIndex)) {\n // if (this.treeDataHierarchyState?.size > 0) {\n if (this.hasHierarchyStateExpand) {\n let sourceIndexs = this.currentPagerIndexedData[sourceIndex];\n let targetIndexs = this.currentPagerIndexedData[targetIndex];\n if (Array.isArray(sourceIndexs)) {\n sourceIndexs = [...sourceIndexs];\n } else {\n sourceIndexs = [sourceIndexs];\n }\n\n if (Array.isArray(targetIndexs)) {\n targetIndexs = [...targetIndexs];\n } else {\n targetIndexs = [targetIndexs];\n }\n\n let sourceI;\n let targetI;\n if (sourceIndexs.length > 1 || targetIndexs.length > 1) {\n if (targetIndex > sourceIndex) {\n if (targetIndexs.length > sourceIndexs.length) {\n let targetNextIndexs = this.currentPagerIndexedData[targetIndex + 1] as number[];\n if (Array.isArray(targetNextIndexs)) {\n targetNextIndexs = [...targetNextIndexs];\n } else {\n targetNextIndexs = [targetNextIndexs];\n }\n\n if (targetNextIndexs.length < targetIndexs.length) {\n targetIndexs.splice(targetIndexs.length - 1, 1);\n }\n }\n }\n sourceI = (<number[]>sourceIndexs).splice(sourceIndexs.length - 1, 1)[0];\n targetI = (<number[]>targetIndexs).splice(targetIndexs.length - 1, 1)[0];\n if (sourceIndexs.length >= 1) {\n const parent = this.getOriginalRecord(sourceIndexs);\n const sourceIds = parent.children.splice(sourceI, 1);\n sourceIds.unshift(targetI, 0);\n Array.prototype.splice.apply(parent.children, sourceIds);\n } else {\n const sourceIds = this.source.splice(sourceI, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n sourceIds.unshift(targetI, 0);\n Array.prototype.splice.apply(this.source, sourceIds);\n }\n } else {\n sourceI = this.currentPagerIndexedData[sourceIndex];\n targetI = this.currentPagerIndexedData[targetIndex];\n // 从source的二维数组中取出需要操作的records\n const records = this.source.splice(sourceI, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n records.unshift(targetI, 0);\n Array.prototype.splice.apply(this.source, records);\n }\n this.restoreTreeHierarchyState();\n this.updatePagerData();\n } else {\n // 从source的二维数组中取出需要操作的records\n const records = this.source.splice(sourceIndex, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n records.unshift(targetIndex, 0);\n Array.prototype.splice.apply(this.source, records);\n }\n }\n }\n\n restoreTreeHierarchyState() {\n if (this.hierarchyExpandLevel) {\n for (let i = 0; i < this._sourceLength; i++) {\n //expandLevel为有效值即需要按tree分析展示数据\n const nodeData = this.getOriginalRecord(i);\n (nodeData as any).children && !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n let nodeLength = this._sourceLength;\n for (let i = 0; i < nodeLength; i++) {\n const indexKey = this.currentIndexedData[i];\n const nodeData = this.getOriginalRecord(indexKey);\n if ((nodeData as any).children?.length > 0 && nodeData.hierarchyState === HierarchyState.expand) {\n this.hasHierarchyStateExpand = true;\n const childrenLength = this.restoreChildrenNodeHierarchy(indexKey, nodeData);\n i += childrenLength;\n nodeLength += childrenLength;\n } else if ((nodeData as any).children === true) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n }\n }\n restoreChildrenNodeHierarchy(\n indexKey: number | number[],\n\n nodeData: any\n ): number {\n let childTotalLength = 0;\n const nodeLength = nodeData.children?.length ?? 0;\n for (let j = 0; j < nodeLength; j++) {\n if (nodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += 1;\n }\n const childNodeData = nodeData.children[j];\n const childIndexKey = Array.isArray(indexKey) ? indexKey.concat(j) : [indexKey, j];\n if (nodeData.hierarchyState === HierarchyState.expand) {\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childTotalLength,\n // childTotalLength,\n 0,\n childIndexKey\n );\n }\n childTotalLength += this.restoreChildrenNodeHierarchy(\n childIndexKey,\n\n childNodeData\n );\n }\n return childTotalLength;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/data/DataSource.ts"],"names":[],"mappings":"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","file":"DataSource.js","sourcesContent":["import * as sort from '../tools/sort';\nimport type {\n CustomAggregation,\n DataSourceAPI,\n FieldAssessor,\n FieldData,\n FieldDef,\n FieldFormat,\n FilterRules,\n IListTableDataConfig,\n IPagination,\n MaybePromiseOrCallOrUndefined,\n MaybePromiseOrUndefined,\n SortOrder\n} from '../ts-types';\nimport { AggregationType, HierarchyState } from '../ts-types';\nimport { applyChainSafe, getOrApply, obj, isPromise, emptyFn } from '../tools/helper';\nimport { EventTarget } from '../event/EventTarget';\nimport { getValueByPath, isAllDigits } from '../tools/util';\nimport { calculateArrayDiff } from '../tools/diff-cell';\nimport { arrayEqual, cloneDeep, isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport {\n RecordAggregator,\n type Aggregator,\n SumAggregator,\n CountAggregator,\n MaxAggregator,\n MinAggregator,\n AvgAggregator,\n NoneAggregator,\n CustomAggregator\n} from '../dataset/statistics-helper';\nimport type { ColumnData } from '../ts-types/list-table/layout-map/api';\n\n/**\n * 判断字段数据是否为访问器的格式\n * @param field\n * @returns boolean\n */\nfunction isFieldAssessor(field: FieldDef | FieldFormat | number): field is FieldAssessor {\n if (obj.isObject(field)) {\n const a = field as FieldAssessor;\n if (isValid(a.get) && isValid(a.set)) {\n return true;\n }\n }\n return false;\n}\nconst EVENT_TYPE = {\n SOURCE_LENGTH_UPDATE: 'source_length_update',\n CHANGE_ORDER: 'change_order'\n} as const;\ntype PromiseBack = (value: MaybePromiseOrUndefined) => void;\n\n/**\n * 获取到的某个filed的值 处理可能为promise的情况\n * @param value\n * @param promiseCallBack\n * @returns\n */\nfunction getValue(value: MaybePromiseOrCallOrUndefined, promiseCallBack: PromiseBack): MaybePromiseOrUndefined {\n const maybePromiseOrValue = getOrApply(value);\n if (isPromise(maybePromiseOrValue)) {\n const promiseValue = maybePromiseOrValue.then((r: any) => {\n promiseCallBack(r);\n return r;\n });\n\n promiseCallBack(promiseValue);\n return promiseValue;\n }\n return maybePromiseOrValue;\n}\n/**\n * 根据field获取数据源record对应的值 获取到的可能是个异步Promise 需要设置回调处理逻辑\n * @param record\n * @param field\n * @param promiseCallBack\n * @returns\n */\nexport function getField(\n record: MaybePromiseOrUndefined,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI,\n promiseCallBack: PromiseBack\n): FieldData {\n if (record === null || record === undefined) {\n return undefined;\n }\n if (isPromise(record)) {\n return record.then((r: any) => getField(r, field, col, row, table, promiseCallBack));\n }\n const fieldGet: any = isFieldAssessor(field) ? field.get : field;\n if (fieldGet in (record as any)) {\n const fieldResult = (record as any)[fieldGet];\n\n return getValue(fieldResult, promiseCallBack);\n }\n if (typeof fieldGet === 'function') {\n const fieldResult = fieldGet(record, col, row, table);\n return getValue(fieldResult, promiseCallBack);\n }\n if (Array.isArray(fieldGet)) {\n const fieldResult = getValueByPath(record, [...fieldGet]);\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldArray = `${fieldGet}`.split('.');\n if (fieldArray.length <= 1) {\n const fieldResult = (record as any)[fieldGet];\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldResult = applyChainSafe(\n record,\n (val, name) => getField(val, name, col, row, table, emptyFn as any),\n ...fieldArray\n );\n return getValue(fieldResult, promiseCallBack);\n}\n\nfunction _getIndex(sortedIndexMap: null | (number | number[])[], index: number): number | number[] {\n if (!sortedIndexMap) {\n return index;\n }\n const mapIndex = sortedIndexMap[index];\n return isValid(mapIndex) ? mapIndex : index;\n}\n\nexport interface DataSourceParam {\n get: (index: number) => any;\n length: number;\n source?: any;\n}\nexport interface ISortedMapItem {\n asc?: (number | number[])[];\n desc?: (number | number[])[];\n normal?: (number | number[])[];\n}\n\nexport class DataSource extends EventTarget implements DataSourceAPI {\n dataConfig: IListTableDataConfig;\n dataSourceObj: DataSourceParam | DataSource;\n private _get: (index: number | number[]) => any;\n /** 数据条目数 如果是树形结构的数据 则是第一层父节点的数量 */\n private _sourceLength: number;\n\n private _source: any;\n /**\n * 缓存按字段进行排序的结果\n */\n protected sortedIndexMap: Map<FieldDef, ISortedMapItem>;\n /**\n * 记录最近一次排序规则 当展开树形结构的节点时需要用到\n */\n private lastOrder: SortOrder;\n private lastOrderFn: (a: any, b: any, order: string) => number;\n private lastOrderField: FieldDef;\n /** 每一行对应源数据的索引 */\n currentIndexedData: (number | number[])[] | null = [];\n protected userPagination: IPagination;\n protected pagination: IPagination;\n /** 当前页每一行对应源数据的索引 */\n _currentPagerIndexedData: (number | number[])[];\n // 当前是否为层级的树形结构 排序时判断该值确实是否继续进行子节点排序\n hierarchyExpandLevel: number = 0;\n static get EVENT_TYPE(): typeof EVENT_TYPE {\n return EVENT_TYPE;\n }\n hasHierarchyStateExpand: boolean = false;\n // treeDataHierarchyState: Map<number | string, HierarchyState> = new Map();\n beforeChangedRecordsMap: Record<number, any>[] = [];\n\n // 注册聚合类型\n registedAggregators: {\n [key: string]: {\n new (dimension: string | string[], formatFun?: any, isRecord?: boolean, aggregationFun?: Function): Aggregator;\n };\n } = {};\n // columns对应各个字段的聚合类对象\n fieldAggregators: Aggregator[] = [];\n layoutColumnObjects: ColumnData[] = [];\n constructor(\n dataSourceObj?: DataSourceParam | DataSource,\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columnObjs?: ColumnData[],\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ) {\n super();\n this.registerAggregators();\n this.dataSourceObj = dataSourceObj;\n this.dataConfig = dataConfig;\n this._get = dataSourceObj?.get.bind(dataSourceObj) || (undefined as any);\n this.layoutColumnObjects = columnObjs;\n this._source = this.processRecords(dataSourceObj?.source ?? dataSourceObj);\n this._sourceLength = this._source?.length || 0;\n this.sortedIndexMap = new Map<string, ISortedMapItem>();\n\n this._currentPagerIndexedData = [];\n this.userPagination = pagination;\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n if (hierarchyExpandLevel >= 1) {\n this.hierarchyExpandLevel = hierarchyExpandLevel;\n }\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n // 初始化currentIndexedData 正常未排序。设置其状态\n if (rowHierarchyType === 'tree') {\n this.initTreeHierarchyState();\n }\n this.updatePagerData();\n }\n initTreeHierarchyState() {\n // if (this.hierarchyExpandLevel) {\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n // if (this.hierarchyExpandLevel > 1) {\n let nodeLength = this._sourceLength;\n for (let i = 0; i < nodeLength; i++) {\n const indexKey = this.currentIndexedData[i];\n const nodeData = this.getOriginalRecord(indexKey);\n if ((nodeData as any).children?.length > 0) {\n if (this.hierarchyExpandLevel > 1) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.expand);\n } else {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n this.hasHierarchyStateExpand = true;\n if (nodeData.hierarchyState === HierarchyState.collapse) {\n continue;\n }\n const childrenLength = this.initChildrenNodeHierarchy(indexKey, this.hierarchyExpandLevel, 2, nodeData);\n i += childrenLength;\n nodeLength += childrenLength;\n } else if ((nodeData as any).children === true) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n // }\n // }\n }\n\n //将聚合类型注册 收集到aggregators\n registerAggregator(type: string, aggregator: any) {\n this.registedAggregators[type] = aggregator;\n }\n //将聚合类型注册\n registerAggregators() {\n this.registerAggregator(AggregationType.RECORD, RecordAggregator);\n this.registerAggregator(AggregationType.SUM, SumAggregator);\n this.registerAggregator(AggregationType.COUNT, CountAggregator);\n this.registerAggregator(AggregationType.MAX, MaxAggregator);\n this.registerAggregator(AggregationType.MIN, MinAggregator);\n this.registerAggregator(AggregationType.AVG, AvgAggregator);\n this.registerAggregator(AggregationType.NONE, NoneAggregator);\n this.registerAggregator(AggregationType.CUSTOM, CustomAggregator);\n }\n _generateFieldAggragations() {\n const columnObjs = this.layoutColumnObjects;\n for (let i = 0; i < columnObjs?.length; i++) {\n columnObjs[i].aggregator = null; //重置聚合器 如更新了过滤条件都需要重新计算\n const field = columnObjs[i].field;\n const aggragation = columnObjs[i].aggregation;\n if (!aggragation) {\n continue;\n }\n if (Array.isArray(aggragation)) {\n for (let j = 0; j < aggragation.length; j++) {\n const item = aggragation[j];\n const aggregator = new this.registedAggregators[item.aggregationType](\n field as string,\n item.formatFun,\n true,\n (item as CustomAggregation).aggregationFun\n );\n this.fieldAggregators.push(aggregator);\n if (!columnObjs[i].aggregator) {\n columnObjs[i].aggregator = [];\n }\n columnObjs[i].aggregator.push(aggregator);\n }\n } else {\n const aggregator = new this.registedAggregators[aggragation.aggregationType](\n field as string,\n aggragation.formatFun,\n true,\n (aggragation as CustomAggregation).aggregationFun\n );\n this.fieldAggregators.push(aggregator);\n columnObjs[i].aggregator = aggregator;\n }\n }\n }\n processRecords(records: any[]) {\n this._generateFieldAggragations();\n const filteredRecords = [];\n const isHasAggregation = this.fieldAggregators.length >= 1;\n const isHasFilterRule = this.dataConfig?.filterRules?.length >= 1;\n if (isHasFilterRule || isHasAggregation) {\n for (let i = 0, len = records.length; i < len; i++) {\n const record = records[i];\n if (isHasFilterRule) {\n if (this.filterRecord(record)) {\n filteredRecords.push(record);\n isHasAggregation && this.processRecord(record);\n }\n } else if (isHasAggregation) {\n this.processRecord(record);\n }\n }\n if (isHasFilterRule) {\n return filteredRecords;\n }\n }\n return records;\n }\n\n processRecord(record: any) {\n for (let i = 0; i < this.fieldAggregators.length; i++) {\n const aggregator = this.fieldAggregators[i];\n aggregator.push(record);\n }\n }\n /**\n * 初始化子节点的层次信息\n * @param indexKey 父节点的indexKey 即currentLevel-1的节点\n * @param hierarchyExpandLevel 需要展开层级数\n * @param currentLevel 当前要展开的是第几层\n * @param nodeData 父节点数据 即currentLevel-1的节点\n * @returns\n */\n initChildrenNodeHierarchy(\n indexKey: number | number[],\n // subNodeIndex:number,\n hierarchyExpandLevel: number,\n currentLevel: number,\n nodeData: any\n ): number {\n // if (currentLevel > hierarchyExpandLevel) {\n // return 0;\n // }\n let childTotalLength = 0;\n const nodeLength = nodeData.children?.length ?? 0;\n for (let j = 0; j < nodeLength; j++) {\n if (currentLevel <= hierarchyExpandLevel || nodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += 1;\n }\n const childNodeData = nodeData.children[j];\n const childIndexKey = Array.isArray(indexKey) ? indexKey.concat(j) : [indexKey, j];\n if (currentLevel <= hierarchyExpandLevel || nodeData.hierarchyState === HierarchyState.expand) {\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childTotalLength,\n // childTotalLength,\n 0,\n childIndexKey\n );\n }\n if (childNodeData.children?.length > 0) {\n if (currentLevel < hierarchyExpandLevel || childNodeData.hierarchyState === HierarchyState.expand) {\n // this.treeDataHierarchyState.set(\n // Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n // HierarchyState.expand\n // );\n !childNodeData.hierarchyState && (childNodeData.hierarchyState = HierarchyState.expand);\n this.hasHierarchyStateExpand = true;\n } else {\n // this.treeDataHierarchyState.set(\n // Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n // HierarchyState.collapse\n // );\n !childNodeData.hierarchyState && (childNodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n if (childNodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += this.initChildrenNodeHierarchy(\n childIndexKey,\n hierarchyExpandLevel,\n currentLevel + 1,\n childNodeData\n );\n }\n }\n return childTotalLength;\n }\n updatePagination(pagination?: IPagination): void {\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n this.updatePagerData();\n }\n protected updatePagerData(): void {\n const { currentIndexedData } = this;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n this._currentPagerIndexedData.length = 0;\n if (currentIndexedData && currentIndexedData.length > 0) {\n // this._currentPagerIndexedData = currentIndexedData.slice(startIndex, endIndex);\n let firstLevelIndex = -1;\n for (let i = 0; i < currentIndexedData.length; i++) {\n //计算第一层父级节点数量\n if (\n (Array.isArray(currentIndexedData[i]) && (currentIndexedData[i] as Array<number>).length === 1) ||\n !Array.isArray(currentIndexedData[i])\n ) {\n firstLevelIndex++;\n }\n if (firstLevelIndex >= startIndex && firstLevelIndex < endIndex) {\n this._currentPagerIndexedData.push(currentIndexedData[i]);\n } else if (firstLevelIndex >= endIndex) {\n break;\n }\n }\n } else if (this._sourceLength > 0) {\n throw new Error(`currentIndexedData should has values!`);\n }\n }\n\n get source(): any {\n return this._source;\n }\n get(index: number): MaybePromiseOrUndefined {\n return this.getOriginalRecord(_getIndex(this.currentPagerIndexedData, index));\n }\n getRaw(index: number): MaybePromiseOrUndefined {\n return this.getRawRecord(_getIndex(this.currentPagerIndexedData, index) as number);\n }\n getIndexKey(index: number): number | number[] {\n return _getIndex(this.currentPagerIndexedData, index);\n }\n getTableIndex(colOrRow: number | number[]): number {\n if (Array.isArray(colOrRow)) {\n return this.currentPagerIndexedData.findIndex(value => arrayEqual(value, colOrRow));\n }\n return this.currentPagerIndexedData.findIndex(value => value === colOrRow);\n }\n /** 获取数据源中第index位置的field字段数据。传入col row是因为后面的format函数参数使用*/\n getField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getOriginalField(_getIndex(this.currentPagerIndexedData, index), field, col, row, table);\n }\n\n getRawField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getRawFieldData(_getIndex(this.currentPagerIndexedData, index) as number, field, col, row, table);\n }\n\n hasField(index: number, field: FieldDef): boolean {\n return this.hasOriginalField(_getIndex(this.currentPagerIndexedData, index), field);\n }\n /**\n * 获取第index条数据的展示收起状态\n * @param index\n * @returns\n */\n getHierarchyState(index: number): HierarchyState {\n // const indexed = this.getIndexKey(index);\n const record = this.getOriginalRecord(this.currentIndexedData[index]);\n return record?.hierarchyState ?? null;\n // return this.treeDataHierarchyState.get(Array.isArray(indexed) ? indexed.join(',') : indexed) ?? null;\n }\n /**\n * 展开或者收起数据index\n * @param index\n */\n toggleHierarchyState(index: number) {\n const oldIndexedData = this.currentIndexedData.slice(0);\n const indexed = this.getIndexKey(index);\n const state = this.getHierarchyState(index);\n const data = this.getOriginalRecord(indexed);\n\n this.clearSortedIndexMap();\n if (state === HierarchyState.collapse) {\n // 将节点状态置为expand\n // this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.expand);\n data.hierarchyState = HierarchyState.expand;\n this.pushChildrenNode(indexed, HierarchyState.expand, data);\n this.hasHierarchyStateExpand = true;\n } else if (state === HierarchyState.expand) {\n // 记录状态变化影响的子节点行数\n let childrenLength = 0;\n /**\n * 当某个节点由展开变为折叠,需要计算出影响的节点数量 使用childrenLength来标记。同样需递归\n * @param indexKey\n * @param hierarchyState\n * @param nodeData\n * @returns\n */\n const computeChildrenNodeLength = (\n indexKey: number | number[],\n hierarchyState: HierarchyState,\n nodeData: any\n ) => {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return;\n }\n if (nodeData.children) {\n for (let i = 0; i < nodeData.children.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey) ? indexKey.concat([i]) : [indexKey, i];\n\n computeChildrenNodeLength(\n childIndex,\n // this.treeDataHierarchyState.get(childIndex.join(',')),\n nodeData.children[i].hierarchyState,\n nodeData.children[i]\n );\n }\n }\n };\n computeChildrenNodeLength(indexed, state, data);\n\n this.currentIndexedData.splice(this.currentIndexedData.indexOf(indexed) + 1, childrenLength);\n // this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.collapse);\n data.hierarchyState = HierarchyState.collapse;\n }\n // 变更了pagerConfig所以需要更新分页数据 TODO待定 因为只关注根节点的数量的话 可能不会影响到\n this.updatePagerData();\n\n const newDiff = calculateArrayDiff(oldIndexedData, this.currentIndexedData);\n // const oldDiff = diffCellIndices(oldIndexedData, this.currentIndexedData);\n\n // return oldDiff;\n return newDiff;\n }\n /**\n * 某个节点状态由折叠变为展开,往this.currentIndexedData中插入展开后的新增节点,注意需要递归,因为展开节点下面的子节点也能是展开状态\n * @param recordRowIndex 要计算节点的行号(从body部分开始计算)\n * @param indexKey 需要判断节点的index\n * @param hierarchyState 当前节点状态\n * @param nodeData 当前节点数据 取children时用\n * @returns\n */\n pushChildrenNode(indexKey: number | number[], hierarchyState: HierarchyState, nodeData: any): number {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return 0;\n }\n let childrenLength = 0;\n if (nodeData.children) {\n const subNodeSortedIndexArray: Array<number> = Array.from({ length: nodeData.children.length }, (_, i) => i);\n this.lastOrder &&\n this.lastOrder !== 'normal' &&\n this.lastOrderField &&\n sort.sort(\n index =>\n isValid(subNodeSortedIndexArray[index])\n ? subNodeSortedIndexArray[index]\n : (subNodeSortedIndexArray[index] = index),\n (index, rel) => {\n subNodeSortedIndexArray[index] = rel;\n },\n nodeData.children.length,\n this.lastOrderFn,\n this.lastOrder,\n index =>\n this.getOriginalField(\n Array.isArray(indexKey) ? indexKey.concat([index]) : [indexKey, index],\n this.lastOrderField\n )\n );\n for (let i = 0; i < subNodeSortedIndexArray.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey)\n ? indexKey.concat([subNodeSortedIndexArray[i]])\n : [indexKey, subNodeSortedIndexArray[i]];\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childrenLength,\n // this.pagination.currentPage * this.pagination.perPageCount +\n // recordRowIndex +\n // childrenLength,\n 0,\n childIndex\n );\n\n // const preChildState = this.treeDataHierarchyState.get(childIndex.join(','));\n const childData = this.getOriginalRecord(childIndex);\n if (!nodeData.children[i].hierarchyState && (childData as any).children) {\n // this.treeDataHierarchyState.set(childIndex.join(','), HierarchyState.collapse);\n nodeData.children[i].hierarchyState = HierarchyState.collapse;\n }\n childrenLength += this.pushChildrenNode(\n childIndex,\n // this.treeDataHierarchyState.get(childIndex.join(',')),\n nodeData.children[i].hierarchyState,\n nodeData.children[subNodeSortedIndexArray[i]]\n );\n }\n }\n return childrenLength;\n }\n changeFieldValue(\n value: FieldData,\n index: number,\n field: FieldDef,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n if (index >= 0) {\n const dataIndex = this.getIndexKey(index) as number;\n\n if (!this.beforeChangedRecordsMap[dataIndex]) {\n const originRecord = this.getOriginalRecord(dataIndex);\n this.beforeChangedRecordsMap[dataIndex] = cloneDeep(originRecord);\n }\n if (typeof field === 'string' || typeof field === 'number') {\n const beforeChangedValue = this.beforeChangedRecordsMap[dataIndex][field]; // this.getOriginalField(index, field, col, row, table);\n const record = this.getOriginalRecord(dataIndex);\n let formatValue = value;\n if (typeof beforeChangedValue === 'number' && isAllDigits(value)) {\n formatValue = parseFloat(value);\n }\n if (isPromise(record)) {\n record\n .then(record => {\n record[field] = formatValue;\n })\n .catch((err: Error) => {\n console.error('VTable Error:', err);\n });\n } else {\n record[field] = formatValue;\n }\n }\n }\n // return getField(record, field);\n }\n /**\n * 将数据record 替换到index位置处\n * @param record\n * @param index\n */\n setRecord(record: any, index: number) {\n const indexed = this.getIndexKey(index);\n if (!Array.isArray(indexed)) {\n this.source.splice(indexed, 1, record);\n } else {\n const c_node_index = (indexed as Array<any>)[indexed.length - 1];\n const p_node = this.getOriginalRecord(indexed.slice(0, indexed.length - 1));\n (p_node as any).children.splice(c_node_index, 1, record);\n }\n }\n /**\n * 将单条数据record 添加到index位置处\n * @param record 被添加的单条数据\n * @param index 代表的数据源中的index\n */\n addRecord(record: any, index: number) {\n this.source.splice(index, 0, record);\n this.currentIndexedData.push(this.currentIndexedData.length);\n this._sourceLength += 1;\n this.initTreeHierarchyState();\n if (this.userPagination) {\n //如果用户配置了分页\n this.pagination.totalCount = this._sourceLength;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (index < endIndex) {\n this.updatePagerData();\n }\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n }\n /**\n * 将多条数据recordArr 依次添加到index位置处\n * @param recordArr\n * @param index 代表的数据源中的index\n */\n addRecords(recordArr: any, index: number) {\n if (Array.isArray(recordArr)) {\n this.source.splice(index, 0, ...recordArr);\n for (let i = 0; i < recordArr.length; i++) {\n this.currentIndexedData.push(this.currentIndexedData.length);\n }\n this._sourceLength += recordArr.length;\n }\n\n if (this.userPagination) {\n //如果用户配置了分页\n this.pagination.totalCount = this._sourceLength;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (index < endIndex) {\n this.updatePagerData();\n }\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n }\n\n /**\n * 将单条数据record 添加到index位置处\n * @param record 被添加的单条数据\n * @param index 代表的数据源中的index\n */\n addRecordForSorted(record: any) {\n this.source.push(record);\n this.currentIndexedData.push(this.currentIndexedData.length);\n this._sourceLength += 1;\n this.sortedIndexMap.clear();\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n /**\n * 将多条数据recordArr 依次添加到index位置处\n * @param recordArr\n * @param index 代表的数据源中的index\n */\n addRecordsForSorted(recordArr: any) {\n if (Array.isArray(recordArr)) {\n this.source.push(...recordArr);\n for (let i = 0; i < recordArr.length; i++) {\n this.currentIndexedData.push(this.currentIndexedData.length);\n }\n this._sourceLength += recordArr.length;\n this.sortedIndexMap.clear();\n }\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n\n /**\n * 删除多条数据recordIndexs\n */\n deleteRecords(recordIndexs: number[]) {\n const realDeletedRecordIndexs = [];\n const recordIndexsMaxToMin = recordIndexs.sort((a, b) => b - a);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n realDeletedRecordIndexs.push(recordIndex);\n this.source.splice(recordIndex, 1);\n this.currentIndexedData.pop();\n this._sourceLength -= 1;\n }\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n return realDeletedRecordIndexs;\n }\n /**\n * 删除多条数据recordIndexs\n */\n deleteRecordsForSorted(recordIndexs: number[]) {\n const recordIndexsMaxToMin = recordIndexs.sort((a, b) => b - a);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n const rawIndex = this.currentIndexedData[recordIndex];\n this.source.splice(rawIndex, 1);\n this._sourceLength -= 1;\n }\n this.sortedIndexMap.clear();\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n\n /**\n * 修改多条数据recordIndexs\n */\n updateRecords(records: any[], recordIndexs: number[]) {\n const realDeletedRecordIndexs = [];\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n realDeletedRecordIndexs.push(recordIndex);\n this.source[recordIndex] = records[index];\n }\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n }\n return realDeletedRecordIndexs;\n }\n\n /**\n * 删除多条数据recordIndexs\n */\n updateRecordsForSorted(records: any[], recordIndexs: number[]) {\n const realDeletedRecordIndexs: number[] = [];\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n const rawIndex = this.currentIndexedData[recordIndex];\n if (typeof rawIndex !== 'number') {\n return;\n }\n realDeletedRecordIndexs.push(recordIndex);\n this.source[rawIndex] = records[index];\n }\n this.sortedIndexMap.clear();\n }\n\n sort(\n field: FieldDef,\n order: SortOrder,\n orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1 = order !== 'desc'\n ? (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 > v2 ? 1 : -1)\n : (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 < v2 ? 1 : -1)\n ): void {\n this.lastOrderField = field;\n this.lastOrder = order;\n this.lastOrderFn = orderFn;\n let filedMap = this.sortedIndexMap.get(field);\n let orderedData;\n\n if (filedMap) {\n orderedData = filedMap[order];\n if (orderedData && orderedData.length > 0) {\n this.currentIndexedData = orderedData;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n return;\n }\n }\n const sortedIndexArray = [] as number[];\n if (order === 'normal') {\n for (let i = 0; i < this._sourceLength; i++) {\n sortedIndexArray[i] = i;\n }\n } else {\n sort.sort(\n index => (isValid(sortedIndexArray[index]) ? sortedIndexArray[index] : (sortedIndexArray[index] = index)),\n (index, rel) => {\n sortedIndexArray[index] = rel;\n },\n this._sourceLength,\n orderFn,\n order,\n index => this.getOriginalField(index, field)\n );\n }\n this.currentIndexedData = sortedIndexArray;\n\n if (this.hierarchyExpandLevel) {\n let nodeLength = sortedIndexArray.length;\n const t0 = window.performance.now();\n for (let i = 0; i < nodeLength; i++) {\n const record = this.getOriginalRecord(sortedIndexArray[i]);\n const subNodeLength = this.pushChildrenNode(\n sortedIndexArray[i],\n // this.treeDataHierarchyState.get(sortedIndexArray[i]),\n record.hierarchyState,\n this.getOriginalRecord(sortedIndexArray[i]) // ?sortedIndexArray 在这个过程中不是变化了吗 通过i取id还是对的吗? 对哦!因为i和nodeLength都+subNodeLength 来动态调整过了!\n );\n nodeLength += subNodeLength;\n i += subNodeLength;\n }\n }\n if (!filedMap) {\n filedMap = { asc: [], desc: [], normal: [] };\n this.sortedIndexMap.set(field, filedMap);\n }\n filedMap[order] = sortedIndexArray;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n }\n\n private filterRecord(record: any) {\n let isReserved = true;\n for (let i = 0; i < this.dataConfig.filterRules.length; i++) {\n const filterRule = this.dataConfig?.filterRules[i];\n if (filterRule.filterKey) {\n const filterValue = record[filterRule.filterKey];\n if (filterRule.filteredValues.indexOf(filterValue) === -1) {\n isReserved = false;\n break;\n }\n } else if (!filterRule.filterFunc?.(record)) {\n isReserved = false;\n break;\n }\n }\n return isReserved;\n }\n\n updateFilterRulesForSorted(filterRules?: FilterRules): void {\n this.dataConfig.filterRules = filterRules;\n this._source = this.processRecords(this.dataSourceObj?.source ?? this.dataSourceObj);\n this._sourceLength = this._source?.length || 0;\n this.sortedIndexMap.clear();\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n\n updateFilterRules(filterRules?: FilterRules): void {\n this.dataConfig.filterRules = filterRules;\n this._source = this.processRecords(this.dataSourceObj?.source ?? this.dataSourceObj);\n this._sourceLength = this._source?.length || 0;\n // 初始化currentIndexedData 正常未排序。设置其状态\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n }\n /**\n * 当节点折叠或者展开时 将排序缓存清空(非当前排序规则的缓存)\n */\n clearSortedIndexMap() {\n if (this.lastOrderField && this.lastOrder) {\n this.sortedIndexMap.forEach((sortMap, key) => {\n if (key !== this.lastOrderField) {\n this.sortedIndexMap.delete(key);\n } else if (this.lastOrder === 'asc') {\n sortMap.desc = [];\n sortMap.normal = [];\n } else if (this.lastOrder === 'desc') {\n sortMap.asc = [];\n sortMap.normal = [];\n } else {\n sortMap.desc = [];\n sortMap.asc = [];\n }\n });\n }\n }\n get sourceLength(): number {\n return this._sourceLength;\n }\n set sourceLength(sourceLen: number) {\n if (this._sourceLength === sourceLen) {\n return;\n }\n this._sourceLength = sourceLen;\n this.fireListeners(EVENT_TYPE.SOURCE_LENGTH_UPDATE, this._sourceLength);\n }\n get length(): number {\n return this.currentPagerIndexedData.length;\n }\n get dataSource(): DataSource {\n return this;\n }\n get currentPagerIndexedData(): (number | number[])[] {\n if (this._currentPagerIndexedData.length > 0) {\n return this._currentPagerIndexedData;\n }\n return []; //this.currentIndexedData || [];\n }\n release(): void {\n super.release?.();\n }\n clearSortedMap() {\n this.currentIndexedData && (this.currentIndexedData.length = 0);\n this.currentIndexedData = null;\n this.sortedIndexMap.forEach(item => {\n item.asc && (item.asc.length = 0);\n item.desc && (item.desc.length = 0);\n });\n this.sortedIndexMap.clear();\n }\n clearCurrentIndexedData(): void {\n this.currentIndexedData = null;\n this.currentPagerIndexedData.length = 0;\n }\n protected getOriginalRecord(dataIndex: number | number[]): MaybePromiseOrUndefined {\n if (this.dataConfig?.filterRules) {\n return (this.source as Array<any>)[dataIndex as number];\n }\n return getValue(this._get(dataIndex), (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(dataIndex, val);\n });\n }\n protected getRawRecord(dataIndex: number): MaybePromiseOrUndefined {\n if (this.beforeChangedRecordsMap?.[dataIndex as number]) {\n return this.beforeChangedRecordsMap[dataIndex as number];\n }\n return getValue(this._get(dataIndex), (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(dataIndex, val);\n });\n }\n protected getOriginalField(\n index: number | number[],\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getOriginalRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected getRawFieldData(\n index: number,\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getRawRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected hasOriginalField(index: number | number[], field: FieldDef): boolean {\n if (field === null) {\n return false;\n }\n if (typeof field === 'function') {\n return true;\n }\n const record = this.getOriginalRecord(index);\n return Boolean(record && (field as any) in (record as any));\n }\n\n protected fieldPromiseCallBack(\n _index: number | number[],\n _field: FieldDef | FieldFormat | number,\n _value: MaybePromiseOrUndefined\n ): void {\n //\n }\n protected recordPromiseCallBack(_index: number | number[], _record: MaybePromiseOrUndefined): void {\n //\n }\n /** 静态变量 代表数据为空 */\n static EMPTY = new DataSource({\n get() {\n /* noop */\n },\n length: 0\n });\n isCanExchangeOrder(sourceIndex: number, targetIndex: number) {\n // if (this.treeDataHierarchyState?.size > 0) {\n if (this.hasHierarchyStateExpand) {\n let sourceIndexs = this.currentPagerIndexedData[sourceIndex] as number[];\n let targetIndexs = this.currentPagerIndexedData[targetIndex] as number[];\n if (Array.isArray(sourceIndexs)) {\n sourceIndexs = [...sourceIndexs];\n } else {\n sourceIndexs = [sourceIndexs];\n }\n\n if (Array.isArray(targetIndexs)) {\n targetIndexs = [...targetIndexs];\n } else {\n targetIndexs = [targetIndexs];\n }\n\n if (targetIndex > sourceIndex) {\n if (targetIndexs.length > sourceIndexs.length) {\n let targetNextIndexs = this.currentPagerIndexedData[targetIndex + 1] as number[];\n if (Array.isArray(targetNextIndexs)) {\n targetNextIndexs = [...targetNextIndexs];\n } else {\n targetNextIndexs = [targetNextIndexs];\n }\n\n if (targetNextIndexs.length < targetIndexs.length) {\n targetIndexs.splice(targetIndexs.length - 1, 1);\n }\n }\n }\n if (sourceIndexs.length === targetIndexs.length) {\n for (let i = 0; i <= sourceIndexs.length - 2; i++) {\n if (sourceIndexs[i] !== targetIndexs[i]) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n }\n return true;\n }\n reorderRecord(sourceIndex: number, targetIndex: number) {\n if (this.lastOrder === 'asc' || this.lastOrder === 'desc') {\n // const sourceIds = this._currentPagerIndexedData.splice(sourceIndex, 1);\n // sourceIds.unshift(targetIndex, 0);\n // Array.prototype.splice.apply(this._currentPagerIndexedData, sourceIds);\n return;\n } else if (this.isCanExchangeOrder(sourceIndex, targetIndex)) {\n // if (this.treeDataHierarchyState?.size > 0) {\n if (this.hasHierarchyStateExpand) {\n let sourceIndexs = this.currentPagerIndexedData[sourceIndex];\n let targetIndexs = this.currentPagerIndexedData[targetIndex];\n if (Array.isArray(sourceIndexs)) {\n sourceIndexs = [...sourceIndexs];\n } else {\n sourceIndexs = [sourceIndexs];\n }\n\n if (Array.isArray(targetIndexs)) {\n targetIndexs = [...targetIndexs];\n } else {\n targetIndexs = [targetIndexs];\n }\n\n let sourceI;\n let targetI;\n if (sourceIndexs.length > 1 || targetIndexs.length > 1) {\n if (targetIndex > sourceIndex) {\n if (targetIndexs.length > sourceIndexs.length) {\n let targetNextIndexs = this.currentPagerIndexedData[targetIndex + 1] as number[];\n if (Array.isArray(targetNextIndexs)) {\n targetNextIndexs = [...targetNextIndexs];\n } else {\n targetNextIndexs = [targetNextIndexs];\n }\n\n if (targetNextIndexs.length < targetIndexs.length) {\n targetIndexs.splice(targetIndexs.length - 1, 1);\n }\n }\n }\n sourceI = (<number[]>sourceIndexs).splice(sourceIndexs.length - 1, 1)[0];\n targetI = (<number[]>targetIndexs).splice(targetIndexs.length - 1, 1)[0];\n if (sourceIndexs.length >= 1) {\n const parent = this.getOriginalRecord(sourceIndexs);\n const sourceIds = parent.children.splice(sourceI, 1);\n sourceIds.unshift(targetI, 0);\n Array.prototype.splice.apply(parent.children, sourceIds);\n } else {\n const sourceIds = this.source.splice(sourceI, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n sourceIds.unshift(targetI, 0);\n Array.prototype.splice.apply(this.source, sourceIds);\n }\n } else {\n sourceI = this.currentPagerIndexedData[sourceIndex];\n targetI = this.currentPagerIndexedData[targetIndex];\n // 从source的二维数组中取出需要操作的records\n const records = this.source.splice(sourceI, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n records.unshift(targetI, 0);\n Array.prototype.splice.apply(this.source, records);\n }\n this.restoreTreeHierarchyState();\n this.updatePagerData();\n } else {\n // 从source的二维数组中取出需要操作的records\n const records = this.source.splice(sourceIndex, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n records.unshift(targetIndex, 0);\n Array.prototype.splice.apply(this.source, records);\n }\n }\n }\n\n restoreTreeHierarchyState() {\n if (this.hierarchyExpandLevel) {\n for (let i = 0; i < this._sourceLength; i++) {\n //expandLevel为有效值即需要按tree分析展示数据\n const nodeData = this.getOriginalRecord(i);\n (nodeData as any).children && !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n let nodeLength = this._sourceLength;\n for (let i = 0; i < nodeLength; i++) {\n const indexKey = this.currentIndexedData[i];\n const nodeData = this.getOriginalRecord(indexKey);\n if ((nodeData as any).children?.length > 0 && nodeData.hierarchyState === HierarchyState.expand) {\n this.hasHierarchyStateExpand = true;\n const childrenLength = this.restoreChildrenNodeHierarchy(indexKey, nodeData);\n i += childrenLength;\n nodeLength += childrenLength;\n } else if ((nodeData as any).children === true) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n }\n }\n restoreChildrenNodeHierarchy(\n indexKey: number | number[],\n\n nodeData: any\n ): number {\n let childTotalLength = 0;\n const nodeLength = nodeData.children?.length ?? 0;\n for (let j = 0; j < nodeLength; j++) {\n if (nodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += 1;\n }\n const childNodeData = nodeData.children[j];\n const childIndexKey = Array.isArray(indexKey) ? indexKey.concat(j) : [indexKey, j];\n if (nodeData.hierarchyState === HierarchyState.expand) {\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childTotalLength,\n // childTotalLength,\n 0,\n childIndexKey\n );\n }\n childTotalLength += this.restoreChildrenNodeHierarchy(\n childIndexKey,\n\n childNodeData\n );\n }\n return childTotalLength;\n }\n}\n"]}
package/es/event/event.js CHANGED
@@ -67,7 +67,8 @@ export class EventManager {
67
67
  if (e.federatedEvent) {
68
68
  const eventArgsSet = getCellEventArgsSet(e.federatedEvent), resizeCol = this.table.scenegraph.getResizeColAt(eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y, null === (_a = eventArgsSet.eventArgs) || void 0 === _a ? void 0 : _a.targetCell);
69
69
  if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {
70
- this.table.scenegraph.updateAutoColWidth(resizeCol.col), this.table.scenegraph.updateChartSize(resizeCol.col);
70
+ this.table.scenegraph.updateAutoColWidth(resizeCol.col), this.table.internalProps._widthResizedColMap.add(resizeCol.col),
71
+ this.table.scenegraph.updateChartSize(resizeCol.col);
71
72
  const state = this.table.stateManager;
72
73
  state.columnResize.col < state.table.frozenColCount && !state.table.isPivotTable() && !state.table.transpose && state.table.scenegraph.component.setFrozenColumnShadow(state.table.frozenColCount - 1, state.columnResize.isRightFrozen);
73
74
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["// import { FederatedPointerEvent } from '@src/vrender';\nimport type { FederatedPointerEvent, Gesture } from './../vrender';\nimport { RichText } from './../vrender';\nimport type { ColumnDefine, MousePointerCellEvent } from '../ts-types';\nimport { IconFuncTypeEnum } from '../ts-types';\nimport type { StateManager } from '../state/state';\nimport type { Group } from '../scenegraph/graphic/group';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { Icon } from '../scenegraph/graphic/icon';\nimport { checkCellInSelect } from '../state/common/check-in-select';\nimport { bindMediaClick } from './media-click';\nimport { bindDrillEvent, checkHaveDrill, drillClick } from './drill';\nimport { bindSparklineHoverEvent } from './sparkline-event';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { checkHaveTextStick, handleTextStick } from '../scenegraph/stick-text';\nimport { bindGesture, bindTableGroupListener } from './listener/table-group';\nimport { bindScrollBarListener } from './listener/scroll-bar';\nimport { bindContainerDomListener } from './listener/container-dom';\nimport { bindTouchListener } from './listener/touch';\nimport { getCellEventArgsSet, type SceneEvent } from './util';\nimport { bindAxisClickEvent } from './pivot-chart/axis-click';\nimport { bindAxisHoverEvent } from './pivot-chart/axis-hover';\nimport type { PivotTable } from '../PivotTable';\nimport { Env } from '../tools/env';\nimport type { ListTable } from '../ListTable';\nimport { isValid } from '@visactor/vutils';\n\nexport class EventManager {\n table: BaseTableAPI;\n // _col: number;\n // _resizing: boolean = false;\n // /** 为了能够判断canvas mousedown 事件 以阻止事件冒泡 */\n // isPointerDownOnTable: boolean = false;\n isTouchdown: boolean; // touch scrolling mode on\n touchMovePoints: {\n x: number;\n y: number;\n timestamp: number;\n }[]; // touch points record in touch scrolling mode\n touchSetTimeout: any; // touch start timeout, use to distinguish touch scrolling mode and default touch event\n touchEnd: boolean; // is touch event end when default touch event listener response\n touchMove: boolean; // is touch listener working, use to disable document touch scrolling function\n gesture: Gesture;\n handleTextStickBindId: number;\n\n //鼠标事件记录。 PointerMove敏感度太高了 记录下上一个鼠标位置 在接收到PointerMove事件时做判断 是否到到触发框选或者移动表头操作的标准,防止误触\n LastPointerXY: { x: number; y: number };\n LastBodyPointerXY: { x: number; y: number };\n isDown = false;\n isDraging = false;\n\n globalEventListeners: { name: string; env: 'document' | 'body' | 'window'; callback: (e?: any) => void }[] = [];\n\n constructor(table: BaseTableAPI) {\n this.table = table;\n if (Env.mode === 'node') {\n return;\n }\n this.bindOuterEvent();\n setTimeout(() => {\n this.bindSelfEvent();\n }, 0);\n }\n\n // 绑定DOM事件\n bindOuterEvent() {\n bindTableGroupListener(this);\n bindContainerDomListener(this);\n bindScrollBarListener(this);\n bindTouchListener(this);\n bindGesture(this);\n }\n updateEventBinder() {\n setTimeout(() => {\n // 处理textStick 是否绑定SCROLL的判断\n if (checkHaveTextStick(this.table) && !this.handleTextStickBindId) {\n this.handleTextStickBindId = this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n handleTextStick(this.table);\n });\n } else if (!checkHaveTextStick(this.table) && this.handleTextStickBindId) {\n this.table.off(this.handleTextStickBindId);\n this.handleTextStickBindId = undefined;\n }\n }, 0);\n }\n bindSelfEvent() {\n if (this.table.isReleased) {\n return;\n }\n\n const stateManager: StateManager = this.table.stateManager;\n\n // 图标点击\n this.table.on(TABLE_EVENT_TYPE.ICON_CLICK, iconInfo => {\n const { col, row, x, y, funcType, icon, event } = iconInfo;\n // 下拉菜单按钮点击\n if (funcType === IconFuncTypeEnum.dropDown) {\n stateManager.triggerDropDownMenu(col, row, x, y, event);\n } else if (funcType === IconFuncTypeEnum.sort) {\n stateManager.triggerSort(col, row, icon, event);\n } else if (funcType === IconFuncTypeEnum.frozen) {\n stateManager.triggerFreeze(col, row, icon);\n } else if (funcType === IconFuncTypeEnum.drillDown) {\n drillClick(this.table);\n } else if (funcType === IconFuncTypeEnum.collapse || funcType === IconFuncTypeEnum.expand) {\n this.table.stateManager.updateSelectPos(-1, -1);\n this.table.toggleHierarchyState(col, row);\n }\n });\n\n // 下拉菜单内容点击\n this.table.on(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLICK, () => {\n stateManager.hideMenu();\n });\n\n // 处理textStick\n if (checkHaveTextStick(this.table)) {\n this.handleTextStickBindId = this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n handleTextStick(this.table);\n });\n }\n\n // link/image/video点击\n bindMediaClick(this.table);\n\n // 双击自动列宽\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, (e: MousePointerCellEvent) => {\n if (e.federatedEvent) {\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent as any);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n this.table.scenegraph.updateAutoColWidth(resizeCol.col);\n\n // if (this.table.isPivotChart()) {\n this.table.scenegraph.updateChartSize(resizeCol.col);\n // }\n const state = this.table.stateManager;\n // update frozen shadowline component\n if (\n state.columnResize.col < state.table.frozenColCount &&\n !state.table.isPivotTable() &&\n !(state.table as ListTable).transpose\n ) {\n state.table.scenegraph.component.setFrozenColumnShadow(\n state.table.frozenColCount - 1,\n state.columnResize.isRightFrozen\n );\n }\n }\n }\n });\n\n // drill icon\n if (this.table.isPivotTable() && checkHaveDrill(this.table as PivotTable)) {\n bindDrillEvent(this.table);\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n\n // axis click\n bindAxisClickEvent(this.table);\n\n // chart axis event\n bindAxisHoverEvent(this.table);\n }\n\n dealTableHover(eventArgsSet?: SceneEvent) {\n if (!eventArgsSet) {\n this.table.stateManager.updateHoverPos(-1, -1);\n return;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverPos(eventArgs.col, eventArgs.row);\n } else {\n this.table.stateManager.updateHoverPos(-1, -1);\n }\n }\n\n dealIconHover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverIcon(\n eventArgs.col,\n eventArgs.row,\n eventArgs.target,\n eventArgs.targetCell,\n eventArgs.event\n );\n } else {\n this.table.stateManager.updateHoverIcon(-1, -1, undefined, undefined);\n }\n }\n\n dealMenuHover(eventArgsSet: SceneEvent) {\n // menu自身状态实现\n }\n\n dealTableSelect(eventArgsSet?: SceneEvent, isSelectMoving?: boolean): boolean {\n if (!eventArgsSet) {\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n if (eventArgs.target.name === 'checkbox') {\n return false;\n }\n\n // // 注意:如果启用下面这句代码逻辑 则在点击选中单元格时失效hover效果。但是会导致chart实例的click事件失效,所以先特殊处理这个逻辑\n // if (\n // !this.table.isPivotChart() &&\n // eventArgsSet?.eventArgs?.target.type !== 'chart' &&\n // eventArgs.event.pointerType !== 'touch'\n // ) {\n // this.table.stateManager.updateHoverPos(-1, -1);\n // }\n const define = this.table.getBodyColumnDefine(eventArgs.col, eventArgs.row);\n if (\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n ((define as ColumnDefine)?.disableHeaderSelect || this.table.stateManager.select?.disableHeader)\n ) {\n if (!isSelectMoving) {\n // 如果是点击点表头 取消单元格选中状态\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n } else if (!this.table.isHeader(eventArgs.col, eventArgs.row) && (define as ColumnDefine)?.disableSelect) {\n if (!isSelectMoving) {\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n }\n\n if (\n this.table.isPivotChart() &&\n (eventArgsSet?.eventArgs?.target.name === 'axis-label' || eventArgsSet?.eventArgs?.target.type === 'chart')\n ) {\n // 点击透视图坐标轴标签或图标内容,执行图表状态更新,不触发Select\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey\n );\n return true;\n }\n // this.table.stateManager.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n\n deelTableSelectAll() {\n this.table.stateManager.updateSelectPos(-1, -1, false, false, true);\n }\n\n dealMenuSelect(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n checkColumnResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // this.table.stateManager.updateResizeCol(resizeCol.col, eventArgsSet.abstractPos.x, first);\n // this._col = resizeCol.col;\n if (update) {\n this.table.stateManager.startResizeCol(\n resizeCol.col,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeCol.rightFrozen\n );\n }\n return true;\n }\n }\n\n return false;\n }\n\n dealColumnResize(xInTable: number, yInTable: number) {\n this.table.stateManager.updateResizeCol(xInTable, yInTable);\n }\n\n chechColumnMover(eventArgsSet: SceneEvent): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if (\n eventArgs &&\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n checkCellInSelect(eventArgs.col, eventArgs.row, this.table.stateManager.select.ranges) &&\n // this.table.stateManager.select.cellPosStart.col === eventArgs.col &&\n // this.table.stateManager.select.cellPosStart.row === eventArgs.row &&\n this.table._canDragHeaderPosition(eventArgs.col, eventArgs.row)\n ) {\n this.table.stateManager.startMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n return true;\n }\n\n return false;\n }\n\n dealColumnMover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n if (isValid(eventArgs.col) && isValid(eventArgs.row)) {\n this.table.stateManager.updateMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n }\n }\n\n startColumnResize(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n dealIconClick(e: FederatedPointerEvent, eventArgsSet: SceneEvent): boolean {\n const { eventArgs } = eventArgsSet;\n // if (!eventArgs) {\n // return false;\n // }\n\n const { target, event, col, row } = eventArgs || {\n target: e.target,\n event: e,\n col: -1,\n row: -1\n };\n const icon = target as unknown as Icon;\n\n if (icon.role && icon.role.startsWith('icon-')) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.name,\n // 默认位置:icon中部正下方\n x: (icon.globalAABBBounds.x1 + icon.globalAABBBounds.x2) / 2,\n y: icon.globalAABBBounds.y2,\n col,\n row,\n funcType: icon.attribute.funcType,\n icon,\n event\n });\n\n return true;\n } else if (target instanceof RichText) {\n const icon = target.pickIcon(event.global);\n if (icon) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.attribute.id,\n // 默认位置:icon中部正下方\n x: icon.globalX + icon.globalAABBBounds.width() / 2,\n y: icon.globalY + icon.AABBBounds.height(),\n col,\n row,\n funcType: (icon.attribute as any).funcType,\n icon: icon as unknown as Icon,\n event\n });\n return true;\n }\n }\n\n return false;\n }\n /** TODO 其他的事件并么有做remove */\n release() {\n this.gesture.release();\n\n // remove global event listerner\n this.globalEventListeners.forEach(item => {\n if (item.env === 'document') {\n document.removeEventListener(item.name, item.callback);\n } else if (item.env === 'body') {\n document.body.removeEventListener(item.name, item.callback);\n } else if (item.env === 'window') {\n window.removeEventListener(item.name, item.callback);\n }\n });\n this.globalEventListeners = [];\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/event/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["// import { FederatedPointerEvent } from '@src/vrender';\nimport type { FederatedPointerEvent, Gesture } from './../vrender';\nimport { RichText } from './../vrender';\nimport type { ColumnDefine, MousePointerCellEvent } from '../ts-types';\nimport { IconFuncTypeEnum } from '../ts-types';\nimport type { StateManager } from '../state/state';\nimport type { Group } from '../scenegraph/graphic/group';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { Icon } from '../scenegraph/graphic/icon';\nimport { checkCellInSelect } from '../state/common/check-in-select';\nimport { bindMediaClick } from './media-click';\nimport { bindDrillEvent, checkHaveDrill, drillClick } from './drill';\nimport { bindSparklineHoverEvent } from './sparkline-event';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { checkHaveTextStick, handleTextStick } from '../scenegraph/stick-text';\nimport { bindGesture, bindTableGroupListener } from './listener/table-group';\nimport { bindScrollBarListener } from './listener/scroll-bar';\nimport { bindContainerDomListener } from './listener/container-dom';\nimport { bindTouchListener } from './listener/touch';\nimport { getCellEventArgsSet, type SceneEvent } from './util';\nimport { bindAxisClickEvent } from './pivot-chart/axis-click';\nimport { bindAxisHoverEvent } from './pivot-chart/axis-hover';\nimport type { PivotTable } from '../PivotTable';\nimport { Env } from '../tools/env';\nimport type { ListTable } from '../ListTable';\nimport { isValid } from '@visactor/vutils';\n\nexport class EventManager {\n table: BaseTableAPI;\n // _col: number;\n // _resizing: boolean = false;\n // /** 为了能够判断canvas mousedown 事件 以阻止事件冒泡 */\n // isPointerDownOnTable: boolean = false;\n isTouchdown: boolean; // touch scrolling mode on\n touchMovePoints: {\n x: number;\n y: number;\n timestamp: number;\n }[]; // touch points record in touch scrolling mode\n touchSetTimeout: any; // touch start timeout, use to distinguish touch scrolling mode and default touch event\n touchEnd: boolean; // is touch event end when default touch event listener response\n touchMove: boolean; // is touch listener working, use to disable document touch scrolling function\n gesture: Gesture;\n handleTextStickBindId: number;\n\n //鼠标事件记录。 PointerMove敏感度太高了 记录下上一个鼠标位置 在接收到PointerMove事件时做判断 是否到到触发框选或者移动表头操作的标准,防止误触\n LastPointerXY: { x: number; y: number };\n LastBodyPointerXY: { x: number; y: number };\n isDown = false;\n isDraging = false;\n\n globalEventListeners: { name: string; env: 'document' | 'body' | 'window'; callback: (e?: any) => void }[] = [];\n\n constructor(table: BaseTableAPI) {\n this.table = table;\n if (Env.mode === 'node') {\n return;\n }\n this.bindOuterEvent();\n setTimeout(() => {\n this.bindSelfEvent();\n }, 0);\n }\n\n // 绑定DOM事件\n bindOuterEvent() {\n bindTableGroupListener(this);\n bindContainerDomListener(this);\n bindScrollBarListener(this);\n bindTouchListener(this);\n bindGesture(this);\n }\n updateEventBinder() {\n setTimeout(() => {\n // 处理textStick 是否绑定SCROLL的判断\n if (checkHaveTextStick(this.table) && !this.handleTextStickBindId) {\n this.handleTextStickBindId = this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n handleTextStick(this.table);\n });\n } else if (!checkHaveTextStick(this.table) && this.handleTextStickBindId) {\n this.table.off(this.handleTextStickBindId);\n this.handleTextStickBindId = undefined;\n }\n }, 0);\n }\n bindSelfEvent() {\n if (this.table.isReleased) {\n return;\n }\n\n const stateManager: StateManager = this.table.stateManager;\n\n // 图标点击\n this.table.on(TABLE_EVENT_TYPE.ICON_CLICK, iconInfo => {\n const { col, row, x, y, funcType, icon, event } = iconInfo;\n // 下拉菜单按钮点击\n if (funcType === IconFuncTypeEnum.dropDown) {\n stateManager.triggerDropDownMenu(col, row, x, y, event);\n } else if (funcType === IconFuncTypeEnum.sort) {\n stateManager.triggerSort(col, row, icon, event);\n } else if (funcType === IconFuncTypeEnum.frozen) {\n stateManager.triggerFreeze(col, row, icon);\n } else if (funcType === IconFuncTypeEnum.drillDown) {\n drillClick(this.table);\n } else if (funcType === IconFuncTypeEnum.collapse || funcType === IconFuncTypeEnum.expand) {\n this.table.stateManager.updateSelectPos(-1, -1);\n this.table.toggleHierarchyState(col, row);\n }\n });\n\n // 下拉菜单内容点击\n this.table.on(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLICK, () => {\n stateManager.hideMenu();\n });\n\n // 处理textStick\n if (checkHaveTextStick(this.table)) {\n this.handleTextStickBindId = this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n handleTextStick(this.table);\n });\n }\n\n // link/image/video点击\n bindMediaClick(this.table);\n\n // 双击自动列宽\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, (e: MousePointerCellEvent) => {\n if (e.federatedEvent) {\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent as any);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n this.table.scenegraph.updateAutoColWidth(resizeCol.col);\n this.table.internalProps._widthResizedColMap.add(resizeCol.col);\n // if (this.table.isPivotChart()) {\n this.table.scenegraph.updateChartSize(resizeCol.col);\n // }\n const state = this.table.stateManager;\n // update frozen shadowline component\n if (\n state.columnResize.col < state.table.frozenColCount &&\n !state.table.isPivotTable() &&\n !(state.table as ListTable).transpose\n ) {\n state.table.scenegraph.component.setFrozenColumnShadow(\n state.table.frozenColCount - 1,\n state.columnResize.isRightFrozen\n );\n }\n }\n }\n });\n\n // drill icon\n if (this.table.isPivotTable() && checkHaveDrill(this.table as PivotTable)) {\n bindDrillEvent(this.table);\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n\n // axis click\n bindAxisClickEvent(this.table);\n\n // chart axis event\n bindAxisHoverEvent(this.table);\n }\n\n dealTableHover(eventArgsSet?: SceneEvent) {\n if (!eventArgsSet) {\n this.table.stateManager.updateHoverPos(-1, -1);\n return;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverPos(eventArgs.col, eventArgs.row);\n } else {\n this.table.stateManager.updateHoverPos(-1, -1);\n }\n }\n\n dealIconHover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverIcon(\n eventArgs.col,\n eventArgs.row,\n eventArgs.target,\n eventArgs.targetCell,\n eventArgs.event\n );\n } else {\n this.table.stateManager.updateHoverIcon(-1, -1, undefined, undefined);\n }\n }\n\n dealMenuHover(eventArgsSet: SceneEvent) {\n // menu自身状态实现\n }\n\n dealTableSelect(eventArgsSet?: SceneEvent, isSelectMoving?: boolean): boolean {\n if (!eventArgsSet) {\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n if (eventArgs.target.name === 'checkbox') {\n return false;\n }\n\n // // 注意:如果启用下面这句代码逻辑 则在点击选中单元格时失效hover效果。但是会导致chart实例的click事件失效,所以先特殊处理这个逻辑\n // if (\n // !this.table.isPivotChart() &&\n // eventArgsSet?.eventArgs?.target.type !== 'chart' &&\n // eventArgs.event.pointerType !== 'touch'\n // ) {\n // this.table.stateManager.updateHoverPos(-1, -1);\n // }\n const define = this.table.getBodyColumnDefine(eventArgs.col, eventArgs.row);\n if (\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n ((define as ColumnDefine)?.disableHeaderSelect || this.table.stateManager.select?.disableHeader)\n ) {\n if (!isSelectMoving) {\n // 如果是点击点表头 取消单元格选中状态\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n } else if (!this.table.isHeader(eventArgs.col, eventArgs.row) && (define as ColumnDefine)?.disableSelect) {\n if (!isSelectMoving) {\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n }\n\n if (\n this.table.isPivotChart() &&\n (eventArgsSet?.eventArgs?.target.name === 'axis-label' || eventArgsSet?.eventArgs?.target.type === 'chart')\n ) {\n // 点击透视图坐标轴标签或图标内容,执行图表状态更新,不触发Select\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey\n );\n return true;\n }\n // this.table.stateManager.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n\n deelTableSelectAll() {\n this.table.stateManager.updateSelectPos(-1, -1, false, false, true);\n }\n\n dealMenuSelect(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n checkColumnResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // this.table.stateManager.updateResizeCol(resizeCol.col, eventArgsSet.abstractPos.x, first);\n // this._col = resizeCol.col;\n if (update) {\n this.table.stateManager.startResizeCol(\n resizeCol.col,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeCol.rightFrozen\n );\n }\n return true;\n }\n }\n\n return false;\n }\n\n dealColumnResize(xInTable: number, yInTable: number) {\n this.table.stateManager.updateResizeCol(xInTable, yInTable);\n }\n\n chechColumnMover(eventArgsSet: SceneEvent): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if (\n eventArgs &&\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n checkCellInSelect(eventArgs.col, eventArgs.row, this.table.stateManager.select.ranges) &&\n // this.table.stateManager.select.cellPosStart.col === eventArgs.col &&\n // this.table.stateManager.select.cellPosStart.row === eventArgs.row &&\n this.table._canDragHeaderPosition(eventArgs.col, eventArgs.row)\n ) {\n this.table.stateManager.startMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n return true;\n }\n\n return false;\n }\n\n dealColumnMover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n if (isValid(eventArgs.col) && isValid(eventArgs.row)) {\n this.table.stateManager.updateMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n }\n }\n\n startColumnResize(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n dealIconClick(e: FederatedPointerEvent, eventArgsSet: SceneEvent): boolean {\n const { eventArgs } = eventArgsSet;\n // if (!eventArgs) {\n // return false;\n // }\n\n const { target, event, col, row } = eventArgs || {\n target: e.target,\n event: e,\n col: -1,\n row: -1\n };\n const icon = target as unknown as Icon;\n\n if (icon.role && icon.role.startsWith('icon-')) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.name,\n // 默认位置:icon中部正下方\n x: (icon.globalAABBBounds.x1 + icon.globalAABBBounds.x2) / 2,\n y: icon.globalAABBBounds.y2,\n col,\n row,\n funcType: icon.attribute.funcType,\n icon,\n event\n });\n\n return true;\n } else if (target instanceof RichText) {\n const icon = target.pickIcon(event.global);\n if (icon) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.attribute.id,\n // 默认位置:icon中部正下方\n x: icon.globalX + icon.globalAABBBounds.width() / 2,\n y: icon.globalY + icon.AABBBounds.height(),\n col,\n row,\n funcType: (icon.attribute as any).funcType,\n icon: icon as unknown as Icon,\n event\n });\n return true;\n }\n }\n\n return false;\n }\n /** TODO 其他的事件并么有做remove */\n release() {\n this.gesture.release();\n\n // remove global event listerner\n this.globalEventListeners.forEach(item => {\n if (item.env === 'document') {\n document.removeEventListener(item.name, item.callback);\n } else if (item.env === 'body') {\n document.body.removeEventListener(item.name, item.callback);\n } else if (item.env === 'window') {\n window.removeEventListener(item.name, item.callback);\n }\n });\n this.globalEventListeners = [];\n }\n}\n"]}
@@ -11,6 +11,7 @@ export declare class Style extends EventTarget implements ColumnStyle {
11
11
  private _padding;
12
12
  private _defaultPadding;
13
13
  private _textStick;
14
+ private _textStickBaseOnAlign;
14
15
  private _marked;
15
16
  private _textAlign;
16
17
  private _textBaseline;
@@ -55,6 +56,8 @@ export declare class Style extends EventTarget implements ColumnStyle {
55
56
  set borderColor(borderColor: ColorsPropertyDefine | undefined);
56
57
  get textStick(): boolean;
57
58
  set textStick(textStick: boolean);
59
+ get textStickBaseOnAlign(): boolean;
60
+ set textStickBaseOnAlign(textStickBaseOnAlign: boolean);
58
61
  get marked(): MarkedPropertyDefine | undefined;
59
62
  set marked(marked: MarkedPropertyDefine | undefined);
60
63
  get textAlign(): TextAlignType;