@visactor/vtable 1.6.0-alpha.2 → 1.6.0-alpha.4

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 (221) 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 +0 -3
  4. package/cjs/ListTable.js +275 -32
  5. package/cjs/ListTable.js.map +1 -1
  6. package/cjs/body-helper/style.js +1 -2
  7. package/cjs/core/BaseTable.d.ts +5 -5
  8. package/cjs/core/BaseTable.js +88 -12
  9. package/cjs/core/BaseTable.js.map +1 -1
  10. package/cjs/core/style.js +1 -1
  11. package/cjs/core/style.js.map +1 -1
  12. package/cjs/core/tableHelper.d.ts +3 -1
  13. package/cjs/core/tableHelper.js +22 -12
  14. package/cjs/core/tableHelper.js.map +1 -1
  15. package/cjs/data/CachedDataSource.d.ts +1 -10
  16. package/cjs/data/CachedDataSource.js +2 -101
  17. package/cjs/data/CachedDataSource.js.map +1 -1
  18. package/cjs/data/DataSource.js +2 -2
  19. package/cjs/dataset/dataset-pivot-table.js +1 -0
  20. package/cjs/dataset/dataset-pivot-table.js.map +1 -1
  21. package/cjs/edit/edit-manager.js +1 -2
  22. package/cjs/edit/editors.js +2 -1
  23. package/cjs/event/EventHandler.js +1 -1
  24. package/cjs/event/EventTarget.js +1 -1
  25. package/cjs/event/drill.js +1 -1
  26. package/cjs/event/event.js +2 -4
  27. package/cjs/event/event.js.map +1 -1
  28. package/cjs/event/listener/container-dom.js +1 -1
  29. package/cjs/event/listener/container-dom.js.map +1 -1
  30. package/cjs/event/listener/table-group.js +6 -4
  31. package/cjs/event/listener/table-group.js.map +1 -1
  32. package/cjs/event/media-click.js +1 -1
  33. package/cjs/event/scroll.js +1 -1
  34. package/cjs/event/sparkline-event.js +1 -1
  35. package/cjs/event/util.js +1 -1
  36. package/cjs/index.d.ts +3 -3
  37. package/cjs/index.js +1 -1
  38. package/cjs/index.js.map +1 -1
  39. package/cjs/layout/layout-helper.js +0 -1
  40. package/cjs/layout/layout-helper.js.map +1 -1
  41. package/cjs/layout/row-height-map.js +0 -1
  42. package/cjs/layout/simple-header-layout.d.ts +2 -1
  43. package/cjs/layout/simple-header-layout.js +88 -2
  44. package/cjs/layout/simple-header-layout.js.map +1 -1
  45. package/cjs/layout/tree-helper.js +1 -0
  46. package/cjs/scenegraph/component/custom.js +1 -1
  47. package/cjs/scenegraph/component/custom.js.map +1 -1
  48. package/cjs/scenegraph/component/table-component.js +18 -14
  49. package/cjs/scenegraph/component/table-component.js.map +1 -1
  50. package/cjs/scenegraph/graphic/group.js +1 -1
  51. package/cjs/scenegraph/graphic/group.js.map +1 -1
  52. package/cjs/scenegraph/group-creater/cell-helper.d.ts +1 -2
  53. package/cjs/scenegraph/group-creater/cell-helper.js +10 -29
  54. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  55. package/cjs/scenegraph/group-creater/column-helper.js +2 -9
  56. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  57. package/cjs/scenegraph/group-creater/init-scenegraph.js +2 -2
  58. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  59. package/cjs/scenegraph/layout/update-height.js +1 -3
  60. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  61. package/cjs/scenegraph/layout/update-width.js +3 -5
  62. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  63. package/cjs/scenegraph/utils/cell-border-stroke-width.js +9 -14
  64. package/cjs/scenegraph/utils/cell-border-stroke-width.js.map +1 -1
  65. package/cjs/scenegraph/utils/get-cell-merge.js +1 -1
  66. package/cjs/scenegraph/utils/get-cell-merge.js.map +1 -1
  67. package/cjs/scenegraph/utils/get-hierarchy-offset.js +8 -6
  68. package/cjs/scenegraph/utils/get-hierarchy-offset.js.map +1 -1
  69. package/cjs/state/state.d.ts +2 -2
  70. package/cjs/state/state.js +4 -4
  71. package/cjs/state/state.js.map +1 -1
  72. package/cjs/themes/ARCO.js +1 -1
  73. package/cjs/themes/BRIGHT.js +1 -1
  74. package/cjs/themes/DARK.js +1 -1
  75. package/cjs/themes/DEFAULT.js +1 -1
  76. package/cjs/themes/SIMPLIFY.js +1 -1
  77. package/cjs/themes/component.js +1 -1
  78. package/cjs/themes/theme.d.ts +0 -2
  79. package/cjs/themes/theme.js +10 -13
  80. package/cjs/themes/theme.js.map +1 -1
  81. package/cjs/tools/helper.js.map +1 -1
  82. package/cjs/tools/style.d.ts +2 -1
  83. package/cjs/tools/style.js +9 -3
  84. package/cjs/tools/style.js.map +1 -1
  85. package/cjs/ts-types/base-table.d.ts +2 -9
  86. package/cjs/ts-types/base-table.js.map +1 -1
  87. package/cjs/ts-types/new-data-set.d.ts +0 -1
  88. package/cjs/ts-types/new-data-set.js.map +1 -1
  89. package/cjs/ts-types/table-engine.d.ts +46 -11
  90. package/cjs/ts-types/table-engine.js.map +1 -1
  91. package/cjs/ts-types/theme.d.ts +2 -1
  92. package/cjs/ts-types/theme.js.map +1 -1
  93. package/cjs/vrender.js +1 -2
  94. package/cjs/vrender.js.map +1 -1
  95. package/dist/vtable.js +3451 -4042
  96. package/dist/vtable.min.js +2 -2
  97. package/es/ListTable-all.js +3 -5
  98. package/es/ListTable-all.js.map +1 -1
  99. package/es/ListTable.d.ts +0 -3
  100. package/es/ListTable.js +277 -35
  101. package/es/ListTable.js.map +1 -1
  102. package/es/body-helper/style.js +1 -2
  103. package/es/core/BaseTable.d.ts +5 -5
  104. package/es/core/BaseTable.js +93 -17
  105. package/es/core/BaseTable.js.map +1 -1
  106. package/es/core/style.js +1 -1
  107. package/es/core/style.js.map +1 -1
  108. package/es/core/tableHelper.d.ts +3 -1
  109. package/es/core/tableHelper.js +21 -9
  110. package/es/core/tableHelper.js.map +1 -1
  111. package/es/data/CachedDataSource.d.ts +1 -10
  112. package/es/data/CachedDataSource.js +1 -104
  113. package/es/data/CachedDataSource.js.map +1 -1
  114. package/es/data/DataSource.js +2 -2
  115. package/es/dataset/dataset-pivot-table.js +1 -0
  116. package/es/dataset/dataset-pivot-table.js.map +1 -1
  117. package/es/edit/edit-manager.js +1 -2
  118. package/es/edit/editors.js +2 -1
  119. package/es/event/EventHandler.js +1 -1
  120. package/es/event/EventTarget.js +1 -1
  121. package/es/event/drill.js +1 -1
  122. package/es/event/event.js +2 -4
  123. package/es/event/event.js.map +1 -1
  124. package/es/event/listener/container-dom.js +1 -1
  125. package/es/event/listener/container-dom.js.map +1 -1
  126. package/es/event/listener/table-group.js +6 -4
  127. package/es/event/listener/table-group.js.map +1 -1
  128. package/es/event/media-click.js +1 -1
  129. package/es/event/scroll.js +1 -1
  130. package/es/event/sparkline-event.js +1 -1
  131. package/es/event/util.js +1 -1
  132. package/es/index.d.ts +3 -3
  133. package/es/index.js +1 -1
  134. package/es/index.js.map +1 -1
  135. package/es/layout/layout-helper.js +0 -1
  136. package/es/layout/layout-helper.js.map +1 -1
  137. package/es/layout/row-height-map.js +1 -2
  138. package/es/layout/simple-header-layout.d.ts +2 -1
  139. package/es/layout/simple-header-layout.js +87 -3
  140. package/es/layout/simple-header-layout.js.map +1 -1
  141. package/es/layout/tree-helper.js +2 -1
  142. package/es/scenegraph/component/custom.js +1 -1
  143. package/es/scenegraph/component/custom.js.map +1 -1
  144. package/es/scenegraph/component/table-component.js +18 -14
  145. package/es/scenegraph/component/table-component.js.map +1 -1
  146. package/es/scenegraph/graphic/group.js +1 -1
  147. package/es/scenegraph/graphic/group.js.map +1 -1
  148. package/es/scenegraph/group-creater/cell-helper.d.ts +1 -2
  149. package/es/scenegraph/group-creater/cell-helper.js +8 -23
  150. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  151. package/es/scenegraph/group-creater/column-helper.js +2 -8
  152. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  153. package/es/scenegraph/group-creater/init-scenegraph.js +2 -2
  154. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  155. package/es/scenegraph/layout/update-height.js +1 -3
  156. package/es/scenegraph/layout/update-height.js.map +1 -1
  157. package/es/scenegraph/layout/update-width.js +3 -5
  158. package/es/scenegraph/layout/update-width.js.map +1 -1
  159. package/es/scenegraph/utils/cell-border-stroke-width.js +6 -9
  160. package/es/scenegraph/utils/cell-border-stroke-width.js.map +1 -1
  161. package/es/scenegraph/utils/get-cell-merge.js +1 -1
  162. package/es/scenegraph/utils/get-cell-merge.js.map +1 -1
  163. package/es/scenegraph/utils/get-hierarchy-offset.js +9 -7
  164. package/es/scenegraph/utils/get-hierarchy-offset.js.map +1 -1
  165. package/es/state/state.d.ts +2 -2
  166. package/es/state/state.js +4 -4
  167. package/es/state/state.js.map +1 -1
  168. package/es/themes/ARCO.js +1 -1
  169. package/es/themes/BRIGHT.js +1 -1
  170. package/es/themes/DARK.js +1 -1
  171. package/es/themes/DEFAULT.js +1 -1
  172. package/es/themes/SIMPLIFY.js +1 -1
  173. package/es/themes/component.js +1 -1
  174. package/es/themes/theme.d.ts +0 -2
  175. package/es/themes/theme.js +10 -13
  176. package/es/themes/theme.js.map +1 -1
  177. package/es/tools/helper.js.map +1 -1
  178. package/es/tools/style.d.ts +2 -1
  179. package/es/tools/style.js +7 -2
  180. package/es/tools/style.js.map +1 -1
  181. package/es/ts-types/base-table.d.ts +2 -9
  182. package/es/ts-types/base-table.js.map +1 -1
  183. package/es/ts-types/new-data-set.d.ts +0 -1
  184. package/es/ts-types/new-data-set.js.map +1 -1
  185. package/es/ts-types/table-engine.d.ts +46 -11
  186. package/es/ts-types/table-engine.js.map +1 -1
  187. package/es/ts-types/theme.d.ts +2 -1
  188. package/es/ts-types/theme.js.map +1 -1
  189. package/es/vrender.js +2 -3
  190. package/es/vrender.js.map +1 -1
  191. package/package.json +4 -4
  192. package/cjs/core/group-helper.d.ts +0 -6
  193. package/cjs/core/group-helper.js +0 -22
  194. package/cjs/core/group-helper.js.map +0 -1
  195. package/cjs/core/record-helper.d.ts +0 -8
  196. package/cjs/core/record-helper.js +0 -337
  197. package/cjs/core/record-helper.js.map +0 -1
  198. package/cjs/core/style-helper.d.ts +0 -3
  199. package/cjs/core/style-helper.js +0 -110
  200. package/cjs/core/style-helper.js.map +0 -1
  201. package/cjs/layout/cell-range/simple-cell-range.d.ts +0 -4
  202. package/cjs/layout/cell-range/simple-cell-range.js +0 -106
  203. package/cjs/layout/cell-range/simple-cell-range.js.map +0 -1
  204. package/cjs/plugins/list-tree-stick-cell.d.ts +0 -16
  205. package/cjs/plugins/list-tree-stick-cell.js +0 -178
  206. package/cjs/plugins/list-tree-stick-cell.js.map +0 -1
  207. package/es/core/group-helper.d.ts +0 -6
  208. package/es/core/group-helper.js +0 -14
  209. package/es/core/group-helper.js.map +0 -1
  210. package/es/core/record-helper.d.ts +0 -8
  211. package/es/core/record-helper.js +0 -332
  212. package/es/core/record-helper.js.map +0 -1
  213. package/es/core/style-helper.d.ts +0 -3
  214. package/es/core/style-helper.js +0 -86
  215. package/es/core/style-helper.js.map +0 -1
  216. package/es/layout/cell-range/simple-cell-range.d.ts +0 -4
  217. package/es/layout/cell-range/simple-cell-range.js +0 -99
  218. package/es/layout/cell-range/simple-cell-range.js.map +0 -1
  219. package/es/plugins/list-tree-stick-cell.d.ts +0 -16
  220. package/es/plugins/list-tree-stick-cell.js +0 -176
  221. package/es/plugins/list-tree-stick-cell.js.map +0 -1
@@ -1,99 +0,0 @@
1
- export function getCellRange(col, row, layout) {
2
- var _a, _b, _c;
3
- if (-1 === col || -1 === row) return {
4
- start: {
5
- col: col,
6
- row: row
7
- },
8
- end: {
9
- col: col,
10
- row: row
11
- }
12
- };
13
- if (layout._cellRangeMap.has(`$${col}$${row}`)) return layout._cellRangeMap.get(`$${col}$${row}`);
14
- let cellRange = {
15
- start: {
16
- col: col,
17
- row: row
18
- },
19
- end: {
20
- col: col,
21
- row: row
22
- }
23
- };
24
- if (layout.transpose) cellRange = getCellRangeTranspose(col, row, layout); else if (layout.headerLevelCount <= row) {
25
- if (layout.headerLevelCount <= row && (null === (_b = null === (_a = layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount]) || void 0 === _a ? void 0 : _a.define) || void 0 === _b ? void 0 : _b.mergeCell)) {
26
- const value = layout._table.getCellValue(col, row);
27
- for (let r = row - 1; r >= layout.headerLevelCount; r--) {
28
- const last_Value = layout._table.getCellValue(col, r);
29
- if ("boolean" == typeof layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell) {
30
- if (value !== last_Value) break;
31
- } else if (!layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell(value, last_Value)) break;
32
- cellRange.start.row = r;
33
- }
34
- for (let r = row + 1; r < layout.rowCount; r++) {
35
- const next_Value = layout._table.getCellValue(col, r);
36
- if ("boolean" == typeof layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell) {
37
- if (value !== next_Value) break;
38
- } else if (!layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell(value, next_Value)) break;
39
- cellRange.end.row = r;
40
- }
41
- }
42
- getTreeTitleMerge(col, row, cellRange, layout);
43
- } else {
44
- const id = layout.getCellId(col, row);
45
- for (let c = col - 1; c >= 0 && id === layout.getCellId(c, row); c--) cellRange.start.col = c;
46
- for (let c = col + 1; c < (null !== (_c = layout.colCount) && void 0 !== _c ? _c : 0) && id === layout.getCellId(c, row); c++) cellRange.end.col = c;
47
- for (let r = row - 1; r >= 0 && id === layout.getCellId(col, r); r--) cellRange.start.row = r;
48
- for (let r = row + 1; r < layout.headerLevelCount && id === layout.getCellId(col, r); r++) cellRange.end.row = r;
49
- }
50
- return layout._cellRangeMap.set(`$${col}$${row}`, cellRange), cellRange;
51
- }
52
-
53
- function getTreeTitleMerge(col, row, cellRange, layout) {
54
- if ("tree" !== layout.rowHierarchyType) return;
55
- const cellRecord = layout._table.getCellRawRecord(col, row);
56
- (null == cellRecord ? void 0 : cellRecord.vTableMerge) && (cellRange.start.col = layout.rowHeaderLevelCount,
57
- cellRange.end.col = layout.colCount - 1, cellRange.start.row = cellRange.end.row = row);
58
- }
59
-
60
- export function getCellRangeTranspose(col, row, layout) {
61
- var _a, _b, _c, _d;
62
- const result = {
63
- start: {
64
- col: col,
65
- row: row
66
- },
67
- end: {
68
- col: col,
69
- row: row
70
- }
71
- };
72
- if (layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount <= col || -1 === col && -1 === row) {
73
- if (layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount <= col && (null === (_b = null === (_a = layout.columnObjects[row]) || void 0 === _a ? void 0 : _a.define) || void 0 === _b ? void 0 : _b.mergeCell)) {
74
- const value = layout._table.getCellValue(col, row);
75
- for (let c = col - 1; c >= layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount; c--) {
76
- const last_Value = layout._table.getCellValue(c, row);
77
- if ("boolean" == typeof layout.columnObjects[row].define.mergeCell) {
78
- if (value !== last_Value) break;
79
- } else if (!layout.columnObjects[row].define.mergeCell(value, last_Value)) break;
80
- result.start.col = c;
81
- }
82
- for (let c = col + 1; c < (null !== (_c = layout.colCount) && void 0 !== _c ? _c : 0); c++) {
83
- const next_Value = layout._table.getCellValue(c, row);
84
- if ("boolean" == typeof layout.columnObjects[row].define.mergeCell) {
85
- if (value !== next_Value) break;
86
- } else if (!layout.columnObjects[row].define.mergeCell(value, next_Value)) break;
87
- result.end.col = c;
88
- }
89
- }
90
- return result;
91
- }
92
- const id = layout.getCellId(col, row);
93
- for (let r = row - 1; r >= 0 && id === layout.getCellId(col, r); r--) result.start.row = r;
94
- for (let r = row + 1; r < (null !== (_d = layout.rowCount) && void 0 !== _d ? _d : 0) && id === layout.getCellId(col, r); r++) result.end.row = r;
95
- for (let c = col - 1; c >= 0 && id === layout.getCellId(c, row); c--) result.start.col = c;
96
- for (let c = col + 1; c < layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount && id === layout.getCellId(c, row); c++) result.end.col = c;
97
- return result;
98
- }
99
- //# sourceMappingURL=simple-cell-range.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/layout/cell-range/simple-cell-range.ts"],"names":[],"mappings":"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","file":"simple-cell-range.js","sourcesContent":["import type { CellRange, TextColumnDefine } from '../../ts-types';\nimport type { SimpleHeaderLayoutMap } from '../simple-header-layout';\n\nexport function getCellRange(col: number, row: number, layout: SimpleHeaderLayoutMap): CellRange {\n if (col === -1 || row === -1) {\n return {\n start: { col, row },\n end: { col, row }\n };\n }\n if (layout._cellRangeMap.has(`$${col}$${row}`)) {\n return layout._cellRangeMap.get(`$${col}$${row}`);\n }\n let cellRange: CellRange = { start: { col, row }, end: { col, row } };\n if (layout.transpose) {\n cellRange = getCellRangeTranspose(col, row, layout);\n } else {\n // hover相关的单元格位置是-1,-1,getCellRange计算有误,先进行判断\n if (layout.headerLevelCount <= row) {\n //如果是body部分 设置了需要合并单元格 这里判断上下是否内容相同 相同的话 将cellRange范围扩大\n if (\n layout.headerLevelCount <= row &&\n (layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount]?.define as TextColumnDefine)?.mergeCell\n ) {\n const value = layout._table.getCellValue(col, row);\n for (let r = row - 1; r >= layout.headerLevelCount; r--) {\n const last_Value = layout._table.getCellValue(col, r);\n if (typeof layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell === 'boolean') {\n if (value !== last_Value) {\n break;\n }\n } else {\n if (\n !(layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell as Function)(\n value,\n last_Value\n )\n ) {\n break;\n }\n }\n cellRange.start.row = r;\n }\n for (let r = row + 1; r < layout.rowCount; r++) {\n const next_Value = layout._table.getCellValue(col, r);\n if (typeof layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell === 'boolean') {\n if (value !== next_Value) {\n break;\n }\n } else {\n if (\n !(layout.columnObjects[col - layout.leftRowSeriesNumberColumnCount].define.mergeCell as Function)(\n value,\n next_Value\n )\n ) {\n break;\n }\n }\n cellRange.end.row = r;\n }\n }\n getTreeTitleMerge(col, row, cellRange, layout);\n // return cellRange;\n } else {\n //in header\n const id = layout.getCellId(col, row);\n for (let c = col - 1; c >= 0; c--) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n cellRange.start.col = c;\n }\n for (let c = col + 1; c < (layout.colCount ?? 0); c++) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n cellRange.end.col = c;\n }\n for (let r = row - 1; r >= 0; r--) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n cellRange.start.row = r;\n }\n for (let r = row + 1; r < layout.headerLevelCount; r++) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n cellRange.end.row = r;\n }\n // return cellRange;\n }\n }\n layout._cellRangeMap.set(`$${col}$${row}`, cellRange);\n return cellRange;\n}\n\nfunction getTreeTitleMerge(col: number, row: number, cellRange: CellRange, layout: SimpleHeaderLayoutMap) {\n if (layout.rowHierarchyType !== 'tree') {\n return;\n }\n\n const cellRecord = layout._table.getCellRawRecord(col, row);\n if (cellRecord?.vTableMerge) {\n // const vTableMergeName = cellRecord.vtableMergeName;\n cellRange.start.col = layout.rowHeaderLevelCount;\n cellRange.end.col = layout.colCount - 1;\n cellRange.start.row = cellRange.end.row = row;\n }\n}\n\nexport function getCellRangeTranspose(col: number, row: number, layout: SimpleHeaderLayoutMap): CellRange {\n const result: CellRange = { start: { col, row }, end: { col, row } };\n // hover相关的单元格位置是-1,-1,getCellRange计算有误,先进行判断\n if (layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount <= col || (col === -1 && row === -1)) {\n //如果是body部分 设置了需要合并单元格 这里判断左右是否内容相同 相同的话 将cellRange范围扩大\n if (\n layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount <= col &&\n layout.columnObjects[row]?.define?.mergeCell\n ) {\n const value = layout._table.getCellValue(col, row);\n for (let c = col - 1; c >= layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount; c--) {\n const last_Value = layout._table.getCellValue(c, row);\n if (typeof layout.columnObjects[row].define.mergeCell === 'boolean') {\n if (value !== last_Value) {\n break;\n }\n } else {\n if (!(layout.columnObjects[row].define.mergeCell as Function)(value, last_Value)) {\n break;\n }\n }\n result.start.col = c;\n }\n for (let c = col + 1; c < (layout.colCount ?? 0); c++) {\n const next_Value = layout._table.getCellValue(c, row);\n if (typeof layout.columnObjects[row].define.mergeCell === 'boolean') {\n if (value !== next_Value) {\n break;\n }\n } else {\n if (!(layout.columnObjects[row].define.mergeCell as Function)(value, next_Value)) {\n break;\n }\n }\n result.end.col = c;\n }\n }\n return result;\n }\n //in header\n const id = layout.getCellId(col, row);\n for (let r = row - 1; r >= 0; r--) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n result.start.row = r;\n }\n for (let r = row + 1; r < (layout.rowCount ?? 0); r++) {\n if (id !== layout.getCellId(col, r)) {\n break;\n }\n result.end.row = r;\n }\n for (let c = col - 1; c >= 0; c--) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n result.start.col = c;\n }\n for (let c = col + 1; c < layout.headerLevelCount + layout.leftRowSeriesNumberColumnCount; c++) {\n if (id !== layout.getCellId(c, row)) {\n break;\n }\n result.end.col = c;\n }\n return result;\n}\n"]}
@@ -1,16 +0,0 @@
1
- import type { ListTable } from '../ListTable';
2
- export declare class ListTreeStickCellPlugin {
3
- table: ListTable;
4
- titleRows: number[];
5
- showedTitleRows: number[];
6
- rowNow: number;
7
- skipStartRow: number;
8
- skipEndRow: number;
9
- constructor(table: ListTable);
10
- updateGroupTitle(): void;
11
- updateGroupTitleInfo(): void;
12
- getTitleRowsByRecordIndex(recordIndex: number | number[], nextRecordIndex: number | number[]): void;
13
- updateScenegraph(): void;
14
- }
15
- export declare const registerListTreeStickCellPlugin: () => void;
16
- export type IListTreeStickCellPlugin = typeof ListTreeStickCellPlugin;
@@ -1,176 +0,0 @@
1
- import { isArray, isValid } from "@visactor/vutils";
2
-
3
- import { Factory } from "../core/factory";
4
-
5
- import { Group } from "../scenegraph/graphic/group";
6
-
7
- import { createRect } from "../vrender";
8
-
9
- import { updateCell } from "../scenegraph/group-creater/cell-helper";
10
-
11
- import { getTargetCell } from "../event/util";
12
-
13
- export class ListTreeStickCellPlugin {
14
- constructor(table) {
15
- this.titleRows = [], this.showedTitleRows = [], this.rowNow = -1, this.skipStartRow = -1,
16
- this.skipEndRow = -1, this.table = table, this.table.on("scroll", (e => {
17
- "vertical" === e.scrollDirection && this.updateGroupTitle();
18
- })), this.table.on("resize_column", (e => {
19
- this.updateGroupTitle();
20
- }));
21
- }
22
- updateGroupTitle() {
23
- 0 === this.table.scrollTop ? (this.titleRows = [], this.showedTitleRows = []) : -1 !== this.skipStartRow && -1 !== this.skipEndRow && this.skipStartRow !== this.table.scenegraph.proxy.bodyTopRow - 1 ? (this.table.scenegraph.proxy.screenTopRow <= this.skipStartRow || this.table.scenegraph.proxy.screenTopRow >= this.skipEndRow) && (this.skipStartRow = -1,
24
- this.skipEndRow = -1, this.updateGroupTitleInfo()) : (this.skipStartRow = -1, this.skipEndRow = -1,
25
- this.updateGroupTitleInfo()), this.updateScenegraph();
26
- }
27
- updateGroupTitleInfo() {
28
- this.rowNow = this.table.scenegraph.proxy.screenTopRow + this.titleRows.length;
29
- const recordIndex = this.table.getRecordIndexByCell(0, this.rowNow), nextRecordIndex = this.table.getRecordIndexByCell(0, this.rowNow + 1);
30
- this.getTitleRowsByRecordIndex(recordIndex, nextRecordIndex);
31
- }
32
- getTitleRowsByRecordIndex(recordIndex, nextRecordIndex) {
33
- const titleRecords = [];
34
- isArray(recordIndex) || (recordIndex = [ recordIndex ]), isArray(nextRecordIndex) || (nextRecordIndex = [ nextRecordIndex ]);
35
- for (let i = 0; i < recordIndex.length; i++) {
36
- const index = recordIndex.slice(0, i + 1), record = this.table.dataSource.getRaw(index);
37
- titleRecords.push(record);
38
- }
39
- const titleRows = [], isTitle = nextRecordIndex.length === recordIndex.length + 1;
40
- let titleIndex = recordIndex.slice(0, isTitle ? recordIndex.length : recordIndex.length - 1);
41
- const currentIndexedData = this.table.dataSource.currentIndexedData;
42
- for (let i = this.rowNow - this.table.columnHeaderLevelCount; i >= 0; i--) {
43
- const currentIndex = currentIndexedData[i];
44
- if (isArray(currentIndex) && titleIndex.length === currentIndex.length) {
45
- let isMatch = !0;
46
- for (let j = 0; j < currentIndex.length; j++) if (currentIndex[j] !== titleIndex[j]) {
47
- isMatch = !1;
48
- break;
49
- }
50
- isMatch && (titleRows.push(i + this.table.columnHeaderLevelCount), titleIndex = titleIndex.slice(0, titleIndex.length - 1));
51
- } else if (currentIndex === recordIndex[0]) {
52
- titleRows.push(i + this.table.columnHeaderLevelCount);
53
- break;
54
- }
55
- }
56
- this.titleRows = titleRows.reverse();
57
- }
58
- updateScenegraph() {
59
- const {table: table} = this, {shadowGroup: shadowGroup, shadowGroupFrozen: shadowGroupFrozen} = prepareShadowRoot(table);
60
- this.showedTitleRows.length = 0;
61
- let skip = 0;
62
- for (let col = 0; col < table.colCount; col++) {
63
- let colGroup;
64
- col < table.frozenColCount ? (colGroup = new Group({
65
- x: table.getColsWidth(0, col - 1),
66
- y: table.getFrozenRowsHeight()
67
- }), shadowGroupFrozen.add(colGroup)) : (colGroup = new Group({
68
- x: table.getColsWidth(table.frozenColCount, col - 1),
69
- y: table.getFrozenRowsHeight()
70
- }), shadowGroup.add(colGroup)), colGroup.col = col;
71
- for (let i = 0; i < this.titleRows.length; i++) {
72
- const row = this.titleRows[i];
73
- if (isSkipRow(row, this.rowNow, table.scenegraph.proxy.screenTopRow, this.titleRows)) {
74
- 0 === col && skip++;
75
- continue;
76
- }
77
- 0 === col && this.showedTitleRows.push(row);
78
- const cell = table.scenegraph.getCell(col, row);
79
- if ("cell" === cell.role) {
80
- const newCell = cloneGraphic(cell);
81
- newCell.setAttributes({
82
- y: 40 * i
83
- }), colGroup.add(newCell);
84
- } else {
85
- const newCell = updateCell(col, row, table, !0, !0);
86
- newCell.setAttributes({
87
- y: 40 * i
88
- }), colGroup.add(newCell);
89
- }
90
- }
91
- }
92
- skip > 0 && -1 === this.skipStartRow && -1 === this.skipEndRow && (this.skipStartRow = table.scenegraph.proxy.screenTopRow - 1,
93
- this.skipEndRow = table.scenegraph.proxy.screenTopRow + 1);
94
- }
95
- }
96
-
97
- function isSkipRow(row, topRow, screenTopRow, titleRows) {
98
- if (row === topRow && row !== screenTopRow + titleRows.length - 1) return !0;
99
- return row === screenTopRow + titleRows.indexOf(row) + 1 && row < topRow;
100
- }
101
-
102
- function cloneGraphic(graphic) {
103
- const newGraphic = graphic.clone();
104
- if (newGraphic.role = graphic.role, newGraphic.col = graphic.col, newGraphic.row = graphic.row,
105
- newGraphic.mergeStartCol = graphic.mergeStartCol, newGraphic.mergeStartRow = graphic.mergeStartRow,
106
- newGraphic.mergeEndCol = graphic.mergeEndCol, newGraphic.mergeEndRow = graphic.mergeEndRow,
107
- newGraphic.contentWidth = graphic.contentWidth, newGraphic.contentHeight = graphic.contentHeight,
108
- "cell" === newGraphic.role) {
109
- const hackRect = createRect({
110
- x: 0,
111
- y: 0,
112
- width: newGraphic.attribute.width,
113
- height: newGraphic.attribute.height
114
- });
115
- newGraphic.add(hackRect);
116
- }
117
- if ("group" === graphic.type) {
118
- const newGroup = newGraphic;
119
- graphic.forEachChildren((child => {
120
- const newChild = cloneGraphic(child);
121
- newGroup.add(newChild);
122
- }));
123
- }
124
- return newGraphic;
125
- }
126
-
127
- function prepareShadowRoot(table) {
128
- const colHeaderGroup = table.scenegraph.colHeaderGroup, cornerHeaderGroup = table.scenegraph.cornerHeaderGroup;
129
- if (!colHeaderGroup.border) {
130
- const hackBorder = createRect({
131
- x: 0,
132
- y: 0,
133
- width: 0,
134
- height: 0,
135
- cursor: "pointer"
136
- });
137
- colHeaderGroup.add(hackBorder), colHeaderGroup.border = hackBorder, hackBorder.attachShadow(hackBorder.shadowRoot),
138
- hackBorder.name = "border-rect", hackBorder.addEventListener("click", (e => {
139
- const titleRows = table.listTreeStickCellPlugin.titleRows, {shadowTarget: shadowTarget} = e.pickParams, cellGroup = getTargetCell(shadowTarget), {col: col, row: row} = cellGroup;
140
- scrollToRow(row - titleRows.indexOf(row), table);
141
- }));
142
- }
143
- if (!cornerHeaderGroup.border) {
144
- const hackBorder = createRect({
145
- x: 0,
146
- y: 0,
147
- width: 0,
148
- height: 0,
149
- cursor: "pointer"
150
- });
151
- cornerHeaderGroup.add(hackBorder), cornerHeaderGroup.border = hackBorder, hackBorder.attachShadow(hackBorder.shadowRoot),
152
- hackBorder.name = "border-rect", hackBorder.addEventListener("click", (e => {
153
- const titleRows = table.listTreeStickCellPlugin.titleRows, {shadowTarget: shadowTarget} = e.pickParams, cellGroup = getTargetCell(shadowTarget), {col: col, row: row} = cellGroup;
154
- scrollToRow(row - titleRows.indexOf(row), table);
155
- }));
156
- }
157
- const shadowGroup = colHeaderGroup.border.shadowRoot, shadowGroupFrozen = cornerHeaderGroup.border.shadowRoot;
158
- return shadowGroup.removeAllChild(), shadowGroupFrozen.removeAllChild(), {
159
- shadowGroup: shadowGroup,
160
- shadowGroupFrozen: shadowGroupFrozen
161
- };
162
- }
163
-
164
- function scrollToRow(row, table) {
165
- const drawRange = table.getDrawRange();
166
- if (isValid(row) && row >= table.frozenRowCount) {
167
- const frozenHeight = table.getFrozenRowsHeight(), top = table.getRowsHeight(0, row - 1);
168
- table.scrollTop = Math.min(top - frozenHeight, table.getAllRowsHeight() - drawRange.height) - 1;
169
- }
170
- table.scenegraph.updateNextFrame();
171
- }
172
-
173
- export const registerListTreeStickCellPlugin = () => {
174
- Factory.registerComponent("listTreeStickCellPlugin", ListTreeStickCellPlugin);
175
- };
176
- //# sourceMappingURL=list-tree-stick-cell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/plugins/list-tree-stick-cell.ts"],"names":[],"mappings":"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","file":"list-tree-stick-cell.js","sourcesContent":["import { isArray, isValid } from '@visactor/vutils';\nimport type { ListTable } from '../ListTable';\nimport { Factory } from '../core/factory';\nimport { Group } from '../scenegraph/graphic/group';\nimport { createRect, type Graphic } from '../vrender';\nimport { updateCell } from '../scenegraph/group-creater/cell-helper';\nimport { getTargetCell } from '../event/util';\n\nexport class ListTreeStickCellPlugin {\n table: ListTable;\n titleRows: number[] = [];\n showedTitleRows: number[] = [];\n rowNow: number = -1;\n skipStartRow: number = -1;\n skipEndRow: number = -1;\n\n constructor(table: ListTable) {\n this.table = table;\n\n this.table.on('scroll', e => {\n if (e.scrollDirection !== 'vertical') {\n return;\n }\n this.updateGroupTitle();\n });\n\n this.table.on('resize_column', e => {\n this.updateGroupTitle();\n });\n }\n\n updateGroupTitle() {\n // this.updateGroupTitleInfo();\n if (this.table.scrollTop === 0) {\n // do nothing\n this.titleRows = [];\n this.showedTitleRows = [];\n } else if (\n this.skipStartRow !== -1 &&\n this.skipEndRow !== -1 &&\n this.skipStartRow !== this.table.scenegraph.proxy.bodyTopRow - 1\n ) {\n if (\n this.table.scenegraph.proxy.screenTopRow <= this.skipStartRow ||\n this.table.scenegraph.proxy.screenTopRow >= this.skipEndRow\n ) {\n this.skipStartRow = -1;\n this.skipEndRow = -1;\n this.updateGroupTitleInfo();\n } else {\n // const row = this.table.scenegraph.proxy.screenTopRow + titleRows.length;\n // nowRow = row;\n // renderLast = true;\n // do nothing\n }\n } else {\n this.skipStartRow = -1;\n this.skipEndRow = -1;\n this.updateGroupTitleInfo();\n }\n\n this.updateScenegraph();\n }\n\n updateGroupTitleInfo() {\n this.rowNow = this.table.scenegraph.proxy.screenTopRow + this.titleRows.length;\n const recordIndex = this.table.getRecordIndexByCell(0, this.rowNow); // [0, 0, 6]/0\n const nextRecordIndex = this.table.getRecordIndexByCell(0, this.rowNow + 1);\n this.getTitleRowsByRecordIndex(recordIndex, nextRecordIndex);\n }\n\n getTitleRowsByRecordIndex(recordIndex: number | number[], nextRecordIndex: number | number[]) {\n const titleRecords = [];\n if (!isArray(recordIndex)) {\n recordIndex = [recordIndex];\n }\n if (!isArray(nextRecordIndex)) {\n nextRecordIndex = [nextRecordIndex];\n }\n\n for (let i = 0; i < recordIndex.length; i++) {\n const index = recordIndex.slice(0, i + 1);\n const record = this.table.dataSource.getRaw(index as unknown as number);\n titleRecords.push(record);\n }\n\n const titleRows = [];\n // const isTitle = !(recordIndex.length === (this.table.options.groupBy as any).length + 1);\n const isTitle = nextRecordIndex.length === recordIndex.length + 1;\n let titleIndex = recordIndex.slice(0, !isTitle ? recordIndex.length - 1 : recordIndex.length);\n const currentIndexedData = this.table.dataSource.currentIndexedData;\n const startIndex = this.rowNow - this.table.columnHeaderLevelCount;\n\n for (let i = startIndex; i >= 0; i--) {\n const currentIndex = currentIndexedData[i];\n if (isArray(currentIndex) && titleIndex.length === currentIndex.length) {\n let isMatch = true;\n for (let j = 0; j < currentIndex.length; j++) {\n if (currentIndex[j] !== titleIndex[j]) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n titleRows.push(i + this.table.columnHeaderLevelCount);\n titleIndex = titleIndex.slice(0, titleIndex.length - 1);\n }\n } else if (currentIndex === recordIndex[0]) {\n titleRows.push(i + this.table.columnHeaderLevelCount);\n break;\n }\n }\n\n this.titleRows = titleRows.reverse();\n }\n\n updateScenegraph() {\n const { table } = this;\n const { shadowGroup, shadowGroupFrozen } = prepareShadowRoot(table);\n\n this.showedTitleRows.length = 0;\n let skip = 0;\n for (let col = 0; col < table.colCount; col++) {\n let colGroup;\n if (col < table.frozenColCount) {\n colGroup = new Group({\n x: table.getColsWidth(0, col - 1),\n y: table.getFrozenRowsHeight()\n });\n shadowGroupFrozen.add(colGroup);\n } else {\n colGroup = new Group({\n x: table.getColsWidth(table.frozenColCount, col - 1),\n y: table.getFrozenRowsHeight()\n });\n shadowGroup.add(colGroup);\n }\n colGroup.col = col;\n for (let i = 0; i < this.titleRows.length; i++) {\n const row = this.titleRows[i];\n if (isSkipRow(row, this.rowNow, table.scenegraph.proxy.screenTopRow, this.titleRows)) {\n // skipOne = true;\n col === 0 && skip++;\n continue;\n }\n if (col === 0) {\n this.showedTitleRows.push(row);\n }\n const cell = table.scenegraph.getCell(col, row);\n if (cell.role === 'cell') {\n const newCell = cloneGraphic(cell);\n newCell.setAttributes({\n y: i * 40\n });\n colGroup.add(newCell);\n } else {\n // create a fake cellGroup for title\n const newCell = updateCell(col, row, table, true, true);\n newCell.setAttributes({\n y: i * 40\n });\n colGroup.add(newCell);\n }\n }\n }\n\n if (skip > 0 && this.skipStartRow === -1 && this.skipEndRow === -1) {\n this.skipStartRow = table.scenegraph.proxy.screenTopRow - 1;\n this.skipEndRow = table.scenegraph.proxy.screenTopRow + 1;\n }\n }\n}\n\nfunction isSkipRow(row: number, topRow: number, screenTopRow: number, titleRows: number[]) {\n if (row === topRow && row !== screenTopRow + titleRows.length - 1) {\n return true;\n }\n\n const rowIndex = titleRows.indexOf(row);\n const rowLimit = screenTopRow + rowIndex + 1;\n if (row === rowLimit && row < topRow) {\n return true;\n }\n\n return false;\n}\n\nfunction cloneGraphic(graphic: Graphic) {\n const newGraphic = graphic.clone();\n (newGraphic as any).role = (graphic as any).role;\n (newGraphic as any).col = (graphic as any).col;\n (newGraphic as any).row = (graphic as any).row;\n (newGraphic as any).mergeStartCol = (graphic as any).mergeStartCol;\n (newGraphic as any).mergeStartRow = (graphic as any).mergeStartRow;\n (newGraphic as any).mergeEndCol = (graphic as any).mergeEndCol;\n (newGraphic as any).mergeEndRow = (graphic as any).mergeEndRow;\n (newGraphic as any).contentWidth = (graphic as any).contentWidth;\n (newGraphic as any).contentHeight = (graphic as any).contentHeight;\n\n if ((newGraphic as any).role === 'cell') {\n // hack for vrender not support shadow group pick\n const hackRect = createRect({\n x: 0,\n y: 0,\n width: newGraphic.attribute.width,\n height: newGraphic.attribute.height\n });\n newGraphic.add(hackRect);\n }\n\n if (graphic.type === 'group') {\n const newGroup = newGraphic as Group;\n graphic.forEachChildren(child => {\n const newChild = cloneGraphic(child as any);\n newGroup.add(newChild);\n });\n }\n return newGraphic;\n}\n\nfunction prepareShadowRoot(table: ListTable) {\n const colHeaderGroup = table.scenegraph.colHeaderGroup;\n const cornerHeaderGroup = table.scenegraph.cornerHeaderGroup;\n if (!colHeaderGroup.border) {\n const hackBorder = createRect({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n cursor: 'pointer'\n });\n colHeaderGroup.add(hackBorder);\n colHeaderGroup.border = hackBorder;\n (hackBorder as any).attachShadow(hackBorder.shadowRoot);\n hackBorder.name = 'border-rect';\n\n hackBorder.addEventListener('click', (e: any) => {\n const titleRows = table.listTreeStickCellPlugin.titleRows;\n const { shadowTarget } = e.pickParams;\n const cellGroup = getTargetCell(shadowTarget);\n const { col, row } = cellGroup;\n const rowIndex = titleRows.indexOf(row);\n // table.scrollToCell({ col, row: row - rowIndex });\n scrollToRow(row - rowIndex, table);\n });\n }\n\n if (!cornerHeaderGroup.border) {\n const hackBorder = createRect({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n cursor: 'pointer'\n });\n cornerHeaderGroup.add(hackBorder);\n cornerHeaderGroup.border = hackBorder;\n (hackBorder as any).attachShadow(hackBorder.shadowRoot);\n hackBorder.name = 'border-rect';\n\n hackBorder.addEventListener('click', (e: any) => {\n const titleRows = table.listTreeStickCellPlugin.titleRows;\n const { shadowTarget } = e.pickParams;\n const cellGroup = getTargetCell(shadowTarget);\n const { col, row } = cellGroup;\n const rowIndex = titleRows.indexOf(row);\n // table.scrollToCell({ col, row: row - rowIndex });\n scrollToRow(row - rowIndex, table);\n });\n }\n\n const shadowGroup = colHeaderGroup.border.shadowRoot;\n const shadowGroupFrozen = cornerHeaderGroup.border.shadowRoot;\n shadowGroup.removeAllChild();\n shadowGroupFrozen.removeAllChild();\n\n return { shadowGroup, shadowGroupFrozen };\n}\n\nfunction scrollToRow(row: number, table: ListTable) {\n const drawRange = table.getDrawRange();\n\n if (isValid(row) && row >= table.frozenRowCount) {\n const frozenHeight = table.getFrozenRowsHeight();\n const top = table.getRowsHeight(0, row - 1);\n table.scrollTop = Math.min(top - frozenHeight, table.getAllRowsHeight() - drawRange.height) - 1;\n }\n table.scenegraph.updateNextFrame();\n}\n\nexport const registerListTreeStickCellPlugin = () => {\n Factory.registerComponent('listTreeStickCellPlugin', ListTreeStickCellPlugin);\n};\n\nexport type IListTreeStickCellPlugin = typeof ListTreeStickCellPlugin;\n"]}