k-vtable 1.0.3 → 1.0.5

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 (231) hide show
  1. package/cjs/ListTable-all.js +5 -5
  2. package/cjs/ListTable-all.js.map +1 -1
  3. package/cjs/ListTable.d.ts +7 -2
  4. package/cjs/ListTable.js +44 -5
  5. package/cjs/ListTable.js.map +1 -1
  6. package/cjs/PivotChart.js +4 -4
  7. package/cjs/PivotChart.js.map +1 -1
  8. package/cjs/PivotTable-all.js +4 -4
  9. package/cjs/PivotTable-all.js.map +1 -1
  10. package/cjs/PivotTable.d.ts +4 -0
  11. package/cjs/PivotTable.js +44 -0
  12. package/cjs/PivotTable.js.map +1 -1
  13. package/cjs/body-helper/style/ButtonStyle.d.ts +1 -1
  14. package/cjs/body-helper/style/ButtonStyle.js +2 -2
  15. package/cjs/body-helper/style/ButtonStyle.js.map +1 -1
  16. package/cjs/body-helper/style/SwitchStyle.d.ts +1 -1
  17. package/cjs/body-helper/style/SwitchStyle.js +2 -2
  18. package/cjs/body-helper/style/SwitchStyle.js.map +1 -1
  19. package/cjs/body-helper/style.js +2 -1
  20. package/cjs/components/index.d.ts +1 -0
  21. package/cjs/components/index.js +8 -2
  22. package/cjs/components/index.js.map +1 -1
  23. package/cjs/components/menu/dom/logic/MenuElement.js +7 -3
  24. package/cjs/components/menu/dom/logic/MenuElement.js.map +1 -1
  25. package/cjs/core/BaseTable.d.ts +13 -0
  26. package/cjs/core/BaseTable.js +113 -42
  27. package/cjs/core/BaseTable.js.map +1 -1
  28. package/cjs/core/animation.js +1 -1
  29. package/cjs/core/animation.js.map +1 -1
  30. package/cjs/core/record-helper.d.ts +1 -1
  31. package/cjs/core/record-helper.js +99 -65
  32. package/cjs/core/record-helper.js.map +1 -1
  33. package/cjs/data/DataSource.d.ts +3 -0
  34. package/cjs/data/DataSource.js +36 -7
  35. package/cjs/data/DataSource.js.map +1 -1
  36. package/cjs/dataset/dataset.d.ts +1 -0
  37. package/cjs/dataset/dataset.js +66 -2
  38. package/cjs/dataset/dataset.js.map +1 -1
  39. package/cjs/edit/edit-manager.js +8 -5
  40. package/cjs/edit/edit-manager.js.map +1 -1
  41. package/cjs/event/event.js +2 -2
  42. package/cjs/event/event.js.map +1 -1
  43. package/cjs/event/listener/container-dom.js +36 -33
  44. package/cjs/event/listener/container-dom.js.map +1 -1
  45. package/cjs/event/listener/table-group.js +36 -32
  46. package/cjs/event/listener/table-group.js.map +1 -1
  47. package/cjs/event/scroll.js +6 -5
  48. package/cjs/event/scroll.js.map +1 -1
  49. package/cjs/event/self-event-listener/base-table/right-button-click.js +2 -2
  50. package/cjs/event/self-event-listener/base-table/right-button-click.js.map +1 -1
  51. package/cjs/index.d.ts +2 -1
  52. package/cjs/index.js +11 -2
  53. package/cjs/index.js.map +1 -1
  54. package/cjs/layout/index.js +2 -1
  55. package/cjs/layout/layout-helper.js +1 -1
  56. package/cjs/layout/pivot-header-layout.d.ts +7 -0
  57. package/cjs/layout/pivot-header-layout.js +93 -8
  58. package/cjs/layout/pivot-header-layout.js.map +1 -1
  59. package/cjs/layout/pivot-layout.js +2 -0
  60. package/cjs/layout/row-height-map.js +11 -4
  61. package/cjs/layout/row-height-map.js.map +1 -1
  62. package/cjs/layout/simple-header-layout.d.ts +2 -0
  63. package/cjs/layout/simple-header-layout.js +28 -12
  64. package/cjs/layout/simple-header-layout.js.map +1 -1
  65. package/cjs/layout/tree-helper.d.ts +2 -0
  66. package/cjs/layout/tree-helper.js +10 -1
  67. package/cjs/layout/tree-helper.js.map +1 -1
  68. package/cjs/plugins/index.js +1 -1
  69. package/cjs/plugins/interface.js +1 -2
  70. package/cjs/plugins/invert-highlight.js +1 -1
  71. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  72. package/cjs/plugins/plugin-manager.js +1 -1
  73. package/cjs/scenegraph/component/custom.js.map +1 -1
  74. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +4 -2
  75. package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  76. package/cjs/scenegraph/graphic/icon.d.ts +1 -0
  77. package/cjs/scenegraph/graphic/icon.js +30 -2
  78. package/cjs/scenegraph/graphic/icon.js.map +1 -1
  79. package/cjs/scenegraph/group-creater/cell-helper.js +5 -5
  80. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  81. package/cjs/scenegraph/group-creater/column-helper.js +1 -1
  82. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  83. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +4 -4
  84. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  85. package/cjs/scenegraph/group-creater/progress/proxy.js +3 -3
  86. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  87. package/cjs/scenegraph/layout/compute-col-width.js +11 -1
  88. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  89. package/cjs/scenegraph/scenegraph.js +23 -18
  90. package/cjs/scenegraph/scenegraph.js.map +1 -1
  91. package/cjs/state/select/update-position.js +5 -2
  92. package/cjs/state/select/update-position.js.map +1 -1
  93. package/cjs/state/state.d.ts +2 -0
  94. package/cjs/state/state.js +18 -6
  95. package/cjs/state/state.js.map +1 -1
  96. package/cjs/tools/env.d.ts +1 -0
  97. package/cjs/tools/env.js +13 -2
  98. package/cjs/tools/env.js.map +1 -1
  99. package/cjs/ts-types/base-table.d.ts +10 -0
  100. package/cjs/ts-types/base-table.js.map +1 -1
  101. package/cjs/ts-types/dataset/aggregation.d.ts +8 -6
  102. package/cjs/ts-types/dataset/aggregation.js +109 -54
  103. package/cjs/ts-types/dataset/aggregation.js.map +1 -1
  104. package/cjs/ts-types/events.d.ts +1 -0
  105. package/cjs/ts-types/events.js.map +1 -1
  106. package/cjs/ts-types/list-table/define/basic-define.d.ts +1 -0
  107. package/cjs/ts-types/list-table/define/basic-define.js.map +1 -1
  108. package/cjs/ts-types/new-data-set.d.ts +1 -0
  109. package/cjs/ts-types/new-data-set.js.map +1 -1
  110. package/cjs/ts-types/table-engine.d.ts +2 -1
  111. package/cjs/ts-types/table-engine.js.map +1 -1
  112. package/cjs/vrender.d.ts +3 -3
  113. package/cjs/vrender.js +4 -21
  114. package/cjs/vrender.js.map +1 -1
  115. package/dist/vtable.js +8848 -3947
  116. package/dist/vtable.min.js +2 -2
  117. package/es/ListTable-all.js +4 -4
  118. package/es/ListTable-all.js.map +1 -1
  119. package/es/ListTable.d.ts +7 -2
  120. package/es/ListTable.js +42 -2
  121. package/es/ListTable.js.map +1 -1
  122. package/es/PivotChart.js +4 -4
  123. package/es/PivotChart.js.map +1 -1
  124. package/es/PivotTable-all.js +3 -3
  125. package/es/PivotTable-all.js.map +1 -1
  126. package/es/PivotTable.d.ts +4 -0
  127. package/es/PivotTable.js +44 -0
  128. package/es/PivotTable.js.map +1 -1
  129. package/es/body-helper/style/ButtonStyle.d.ts +1 -1
  130. package/es/body-helper/style/ButtonStyle.js +1 -1
  131. package/es/body-helper/style/ButtonStyle.js.map +1 -1
  132. package/es/body-helper/style/SwitchStyle.d.ts +1 -1
  133. package/es/body-helper/style/SwitchStyle.js +1 -1
  134. package/es/body-helper/style/SwitchStyle.js.map +1 -1
  135. package/es/body-helper/style.js +2 -1
  136. package/es/components/index.d.ts +1 -0
  137. package/es/components/index.js +6 -0
  138. package/es/components/index.js.map +1 -1
  139. package/es/components/menu/dom/logic/MenuElement.js +7 -3
  140. package/es/components/menu/dom/logic/MenuElement.js.map +1 -1
  141. package/es/core/BaseTable.d.ts +13 -0
  142. package/es/core/BaseTable.js +113 -42
  143. package/es/core/BaseTable.js.map +1 -1
  144. package/es/core/animation.js +1 -1
  145. package/es/core/animation.js.map +1 -1
  146. package/es/core/record-helper.d.ts +1 -1
  147. package/es/core/record-helper.js +99 -65
  148. package/es/core/record-helper.js.map +1 -1
  149. package/es/data/DataSource.d.ts +3 -0
  150. package/es/data/DataSource.js +36 -7
  151. package/es/data/DataSource.js.map +1 -1
  152. package/es/dataset/dataset.d.ts +1 -0
  153. package/es/dataset/dataset.js +66 -2
  154. package/es/dataset/dataset.js.map +1 -1
  155. package/es/edit/edit-manager.js +8 -5
  156. package/es/edit/edit-manager.js.map +1 -1
  157. package/es/event/event.js +1 -3
  158. package/es/event/event.js.map +1 -1
  159. package/es/event/listener/container-dom.js +35 -32
  160. package/es/event/listener/container-dom.js.map +1 -1
  161. package/es/event/listener/table-group.js +36 -31
  162. package/es/event/listener/table-group.js.map +1 -1
  163. package/es/event/scroll.js +6 -5
  164. package/es/event/scroll.js.map +1 -1
  165. package/es/event/self-event-listener/base-table/right-button-click.js +2 -2
  166. package/es/event/self-event-listener/base-table/right-button-click.js.map +1 -1
  167. package/es/index.d.ts +2 -1
  168. package/es/index.js +3 -1
  169. package/es/index.js.map +1 -1
  170. package/es/layout/index.js +2 -1
  171. package/es/layout/layout-helper.js +1 -1
  172. package/es/layout/pivot-header-layout.d.ts +7 -0
  173. package/es/layout/pivot-header-layout.js +93 -8
  174. package/es/layout/pivot-header-layout.js.map +1 -1
  175. package/es/layout/pivot-layout.js +2 -0
  176. package/es/layout/row-height-map.js +11 -4
  177. package/es/layout/row-height-map.js.map +1 -1
  178. package/es/layout/simple-header-layout.d.ts +2 -0
  179. package/es/layout/simple-header-layout.js +28 -12
  180. package/es/layout/simple-header-layout.js.map +1 -1
  181. package/es/layout/tree-helper.d.ts +2 -0
  182. package/es/layout/tree-helper.js +10 -1
  183. package/es/layout/tree-helper.js.map +1 -1
  184. package/es/plugins/index.js +1 -1
  185. package/es/plugins/interface.js +1 -2
  186. package/es/plugins/invert-highlight.js +1 -1
  187. package/es/plugins/list-tree-stick-cell.js +1 -1
  188. package/es/plugins/plugin-manager.js +1 -1
  189. package/es/scenegraph/component/custom.js.map +1 -1
  190. package/es/scenegraph/graphic/contributions/group-contribution-render.js +4 -2
  191. package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
  192. package/es/scenegraph/graphic/icon.d.ts +1 -0
  193. package/es/scenegraph/graphic/icon.js +6 -1
  194. package/es/scenegraph/graphic/icon.js.map +1 -1
  195. package/es/scenegraph/group-creater/cell-helper.js +5 -5
  196. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  197. package/es/scenegraph/group-creater/column-helper.js +1 -1
  198. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  199. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +4 -4
  200. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  201. package/es/scenegraph/group-creater/progress/proxy.js +3 -3
  202. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  203. package/es/scenegraph/layout/compute-col-width.js +11 -1
  204. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  205. package/es/scenegraph/scenegraph.js +23 -18
  206. package/es/scenegraph/scenegraph.js.map +1 -1
  207. package/es/state/select/update-position.js +5 -2
  208. package/es/state/select/update-position.js.map +1 -1
  209. package/es/state/state.d.ts +2 -0
  210. package/es/state/state.js +18 -6
  211. package/es/state/state.js.map +1 -1
  212. package/es/tools/env.d.ts +1 -0
  213. package/es/tools/env.js +11 -0
  214. package/es/tools/env.js.map +1 -1
  215. package/es/ts-types/base-table.d.ts +10 -0
  216. package/es/ts-types/base-table.js.map +1 -1
  217. package/es/ts-types/dataset/aggregation.d.ts +8 -6
  218. package/es/ts-types/dataset/aggregation.js +109 -54
  219. package/es/ts-types/dataset/aggregation.js.map +1 -1
  220. package/es/ts-types/events.d.ts +1 -0
  221. package/es/ts-types/events.js.map +1 -1
  222. package/es/ts-types/list-table/define/basic-define.d.ts +1 -0
  223. package/es/ts-types/list-table/define/basic-define.js.map +1 -1
  224. package/es/ts-types/new-data-set.d.ts +1 -0
  225. package/es/ts-types/new-data-set.js.map +1 -1
  226. package/es/ts-types/table-engine.d.ts +2 -1
  227. package/es/ts-types/table-engine.js.map +1 -1
  228. package/es/vrender.d.ts +3 -3
  229. package/es/vrender.js +2 -4
  230. package/es/vrender.js.map +1 -1
  231. package/package.json +7 -6
@@ -1 +1,3 @@
1
+
2
+
1
3
  //# sourceMappingURL=pivot-layout.js.map
@@ -71,14 +71,21 @@ export class NumberRangeMap {
71
71
  return this.dealDiffenence(), this.getCumulativeSum(position);
72
72
  }
73
73
  getCumulativeSum(position) {
74
- var _a;
75
- let sum = 0;
74
+ var _a, _b;
75
+ let sum = 0, currentBottomFrozenRowsHeight = 0, isBottomFrozenRowNoCache = !1;
76
+ const bottomFrozenStartRow = this.table.rowCount > 0 && this.table.bottomFrozenRowCount > 0 ? this.table.rowCount - this.table.bottomFrozenRowCount : -1;
76
77
  for (let i = position; i >= 0; i--) {
77
78
  if (this.cumulativeSum.has(i)) {
78
79
  sum += this.cumulativeSum.get(i);
79
80
  break;
80
81
  }
81
- sum += null !== (_a = this.data.get(i)) && void 0 !== _a ? _a : this.table.getRowHeight(i);
82
+ sum += null !== (_a = this.data.get(i)) && void 0 !== _a ? _a : this.table.getRowHeight(i),
83
+ i >= bottomFrozenStartRow && -1 !== bottomFrozenStartRow && (currentBottomFrozenRowsHeight = sum,
84
+ isBottomFrozenRowNoCache = i === bottomFrozenStartRow);
85
+ }
86
+ if (isBottomFrozenRowNoCache && (null === (_b = this.table.containerFit) || void 0 === _b ? void 0 : _b.height) && this.table.bottomFrozenRowCount) {
87
+ const tableHeight = this.table.tableNoFrameHeight || 0;
88
+ sum < tableHeight && (sum = tableHeight - this.table.getBottomFrozenRowsHeight() + currentBottomFrozenRowsHeight);
82
89
  }
83
90
  return this.cumulativeSum.set(position, sum), sum;
84
91
  }
@@ -165,4 +172,4 @@ function indexFirst(arr, elm) {
165
172
  }
166
173
  return high < 0 ? 0 : high;
167
174
  }
168
- //# sourceMappingURL=row-height-map.js.map
175
+ //# sourceMappingURL=row-height-map.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/row-height-map.ts"],"names":[],"mappings":"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","file":"row-height-map.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n\nexport class NumberRangeMap {\n data: Map<number, number>;\n cumulativeSum: Map<number, number>;\n difference: Map<number, number>;\n totalSum: number;\n table: BaseTableAPI;\n isUpdate = false;\n private _keys: number[] = [];\n private _sorted = false;\n\n constructor(table: BaseTableAPI) {\n this.data = new Map();\n this._keys.length = 0;\n this.cumulativeSum = new Map();\n this.difference = new Map();\n this.totalSum = 0;\n this.table = table;\n }\n\n get length() {\n return this.data.size;\n }\n\n clear() {\n this._keys = [];\n this.data.clear();\n this.cumulativeSum.clear();\n this.difference.clear();\n this.totalSum = 0;\n }\n\n clearRange() {\n this.cumulativeSum.clear();\n this.difference.clear();\n }\n\n add(position: number, value: number) {\n if (!isValid(value)) {\n return;\n }\n const defaultValue = this.table.getRowHeight(position);\n if (!this.data.has(position)) {\n this._keys.push(position);\n this._sorted = false;\n }\n this.data.set(position, value);\n this.totalSum += value;\n // this.updateCumulativeSum(position, value);\n this.updateDifference(position, value - defaultValue);\n }\n\n remove(position: number) {\n if (this.data.has(position)) {\n const value = this.data.get(position);\n this.data.delete(position);\n const index = this._keys.indexOf(position);\n if (index !== -1) {\n this._keys.splice(index, 1); // 使用 splice() 方法删除指定索引位置的元素\n }\n this.totalSum -= value;\n const defaultValue = this.table.getRowHeight(position);\n // this.updateCumulativeSum(position, -value);\n this.updateDifference(position, defaultValue - value);\n }\n }\n\n put(position: number, newValue: number) {\n if (!isValid(newValue)) {\n return;\n }\n if (this.data.has(position)) {\n const oldValue = this.data.get(position);\n\n if (oldValue === newValue) {\n return;\n }\n this.data.set(position, newValue);\n const difference = newValue - oldValue;\n this.totalSum += difference;\n // this.updateCumulativeSum(position, difference);\n this.updateDifference(position, difference);\n } else {\n this.add(position, newValue);\n }\n }\n\n get(position: number) {\n return this.data.get(position);\n }\n\n has(position: number) {\n return this.data.has(position);\n }\n\n private _sort() {\n const { _keys: keys } = this;\n if (!this._sorted) {\n keys.sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n });\n this._sorted = true;\n }\n }\n\n updateDifference(position: number, difference: number) {\n const oldDifference = this.difference.get(position) ?? 0;\n this.difference.set(position, oldDifference + difference);\n this.update();\n }\n\n getSumInRange(start: number, end: number) {\n return this.calculatePrefixSum(end) - this.calculatePrefixSum(start - 1);\n }\n\n updateCumulativeSum(position: number, difference: number) {\n // 更新累加和\n for (const [pos, sum] of this.cumulativeSum) {\n if (pos >= position) {\n this.cumulativeSum.set(pos, sum + difference);\n }\n }\n }\n\n calculatePrefixSum(position: number) {\n if (position < 0) {\n return 0;\n }\n if (this.cumulativeSum.has(position)) {\n let cache = this.cumulativeSum.get(position);\n for (const [pos, difference] of this.difference) {\n if (pos <= position) {\n cache += difference;\n }\n }\n return cache;\n }\n\n this.dealDiffenence();\n return this.getCumulativeSum(position);\n }\n\n getCumulativeSum(position: number) {\n let sum = 0;\n for (let i = position; i >= 0; i--) {\n if (this.cumulativeSum.has(i)) {\n sum += this.cumulativeSum.get(i);\n break;\n } else {\n sum += this.data.get(i) ?? this.table.getRowHeight(i);\n }\n // if (i === position && this.cumulativeSum.has(i + 1)) {\n // sum += this.cumulativeSum.get(i + 1) - (this.data.get(i + 1) ?? this.table.getRowHeight(i + 1));\n // break;\n // }\n }\n this.cumulativeSum.set(position, sum);\n return sum;\n }\n\n update() {\n if (this.isUpdate) {\n return;\n }\n this.isUpdate = true;\n setTimeout(() => {\n this.dealDiffenence();\n this.isUpdate = false;\n }, 0);\n }\n\n dealDiffenence() {\n for (const [sumPos] of this.cumulativeSum) {\n for (const [difPos, difference] of this.difference) {\n if (sumPos >= difPos) {\n const oldSum = this.cumulativeSum.get(sumPos);\n this.cumulativeSum.set(sumPos, oldSum + difference);\n }\n }\n }\n\n this.difference.clear();\n }\n\n // add and reorder\n insert(position: number, value?: number) {\n // clear all sum cover position\n for (let i = position; i <= this.getLastIndex(); i++) {\n this.cumulativeSum.delete(i);\n }\n const lastIndex = this.getLastIndex() + 1;\n this.adjustOrder(position, position + 1, lastIndex - position);\n if (isValid(value)) {\n this.put(position, value);\n }\n }\n\n getLastIndex() {\n this._sort();\n return this._keys[this._keys.length - 1];\n }\n\n delLast() {\n const lastIndex = this.getLastIndex();\n this.remove(lastIndex);\n }\n\n // del and reorder\n delete(position: number) {\n if (!this.has(position)) {\n return;\n }\n\n // clear all sum cover position\n for (let i = position; i <= this.getLastIndex(); i++) {\n this.cumulativeSum.delete(i);\n }\n\n const lastIndex = this.getLastIndex();\n\n this.adjustOrder(position + 1, position, lastIndex - position);\n this.delLast();\n }\n\n /**\n * 将sourceIndex位置开始 往后moveCount个值 调整到targetIndex位置处\n * @param sourceIndex\n * @param targetIndex\n * @param moveCount\n */\n adjustOrder(sourceIndex: number, targetIndex: number, moveCount: number) {\n this.clearRange();\n this._sort();\n const { _keys: keys } = this;\n\n if (sourceIndex > targetIndex) {\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex + moveCount - 1); i >= 0; i--) {\n const key = keys[i];\n if (key >= sourceIndex) {\n sourceVals.push(this.get(key));\n } else if (targetIndex <= key && key < sourceIndex) {\n this.put(key + moveCount, this.get(key));\n } else if (key < targetIndex) {\n break;\n }\n }\n for (let i = 0; i < moveCount; i++) {\n this.put(targetIndex + i, sourceVals[moveCount - 1 - i]);\n }\n }\n const { length } = keys;\n if (sourceIndex < targetIndex) {\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex); i < length; i++) {\n const key = keys[i];\n if (key >= sourceIndex && key < sourceIndex + moveCount) {\n sourceVals.push(this.get(key));\n } else if (sourceIndex + moveCount <= key && key <= targetIndex) {\n this.put(key - moveCount, this.get(key));\n } else if (key > targetIndex) {\n break;\n }\n }\n for (let i = 0; i < moveCount; i++) {\n this.put(targetIndex + i, sourceVals[i]);\n }\n }\n }\n\n exchangeOrder(\n sourceIndex: number,\n sourceCount: number,\n targetIndex: number,\n targetCount: number,\n insertIndex: number\n ) {\n const { _keys: keys } = this;\n if (!this._sorted) {\n keys.sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n });\n this._sorted = true;\n }\n if (sourceIndex > targetIndex) {\n //先将target部分的值存起来\n const targetVals = [];\n const sourceVals = [];\n for (let i = indexFirst(keys, targetIndex); i < indexFirst(keys, sourceIndex) + sourceCount; i++) {\n const key = keys[i];\n if (key >= sourceIndex && key < sourceIndex + sourceCount) {\n sourceVals.push(this.get(key));\n } else {\n targetVals.push(this.get(key));\n }\n }\n for (let i = 0; i < sourceCount; i++) {\n this.put(insertIndex + i, sourceVals[i]);\n }\n\n for (let i = 0; i < targetVals.length; i++) {\n this.put(insertIndex + sourceCount + i, targetVals[i]);\n }\n } else {\n //先将target部分的值存起来\n const targetVals = [];\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex); i < indexFirst(keys, targetIndex) + targetCount; i++) {\n const key = keys[i];\n if (key >= sourceIndex && key < sourceIndex + sourceCount) {\n sourceVals.push(this.get(key));\n } else {\n targetVals.push(this.get(key));\n }\n }\n for (let i = 0; i < sourceCount; i++) {\n this.put(insertIndex + i, sourceVals[i]);\n }\n\n for (let i = 0; i < targetVals.length; i++) {\n this.put(sourceIndex + i, targetVals[i]);\n }\n }\n }\n}\n\nfunction indexFirst(arr: number[], elm: number): number {\n let low = 0;\n let high = arr.length - 1;\n while (low <= high) {\n const i = Math.floor((low + high) / 2);\n if (arr[i] === elm) {\n return i;\n } else if (arr[i] > elm) {\n high = i - 1;\n } else {\n low = i + 1;\n }\n }\n return high < 0 ? 0 : high;\n}\n"]}
1
+ {"version":3,"sources":["../src/layout/row-height-map.ts"],"names":[],"mappings":"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","file":"row-height-map.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n\nexport class NumberRangeMap {\n data: Map<number, number>;\n cumulativeSum: Map<number, number>;\n difference: Map<number, number>;\n totalSum: number;\n table: BaseTableAPI;\n isUpdate = false;\n private _keys: number[] = [];\n private _sorted = false;\n\n constructor(table: BaseTableAPI) {\n this.data = new Map();\n this._keys.length = 0;\n this.cumulativeSum = new Map();\n this.difference = new Map();\n this.totalSum = 0;\n this.table = table;\n }\n\n get length() {\n return this.data.size;\n }\n\n clear() {\n this._keys = [];\n this.data.clear();\n this.cumulativeSum.clear();\n this.difference.clear();\n this.totalSum = 0;\n }\n\n clearRange() {\n this.cumulativeSum.clear();\n this.difference.clear();\n }\n\n add(position: number, value: number) {\n if (!isValid(value)) {\n return;\n }\n const defaultValue = this.table.getRowHeight(position);\n if (!this.data.has(position)) {\n this._keys.push(position);\n this._sorted = false;\n }\n this.data.set(position, value);\n this.totalSum += value;\n // this.updateCumulativeSum(position, value);\n this.updateDifference(position, value - defaultValue);\n }\n\n remove(position: number) {\n if (this.data.has(position)) {\n const value = this.data.get(position);\n this.data.delete(position);\n const index = this._keys.indexOf(position);\n if (index !== -1) {\n this._keys.splice(index, 1); // 使用 splice() 方法删除指定索引位置的元素\n }\n this.totalSum -= value;\n const defaultValue = this.table.getRowHeight(position);\n // this.updateCumulativeSum(position, -value);\n this.updateDifference(position, defaultValue - value);\n }\n }\n\n put(position: number, newValue: number) {\n if (!isValid(newValue)) {\n return;\n }\n if (this.data.has(position)) {\n const oldValue = this.data.get(position);\n\n if (oldValue === newValue) {\n return;\n }\n this.data.set(position, newValue);\n const difference = newValue - oldValue;\n this.totalSum += difference;\n // this.updateCumulativeSum(position, difference);\n this.updateDifference(position, difference);\n } else {\n this.add(position, newValue);\n }\n }\n\n get(position: number) {\n return this.data.get(position);\n }\n\n has(position: number) {\n return this.data.has(position);\n }\n\n private _sort() {\n const { _keys: keys } = this;\n if (!this._sorted) {\n keys.sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n });\n this._sorted = true;\n }\n }\n\n updateDifference(position: number, difference: number) {\n const oldDifference = this.difference.get(position) ?? 0;\n this.difference.set(position, oldDifference + difference);\n this.update();\n }\n\n getSumInRange(start: number, end: number) {\n return this.calculatePrefixSum(end) - this.calculatePrefixSum(start - 1);\n }\n\n updateCumulativeSum(position: number, difference: number) {\n // 更新累加和\n for (const [pos, sum] of this.cumulativeSum) {\n if (pos >= position) {\n this.cumulativeSum.set(pos, sum + difference);\n }\n }\n }\n\n calculatePrefixSum(position: number) {\n if (position < 0) {\n return 0;\n }\n if (this.cumulativeSum.has(position)) {\n let cache = this.cumulativeSum.get(position);\n for (const [pos, difference] of this.difference) {\n if (pos <= position) {\n cache += difference;\n }\n }\n return cache;\n }\n\n this.dealDiffenence();\n return this.getCumulativeSum(position);\n }\n\n getCumulativeSum(position: number) {\n let sum = 0;\n /** 当前底部冻结的行高 */\n let currentBottomFrozenRowsHeight = 0;\n /** 底部冻结行是否没有缓存 */\n let isBottomFrozenRowNoCache = false;\n /** 底部冻结开始行 */\n const bottomFrozenStartRow =\n this.table.rowCount > 0 && this.table.bottomFrozenRowCount > 0\n ? this.table.rowCount - this.table.bottomFrozenRowCount\n : -1;\n for (let i = position; i >= 0; i--) {\n if (this.cumulativeSum.has(i)) {\n sum += this.cumulativeSum.get(i);\n break;\n } else {\n sum += this.data.get(i) ?? this.table.getRowHeight(i);\n if (i >= bottomFrozenStartRow && bottomFrozenStartRow !== -1) {\n currentBottomFrozenRowsHeight = sum;\n isBottomFrozenRowNoCache = i === bottomFrozenStartRow;\n }\n }\n // if (i === position && this.cumulativeSum.has(i + 1)) {\n // sum += this.cumulativeSum.get(i + 1) - (this.data.get(i + 1) ?? this.table.getRowHeight(i + 1));\n // break;\n // }\n }\n if (isBottomFrozenRowNoCache && !!this.table.containerFit?.height && !!this.table.bottomFrozenRowCount) {\n // 当底部冻结行没有进入缓存且配置了底部冻结行显示在最底部时,此时分情况判断\n const tableHeight = this.table.tableNoFrameHeight || 0;\n if (sum < tableHeight) {\n sum = tableHeight - this.table.getBottomFrozenRowsHeight() + currentBottomFrozenRowsHeight;\n }\n }\n this.cumulativeSum.set(position, sum);\n return sum;\n }\n\n update() {\n if (this.isUpdate) {\n return;\n }\n this.isUpdate = true;\n setTimeout(() => {\n this.dealDiffenence();\n this.isUpdate = false;\n }, 0);\n }\n\n dealDiffenence() {\n for (const [sumPos] of this.cumulativeSum) {\n for (const [difPos, difference] of this.difference) {\n if (sumPos >= difPos) {\n const oldSum = this.cumulativeSum.get(sumPos);\n this.cumulativeSum.set(sumPos, oldSum + difference);\n }\n }\n }\n\n this.difference.clear();\n }\n\n // add and reorder\n insert(position: number, value?: number) {\n // clear all sum cover position\n for (let i = position; i <= this.getLastIndex(); i++) {\n this.cumulativeSum.delete(i);\n }\n const lastIndex = this.getLastIndex() + 1;\n this.adjustOrder(position, position + 1, lastIndex - position);\n if (isValid(value)) {\n this.put(position, value);\n }\n }\n\n getLastIndex() {\n this._sort();\n return this._keys[this._keys.length - 1];\n }\n\n delLast() {\n const lastIndex = this.getLastIndex();\n this.remove(lastIndex);\n }\n\n // del and reorder\n delete(position: number) {\n if (!this.has(position)) {\n return;\n }\n\n // clear all sum cover position\n for (let i = position; i <= this.getLastIndex(); i++) {\n this.cumulativeSum.delete(i);\n }\n\n const lastIndex = this.getLastIndex();\n\n this.adjustOrder(position + 1, position, lastIndex - position);\n this.delLast();\n }\n\n /**\n * 将sourceIndex位置开始 往后moveCount个值 调整到targetIndex位置处\n * @param sourceIndex\n * @param targetIndex\n * @param moveCount\n */\n adjustOrder(sourceIndex: number, targetIndex: number, moveCount: number) {\n this.clearRange();\n this._sort();\n const { _keys: keys } = this;\n\n if (sourceIndex > targetIndex) {\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex + moveCount - 1); i >= 0; i--) {\n const key = keys[i];\n if (key >= sourceIndex) {\n sourceVals.push(this.get(key));\n } else if (targetIndex <= key && key < sourceIndex) {\n this.put(key + moveCount, this.get(key));\n } else if (key < targetIndex) {\n break;\n }\n }\n for (let i = 0; i < moveCount; i++) {\n this.put(targetIndex + i, sourceVals[moveCount - 1 - i]);\n }\n }\n const { length } = keys;\n if (sourceIndex < targetIndex) {\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex); i < length; i++) {\n const key = keys[i];\n if (key >= sourceIndex && key < sourceIndex + moveCount) {\n sourceVals.push(this.get(key));\n } else if (sourceIndex + moveCount <= key && key <= targetIndex) {\n this.put(key - moveCount, this.get(key));\n } else if (key > targetIndex) {\n break;\n }\n }\n for (let i = 0; i < moveCount; i++) {\n this.put(targetIndex + i, sourceVals[i]);\n }\n }\n }\n\n exchangeOrder(\n sourceIndex: number,\n sourceCount: number,\n targetIndex: number,\n targetCount: number,\n insertIndex: number\n ) {\n const { _keys: keys } = this;\n if (!this._sorted) {\n keys.sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n });\n this._sorted = true;\n }\n if (sourceIndex > targetIndex) {\n //先将target部分的值存起来\n const targetVals = [];\n const sourceVals = [];\n for (let i = indexFirst(keys, targetIndex); i < indexFirst(keys, sourceIndex) + sourceCount; i++) {\n const key = keys[i];\n if (key >= sourceIndex && key < sourceIndex + sourceCount) {\n sourceVals.push(this.get(key));\n } else {\n targetVals.push(this.get(key));\n }\n }\n for (let i = 0; i < sourceCount; i++) {\n this.put(insertIndex + i, sourceVals[i]);\n }\n\n for (let i = 0; i < targetVals.length; i++) {\n this.put(insertIndex + sourceCount + i, targetVals[i]);\n }\n } else {\n //先将target部分的值存起来\n const targetVals = [];\n const sourceVals = [];\n for (let i = indexFirst(keys, sourceIndex); i < indexFirst(keys, targetIndex) + targetCount; i++) {\n const key = keys[i];\n if (key >= sourceIndex && key < sourceIndex + sourceCount) {\n sourceVals.push(this.get(key));\n } else {\n targetVals.push(this.get(key));\n }\n }\n for (let i = 0; i < sourceCount; i++) {\n this.put(insertIndex + i, sourceVals[i]);\n }\n\n for (let i = 0; i < targetVals.length; i++) {\n this.put(sourceIndex + i, targetVals[i]);\n }\n }\n }\n}\n\nfunction indexFirst(arr: number[], elm: number): number {\n let low = 0;\n let high = arr.length - 1;\n while (low <= high) {\n const i = Math.floor((low + high) / 2);\n if (arr[i] === elm) {\n return i;\n } else if (arr[i] > elm) {\n high = i - 1;\n } else {\n low = i + 1;\n }\n }\n return high < 0 ? 0 : high;\n}\n"]}
@@ -12,6 +12,7 @@ export declare class SimpleHeaderLayoutMap implements LayoutMapAPI {
12
12
  private _headerCellIds;
13
13
  private _columns;
14
14
  private _columnsIncludeHided;
15
+ private _columnMaxDepth;
15
16
  rowSeriesNumberColumn: SeriesNumberColumnData[];
16
17
  leftRowSeriesNumberColumn: SeriesNumberColumnData[];
17
18
  rightRowSeriesNumberColumn: SeriesNumberColumnData[];
@@ -103,6 +104,7 @@ export declare class SimpleHeaderLayoutMap implements LayoutMapAPI {
103
104
  isCellRangeEqual(col: number, row: number, targetCol: number, targetRow: number): boolean;
104
105
  getRecordShowIndexByCell(col: number, row: number): number;
105
106
  getRecordStartRowByRecordIndex(index: number): number;
107
+ private _calculateMaxDepth;
106
108
  private _addHeaders;
107
109
  private _newRow;
108
110
  getCellHeaderPaths(col: number, row: number): IListTableCellHeaderPaths;
@@ -15,11 +15,12 @@ import { getCellRange } from "./cell-range/simple-cell-range";
15
15
  export class SimpleHeaderLayoutMap {
16
16
  constructor(table, columns, showHeader, hierarchyIndent) {
17
17
  var _a, _b;
18
- this.seqId = 0, this.leftRowSeriesNumberColumnCount = 0, this.rightRowSeriesNumberColumnCount = 0,
19
- this.bodyRowSpanCount = 1, this._transpose = !1, this._showHeader = !0, this._recordsCount = 0,
20
- this._hasAggregation = !1, this._hasAggregationOnTopCount = 0, this._hasAggregationOnBottomCount = 0,
21
- this._cellRangeMap = new Map, this._showHeader = showHeader, this._table = table,
22
- this._columns = [], this._columnsIncludeHided = [], this._headerCellIds = [], this.hierarchyIndent = null != hierarchyIndent ? hierarchyIndent : 20,
18
+ this.seqId = 0, this._columnMaxDepth = 0, this.leftRowSeriesNumberColumnCount = 0,
19
+ this.rightRowSeriesNumberColumnCount = 0, this.bodyRowSpanCount = 1, this._transpose = !1,
20
+ this._showHeader = !0, this._recordsCount = 0, this._hasAggregation = !1, this._hasAggregationOnTopCount = 0,
21
+ this._hasAggregationOnBottomCount = 0, this._cellRangeMap = new Map, this._showHeader = showHeader,
22
+ this._table = table, this._columns = [], this._columnsIncludeHided = [], this._headerCellIds = [],
23
+ this._columnMaxDepth = this._calculateMaxDepth(columns), this.hierarchyIndent = null != hierarchyIndent ? hierarchyIndent : 20,
23
24
  this.hierarchyTextStartAlignment = table.options.hierarchyTextStartAlignment, this.columnHierarchyType = table.options.headerHierarchyType,
24
25
  this.columnExpandLevel = null !== (_a = table.options.headerExpandLevel) && void 0 !== _a ? _a : 1,
25
26
  this.columnTree = new DimensionTree(columns, {
@@ -32,7 +33,7 @@ export class SimpleHeaderLayoutMap {
32
33
  this.handleRowSeriesNumber(table.internalProps.rowSeriesNumber);
33
34
  }
34
35
  handleRowSeriesNumber(rowSeriesNumber) {
35
- var _a;
36
+ var _a, _b;
36
37
  rowSeriesNumber && (Array.isArray(rowSeriesNumber) ? this.rowSeriesNumberColumn = rowSeriesNumber.map(((seriesNumber, index) => {
37
38
  var _a, _b;
38
39
  return {
@@ -62,7 +63,7 @@ export class SimpleHeaderLayoutMap {
62
63
  style: rowSeriesNumber.style,
63
64
  width: rowSeriesNumber.width,
64
65
  format: rowSeriesNumber.format,
65
- field: rowSeriesNumber.field,
66
+ field: null !== (_b = rowSeriesNumber.field) && void 0 !== _b ? _b : "_vtable_rowSeries_number",
66
67
  icon: rowSeriesNumber.icon,
67
68
  headerIcon: rowSeriesNumber.headerIcon,
68
69
  isChildNode: !1
@@ -526,7 +527,16 @@ export class SimpleHeaderLayoutMap {
526
527
  getRecordStartRowByRecordIndex(index) {
527
528
  return (this.hasAggregationOnTopCount ? this.headerLevelCount + 1 : this.headerLevelCount) + index;
528
529
  }
529
- _addHeaders(row, column, roots, hideColumnsSubHeader) {
530
+ _calculateMaxDepth(columns, currentDepth = 0) {
531
+ let maxDepth = currentDepth;
532
+ return columns.forEach((col => {
533
+ if (col.columns && col.columns.length > 0) {
534
+ const childDepth = this._calculateMaxDepth(col.columns, currentDepth + 1);
535
+ childDepth > maxDepth && (maxDepth = childDepth);
536
+ }
537
+ })), maxDepth;
538
+ }
539
+ _addHeaders(row, column, roots, hideColumnsSubHeader, lastLevelSpan) {
530
540
  const results = [], rowCells = this._newRow(row, hideColumnsSubHeader);
531
541
  return column.forEach((hd => {
532
542
  var _a, _b, _c, _d;
@@ -543,11 +553,17 @@ export class SimpleHeaderLayoutMap {
543
553
  columnWidthComputeMode: hd.columnWidthComputeMode
544
554
  };
545
555
  results[id] = cell;
546
- for (let r = row - 1; r >= 0; r--) this._headerCellIds[r] && (this._headerCellIds[r][col] = roots[r]);
547
- hideColumnsSubHeader ? this._headerCellIds[row - 1] && (rowCells[col] = this._headerCellIds[row - 1][col]) : rowCells[col] = id;
556
+ let maxRow = row;
557
+ if (hd.levelSpan) {
558
+ maxRow = Math.min(row + hd.levelSpan - 1, this._columnMaxDepth - 1);
559
+ for (let r = row; r <= maxRow; r++) this._headerCellIds[r] || (this._headerCellIds[r] = []),
560
+ void 0 === this._headerCellIds[r][col] && (this._headerCellIds[r][col] = id);
561
+ }
562
+ if (lastLevelSpan) for (let r = maxRow - 1; r >= 0; r--) this._headerCellIds[r] && void 0 === this._headerCellIds[r][col] && void 0 !== roots[maxRow - lastLevelSpan] && (this._headerCellIds[r][col] = roots[maxRow - lastLevelSpan]); else for (let r = maxRow - 1; r >= 0; r--) this._headerCellIds[r] && void 0 === this._headerCellIds[r][col] && void 0 !== roots[r] && (this._headerCellIds[r][col] = roots[r]);
563
+ hideColumnsSubHeader ? this._headerCellIds[row - 1] && void 0 !== this._headerCellIds[row - 1][col] && (rowCells[col] = this._headerCellIds[row - 1][col]) : rowCells[col] = id;
548
564
  const expand = !hd.hierarchyState || hd.hierarchyState === HierarchyState.expand;
549
565
  if (hd.columns && expand) {
550
- !hd.columns.every((c => c.hide)) && this._addHeaders(row + 1, hd.columns, [ ...roots, id ], hd.hideColumnsSubHeader || hideColumnsSubHeader).forEach((c => results.push(c)));
566
+ !hd.columns.every((c => c.hide)) && this._addHeaders(maxRow + 1, hd.columns, [ ...roots, id ], hd.hideColumnsSubHeader || hideColumnsSubHeader, hd.levelSpan).forEach((c => results.push(c)));
551
567
  } else {
552
568
  const colDef = {
553
569
  id: this.seqId++,
@@ -785,4 +801,4 @@ export class SimpleHeaderLayoutMap {
785
801
  if (col >= 0) return col < this.leftRowSeriesNumberColumnCount ? this.leftRowSeriesNumberColumn[col].define : this.transpose ? this._columns[row].define : this._columns[col - this.leftRowSeriesNumberColumnCount].define;
786
802
  }
787
803
  }
788
- //# sourceMappingURL=simple-header-layout.js.map
804
+ //# sourceMappingURL=simple-header-layout.js.map