@visactor/vtable 0.10.1-alpha.3 → 0.10.1

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 (257) hide show
  1. package/cjs/ListTable.js +1 -1
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotChart.js +1 -1
  4. package/cjs/PivotChart.js.map +1 -1
  5. package/cjs/PivotTable.js +1 -1
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/body-helper/body-helper.d.ts +1 -1
  8. package/cjs/body-helper/body-helper.js +2 -2
  9. package/cjs/body-helper/body-helper.js.map +1 -1
  10. package/cjs/components/axis/axis.js +7 -5
  11. package/cjs/components/axis/axis.js.map +1 -1
  12. package/cjs/components/axis/get-axis-attributes.d.ts +2 -0
  13. package/cjs/components/axis/get-axis-attributes.js +3 -1
  14. package/cjs/components/axis/get-axis-attributes.js.map +1 -1
  15. package/cjs/components/axis/get-axis-component-size.js +66 -34
  16. package/cjs/components/axis/get-axis-component-size.js.map +1 -1
  17. package/cjs/components/menu/dom/logic/MenuContainer.js +1 -1
  18. package/cjs/components/menu/dom/logic/MenuContainer.js.map +1 -1
  19. package/cjs/components/menu/dom/logic/MenuElement.js +3 -3
  20. package/cjs/components/menu/dom/logic/MenuElement.js.map +1 -1
  21. package/cjs/core/BaseTable.d.ts +2 -2
  22. package/cjs/core/BaseTable.js +12 -11
  23. package/cjs/core/BaseTable.js.map +1 -1
  24. package/cjs/event/media-click.js +1 -1
  25. package/cjs/event/media-click.js.map +1 -1
  26. package/cjs/event/sparkline-event.js +2 -2
  27. package/cjs/event/sparkline-event.js.map +1 -1
  28. package/cjs/index.d.ts +1 -1
  29. package/cjs/index.js +1 -1
  30. package/cjs/index.js.map +1 -1
  31. package/cjs/layout/chart-helper/get-axis-config.js +12 -4
  32. package/cjs/layout/chart-helper/get-axis-config.js.map +1 -1
  33. package/cjs/layout/chart-helper/get-chart-spec.js +7 -1
  34. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  35. package/cjs/layout/pivot-header-layout.d.ts +2 -2
  36. package/cjs/layout/pivot-header-layout.js +8 -8
  37. package/cjs/layout/pivot-header-layout.js.map +1 -1
  38. package/cjs/layout/pivot-layout.d.ts +2 -2
  39. package/cjs/layout/pivot-layout.js +10 -10
  40. package/cjs/layout/pivot-layout.js.map +1 -1
  41. package/cjs/layout/simple-header-layout.d.ts +2 -2
  42. package/cjs/layout/simple-header-layout.js +3 -3
  43. package/cjs/layout/simple-header-layout.js.map +1 -1
  44. package/cjs/scenegraph/component/cell-mover.js +3 -3
  45. package/cjs/scenegraph/component/cell-mover.js.map +1 -1
  46. package/cjs/scenegraph/component/menu.d.ts +41 -0
  47. package/cjs/scenegraph/group-creater/cell-helper.js +5 -5
  48. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  49. package/cjs/scenegraph/group-creater/column-helper.d.ts +2 -2
  50. package/cjs/scenegraph/group-creater/column-helper.js +4 -4
  51. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  52. package/cjs/scenegraph/group-creater/column.d.ts +2 -2
  53. package/cjs/scenegraph/group-creater/column.js +2 -2
  54. package/cjs/scenegraph/group-creater/column.js.map +1 -1
  55. package/cjs/scenegraph/group-creater/progress/proxy.d.ts +2 -1
  56. package/cjs/scenegraph/group-creater/progress/proxy.js +8 -21
  57. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  58. package/cjs/scenegraph/group-creater/progress/update-position/sort-horizontal.d.ts +2 -0
  59. package/cjs/scenegraph/group-creater/progress/update-position/sort-horizontal.js +52 -0
  60. package/cjs/scenegraph/group-creater/progress/update-position/sort-horizontal.js.map +1 -0
  61. package/cjs/scenegraph/group-creater/progress/update-position/sort-vertical.d.ts +2 -0
  62. package/cjs/scenegraph/group-creater/progress/update-position/sort-vertical.js +52 -0
  63. package/cjs/scenegraph/group-creater/progress/update-position/sort-vertical.js.map +1 -0
  64. package/cjs/scenegraph/layout/compute-col-width.js +1 -1
  65. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  66. package/cjs/scenegraph/layout/compute-row-height.d.ts +1 -1
  67. package/cjs/scenegraph/layout/compute-row-height.js +14 -7
  68. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  69. package/cjs/scenegraph/layout/move-cell.js +1 -1
  70. package/cjs/scenegraph/layout/move-cell.js.map +1 -1
  71. package/cjs/scenegraph/layout/update-cell.js +1 -1
  72. package/cjs/scenegraph/layout/update-cell.js.map +1 -1
  73. package/cjs/scenegraph/layout/update-height.js +1 -1
  74. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  75. package/cjs/scenegraph/layout/update-width.js +1 -1
  76. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  77. package/cjs/scenegraph/scenegraph.d.ts +4 -4
  78. package/cjs/scenegraph/scenegraph.js +5 -8
  79. package/cjs/scenegraph/scenegraph.js.map +1 -1
  80. package/cjs/scenegraph/select/create-select-border.d.ts +2 -2
  81. package/cjs/scenegraph/select/create-select-border.js.map +1 -1
  82. package/cjs/scenegraph/select/delete-select-border.js.map +1 -1
  83. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  84. package/cjs/state/cell-move/index.js +3 -3
  85. package/cjs/state/cell-move/index.js.map +1 -1
  86. package/cjs/state/drill/index.js +1 -1
  87. package/cjs/state/drill/index.js.map +1 -1
  88. package/cjs/state/state.js +1 -1
  89. package/cjs/state/state.js.map +1 -1
  90. package/cjs/ts-types/base-table.d.ts +2 -2
  91. package/cjs/ts-types/base-table.js.map +1 -1
  92. package/cjs/ts-types/common.d.ts +3 -3
  93. package/cjs/ts-types/common.js.map +1 -1
  94. package/cjs/ts-types/events.d.ts +2 -2
  95. package/cjs/ts-types/events.js.map +1 -1
  96. package/cjs/ts-types/list-table/define/basic-define.js.map +1 -1
  97. package/cjs/ts-types/list-table/define/chart-define.d.ts +1 -1
  98. package/cjs/ts-types/list-table/define/chart-define.js.map +1 -1
  99. package/cjs/ts-types/list-table/define/image-define.d.ts +1 -1
  100. package/cjs/ts-types/list-table/define/image-define.js.map +1 -1
  101. package/cjs/ts-types/list-table/define/link-define.d.ts +1 -1
  102. package/cjs/ts-types/list-table/define/link-define.js.map +1 -1
  103. package/cjs/ts-types/list-table/define/multilinetext-define.d.ts +1 -1
  104. package/cjs/ts-types/list-table/define/multilinetext-define.js.map +1 -1
  105. package/cjs/ts-types/list-table/define/progressbar-define.d.ts +1 -1
  106. package/cjs/ts-types/list-table/define/progressbar-define.js.map +1 -1
  107. package/cjs/ts-types/list-table/define/sparkline-define.d.ts +1 -1
  108. package/cjs/ts-types/list-table/define/sparkline-define.js.map +1 -1
  109. package/cjs/ts-types/list-table/layout-map/api.d.ts +2 -2
  110. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  111. package/cjs/ts-types/menu.d.ts +2 -2
  112. package/cjs/ts-types/menu.js.map +1 -1
  113. package/cjs/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  114. package/cjs/ts-types/pivot-table/indicator/chart-indicator.d.ts +1 -1
  115. package/cjs/ts-types/pivot-table/indicator/chart-indicator.js.map +1 -1
  116. package/cjs/ts-types/pivot-table/indicator/image-indicator.d.ts +1 -1
  117. package/cjs/ts-types/pivot-table/indicator/image-indicator.js.map +1 -1
  118. package/cjs/ts-types/pivot-table/indicator/link-indicator.d.ts +1 -1
  119. package/cjs/ts-types/pivot-table/indicator/link-indicator.js.map +1 -1
  120. package/cjs/ts-types/pivot-table/indicator/multilinetext-indicator.d.ts +1 -1
  121. package/cjs/ts-types/pivot-table/indicator/multilinetext-indicator.js.map +1 -1
  122. package/cjs/ts-types/pivot-table/indicator/progress-indicator.d.ts +1 -1
  123. package/cjs/ts-types/pivot-table/indicator/progress-indicator.js.map +1 -1
  124. package/cjs/ts-types/pivot-table/indicator/sparkline-indicator.d.ts +1 -1
  125. package/cjs/ts-types/pivot-table/indicator/sparkline-indicator.js.map +1 -1
  126. package/cjs/ts-types/table-engine.d.ts +1 -1
  127. package/cjs/ts-types/table-engine.js.map +1 -1
  128. package/dist/vtable.js +1723 -1994
  129. package/dist/vtable.min.js +3 -3
  130. package/es/ListTable.js +1 -1
  131. package/es/ListTable.js.map +1 -1
  132. package/es/PivotChart.js +1 -1
  133. package/es/PivotChart.js.map +1 -1
  134. package/es/PivotTable.js +1 -1
  135. package/es/PivotTable.js.map +1 -1
  136. package/es/body-helper/body-helper.d.ts +1 -1
  137. package/es/body-helper/body-helper.js +2 -2
  138. package/es/body-helper/body-helper.js.map +1 -1
  139. package/es/components/axis/axis.js +7 -6
  140. package/es/components/axis/axis.js.map +1 -1
  141. package/es/components/axis/get-axis-attributes.d.ts +2 -0
  142. package/es/components/axis/get-axis-attributes.js +3 -1
  143. package/es/components/axis/get-axis-attributes.js.map +1 -1
  144. package/es/components/axis/get-axis-component-size.js +66 -34
  145. package/es/components/axis/get-axis-component-size.js.map +1 -1
  146. package/es/components/menu/dom/logic/MenuContainer.js +1 -1
  147. package/es/components/menu/dom/logic/MenuContainer.js.map +1 -1
  148. package/es/components/menu/dom/logic/MenuElement.js +3 -3
  149. package/es/components/menu/dom/logic/MenuElement.js.map +1 -1
  150. package/es/core/BaseTable.d.ts +2 -2
  151. package/es/core/BaseTable.js +12 -11
  152. package/es/core/BaseTable.js.map +1 -1
  153. package/es/event/media-click.js +1 -1
  154. package/es/event/media-click.js.map +1 -1
  155. package/es/event/sparkline-event.js +2 -2
  156. package/es/event/sparkline-event.js.map +1 -1
  157. package/es/index.d.ts +1 -1
  158. package/es/index.js +1 -1
  159. package/es/index.js.map +1 -1
  160. package/es/layout/chart-helper/get-axis-config.js +13 -5
  161. package/es/layout/chart-helper/get-axis-config.js.map +1 -1
  162. package/es/layout/chart-helper/get-chart-spec.js +7 -1
  163. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  164. package/es/layout/pivot-header-layout.d.ts +2 -2
  165. package/es/layout/pivot-header-layout.js +8 -8
  166. package/es/layout/pivot-header-layout.js.map +1 -1
  167. package/es/layout/pivot-layout.d.ts +2 -2
  168. package/es/layout/pivot-layout.js +10 -10
  169. package/es/layout/pivot-layout.js.map +1 -1
  170. package/es/layout/simple-header-layout.d.ts +2 -2
  171. package/es/layout/simple-header-layout.js +3 -3
  172. package/es/layout/simple-header-layout.js.map +1 -1
  173. package/es/scenegraph/component/cell-mover.js +3 -3
  174. package/es/scenegraph/component/cell-mover.js.map +1 -1
  175. package/es/scenegraph/component/menu.d.ts +41 -0
  176. package/es/scenegraph/group-creater/cell-helper.js +5 -5
  177. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  178. package/es/scenegraph/group-creater/column-helper.d.ts +2 -2
  179. package/es/scenegraph/group-creater/column-helper.js +4 -4
  180. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  181. package/es/scenegraph/group-creater/column.d.ts +2 -2
  182. package/es/scenegraph/group-creater/column.js +2 -2
  183. package/es/scenegraph/group-creater/column.js.map +1 -1
  184. package/es/scenegraph/group-creater/progress/proxy.d.ts +2 -1
  185. package/es/scenegraph/group-creater/progress/proxy.js +11 -20
  186. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  187. package/es/scenegraph/group-creater/progress/update-position/sort-horizontal.d.ts +2 -0
  188. package/es/scenegraph/group-creater/progress/update-position/sort-horizontal.js +45 -0
  189. package/es/scenegraph/group-creater/progress/update-position/sort-horizontal.js.map +1 -0
  190. package/es/scenegraph/group-creater/progress/update-position/sort-vertical.d.ts +2 -0
  191. package/es/scenegraph/group-creater/progress/update-position/sort-vertical.js +47 -0
  192. package/es/scenegraph/group-creater/progress/update-position/sort-vertical.js.map +1 -0
  193. package/es/scenegraph/layout/compute-col-width.js +1 -1
  194. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  195. package/es/scenegraph/layout/compute-row-height.d.ts +1 -1
  196. package/es/scenegraph/layout/compute-row-height.js +14 -7
  197. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  198. package/es/scenegraph/layout/move-cell.js +1 -1
  199. package/es/scenegraph/layout/move-cell.js.map +1 -1
  200. package/es/scenegraph/layout/update-cell.js +1 -1
  201. package/es/scenegraph/layout/update-cell.js.map +1 -1
  202. package/es/scenegraph/layout/update-height.js +1 -1
  203. package/es/scenegraph/layout/update-height.js.map +1 -1
  204. package/es/scenegraph/layout/update-width.js +1 -1
  205. package/es/scenegraph/layout/update-width.js.map +1 -1
  206. package/es/scenegraph/scenegraph.d.ts +4 -4
  207. package/es/scenegraph/scenegraph.js +5 -7
  208. package/es/scenegraph/scenegraph.js.map +1 -1
  209. package/es/scenegraph/select/create-select-border.d.ts +2 -2
  210. package/es/scenegraph/select/create-select-border.js.map +1 -1
  211. package/es/scenegraph/select/delete-select-border.js.map +1 -1
  212. package/es/scenegraph/select/update-select-border.js.map +1 -1
  213. package/es/state/cell-move/index.js +3 -3
  214. package/es/state/cell-move/index.js.map +1 -1
  215. package/es/state/drill/index.js +1 -1
  216. package/es/state/drill/index.js.map +1 -1
  217. package/es/state/state.js +1 -1
  218. package/es/state/state.js.map +1 -1
  219. package/es/ts-types/base-table.d.ts +2 -2
  220. package/es/ts-types/base-table.js.map +1 -1
  221. package/es/ts-types/common.d.ts +3 -3
  222. package/es/ts-types/common.js.map +1 -1
  223. package/es/ts-types/events.d.ts +2 -2
  224. package/es/ts-types/events.js.map +1 -1
  225. package/es/ts-types/list-table/define/basic-define.js.map +1 -1
  226. package/es/ts-types/list-table/define/chart-define.d.ts +1 -1
  227. package/es/ts-types/list-table/define/chart-define.js.map +1 -1
  228. package/es/ts-types/list-table/define/image-define.d.ts +1 -1
  229. package/es/ts-types/list-table/define/image-define.js.map +1 -1
  230. package/es/ts-types/list-table/define/link-define.d.ts +1 -1
  231. package/es/ts-types/list-table/define/link-define.js.map +1 -1
  232. package/es/ts-types/list-table/define/multilinetext-define.d.ts +1 -1
  233. package/es/ts-types/list-table/define/multilinetext-define.js.map +1 -1
  234. package/es/ts-types/list-table/define/progressbar-define.d.ts +1 -1
  235. package/es/ts-types/list-table/define/progressbar-define.js.map +1 -1
  236. package/es/ts-types/list-table/define/sparkline-define.d.ts +1 -1
  237. package/es/ts-types/list-table/define/sparkline-define.js.map +1 -1
  238. package/es/ts-types/list-table/layout-map/api.d.ts +2 -2
  239. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  240. package/es/ts-types/menu.d.ts +2 -2
  241. package/es/ts-types/menu.js.map +1 -1
  242. package/es/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  243. package/es/ts-types/pivot-table/indicator/chart-indicator.d.ts +1 -1
  244. package/es/ts-types/pivot-table/indicator/chart-indicator.js.map +1 -1
  245. package/es/ts-types/pivot-table/indicator/image-indicator.d.ts +1 -1
  246. package/es/ts-types/pivot-table/indicator/image-indicator.js.map +1 -1
  247. package/es/ts-types/pivot-table/indicator/link-indicator.d.ts +1 -1
  248. package/es/ts-types/pivot-table/indicator/link-indicator.js.map +1 -1
  249. package/es/ts-types/pivot-table/indicator/multilinetext-indicator.d.ts +1 -1
  250. package/es/ts-types/pivot-table/indicator/multilinetext-indicator.js.map +1 -1
  251. package/es/ts-types/pivot-table/indicator/progress-indicator.d.ts +1 -1
  252. package/es/ts-types/pivot-table/indicator/progress-indicator.js.map +1 -1
  253. package/es/ts-types/pivot-table/indicator/sparkline-indicator.d.ts +1 -1
  254. package/es/ts-types/pivot-table/indicator/sparkline-indicator.js.map +1 -1
  255. package/es/ts-types/table-engine.d.ts +1 -1
  256. package/es/ts-types/table-engine.js.map +1 -1
  257. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["scenegraph/group-creater/column-helper.ts"],"names":[],"mappings":"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","file":"column-helper.js","sourcesContent":["/* eslint-disable no-undef */\nimport type { IThemeSpec } from '@visactor/vrender';\nimport type {\n CellType,\n FullExtendStyle,\n ICustomLayout,\n ICustomRender,\n MappingRule,\n TextColumnDefine\n} from '../../ts-types';\nimport { Group } from '../graphic/group';\nimport { getProp, getRawProp } from '../utils/get-prop';\nimport type { MergeMap } from '../scenegraph';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { createCell } from './cell-helper';\nimport type { BaseTableAPI, PivotTableProtected } from '../../ts-types/base-table';\nimport { getStyleTheme } from '../../core/tableHelper';\nimport { isPromise } from '../../tools/helper';\nimport { dealPromiseData } from '../utils/deal-promise-data';\n/**\n * 创建复合列 同一列支持创建不同类型单元格\n * @param columnGroup 列Group\n * @param col\n * @param colWidth 配置列宽\n * @param rowStart\n * @param rowEnd\n * @param mergeMap merge单元格信息\n * @param defaultRowHeight\n * @param table\n * @param cellType\n * @param rowLimit\n * @param customRender\n * @param customLayout\n * @returns\n */\nexport function createComplexColumn(\n columnGroup: Group,\n col: number,\n colWidth: number,\n rowStart: number,\n rowEnd: number,\n mergeMap: MergeMap,\n defaultRowHeight: number | number[],\n table: BaseTableAPI,\n cellType: CellType,\n rowLimit?: number\n) {\n let maxWidth = 0;\n let padding;\n let textAlign;\n let textBaseline;\n /** useColumnTheme 判断是否可以使用columnTheme */\n // insert cell into column group top\n let y = 0;\n if (columnGroup.colHeight) {\n // insert cell into column group bottom\n y = columnGroup.colHeight;\n }\n\n for (let j = rowStart; j <= rowEnd; j++) {\n const row = j;\n const define = cellType !== 'body' ? table.getHeaderDefine(col, row) : table.getBodyColumnDefine(col, row);\n const mayHaveIcon = cellType !== 'body' ? true : !!define?.icon || !!define?.tree;\n const headerStyle = table._getCellStyle(col, row);\n const cellTheme = getStyleTheme(headerStyle, table, col, row, getProp).theme;\n cellTheme.group.width = colWidth;\n cellTheme.group.height = Array.isArray(defaultRowHeight) ? defaultRowHeight[row] : defaultRowHeight;\n if (cellTheme._vtable.padding) {\n padding = cellTheme._vtable.padding;\n }\n if (cellTheme.text.textAlign) {\n textAlign = cellTheme.text.textAlign;\n }\n if (cellTheme.text.textBaseline) {\n textBaseline = cellTheme.text.textBaseline;\n }\n\n // enable clip body\n if (cellType !== 'body' && !cellTheme.group.fill) {\n cellTheme.group.fill = '#fff';\n }\n // margin = getProp('margin', headerStyle, col, 0, table)\n\n let cellWidth = colWidth;\n // let cellHeight = table.internalProps.autoRowHeight ? 0 : table.getRowHeight(row);\n let cellHeight = table.getRowHeight(row);\n const type =\n (table.isHeader(col, row) ? table._getHeaderLayoutMap(col, row).headerType : table.getBodyColumnType(col, row)) ||\n 'text';\n // 处理单元格合并\n let mergeResult;\n let range;\n let isMerge;\n if (cellType !== 'body' || (define as TextColumnDefine)?.mergeCell) {\n // 只有表头或者column配置合并单元格后再进行信息获取\n range = table.getCellRange(col, row);\n isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;\n // 所有Merge单元格,只保留左上角一个真实的单元格,其他使用空Group占位\n if (isMerge) {\n cellWidth = 0;\n cellHeight = 0;\n mergeResult = mergeMap.get(`${range.start.col},${range.start.row};${range.end.col},${range.end.row}`);\n if (!mergeResult) {\n for (let col = range.start.col; col <= range.end.col; col++) {\n cellWidth += table.getColWidth(col);\n }\n\n // let cellHeight = 0;\n for (let i = range.start.row; i <= range.end.row; i++) {\n cellHeight += table.getRowHeight(i);\n }\n\n mergeMap.set(`${range.start.col},${range.start.row};${range.end.col},${range.end.row}`, {\n x: 0,\n y,\n cellWidth,\n cellHeight\n });\n }\n }\n }\n\n // let cellWidth = 0;\n // let cellHeight = 0;\n if (mergeResult) {\n const height = mergeResult.cellHeight / (range.end.row - range.start.row + 1);\n // 已有Merge单元格,使用空Group占位\n const cellGroup = new Group({\n x: 0,\n y,\n width: 0,\n height,\n visible: false,\n pickable: false\n });\n cellGroup.role = 'shadow-cell';\n cellGroup.col = col;\n cellGroup.row = row;\n cellGroup.mergeCol = range.start.col;\n cellGroup.mergeRow = range.start.row;\n columnGroup?.addChild(cellGroup);\n columnGroup.updateColumnRowNumber(row);\n columnGroup.updateColumnHeight(height);\n range = table.getCellRange(col, row);\n y += height;\n maxWidth = Math.max(maxWidth, mergeResult.cellWidth);\n } else {\n // deal with promise data\n const value = table.getCellValue(col, row);\n if (isPromise(value)) {\n dealPromiseData(\n value,\n table,\n createCell.bind(\n null,\n type,\n define,\n table,\n col,\n row,\n colWidth,\n cellWidth,\n cellHeight,\n columnGroup,\n y,\n padding,\n textAlign,\n textBaseline,\n mayHaveIcon,\n isMerge,\n range,\n cellTheme\n )\n );\n columnGroup.updateColumnRowNumber(row);\n // const height = table.getRowHeight(row);\n const height = isMerge\n ? table.getRowHeight(row) / (range.end.row - range.start.row + 1)\n : table.getRowHeight(row);\n columnGroup.updateColumnHeight(height);\n y += height;\n } else {\n const cellGroup = createCell(\n type,\n define,\n table,\n col,\n row,\n colWidth,\n cellWidth,\n cellHeight,\n columnGroup,\n y,\n padding,\n textAlign,\n textBaseline,\n mayHaveIcon,\n isMerge,\n range,\n cellTheme\n );\n columnGroup.updateColumnRowNumber(row);\n // const height = cellGroup.attribute.height;\n const height = isMerge\n ? cellGroup.attribute.height / (range.end.row - range.start.row + 1)\n : cellGroup.attribute.height;\n columnGroup.updateColumnHeight(height);\n y += height;\n }\n }\n if (rowLimit && row > rowLimit) {\n break;\n }\n }\n\n columnGroup.setAttribute('width', colWidth);\n return {\n width: colWidth,\n height: y\n };\n}\n\n/**\n * 获取列分组主题\n * @param col 列索引\n * @param colWidth 列宽\n * @param table 表格实例\n * @returns 列分组主题\n */\nexport function getColumnGroupTheme(\n col: number,\n colWidth: number,\n table: BaseTableAPI\n): { theme: IThemeSpec & { _vtable: any }; hasFunctionPros: boolean } {\n const style = table._getCellStyle(col, table.columnHeaderLevelCount); // to be fixed\n const { theme: columnTheme, hasFunctionPros } = getStyleTheme(\n style,\n table,\n col,\n table.columnHeaderLevelCount,\n getRawProp\n );\n\n // get column header style\n columnTheme.group.width = colWidth;\n columnTheme.group.height = 0;\n return { theme: columnTheme, hasFunctionPros };\n}\n"]}
1
+ {"version":3,"sources":["scenegraph/group-creater/column-helper.ts"],"names":[],"mappings":"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","file":"column-helper.js","sourcesContent":["/* eslint-disable no-undef */\nimport type { IThemeSpec } from '@visactor/vrender';\nimport type {\n CellLocation,\n FullExtendStyle,\n ICustomLayout,\n ICustomRender,\n MappingRule,\n TextColumnDefine\n} from '../../ts-types';\nimport { Group } from '../graphic/group';\nimport { getProp, getRawProp } from '../utils/get-prop';\nimport type { MergeMap } from '../scenegraph';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { createCell } from './cell-helper';\nimport type { BaseTableAPI, PivotTableProtected } from '../../ts-types/base-table';\nimport { getStyleTheme } from '../../core/tableHelper';\nimport { isPromise } from '../../tools/helper';\nimport { dealPromiseData } from '../utils/deal-promise-data';\n/**\n * 创建复合列 同一列支持创建不同类型单元格\n * @param columnGroup 列Group\n * @param col\n * @param colWidth 配置列宽\n * @param rowStart\n * @param rowEnd\n * @param mergeMap merge单元格信息\n * @param defaultRowHeight\n * @param table\n * @param cellLocation\n * @param rowLimit\n * @param customRender\n * @param customLayout\n * @returns\n */\nexport function createComplexColumn(\n columnGroup: Group,\n col: number,\n colWidth: number,\n rowStart: number,\n rowEnd: number,\n mergeMap: MergeMap,\n defaultRowHeight: number | number[],\n table: BaseTableAPI,\n cellLocation: CellLocation,\n rowLimit?: number\n) {\n let maxWidth = 0;\n let padding;\n let textAlign;\n let textBaseline;\n /** useColumnTheme 判断是否可以使用columnTheme */\n // insert cell into column group top\n let y = 0;\n if (columnGroup.colHeight) {\n // insert cell into column group bottom\n y = columnGroup.colHeight;\n }\n\n for (let j = rowStart; j <= rowEnd; j++) {\n const row = j;\n const define = cellLocation !== 'body' ? table.getHeaderDefine(col, row) : table.getBodyColumnDefine(col, row);\n const mayHaveIcon = cellLocation !== 'body' ? true : !!define?.icon || !!define?.tree;\n const headerStyle = table._getCellStyle(col, row);\n const cellTheme = getStyleTheme(headerStyle, table, col, row, getProp).theme;\n cellTheme.group.width = colWidth;\n cellTheme.group.height = Array.isArray(defaultRowHeight) ? defaultRowHeight[row] : defaultRowHeight;\n if (cellTheme._vtable.padding) {\n padding = cellTheme._vtable.padding;\n }\n if (cellTheme.text.textAlign) {\n textAlign = cellTheme.text.textAlign;\n }\n if (cellTheme.text.textBaseline) {\n textBaseline = cellTheme.text.textBaseline;\n }\n\n // enable clip body\n if (cellLocation !== 'body' && !cellTheme.group.fill) {\n cellTheme.group.fill = '#fff';\n }\n // margin = getProp('margin', headerStyle, col, 0, table)\n\n let cellWidth = colWidth;\n // let cellHeight = table.internalProps.autoRowHeight ? 0 : table.getRowHeight(row);\n let cellHeight = table.getRowHeight(row);\n const type =\n (table.isHeader(col, row) ? table._getHeaderLayoutMap(col, row).headerType : table.getBodyColumnType(col, row)) ||\n 'text';\n // 处理单元格合并\n let mergeResult;\n let range;\n let isMerge;\n if (cellLocation !== 'body' || (define as TextColumnDefine)?.mergeCell) {\n // 只有表头或者column配置合并单元格后再进行信息获取\n range = table.getCellRange(col, row);\n isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;\n // 所有Merge单元格,只保留左上角一个真实的单元格,其他使用空Group占位\n if (isMerge) {\n cellWidth = 0;\n cellHeight = 0;\n mergeResult = mergeMap.get(`${range.start.col},${range.start.row};${range.end.col},${range.end.row}`);\n if (!mergeResult) {\n for (let col = range.start.col; col <= range.end.col; col++) {\n cellWidth += table.getColWidth(col);\n }\n\n // let cellHeight = 0;\n for (let i = range.start.row; i <= range.end.row; i++) {\n cellHeight += table.getRowHeight(i);\n }\n\n mergeMap.set(`${range.start.col},${range.start.row};${range.end.col},${range.end.row}`, {\n x: 0,\n y,\n cellWidth,\n cellHeight\n });\n }\n }\n }\n\n // let cellWidth = 0;\n // let cellHeight = 0;\n if (mergeResult) {\n const height = mergeResult.cellHeight / (range.end.row - range.start.row + 1);\n // 已有Merge单元格,使用空Group占位\n const cellGroup = new Group({\n x: 0,\n y,\n width: 0,\n height,\n visible: false,\n pickable: false\n });\n cellGroup.role = 'shadow-cell';\n cellGroup.col = col;\n cellGroup.row = row;\n cellGroup.mergeCol = range.start.col;\n cellGroup.mergeRow = range.start.row;\n columnGroup?.addChild(cellGroup);\n columnGroup.updateColumnRowNumber(row);\n columnGroup.updateColumnHeight(height);\n range = table.getCellRange(col, row);\n y += height;\n maxWidth = Math.max(maxWidth, mergeResult.cellWidth);\n } else {\n // deal with promise data\n const value = table.getCellValue(col, row);\n if (isPromise(value)) {\n dealPromiseData(\n value,\n table,\n createCell.bind(\n null,\n type,\n define,\n table,\n col,\n row,\n colWidth,\n cellWidth,\n cellHeight,\n columnGroup,\n y,\n padding,\n textAlign,\n textBaseline,\n mayHaveIcon,\n isMerge,\n range,\n cellTheme\n )\n );\n columnGroup.updateColumnRowNumber(row);\n // const height = table.getRowHeight(row);\n const height = isMerge\n ? table.getRowHeight(row) / (range.end.row - range.start.row + 1)\n : table.getRowHeight(row);\n columnGroup.updateColumnHeight(height);\n y += height;\n } else {\n const cellGroup = createCell(\n type,\n define,\n table,\n col,\n row,\n colWidth,\n cellWidth,\n cellHeight,\n columnGroup,\n y,\n padding,\n textAlign,\n textBaseline,\n mayHaveIcon,\n isMerge,\n range,\n cellTheme\n );\n columnGroup.updateColumnRowNumber(row);\n // const height = cellGroup.attribute.height;\n const height = isMerge\n ? cellGroup.attribute.height / (range.end.row - range.start.row + 1)\n : cellGroup.attribute.height;\n columnGroup.updateColumnHeight(height);\n y += height;\n }\n }\n if (rowLimit && row > rowLimit) {\n break;\n }\n }\n\n columnGroup.setAttribute('width', colWidth);\n return {\n width: colWidth,\n height: y\n };\n}\n\n/**\n * 获取列分组主题\n * @param col 列索引\n * @param colWidth 列宽\n * @param table 表格实例\n * @returns 列分组主题\n */\nexport function getColumnGroupTheme(\n col: number,\n colWidth: number,\n table: BaseTableAPI\n): { theme: IThemeSpec & { _vtable: any }; hasFunctionPros: boolean } {\n const style = table._getCellStyle(col, table.columnHeaderLevelCount); // to be fixed\n const { theme: columnTheme, hasFunctionPros } = getStyleTheme(\n style,\n table,\n col,\n table.columnHeaderLevelCount,\n getRawProp\n );\n\n // get column header style\n columnTheme.group.width = colWidth;\n columnTheme.group.height = 0;\n return { theme: columnTheme, hasFunctionPros };\n}\n"]}
@@ -1,8 +1,8 @@
1
- import type { CellType } from '../../ts-types';
1
+ import type { CellLocation } from '../../ts-types';
2
2
  import type { BaseTableAPI } from '../../ts-types/base-table';
3
3
  import { Group } from '../graphic/group';
4
4
  export declare function createCornerHeaderColGroup(cornerHeaderGroup: Group, xOrigin: number, yOrigin: number, table: BaseTableAPI): void;
5
5
  export declare function createColHeaderColGroup(colHeaderGroup: Group, xOrigin: number, yOrigin: number, table: BaseTableAPI): void;
6
6
  export declare function createRowHeaderColGroup(rowHeaderGroup: Group, xOrigin: number, yOrigin: number, table: BaseTableAPI): void;
7
7
  export declare function createBodyColGroup(bodyGroup: Group, xOrigin: number, yOrigin: number, table: BaseTableAPI): void;
8
- export declare function createColGroup(containerGroup: Group, xOrigin: number, yOrigin: number, colStart: number, colEnd: number, rowStart: number, rowEnd: number, cellType: CellType, table: BaseTableAPI, rowLimit?: number): void;
8
+ export declare function createColGroup(containerGroup: Group, xOrigin: number, yOrigin: number, colStart: number, colEnd: number, rowStart: number, rowEnd: number, cellLocation: CellLocation, table: BaseTableAPI, rowLimit?: number): void;
@@ -18,7 +18,7 @@ export function createBodyColGroup(bodyGroup, xOrigin, yOrigin, table) {
18
18
  createColGroup(bodyGroup, xOrigin, yOrigin, table.rowHeaderLevelCount, table.colCount - 1, table.columnHeaderLevelCount, table.rowCount - 1, "body", table);
19
19
  }
20
20
 
21
- export function createColGroup(containerGroup, xOrigin, yOrigin, colStart, colEnd, rowStart, rowEnd, cellType, table, rowLimit) {
21
+ export function createColGroup(containerGroup, xOrigin, yOrigin, colStart, colEnd, rowStart, rowEnd, cellLocation, table, rowLimit) {
22
22
  if (colStart > colEnd || rowStart > rowEnd) return;
23
23
  const {layoutMap: layoutMap, defaultRowHeight: defaultRowHeight, defaultHeaderRowHeight: defaultHeaderRowHeight, defaultColWidth: defaultColWidth} = table.internalProps;
24
24
  let x = 0, heightMax = 0;
@@ -32,7 +32,7 @@ export function createColGroup(containerGroup, xOrigin, yOrigin, colStart, colEn
32
32
  pickable: !1
33
33
  });
34
34
  columnGroup.role = "column", columnGroup.col = i, containerGroup.addChild(columnGroup);
35
- const {width: default2Width, height: default2Height} = createComplexColumn(columnGroup, col, colWidth, rowStart, rowEnd, table.scenegraph.mergeMap, "columnHeader" === cellType && null != defaultHeaderRowHeight ? defaultHeaderRowHeight : defaultRowHeight, table, cellType, rowLimit);
35
+ const {width: default2Width, height: default2Height} = createComplexColumn(columnGroup, col, colWidth, rowStart, rowEnd, table.scenegraph.mergeMap, "columnHeader" === cellLocation && null != defaultHeaderRowHeight ? defaultHeaderRowHeight : defaultRowHeight, table, cellLocation, rowLimit);
36
36
  x += default2Width, heightMax = Math.max(heightMax, default2Height);
37
37
  }
38
38
  containerGroup.setAttribute("width", x), containerGroup.setAttribute("height", heightMax);
@@ -1 +1 @@
1
- {"version":3,"sources":["scenegraph/group-creater/column.ts"],"names":[],"mappings":"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","file":"column.js","sourcesContent":["import type { CellType } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { Group } from '../graphic/group';\nimport { createComplexColumn } from './column-helper';\n\n/**\n * @description: 处理全部角表头\n * @param {Group} colHeaderGroup 列表头容器Group\n * @param {number} xOrigin x起始坐标\n * @param {number} yOrigin y起始坐标\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function createCornerHeaderColGroup(\n cornerHeaderGroup: Group,\n xOrigin: number,\n yOrigin: number,\n table: BaseTableAPI\n) {\n createColGroup(\n cornerHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.rowHeaderLevelCount - 1, // colEnd\n 0, // rowStart\n table.columnHeaderLevelCount - 1, // rowEnd\n 'cornerHeader', // CellType\n table\n );\n}\n\n/**\n * @description: 处理全部列表头\n * @param {Group} colHeaderGroup 列表头容器Group\n * @param {number} xOrigin x起始坐标\n * @param {number} yOrigin y起始坐标\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function createColHeaderColGroup(colHeaderGroup: Group, xOrigin: number, yOrigin: number, table: BaseTableAPI) {\n createColGroup(\n colHeaderGroup,\n xOrigin,\n yOrigin,\n table.rowHeaderLevelCount, // colStart\n table.colCount - 1, // colEnd\n 0, // rowStart\n table.columnHeaderLevelCount - 1, // rowEnd\n 'columnHeader', // isHeader\n table\n );\n}\n\n/**\n * @description: 处理全部行表头\n * @param {Group} rowHeaderGroup 行表头容器Group\n * @param {number} xOrigin x起始坐标\n * @param {number} yOrigin y起始坐标\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function createRowHeaderColGroup(rowHeaderGroup: Group, xOrigin: number, yOrigin: number, table: BaseTableAPI) {\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.rowHeaderLevelCount - 1, // colEnd\n table.columnHeaderLevelCount, // rowStart\n table.rowCount - 1, // rowEnd\n 'rowHeader', // isHeader\n table\n );\n}\n\n/**\n * @description: 处理内容单元格\n * @param {Group} bodyGroup 内容容器Group\n * @param {number} xOrigin x起始坐标\n * @param {number} yOrigin y起始坐标\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function createBodyColGroup(bodyGroup: Group, xOrigin: number, yOrigin: number, table: BaseTableAPI) {\n createColGroup(\n bodyGroup,\n xOrigin,\n yOrigin,\n table.rowHeaderLevelCount, // colStart\n table.colCount - 1, // colEnd\n table.columnHeaderLevelCount, // rowStart\n table.rowCount - 1, // rowEnd\n 'body', // isHeader\n table\n );\n}\n\n/**\n * @description: 生成一个列的场景节点\n * @param {Group} containerGroup 列容器Group\n * @param {number} xOrigin x起始坐标\n * @param {number} yOrigin y起始坐标\n * @param {number} colStart 起始col\n * @param {number} colEnd 结束col\n * @param {number} rowStart 起始row\n * @param {number} rowEnd 结束row\n * @param {boolean} isHeader 是否是表头\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function createColGroup(\n containerGroup: Group,\n xOrigin: number,\n yOrigin: number,\n colStart: number,\n colEnd: number,\n rowStart: number,\n rowEnd: number,\n cellType: CellType,\n table: BaseTableAPI,\n rowLimit?: number\n) {\n if (colStart > colEnd || rowStart > rowEnd) {\n return;\n }\n const { layoutMap, defaultRowHeight, defaultHeaderRowHeight, defaultColWidth } = table.internalProps;\n let x = 0;\n let heightMax = 0;\n for (let i = colStart; i <= colEnd; i++) {\n const col = i;\n const colWidth = table.getColWidth(col);\n\n const columnGroup = new Group({\n x: xOrigin + x,\n y: yOrigin,\n width: colWidth,\n height: 0,\n clip: false,\n pickable: false\n });\n columnGroup.role = 'column';\n columnGroup.col = i;\n containerGroup.addChild(columnGroup);\n const { width: default2Width, height: default2Height } = createComplexColumn(\n columnGroup,\n col,\n colWidth,\n rowStart,\n rowEnd,\n table.scenegraph.mergeMap,\n cellType === 'columnHeader' ? defaultHeaderRowHeight ?? defaultRowHeight : defaultRowHeight,\n table,\n cellType,\n rowLimit\n );\n x += default2Width;\n heightMax = Math.max(heightMax, default2Height);\n }\n // 更新containerGroup尺寸\n containerGroup.setAttribute('width', x);\n containerGroup.setAttribute('height', heightMax);\n}\n"]}
1
+ {"version":3,"sources":["scenegraph/group-creater/column.ts"],"names":[],"mappings":"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","file":"column.js","sourcesContent":["import type { CellLocation } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { Group } from '../graphic/group';\nimport { createComplexColumn } from './column-helper';\n\n/**\n * @description: 处理全部角表头\n * @param {Group} colHeaderGroup 列表头容器Group\n * @param {number} xOrigin x起始坐标\n * @param {number} yOrigin y起始坐标\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function createCornerHeaderColGroup(\n cornerHeaderGroup: Group,\n xOrigin: number,\n yOrigin: number,\n table: BaseTableAPI\n) {\n createColGroup(\n cornerHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.rowHeaderLevelCount - 1, // colEnd\n 0, // rowStart\n table.columnHeaderLevelCount - 1, // rowEnd\n 'cornerHeader', // CellType\n table\n );\n}\n\n/**\n * @description: 处理全部列表头\n * @param {Group} colHeaderGroup 列表头容器Group\n * @param {number} xOrigin x起始坐标\n * @param {number} yOrigin y起始坐标\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function createColHeaderColGroup(colHeaderGroup: Group, xOrigin: number, yOrigin: number, table: BaseTableAPI) {\n createColGroup(\n colHeaderGroup,\n xOrigin,\n yOrigin,\n table.rowHeaderLevelCount, // colStart\n table.colCount - 1, // colEnd\n 0, // rowStart\n table.columnHeaderLevelCount - 1, // rowEnd\n 'columnHeader', // isHeader\n table\n );\n}\n\n/**\n * @description: 处理全部行表头\n * @param {Group} rowHeaderGroup 行表头容器Group\n * @param {number} xOrigin x起始坐标\n * @param {number} yOrigin y起始坐标\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function createRowHeaderColGroup(rowHeaderGroup: Group, xOrigin: number, yOrigin: number, table: BaseTableAPI) {\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.rowHeaderLevelCount - 1, // colEnd\n table.columnHeaderLevelCount, // rowStart\n table.rowCount - 1, // rowEnd\n 'rowHeader', // isHeader\n table\n );\n}\n\n/**\n * @description: 处理内容单元格\n * @param {Group} bodyGroup 内容容器Group\n * @param {number} xOrigin x起始坐标\n * @param {number} yOrigin y起始坐标\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function createBodyColGroup(bodyGroup: Group, xOrigin: number, yOrigin: number, table: BaseTableAPI) {\n createColGroup(\n bodyGroup,\n xOrigin,\n yOrigin,\n table.rowHeaderLevelCount, // colStart\n table.colCount - 1, // colEnd\n table.columnHeaderLevelCount, // rowStart\n table.rowCount - 1, // rowEnd\n 'body', // isHeader\n table\n );\n}\n\n/**\n * @description: 生成一个列的场景节点\n * @param {Group} containerGroup 列容器Group\n * @param {number} xOrigin x起始坐标\n * @param {number} yOrigin y起始坐标\n * @param {number} colStart 起始col\n * @param {number} colEnd 结束col\n * @param {number} rowStart 起始row\n * @param {number} rowEnd 结束row\n * @param {boolean} isHeader 是否是表头\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function createColGroup(\n containerGroup: Group,\n xOrigin: number,\n yOrigin: number,\n colStart: number,\n colEnd: number,\n rowStart: number,\n rowEnd: number,\n cellLocation: CellLocation,\n table: BaseTableAPI,\n rowLimit?: number\n) {\n if (colStart > colEnd || rowStart > rowEnd) {\n return;\n }\n const { layoutMap, defaultRowHeight, defaultHeaderRowHeight, defaultColWidth } = table.internalProps;\n let x = 0;\n let heightMax = 0;\n for (let i = colStart; i <= colEnd; i++) {\n const col = i;\n const colWidth = table.getColWidth(col);\n\n const columnGroup = new Group({\n x: xOrigin + x,\n y: yOrigin,\n width: colWidth,\n height: 0,\n clip: false,\n pickable: false\n });\n columnGroup.role = 'column';\n columnGroup.col = i;\n containerGroup.addChild(columnGroup);\n const { width: default2Width, height: default2Height } = createComplexColumn(\n columnGroup,\n col,\n colWidth,\n rowStart,\n rowEnd,\n table.scenegraph.mergeMap,\n cellLocation === 'columnHeader' ? defaultHeaderRowHeight ?? defaultRowHeight : defaultRowHeight,\n table,\n cellLocation,\n rowLimit\n );\n x += default2Width;\n heightMax = Math.max(heightMax, default2Height);\n }\n // 更新containerGroup尺寸\n containerGroup.setAttribute('width', x);\n containerGroup.setAttribute('height', heightMax);\n}\n"]}
@@ -58,6 +58,7 @@ export declare class SceneProxy {
58
58
  updateColGroups(count: number): void;
59
59
  updateCellGroupPosition(cellGroup: Group, newRow: number, y: number): void;
60
60
  updateCellGroupContent(cellGroup: Group): Group;
61
- sortCell(): Promise<void>;
61
+ sortCellVertical(): Promise<void>;
62
+ sortCellHorizontal(): Promise<void>;
62
63
  highPerformanceGetCell(col: number, row: number, getShadow?: boolean): Group;
63
64
  }
@@ -46,6 +46,10 @@ import { dynamicSetY, updateRowContent } from "./update-position/dynamic-set-y";
46
46
 
47
47
  import { updateAutoRow } from "./update-position/update-auto-row";
48
48
 
49
+ import { sortVertical } from "./update-position/sort-vertical";
50
+
51
+ import { sortHorizontal } from "./update-position/sort-horizontal";
52
+
49
53
  export class SceneProxy {
50
54
  constructor(table) {
51
55
  this.mode = "column", this.rowLimit = 1e3, this.currentRow = 0, this.rowStart = 0,
@@ -209,27 +213,14 @@ export class SceneProxy {
209
213
  const newCellGroup = this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);
210
214
  return cellGroup.needUpdate = !1, newCellGroup || cellGroup;
211
215
  }
212
- sortCell() {
216
+ sortCellVertical() {
213
217
  return __awaiter(this, void 0, void 0, (function*() {
214
- for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) for (let row = this.rowStart; row <= this.rowEnd; row++) {
215
- this.highPerformanceGetCell(col, row).needUpdate = !0;
216
- }
217
- let syncTopRow, syncBottomRow;
218
- "autoHeight" === this.table.heightMode ? (syncTopRow = this.rowStart, syncBottomRow = this.rowEnd) : (syncTopRow = Math.max(this.bodyTopRow, this.screenTopRow - 2 * this.screenRowCount),
219
- syncBottomRow = Math.min(this.bodyBottomRow, this.screenTopRow + 3 * this.screenRowCount)),
220
- console.log("sort更新同步范围", syncTopRow, syncBottomRow), computeRowsHeight(this.table, syncTopRow, syncBottomRow);
221
- for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) for (let row = syncTopRow; row <= syncBottomRow; row++) {
222
- const cellGroup = this.highPerformanceGetCell(col, row);
223
- this.updateCellGroupContent(cellGroup);
224
- }
225
- if (console.log("updateAutoRow", this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? "down" : "up"),
226
- "autoHeight" === this.table.heightMode && updateAutoRow(this.bodyLeftCol, this.bodyRightCol, syncTopRow, syncBottomRow, this.table, this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? "down" : "up"),
227
- this.rowUpdatePos = this.rowStart, this.rowUpdateDirection = this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? "down" : "up",
228
- this.rowEnd === this.table.scenegraph.proxy.bodyBottomRow && this.rowStart === this.table.scenegraph.proxy.bodyTopRow) ; else if (this.rowEnd === this.table.scenegraph.proxy.bodyBottomRow) {
229
- const top = this.table.getAllRowsHeight() - this.table.scenegraph.height;
230
- this.updateBody(top);
231
- } else this.rowStart === this.table.scenegraph.proxy.bodyTopRow && this.updateBody(0);
232
- "autoHeight" !== this.table.heightMode && (yield this.progress());
218
+ yield sortVertical(this);
219
+ }));
220
+ }
221
+ sortCellHorizontal() {
222
+ return __awaiter(this, void 0, void 0, (function*() {
223
+ yield sortHorizontal(this);
233
224
  }));
234
225
  }
235
226
  highPerformanceGetCell(col, row, getShadow) {
@@ -1 +1 @@
1
- {"version":3,"sources":["scenegraph/group-creater/progress/proxy.ts"],"names":[],"mappings":"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","file":"proxy.js","sourcesContent":["import { isNumber } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\nimport { Group } from '../../graphic/group';\nimport { computeColsWidth } from '../../layout/compute-col-width';\nimport { computeRowsHeight } from '../../layout/compute-row-height';\nimport { emptyGroup } from '../../utils/empty-group';\nimport { createColGroup } from '../column';\nimport { createComplexColumn } from '../column-helper';\nimport { createGroupForFirstScreen } from './create-group-for-first-screen';\nimport { dynamicSetX, updateColContent } from './update-position/dynamic-set-x';\nimport { dynamicSetY, updateRowContent } from './update-position/dynamic-set-y';\nimport { updateAutoRow } from './update-position/update-auto-row';\n\nexport class SceneProxy {\n table: BaseTableAPI;\n mode: 'column' | 'row' | 'pivot' = 'column';\n\n rowLimit = 1000;\n currentRow = 0; // 目前渐进生成的row number\n totalRow: number; // 渐进完成最后一行的row number\n yLimitTop: number; // y > yLimitTop动态更新,否则直接修改xy\n yLimitBottom: number; // y < yLimitBottom动态更新,否则直接修改xy\n rowStart = 0; // 当前维护的部分第一行的row number\n rowEnd = 0; // 当前维护的部分最后一行的row number\n referenceRow = 0; // 当前维护的部分中间一行的row number,认为referenceRow对应当前屏幕显示范围的第一行\n bodyTopRow: number; // table body部分的第一行row number\n bodyBottomRow: number; // table body部分的最后一行row number\n screenRowCount: number; // 预计屏幕范围内显示的row count\n firstScreenRowLimit: number; // 首屏同步加载部分最后一行的row number\n taskRowCount: number; // 一次任务生成/更新的row count\n rowUpdatePos: number; // 异步任务目前更新到的行的row number\n rowUpdateDirection: 'up' | 'down'; // 当前行更新的方向\n screenTopRow: number = 0; // 当前屏幕范围内显示的第一行的row number\n deltaY: number = 0;\n\n colLimit = 100;\n bodyLeftCol: number; // table body部分的第一列col number\n bodyRightCol: number; // table body部分的最后一列col number\n totalCol: number; // 渐进完成最后一列的col number\n colStart: number; // 当前维护的部分第一列的col number\n colEnd: number; // 当前维护的部分最后一列的col number\n taskColCount: number; // 一次任务生成/更新的col count\n xLimitLeft: number; // x > xLimitLeft动态更新,否则直接修改xy\n xLimitRight: number; // x < xLimitRight动态更新,否则直接修改xy\n screenColCount: number; // 预计屏幕范围内显示的col count\n firstScreenColLimit: number; // 首屏同步加载部分最后一列的col number\n colUpdatePos: number; // 异步任务目前更新到的列的col number\n currentCol: number; // 目前渐进生成的col number\n referenceCol: number; // 当前维护的部分中间一列的col number,认为referenceCol对应当前屏幕显示范围的第一列\n screenLeftCol: number = 0; // 当前屏幕范围内显示的第一列的col number\n colUpdateDirection: 'left' | 'right'; // 当前列更新方向\n deltaX: number = 0;\n\n cellCache: Map<number, Group> = new Map(); // 单元格位置快速查找缓存\n\n constructor(table: BaseTableAPI) {\n this.table = table;\n\n if (this.table.isPivotChart()) {\n this.rowLimit = 100;\n this.colLimit = 100;\n } else if (this.table.heightMode === 'autoHeight') {\n this.rowLimit = 100;\n } else if (this.table.widthMode === 'autoWidth') {\n this.colLimit = 100;\n }\n\n if (this.table.internalProps.transpose) {\n this.mode = 'row';\n } else if (this.table.isPivotTable()) {\n this.mode = 'pivot';\n }\n if (this.table.options.maintainedDataCount) {\n this.rowLimit = this.table.options.maintainedDataCount;\n }\n }\n\n setParamsForColumn() {\n this.bodyLeftCol = this.table.rowHeaderLevelCount;\n // this.bodyRightCol = this.table.colCount - 1;\n this.bodyRightCol = this.table.colCount - 1 - this.table.rightFrozenColCount;\n\n // compute the column info about progress creation\n const totalActualBodyColCount = Math.min(this.colLimit, this.bodyRightCol - this.bodyLeftCol + 1);\n this.totalCol = this.bodyLeftCol + totalActualBodyColCount - 1; // 目标渐进完成的col\n this.colStart = this.bodyLeftCol;\n const defaultColWidth = this.table.defaultColWidth;\n this.taskColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth) * 1;\n\n // 确定动态更新限制\n const totalBodyWidth = defaultColWidth * totalActualBodyColCount;\n const totalWidth = defaultColWidth * (this.bodyRightCol - this.bodyLeftCol + 1);\n this.xLimitLeft = totalBodyWidth / 2;\n this.xLimitRight = totalWidth - totalBodyWidth / 2;\n\n // 确定首屏高度范围\n const widthLimit = this.table.tableNoFrameWidth * 5;\n this.screenColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth);\n this.firstScreenColLimit = this.bodyLeftCol + Math.ceil(widthLimit / defaultColWidth);\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.colUpdatePos = this.bodyRightCol;\n }\n\n setParamsForRow() {\n this.bodyTopRow = this.table.columnHeaderLevelCount;\n this.bodyBottomRow = this.table.rowCount - 1 - this.table.bottomFrozenRowCount;\n // this.bodyLeftCol = 0;\n // this.bodyRightCol = this.table.colCount - 1 - this.table.rightFrozenColCount;\n\n // 计算渐进加载数量\n const totalActualBodyRowCount = Math.min(this.rowLimit, this.bodyBottomRow - this.bodyTopRow + 1); // 渐进加载总row数量\n this.totalRow = this.bodyTopRow + totalActualBodyRowCount - 1; // 目标渐进完成的row\n this.rowStart = this.bodyTopRow;\n const defaultRowHeight = this.table.defaultRowHeight;\n this.taskRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight) * 1;\n\n // 确定动态更新限制\n const totalBodyHeight = defaultRowHeight * totalActualBodyRowCount;\n const totalHeight = defaultRowHeight * (this.bodyBottomRow - this.bodyTopRow + 1);\n this.yLimitTop = totalBodyHeight / 2;\n this.yLimitBottom = totalHeight - totalBodyHeight / 2;\n // this.bottomOffset = totalHeight - totalBodyHeight / 2;\n\n // 确定首屏高度范围\n const heightLimit = this.table.tableNoFrameHeight * 5;\n this.screenRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight);\n this.firstScreenRowLimit = this.bodyTopRow + Math.ceil(heightLimit / defaultRowHeight);\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.rowUpdatePos = this.bodyBottomRow;\n }\n\n async createGroupForFirstScreen(\n cornerHeaderGroup: Group,\n colHeaderGroup: Group,\n rowHeaderGroup: Group,\n rightFrozenGroup: Group,\n bottomFrozenGroup: Group,\n bodyGroup: Group,\n xOrigin: number,\n yOrigin: number\n ) {\n await createGroupForFirstScreen(\n cornerHeaderGroup,\n colHeaderGroup,\n rowHeaderGroup,\n rightFrozenGroup,\n bottomFrozenGroup,\n bodyGroup,\n xOrigin,\n yOrigin,\n this\n );\n }\n // async progress() {\n // if (this.rowUpdatePos < this.rowEnd) {\n // console.log('progress rowUpdatePos', this.rowUpdatePos);\n // // 先更新\n // await this.updateCellGroupsAsync();\n // await this.progress();\n // } else if (this.currentRow < this.totalRow) {\n // console.log('progress currentRow', this.currentRow);\n // // 先更新没有需要更新的节点,在生成新节点\n // await this.createRow();\n // await this.progress();\n // }\n // }\n async progress() {\n return new Promise<void>((resolve, reject) => {\n setTimeout(async () => {\n if (this.colUpdatePos < this.colEnd) {\n await this.updateColCellGroupsAsync();\n await this.progress();\n } else if (this.rowUpdatePos < this.rowEnd) {\n // console.log('progress rowUpdatePos', this.rowUpdatePos);\n // 先更新\n await this.updateRowCellGroupsAsync();\n await this.progress();\n } else if (this.currentCol < this.totalCol) {\n await this.createCol();\n await this.progress();\n } else if (this.currentRow < this.totalRow) {\n // console.log('progress currentRow', this.currentRow);\n // 先更新没有需要更新的节点,在生成新节点\n await this.createRow();\n await this.progress();\n }\n resolve();\n }, 0);\n });\n }\n\n async createRow() {\n if (!this.taskRowCount) {\n return;\n }\n console.log('createRow', this.currentRow, this.currentRow + this.taskRowCount);\n this.createRowCellGroup(this.taskRowCount);\n }\n\n async createCol() {\n if (!this.taskColCount) {\n return;\n }\n console.log('createCol', this.currentCol, this.currentCol + this.taskColCount);\n this.createColGroup(this.taskRowCount);\n }\n\n createRowCellGroup(onceCount: number) {\n const endRow = Math.min(this.totalRow, this.currentRow + onceCount);\n // compute rows height\n computeRowsHeight(this.table, this.currentRow + 1, endRow, false);\n\n if (this.table.rowHeaderLevelCount) {\n // create row header row cellGroup\n let maxHeight = 0;\n for (let col = 0; col < this.table.rowHeaderLevelCount; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellType = 'rowHeader';\n const { height } = createComplexColumn(\n colGroup,\n col,\n colGroup.attribute.width,\n this.currentRow + 1,\n endRow,\n this.table.scenegraph.mergeMap,\n this.table.internalProps.defaultRowHeight,\n this.table,\n cellType\n );\n maxHeight = Math.max(maxHeight, height);\n this.table.scenegraph.rowHeaderGroup.setAttribute('height', maxHeight);\n }\n }\n\n if (this.table.rightFrozenColCount) {\n // create row header row cellGroup\n let maxHeight = 0;\n for (let col = this.table.colCount - this.table.rightFrozenColCount; col < this.table.colCount; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellType = 'rowHeader';\n const { height } = createComplexColumn(\n colGroup,\n col,\n colGroup.attribute.width,\n this.currentRow + 1,\n endRow,\n this.table.scenegraph.mergeMap,\n this.table.internalProps.defaultRowHeight,\n this.table,\n cellType\n );\n maxHeight = Math.max(maxHeight, height);\n this.table.scenegraph.rightFrozenGroup.setAttribute('height', maxHeight);\n }\n }\n\n // create body row cellGroup\n let maxHeight = 0;\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellType = 'body';\n const { height } = createComplexColumn(\n colGroup,\n col,\n colGroup.attribute.width,\n this.currentRow + 1,\n endRow,\n this.table.scenegraph.mergeMap,\n this.table.internalProps.defaultRowHeight,\n this.table,\n cellType\n );\n maxHeight = Math.max(maxHeight, height);\n }\n this.table.scenegraph.bodyGroup.setAttribute('height', maxHeight);\n\n this.currentRow = endRow;\n this.rowEnd = endRow;\n this.rowUpdatePos = this.rowEnd;\n this.referenceRow = this.rowStart + Math.floor((endRow - this.rowStart) / 2);\n\n // update container group size and border\n this.table.scenegraph.updateContainer();\n this.table.scenegraph.updateBorderSizeAndPosition();\n }\n\n createColGroup(onceCount: number) {\n // compute rows height\n const endCol = Math.min(this.totalCol, this.currentCol + onceCount);\n computeColsWidth(this.table, this.currentCol + 1, endCol);\n\n // update last merge cell\n for (let row = 0; row < this.table.rowCount; row++) {\n const cellGroup = this.highPerformanceGetCell(this.currentCol, row);\n if (isNumber(cellGroup.mergeCol) && cellGroup.mergeCol > this.currentCol) {\n this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);\n }\n }\n\n // create column\n if (this.table.columnHeaderLevelCount) {\n // create colGroup\n const lastColumnGroup = (\n this.table.scenegraph.colHeaderGroup.lastChild instanceof Group\n ? this.table.scenegraph.colHeaderGroup.lastChild\n : this.table.scenegraph.colHeaderGroup.lastChild._prev\n ) as Group;\n const xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width;\n const yOrigin = lastColumnGroup.attribute.y;\n // create colHeaderGroup\n createColGroup(\n this.table.scenegraph.colHeaderGroup,\n xOrigin,\n yOrigin,\n this.currentCol + 1, // colStart\n endCol, // colEnd\n 0, // rowStart\n this.table.columnHeaderLevelCount - 1, // rowEnd\n 'columnHeader', // isHeader\n this.table\n );\n }\n if (this.table.bottomFrozenRowCount) {\n // create colGroup\n const lastColumnGroup = (\n this.table.scenegraph.bottomFrozenGroup.lastChild instanceof Group\n ? this.table.scenegraph.bottomFrozenGroup.lastChild\n : this.table.scenegraph.bottomFrozenGroup.lastChild._prev\n ) as Group;\n const xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width;\n const yOrigin = lastColumnGroup.attribute.y;\n // create bottomFrozenGroup\n createColGroup(\n this.table.scenegraph.bottomFrozenGroup,\n xOrigin,\n yOrigin,\n this.currentCol + 1, // colStart\n endCol, // colEnd\n this.table.rowCount - this.table.bottomFrozenRowCount, // rowStart\n this.table.rowCount - 1, // rowEnd\n 'columnHeader', // isHeader\n this.table\n );\n }\n // create colGroup\n const lastColumnGroup = (\n this.table.scenegraph.bodyGroup.lastChild instanceof Group\n ? this.table.scenegraph.bodyGroup.lastChild\n : this.table.scenegraph.bodyGroup.lastChild._prev\n ) as Group;\n const xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width;\n const yOrigin = lastColumnGroup.attribute.y;\n // create bodyGroup\n createColGroup(\n this.table.scenegraph.bodyGroup,\n xOrigin,\n yOrigin,\n this.currentCol + 1, // colStart\n endCol, // colEnd\n this.rowStart, // rowStart\n this.rowEnd, // rowEnd\n 'body', // isHeader\n this.table\n );\n\n this.currentCol = endCol;\n this.colEnd = endCol;\n this.colUpdatePos = this.colEnd;\n this.referenceCol = this.colStart + Math.floor((endCol - this.colStart) / 2);\n console.log('async', this.referenceCol, this.colStart, this.colEnd);\n\n // update container group size and border\n this.table.scenegraph.updateContainer();\n this.table.scenegraph.updateBorderSizeAndPosition();\n }\n\n async setY(y: number) {\n if (y < this.yLimitTop && this.rowStart === this.bodyTopRow) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n } else if (y > this.yLimitBottom && this.rowEnd === this.bodyBottomRow) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n } else {\n // 执行动态更新节点\n this.dynamicSetY(y);\n }\n }\n\n async setX(x: number) {\n if (x < this.xLimitLeft && this.colStart === this.bodyLeftCol) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndColHeaderX(-x);\n } else if (x > this.xLimitRight && this.colEnd === this.bodyRightCol) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndColHeaderX(-x);\n } else {\n // 执行动态更新节点\n this.dynamicSetX(x);\n }\n }\n\n async dynamicSetY(y: number) {\n dynamicSetY(y, this);\n }\n async dynamicSetX(x: number) {\n dynamicSetX(x, this);\n }\n\n updateBody(y: number) {\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n }\n\n async updateRowCellGroupsAsync() {\n this.updateCellGroups(this.taskRowCount);\n }\n\n updateCellGroups(count: number) {\n const distRow = Math.min(this.bodyBottomRow, this.rowUpdatePos + count);\n // console.log('updateCellGroups', this.rowUpdatePos, distRow);\n if (this.table.heightMode === 'autoHeight') {\n computeRowsHeight(this.table, this.rowUpdatePos, distRow, false);\n }\n\n updateRowContent(this.rowUpdatePos, distRow, this);\n\n if (this.table.heightMode === 'autoHeight') {\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n this.rowUpdatePos, // rowStart\n distRow, // rowEnd\n this.table,\n this.rowUpdateDirection\n );\n }\n\n this.rowUpdatePos = distRow + 1;\n }\n\n async updateColCellGroupsAsync() {\n this.updateColGroups(this.taskRowCount);\n }\n\n updateColGroups(count: number) {\n const distCol = Math.min(this.bodyRightCol, this.colUpdatePos + count);\n // console.log('updateCellGroups', this.colUpdatePos, distCol);\n // for (let col = this.colUpdatePos; col <= distCol; col++) {\n // const colGroup = this.table.scenegraph.getColGroup(col);\n // if (colGroup) {\n // // colGroup.forEachChildren((cellGroup: Group) => {\n // // this.updateCellGroupContent(cellGroup);\n // // });\n // // for (let row = (colGroup.firstChild as Group).row; row <= (colGroup.lastChild as Group).row; row++) {\n // // const cellGroup = this.highPerformanceGetCell(colGroup.col, row);\n // // this.updateCellGroupContent(cellGroup);\n // // }\n // let cellGroup = colGroup.firstChild;\n // while (cellGroup) {\n // // this.updateCellGroupContent(cellGroup as Group);\n // // cellGroup = cellGroup._next;\n // const newCellGroup = this.updateCellGroupContent(cellGroup as Group);\n // cellGroup = newCellGroup._next;\n // }\n // colGroup.needUpdate = false;\n // }\n // }\n computeColsWidth(this.table, this.colUpdatePos, distCol);\n updateColContent(this.colUpdatePos, distCol, this);\n this.colUpdatePos = distCol + 1;\n }\n\n updateCellGroupPosition(cellGroup: Group, newRow: number, y: number) {\n // 更新位置&row\n cellGroup.row = newRow;\n cellGroup.setAttribute('y', y);\n (cellGroup as any).needUpdate = true;\n (cellGroup as any).needUpdateForAutoRowHeight = true;\n }\n\n updateCellGroupContent(cellGroup: Group) {\n if (!cellGroup.needUpdate) {\n return cellGroup;\n }\n\n const newCellGroup = this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);\n // 更新内容\n // const textMark = cellGroup.firstChild as WrapText;\n // const autoWrapText = Array.isArray(textMark.attribute.text);\n // const textStr: string = this.table.getCellValue(cellGroup.col, cellGroup.row);\n // let text;\n // if (autoWrapText) {\n // text = String(textStr).replace(/\\r?\\n/g, '\\n').replace(/\\r/g, '\\n').split('\\n');\n // } else {\n // text = textStr;\n // }\n\n // textMark.setAttribute('text', text);\n\n cellGroup.needUpdate = false;\n return newCellGroup || cellGroup;\n }\n\n async sortCell() {\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n for (let row = this.rowStart; row <= this.rowEnd; row++) {\n // const cellGroup = this.table.scenegraph.getCell(col, row);\n const cellGroup = this.highPerformanceGetCell(col, row);\n cellGroup.needUpdate = true;\n }\n }\n\n // 更新同步范围\n let syncTopRow;\n let syncBottomRow;\n if (this.table.heightMode === 'autoHeight') {\n syncTopRow = this.rowStart;\n syncBottomRow = this.rowEnd;\n } else {\n syncTopRow = Math.max(this.bodyTopRow, this.screenTopRow - this.screenRowCount * 2);\n syncBottomRow = Math.min(this.bodyBottomRow, this.screenTopRow + this.screenRowCount * 3);\n }\n console.log('sort更新同步范围', syncTopRow, syncBottomRow);\n\n computeRowsHeight(this.table, syncTopRow, syncBottomRow);\n\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n for (let row = syncTopRow; row <= syncBottomRow; row++) {\n // const cellGroup = this.table.scenegraph.getCell(col, row);\n const cellGroup = this.highPerformanceGetCell(col, row);\n this.updateCellGroupContent(cellGroup);\n }\n }\n console.log('updateAutoRow', this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? 'down' : 'up');\n if (this.table.heightMode === 'autoHeight') {\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n syncTopRow, // rowStart\n syncBottomRow, // rowEnd\n this.table,\n this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? 'down' : 'up' // 跳转到底部时,从下向上对齐\n );\n }\n this.rowUpdatePos = this.rowStart;\n this.rowUpdateDirection = this.rowEnd > this.bodyBottomRow - (this.rowEnd - this.rowStart + 1) ? 'down' : 'up';\n\n if (\n this.rowEnd === this.table.scenegraph.proxy.bodyBottomRow &&\n this.rowStart === this.table.scenegraph.proxy.bodyTopRow\n ) {\n // 全量更新,do nothing\n } else if (this.rowEnd === this.table.scenegraph.proxy.bodyBottomRow) {\n const totalHeight = this.table.getAllRowsHeight();\n const top = totalHeight - this.table.scenegraph.height;\n this.updateBody(top);\n } else if (this.rowStart === this.table.scenegraph.proxy.bodyTopRow) {\n this.updateBody(0);\n }\n\n if (this.table.heightMode !== 'autoHeight') {\n await this.progress();\n }\n }\n\n highPerformanceGetCell(\n col: number,\n row: number,\n // rowStart: number = this.rowStart,\n // rowEnd: number = this.rowEnd,\n getShadow?: boolean\n ) {\n // if (row < rowStart || row > rowEnd) {\n // return emptyGroup;\n // }\n // if (row < this.rowStart || row > this.rowEnd || col < this.colStart || col > this.colEnd) {\n // return emptyGroup;\n // }\n\n if (\n row >= this.table.columnHeaderLevelCount && // not column header\n row < this.table.rowCount - this.table.bottomFrozenRowCount && // not bottom frozen\n (row < this.rowStart || row > this.rowEnd) // not in proxy row range\n ) {\n return emptyGroup;\n }\n\n if (\n col >= this.table.rowHeaderLevelCount && // not row header\n col < this.table.colCount - this.table.rightFrozenColCount && // not right frozen\n (col < this.colStart || col > this.colEnd) // not in proxy col range\n ) {\n return emptyGroup;\n }\n\n if (this.cellCache.get(col)) {\n const cacheCellGoup = this.cellCache.get(col);\n if ((cacheCellGoup._next || cacheCellGoup._prev) && Math.abs(cacheCellGoup.row - row) < row) {\n // 由缓存单元格向前后查找要快于从头查找\n let cellGroup = getCellByCache(cacheCellGoup, row);\n if (!cellGroup || (!getShadow && cellGroup.role === 'shadow-cell')) {\n cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n }\n cellGroup.row && this.cellCache.set(col, cellGroup);\n return cellGroup;\n }\n const cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n // cellGroup.row && this.cellCache.set(col, cellGroup);\n if (cellGroup.col === col && cellGroup.row) {\n this.cellCache.set(col, cellGroup);\n }\n return cellGroup;\n }\n const cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n // cellGroup.row && this.cellCache.set(col, cellGroup);\n if (cellGroup.col === col && cellGroup.row) {\n this.cellCache.set(col, cellGroup);\n }\n return cellGroup;\n }\n}\n\nfunction getCellByCache(cacheCellGroup: Group, row: number): Group | null {\n if (!cacheCellGroup) {\n return null;\n }\n if (cacheCellGroup.row === row) {\n return cacheCellGroup;\n } else if (cacheCellGroup.row > row) {\n return getCellByCache(cacheCellGroup._prev as Group, row);\n }\n return getCellByCache(cacheCellGroup._next as Group, row);\n}\n"]}
1
+ {"version":3,"sources":["scenegraph/group-creater/progress/proxy.ts"],"names":[],"mappings":"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","file":"proxy.js","sourcesContent":["import { isNumber } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\nimport { Group } from '../../graphic/group';\nimport { computeColsWidth } from '../../layout/compute-col-width';\nimport { computeRowsHeight } from '../../layout/compute-row-height';\nimport { emptyGroup } from '../../utils/empty-group';\nimport { createColGroup } from '../column';\nimport { createComplexColumn } from '../column-helper';\nimport { createGroupForFirstScreen } from './create-group-for-first-screen';\nimport { dynamicSetX, updateColContent } from './update-position/dynamic-set-x';\nimport { dynamicSetY, updateRowContent } from './update-position/dynamic-set-y';\nimport { updateAutoRow } from './update-position/update-auto-row';\nimport { sortVertical } from './update-position/sort-vertical';\nimport { sortHorizontal } from './update-position/sort-horizontal';\n\nexport class SceneProxy {\n table: BaseTableAPI;\n mode: 'column' | 'row' | 'pivot' = 'column';\n\n rowLimit = 1000;\n currentRow = 0; // 目前渐进生成的row number\n totalRow: number; // 渐进完成最后一行的row number\n yLimitTop: number; // y > yLimitTop动态更新,否则直接修改xy\n yLimitBottom: number; // y < yLimitBottom动态更新,否则直接修改xy\n rowStart = 0; // 当前维护的部分第一行的row number\n rowEnd = 0; // 当前维护的部分最后一行的row number\n referenceRow = 0; // 当前维护的部分中间一行的row number,认为referenceRow对应当前屏幕显示范围的第一行\n bodyTopRow: number; // table body部分的第一行row number\n bodyBottomRow: number; // table body部分的最后一行row number\n screenRowCount: number; // 预计屏幕范围内显示的row count\n firstScreenRowLimit: number; // 首屏同步加载部分最后一行的row number\n taskRowCount: number; // 一次任务生成/更新的row count\n rowUpdatePos: number; // 异步任务目前更新到的行的row number\n rowUpdateDirection: 'up' | 'down'; // 当前行更新的方向\n screenTopRow: number = 0; // 当前屏幕范围内显示的第一行的row number\n deltaY: number = 0;\n\n colLimit = 100;\n bodyLeftCol: number; // table body部分的第一列col number\n bodyRightCol: number; // table body部分的最后一列col number\n totalCol: number; // 渐进完成最后一列的col number\n colStart: number; // 当前维护的部分第一列的col number\n colEnd: number; // 当前维护的部分最后一列的col number\n taskColCount: number; // 一次任务生成/更新的col count\n xLimitLeft: number; // x > xLimitLeft动态更新,否则直接修改xy\n xLimitRight: number; // x < xLimitRight动态更新,否则直接修改xy\n screenColCount: number; // 预计屏幕范围内显示的col count\n firstScreenColLimit: number; // 首屏同步加载部分最后一列的col number\n colUpdatePos: number; // 异步任务目前更新到的列的col number\n currentCol: number; // 目前渐进生成的col number\n referenceCol: number; // 当前维护的部分中间一列的col number,认为referenceCol对应当前屏幕显示范围的第一列\n screenLeftCol: number = 0; // 当前屏幕范围内显示的第一列的col number\n colUpdateDirection: 'left' | 'right'; // 当前列更新方向\n deltaX: number = 0;\n\n cellCache: Map<number, Group> = new Map(); // 单元格位置快速查找缓存\n\n constructor(table: BaseTableAPI) {\n this.table = table;\n\n if (this.table.isPivotChart()) {\n this.rowLimit = 100;\n this.colLimit = 100;\n } else if (this.table.heightMode === 'autoHeight') {\n this.rowLimit = 100;\n } else if (this.table.widthMode === 'autoWidth') {\n this.colLimit = 100;\n }\n\n if (this.table.internalProps.transpose) {\n this.mode = 'row';\n } else if (this.table.isPivotTable()) {\n this.mode = 'pivot';\n }\n if (this.table.options.maintainedDataCount) {\n this.rowLimit = this.table.options.maintainedDataCount;\n }\n }\n\n setParamsForColumn() {\n this.bodyLeftCol = this.table.rowHeaderLevelCount;\n // this.bodyRightCol = this.table.colCount - 1;\n this.bodyRightCol = this.table.colCount - 1 - this.table.rightFrozenColCount;\n\n // compute the column info about progress creation\n const totalActualBodyColCount = Math.min(this.colLimit, this.bodyRightCol - this.bodyLeftCol + 1);\n this.totalCol = this.bodyLeftCol + totalActualBodyColCount - 1; // 目标渐进完成的col\n this.colStart = this.bodyLeftCol;\n const defaultColWidth = this.table.defaultColWidth;\n this.taskColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth) * 1;\n\n // 确定动态更新限制\n const totalBodyWidth = defaultColWidth * totalActualBodyColCount;\n const totalWidth = defaultColWidth * (this.bodyRightCol - this.bodyLeftCol + 1);\n this.xLimitLeft = totalBodyWidth / 2;\n this.xLimitRight = totalWidth - totalBodyWidth / 2;\n\n // 确定首屏高度范围\n const widthLimit = this.table.tableNoFrameWidth * 5;\n this.screenColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth);\n this.firstScreenColLimit = this.bodyLeftCol + Math.ceil(widthLimit / defaultColWidth);\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.colUpdatePos = this.bodyRightCol;\n }\n\n setParamsForRow() {\n this.bodyTopRow = this.table.columnHeaderLevelCount;\n this.bodyBottomRow = this.table.rowCount - 1 - this.table.bottomFrozenRowCount;\n // this.bodyLeftCol = 0;\n // this.bodyRightCol = this.table.colCount - 1 - this.table.rightFrozenColCount;\n\n // 计算渐进加载数量\n const totalActualBodyRowCount = Math.min(this.rowLimit, this.bodyBottomRow - this.bodyTopRow + 1); // 渐进加载总row数量\n this.totalRow = this.bodyTopRow + totalActualBodyRowCount - 1; // 目标渐进完成的row\n this.rowStart = this.bodyTopRow;\n const defaultRowHeight = this.table.defaultRowHeight;\n this.taskRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight) * 1;\n\n // 确定动态更新限制\n const totalBodyHeight = defaultRowHeight * totalActualBodyRowCount;\n const totalHeight = defaultRowHeight * (this.bodyBottomRow - this.bodyTopRow + 1);\n this.yLimitTop = totalBodyHeight / 2;\n this.yLimitBottom = totalHeight - totalBodyHeight / 2;\n // this.bottomOffset = totalHeight - totalBodyHeight / 2;\n\n // 确定首屏高度范围\n const heightLimit = this.table.tableNoFrameHeight * 5;\n this.screenRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight);\n this.firstScreenRowLimit = this.bodyTopRow + Math.ceil(heightLimit / defaultRowHeight);\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.rowUpdatePos = this.bodyBottomRow;\n }\n\n async createGroupForFirstScreen(\n cornerHeaderGroup: Group,\n colHeaderGroup: Group,\n rowHeaderGroup: Group,\n rightFrozenGroup: Group,\n bottomFrozenGroup: Group,\n bodyGroup: Group,\n xOrigin: number,\n yOrigin: number\n ) {\n await createGroupForFirstScreen(\n cornerHeaderGroup,\n colHeaderGroup,\n rowHeaderGroup,\n rightFrozenGroup,\n bottomFrozenGroup,\n bodyGroup,\n xOrigin,\n yOrigin,\n this\n );\n }\n // async progress() {\n // if (this.rowUpdatePos < this.rowEnd) {\n // console.log('progress rowUpdatePos', this.rowUpdatePos);\n // // 先更新\n // await this.updateCellGroupsAsync();\n // await this.progress();\n // } else if (this.currentRow < this.totalRow) {\n // console.log('progress currentRow', this.currentRow);\n // // 先更新没有需要更新的节点,在生成新节点\n // await this.createRow();\n // await this.progress();\n // }\n // }\n async progress() {\n return new Promise<void>((resolve, reject) => {\n setTimeout(async () => {\n if (this.colUpdatePos < this.colEnd) {\n await this.updateColCellGroupsAsync();\n await this.progress();\n } else if (this.rowUpdatePos < this.rowEnd) {\n // console.log('progress rowUpdatePos', this.rowUpdatePos);\n // 先更新\n await this.updateRowCellGroupsAsync();\n await this.progress();\n } else if (this.currentCol < this.totalCol) {\n await this.createCol();\n await this.progress();\n } else if (this.currentRow < this.totalRow) {\n // console.log('progress currentRow', this.currentRow);\n // 先更新没有需要更新的节点,在生成新节点\n await this.createRow();\n await this.progress();\n }\n resolve();\n }, 0);\n });\n }\n\n async createRow() {\n if (!this.taskRowCount) {\n return;\n }\n console.log('createRow', this.currentRow, this.currentRow + this.taskRowCount);\n this.createRowCellGroup(this.taskRowCount);\n }\n\n async createCol() {\n if (!this.taskColCount) {\n return;\n }\n console.log('createCol', this.currentCol, this.currentCol + this.taskColCount);\n this.createColGroup(this.taskRowCount);\n }\n\n createRowCellGroup(onceCount: number) {\n const endRow = Math.min(this.totalRow, this.currentRow + onceCount);\n // compute rows height\n computeRowsHeight(this.table, this.currentRow + 1, endRow, false);\n\n if (this.table.rowHeaderLevelCount) {\n // create row header row cellGroup\n let maxHeight = 0;\n for (let col = 0; col < this.table.rowHeaderLevelCount; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellType = 'rowHeader';\n const { height } = createComplexColumn(\n colGroup,\n col,\n colGroup.attribute.width,\n this.currentRow + 1,\n endRow,\n this.table.scenegraph.mergeMap,\n this.table.internalProps.defaultRowHeight,\n this.table,\n cellType\n );\n maxHeight = Math.max(maxHeight, height);\n this.table.scenegraph.rowHeaderGroup.setAttribute('height', maxHeight);\n }\n }\n\n if (this.table.rightFrozenColCount) {\n // create row header row cellGroup\n let maxHeight = 0;\n for (let col = this.table.colCount - this.table.rightFrozenColCount; col < this.table.colCount; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellType = 'rowHeader';\n const { height } = createComplexColumn(\n colGroup,\n col,\n colGroup.attribute.width,\n this.currentRow + 1,\n endRow,\n this.table.scenegraph.mergeMap,\n this.table.internalProps.defaultRowHeight,\n this.table,\n cellType\n );\n maxHeight = Math.max(maxHeight, height);\n this.table.scenegraph.rightFrozenGroup.setAttribute('height', maxHeight);\n }\n }\n\n // create body row cellGroup\n let maxHeight = 0;\n for (let col = this.bodyLeftCol; col <= this.bodyRightCol; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellType = 'body';\n const { height } = createComplexColumn(\n colGroup,\n col,\n colGroup.attribute.width,\n this.currentRow + 1,\n endRow,\n this.table.scenegraph.mergeMap,\n this.table.internalProps.defaultRowHeight,\n this.table,\n cellType\n );\n maxHeight = Math.max(maxHeight, height);\n }\n this.table.scenegraph.bodyGroup.setAttribute('height', maxHeight);\n\n this.currentRow = endRow;\n this.rowEnd = endRow;\n this.rowUpdatePos = this.rowEnd;\n this.referenceRow = this.rowStart + Math.floor((endRow - this.rowStart) / 2);\n\n // update container group size and border\n this.table.scenegraph.updateContainer();\n this.table.scenegraph.updateBorderSizeAndPosition();\n }\n\n createColGroup(onceCount: number) {\n // compute rows height\n const endCol = Math.min(this.totalCol, this.currentCol + onceCount);\n computeColsWidth(this.table, this.currentCol + 1, endCol);\n\n // update last merge cell\n for (let row = 0; row < this.table.rowCount; row++) {\n const cellGroup = this.highPerformanceGetCell(this.currentCol, row);\n if (isNumber(cellGroup.mergeCol) && cellGroup.mergeCol > this.currentCol) {\n this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);\n }\n }\n\n // create column\n if (this.table.columnHeaderLevelCount) {\n // create colGroup\n const lastColumnGroup = (\n this.table.scenegraph.colHeaderGroup.lastChild instanceof Group\n ? this.table.scenegraph.colHeaderGroup.lastChild\n : this.table.scenegraph.colHeaderGroup.lastChild._prev\n ) as Group;\n const xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width;\n const yOrigin = lastColumnGroup.attribute.y;\n // create colHeaderGroup\n createColGroup(\n this.table.scenegraph.colHeaderGroup,\n xOrigin,\n yOrigin,\n this.currentCol + 1, // colStart\n endCol, // colEnd\n 0, // rowStart\n this.table.columnHeaderLevelCount - 1, // rowEnd\n 'columnHeader', // isHeader\n this.table\n );\n }\n if (this.table.bottomFrozenRowCount) {\n // create colGroup\n const lastColumnGroup = (\n this.table.scenegraph.bottomFrozenGroup.lastChild instanceof Group\n ? this.table.scenegraph.bottomFrozenGroup.lastChild\n : this.table.scenegraph.bottomFrozenGroup.lastChild._prev\n ) as Group;\n const xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width;\n const yOrigin = lastColumnGroup.attribute.y;\n // create bottomFrozenGroup\n createColGroup(\n this.table.scenegraph.bottomFrozenGroup,\n xOrigin,\n yOrigin,\n this.currentCol + 1, // colStart\n endCol, // colEnd\n this.table.rowCount - this.table.bottomFrozenRowCount, // rowStart\n this.table.rowCount - 1, // rowEnd\n 'columnHeader', // isHeader\n this.table\n );\n }\n // create colGroup\n const lastColumnGroup = (\n this.table.scenegraph.bodyGroup.lastChild instanceof Group\n ? this.table.scenegraph.bodyGroup.lastChild\n : this.table.scenegraph.bodyGroup.lastChild._prev\n ) as Group;\n const xOrigin = lastColumnGroup.attribute.x + lastColumnGroup.attribute.width;\n const yOrigin = lastColumnGroup.attribute.y;\n // create bodyGroup\n createColGroup(\n this.table.scenegraph.bodyGroup,\n xOrigin,\n yOrigin,\n this.currentCol + 1, // colStart\n endCol, // colEnd\n this.rowStart, // rowStart\n this.rowEnd, // rowEnd\n 'body', // isHeader\n this.table\n );\n\n this.currentCol = endCol;\n this.colEnd = endCol;\n this.colUpdatePos = this.colEnd;\n this.referenceCol = this.colStart + Math.floor((endCol - this.colStart) / 2);\n console.log('async', this.referenceCol, this.colStart, this.colEnd);\n\n // update container group size and border\n this.table.scenegraph.updateContainer();\n this.table.scenegraph.updateBorderSizeAndPosition();\n }\n\n async setY(y: number) {\n if (y < this.yLimitTop && this.rowStart === this.bodyTopRow) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n } else if (y > this.yLimitBottom && this.rowEnd === this.bodyBottomRow) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n } else {\n // 执行动态更新节点\n this.dynamicSetY(y);\n }\n }\n\n async setX(x: number) {\n if (x < this.xLimitLeft && this.colStart === this.bodyLeftCol) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndColHeaderX(-x);\n } else if (x > this.xLimitRight && this.colEnd === this.bodyRightCol) {\n // 执行真实body group坐标修改\n this.table.scenegraph.setBodyAndColHeaderX(-x);\n } else {\n // 执行动态更新节点\n this.dynamicSetX(x);\n }\n }\n\n async dynamicSetY(y: number) {\n dynamicSetY(y, this);\n }\n async dynamicSetX(x: number) {\n dynamicSetX(x, this);\n }\n\n updateBody(y: number) {\n this.table.scenegraph.setBodyAndRowHeaderY(-y);\n }\n\n async updateRowCellGroupsAsync() {\n this.updateCellGroups(this.taskRowCount);\n }\n\n updateCellGroups(count: number) {\n const distRow = Math.min(this.bodyBottomRow, this.rowUpdatePos + count);\n // console.log('updateCellGroups', this.rowUpdatePos, distRow);\n if (this.table.heightMode === 'autoHeight') {\n computeRowsHeight(this.table, this.rowUpdatePos, distRow, false);\n }\n\n updateRowContent(this.rowUpdatePos, distRow, this);\n\n if (this.table.heightMode === 'autoHeight') {\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n this.rowUpdatePos, // rowStart\n distRow, // rowEnd\n this.table,\n this.rowUpdateDirection\n );\n }\n\n this.rowUpdatePos = distRow + 1;\n }\n\n async updateColCellGroupsAsync() {\n this.updateColGroups(this.taskRowCount);\n }\n\n updateColGroups(count: number) {\n const distCol = Math.min(this.bodyRightCol, this.colUpdatePos + count);\n // console.log('updateCellGroups', this.colUpdatePos, distCol);\n // for (let col = this.colUpdatePos; col <= distCol; col++) {\n // const colGroup = this.table.scenegraph.getColGroup(col);\n // if (colGroup) {\n // // colGroup.forEachChildren((cellGroup: Group) => {\n // // this.updateCellGroupContent(cellGroup);\n // // });\n // // for (let row = (colGroup.firstChild as Group).row; row <= (colGroup.lastChild as Group).row; row++) {\n // // const cellGroup = this.highPerformanceGetCell(colGroup.col, row);\n // // this.updateCellGroupContent(cellGroup);\n // // }\n // let cellGroup = colGroup.firstChild;\n // while (cellGroup) {\n // // this.updateCellGroupContent(cellGroup as Group);\n // // cellGroup = cellGroup._next;\n // const newCellGroup = this.updateCellGroupContent(cellGroup as Group);\n // cellGroup = newCellGroup._next;\n // }\n // colGroup.needUpdate = false;\n // }\n // }\n computeColsWidth(this.table, this.colUpdatePos, distCol);\n updateColContent(this.colUpdatePos, distCol, this);\n this.colUpdatePos = distCol + 1;\n }\n\n updateCellGroupPosition(cellGroup: Group, newRow: number, y: number) {\n // 更新位置&row\n cellGroup.row = newRow;\n cellGroup.setAttribute('y', y);\n (cellGroup as any).needUpdate = true;\n (cellGroup as any).needUpdateForAutoRowHeight = true;\n }\n\n updateCellGroupContent(cellGroup: Group) {\n if (!cellGroup.needUpdate) {\n return cellGroup;\n }\n\n const newCellGroup = this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);\n // 更新内容\n // const textMark = cellGroup.firstChild as WrapText;\n // const autoWrapText = Array.isArray(textMark.attribute.text);\n // const textStr: string = this.table.getCellValue(cellGroup.col, cellGroup.row);\n // let text;\n // if (autoWrapText) {\n // text = String(textStr).replace(/\\r?\\n/g, '\\n').replace(/\\r/g, '\\n').split('\\n');\n // } else {\n // text = textStr;\n // }\n\n // textMark.setAttribute('text', text);\n\n cellGroup.needUpdate = false;\n return newCellGroup || cellGroup;\n }\n\n async sortCellVertical() {\n await sortVertical(this);\n }\n\n async sortCellHorizontal() {\n await sortHorizontal(this);\n }\n\n highPerformanceGetCell(\n col: number,\n row: number,\n // rowStart: number = this.rowStart,\n // rowEnd: number = this.rowEnd,\n getShadow?: boolean\n ) {\n // if (row < rowStart || row > rowEnd) {\n // return emptyGroup;\n // }\n // if (row < this.rowStart || row > this.rowEnd || col < this.colStart || col > this.colEnd) {\n // return emptyGroup;\n // }\n\n if (\n row >= this.table.columnHeaderLevelCount && // not column header\n row < this.table.rowCount - this.table.bottomFrozenRowCount && // not bottom frozen\n (row < this.rowStart || row > this.rowEnd) // not in proxy row range\n ) {\n return emptyGroup;\n }\n\n if (\n col >= this.table.rowHeaderLevelCount && // not row header\n col < this.table.colCount - this.table.rightFrozenColCount && // not right frozen\n (col < this.colStart || col > this.colEnd) // not in proxy col range\n ) {\n return emptyGroup;\n }\n\n if (this.cellCache.get(col)) {\n const cacheCellGoup = this.cellCache.get(col);\n if ((cacheCellGoup._next || cacheCellGoup._prev) && Math.abs(cacheCellGoup.row - row) < row) {\n // 由缓存单元格向前后查找要快于从头查找\n let cellGroup = getCellByCache(cacheCellGoup, row);\n if (!cellGroup || (!getShadow && cellGroup.role === 'shadow-cell')) {\n cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n }\n cellGroup.row && this.cellCache.set(col, cellGroup);\n return cellGroup;\n }\n const cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n // cellGroup.row && this.cellCache.set(col, cellGroup);\n if (cellGroup.col === col && cellGroup.row) {\n this.cellCache.set(col, cellGroup);\n }\n return cellGroup;\n }\n const cellGroup = this.table.scenegraph.getCell(col, row, getShadow);\n // cellGroup.row && this.cellCache.set(col, cellGroup);\n if (cellGroup.col === col && cellGroup.row) {\n this.cellCache.set(col, cellGroup);\n }\n return cellGroup;\n }\n}\n\nfunction getCellByCache(cacheCellGroup: Group, row: number): Group | null {\n if (!cacheCellGroup) {\n return null;\n }\n if (cacheCellGroup.row === row) {\n return cacheCellGroup;\n } else if (cacheCellGroup.row > row) {\n return getCellByCache(cacheCellGroup._prev as Group, row);\n }\n return getCellByCache(cacheCellGroup._next as Group, row);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import type { SceneProxy } from '../proxy';
2
+ export declare function sortHorizontal(proxy: SceneProxy): Promise<void>;
@@ -0,0 +1,45 @@
1
+ var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
2
+ return new (P || (P = Promise))((function(resolve, reject) {
3
+ function fulfilled(value) {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ }
10
+ function rejected(value) {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ }
17
+ function step(result) {
18
+ var value;
19
+ result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
20
+ resolve(value);
21
+ }))).then(fulfilled, rejected);
22
+ }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ }));
25
+ };
26
+
27
+ import { computeColsWidth } from "../../../layout/compute-col-width";
28
+
29
+ import { updateColContent } from "./dynamic-set-x";
30
+
31
+ export function sortHorizontal(proxy) {
32
+ return __awaiter(this, void 0, void 0, (function*() {
33
+ for (let col = proxy.colStart; col <= proxy.colEnd; col++) {
34
+ const colGroup = proxy.table.scenegraph.getColGroup(col);
35
+ colGroup.needUpdate = !0, null == colGroup || colGroup.forEachChildren((cellGroup => {
36
+ cellGroup.needUpdate = !0;
37
+ }));
38
+ }
39
+ const syncLeftCol = Math.max(proxy.bodyLeftCol, proxy.screenLeftCol - 1 * proxy.screenColCount), syncRightCol = Math.min(proxy.bodyRightCol, proxy.screenLeftCol + 2 * proxy.screenColCount);
40
+ computeColsWidth(proxy.table, syncLeftCol, syncRightCol), updateColContent(syncLeftCol, syncRightCol, proxy),
41
+ proxy.colUpdatePos = proxy.colStart, proxy.colUpdateDirection = proxy.colEnd > proxy.bodyRightCol - (proxy.colEnd - proxy.colStart + 1) ? "right" : "left",
42
+ proxy.table.scenegraph.updateNextFrame(), yield proxy.progress();
43
+ }));
44
+ }
45
+ //# sourceMappingURL=sort-horizontal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["scenegraph/group-creater/progress/update-position/sort-horizontal.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,UAAgB,cAAc,CAAC,KAAiB;;QACpD,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACzD,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;YAC3B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,CAAC,CAAC,SAAgB,EAAE,EAAE;gBAC5C,SAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;YACvC,CAAC,CAAC,CAAC;SACJ;QAGD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAChG,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAElG,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAEzD,gBAAgB,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QASnD,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;QACpC,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAiBtH,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;CAAA","file":"sort-horizontal.js","sourcesContent":["import type { Group } from '../../../graphic/group';\nimport { computeColsWidth } from '../../../layout/compute-col-width';\nimport type { SceneProxy } from '../proxy';\nimport { updateColContent } from './dynamic-set-x';\nimport { updateAutoColumn } from './update-auto-column';\n\nexport async function sortHorizontal(proxy: SceneProxy) {\n for (let col = proxy.colStart; col <= proxy.colEnd; col++) {\n const colGroup = proxy.table.scenegraph.getColGroup(col);\n colGroup.needUpdate = true;\n colGroup?.forEachChildren((cellGroup: Group) => {\n (cellGroup as any).needUpdate = true;\n });\n }\n\n // 更新同步范围\n const syncLeftCol = Math.max(proxy.bodyLeftCol, proxy.screenLeftCol - proxy.screenColCount * 1);\n const syncRightCol = Math.min(proxy.bodyRightCol, proxy.screenLeftCol + proxy.screenColCount * 2);\n\n computeColsWidth(proxy.table, syncLeftCol, syncRightCol);\n\n updateColContent(syncLeftCol, syncRightCol, proxy);\n\n // updateAutoColumn(\n // syncLeftCol, // colStart\n // syncRightCol, // colEnd\n // proxy.table,\n // proxy.colEnd > proxy.bodyRightCol - (proxy.colEnd - proxy.colStart + 1) ? 'right' : 'left' // 跳转到右侧时,从右向左对齐\n // );\n\n proxy.colUpdatePos = proxy.colStart;\n proxy.colUpdateDirection = proxy.colEnd > proxy.bodyRightCol - (proxy.colEnd - proxy.colStart + 1) ? 'right' : 'left';\n\n // if (\n // proxy.colEnd === proxy.table.scenegraph.proxy.bodyRightCol &&\n // proxy.colStart === proxy.table.scenegraph.proxy.bodyLeftCol\n // ) {\n // // 全量更新,do nothing\n // } else if (proxy.colEnd === proxy.table.scenegraph.proxy.bodyRightCol) {\n // const totalWidth = proxy.table.getAllColsWidth();\n // const left = totalWidth - proxy.table.scenegraph.width;\n // // proxy.updateBody(top);\n // proxy.table.scenegraph.setBodyAndColHeaderX(-left);\n // } else if (proxy.colStart === proxy.table.scenegraph.proxy.bodyLeftCol) {\n // // proxy.updateBody(0);\n // proxy.table.scenegraph.setBodyAndColHeaderX(0);\n // }\n\n proxy.table.scenegraph.updateNextFrame();\n await proxy.progress();\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import type { SceneProxy } from '../proxy';
2
+ export declare function sortVertical(proxy: SceneProxy): Promise<void>;
@@ -0,0 +1,47 @@
1
+ var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
2
+ return new (P || (P = Promise))((function(resolve, reject) {
3
+ function fulfilled(value) {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ }
10
+ function rejected(value) {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ }
17
+ function step(result) {
18
+ var value;
19
+ result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
20
+ resolve(value);
21
+ }))).then(fulfilled, rejected);
22
+ }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ }));
25
+ };
26
+
27
+ import { computeRowsHeight } from "../../../layout/compute-row-height";
28
+
29
+ import { updateRowContent } from "./dynamic-set-y";
30
+
31
+ import { updateAutoRow } from "./update-auto-row";
32
+
33
+ export function sortVertical(proxy) {
34
+ return __awaiter(this, void 0, void 0, (function*() {
35
+ for (let col = proxy.bodyLeftCol; col <= proxy.bodyRightCol; col++) for (let row = proxy.rowStart; row <= proxy.rowEnd; row++) {
36
+ proxy.highPerformanceGetCell(col, row).needUpdate = !0;
37
+ }
38
+ let syncTopRow, syncBottomRow;
39
+ "autoHeight" === proxy.table.heightMode ? (syncTopRow = proxy.rowStart, syncBottomRow = proxy.rowEnd) : (syncTopRow = Math.max(proxy.bodyTopRow, proxy.screenTopRow - 1 * proxy.screenRowCount),
40
+ syncBottomRow = Math.min(proxy.bodyBottomRow, proxy.screenTopRow + 2 * proxy.screenRowCount)),
41
+ computeRowsHeight(proxy.table, syncTopRow, syncBottomRow), updateRowContent(syncTopRow, syncBottomRow, proxy),
42
+ "autoHeight" === proxy.table.heightMode && updateAutoRow(proxy.bodyLeftCol, proxy.bodyRightCol, syncTopRow, syncBottomRow, proxy.table, proxy.rowEnd > proxy.bodyBottomRow - (proxy.rowEnd - proxy.rowStart + 1) ? "down" : "up"),
43
+ proxy.rowUpdatePos = proxy.rowStart, proxy.rowUpdateDirection = proxy.rowEnd > proxy.bodyBottomRow - (proxy.rowEnd - proxy.rowStart + 1) ? "down" : "up",
44
+ proxy.table.scenegraph.updateNextFrame(), "autoHeight" !== proxy.table.heightMode && (yield proxy.progress());
45
+ }));
46
+ }
47
+ //# sourceMappingURL=sort-vertical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["scenegraph/group-creater/progress/update-position/sort-vertical.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,UAAgB,YAAY,CAAC,KAAiB;;QAClD,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE;YAClE,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAEzD,MAAM,SAAS,GAAG,KAAK,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACzD,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;aAC7B;SACF;QAGD,IAAI,UAAU,CAAC;QACf,IAAI,aAAa,CAAC;QAClB,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;YAC3C,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC5B,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;SAC9B;aAAM;YACL,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YACvF,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;SAC9F;QAGD,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAE1D,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QAEnD,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;YAC3C,aAAa,CACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,UAAU,EACV,aAAa,EACb,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACzF,CAAC;SACH;QACD,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;QACpC,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAepH,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;YAC3C,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;SACxB;IACH,CAAC;CAAA","file":"sort-vertical.js","sourcesContent":["import { computeRowsHeight } from '../../../layout/compute-row-height';\nimport type { SceneProxy } from '../proxy';\nimport { updateRowContent } from './dynamic-set-y';\nimport { updateAutoRow } from './update-auto-row';\n\nexport async function sortVertical(proxy: SceneProxy) {\n for (let col = proxy.bodyLeftCol; col <= proxy.bodyRightCol; col++) {\n for (let row = proxy.rowStart; row <= proxy.rowEnd; row++) {\n // const cellGroup = proxy.table.scenegraph.getCell(col, row);\n const cellGroup = proxy.highPerformanceGetCell(col, row);\n cellGroup.needUpdate = true;\n }\n }\n\n // 更新同步范围\n let syncTopRow;\n let syncBottomRow;\n if (proxy.table.heightMode === 'autoHeight') {\n syncTopRow = proxy.rowStart;\n syncBottomRow = proxy.rowEnd;\n } else {\n syncTopRow = Math.max(proxy.bodyTopRow, proxy.screenTopRow - proxy.screenRowCount * 1);\n syncBottomRow = Math.min(proxy.bodyBottomRow, proxy.screenTopRow + proxy.screenRowCount * 2);\n }\n // console.log('sort更新同步范围', syncTopRow, syncBottomRow);\n\n computeRowsHeight(proxy.table, syncTopRow, syncBottomRow);\n\n updateRowContent(syncTopRow, syncBottomRow, proxy);\n\n if (proxy.table.heightMode === 'autoHeight') {\n updateAutoRow(\n proxy.bodyLeftCol, // colStart\n proxy.bodyRightCol, // colEnd\n syncTopRow, // rowStart\n syncBottomRow, // rowEnd\n proxy.table,\n proxy.rowEnd > proxy.bodyBottomRow - (proxy.rowEnd - proxy.rowStart + 1) ? 'down' : 'up' // 跳转到底部时,从下向上对齐\n );\n }\n proxy.rowUpdatePos = proxy.rowStart;\n proxy.rowUpdateDirection = proxy.rowEnd > proxy.bodyBottomRow - (proxy.rowEnd - proxy.rowStart + 1) ? 'down' : 'up';\n\n // if (\n // proxy.rowEnd === proxy.table.scenegraph.proxy.bodyBottomRow &&\n // proxy.rowStart === proxy.table.scenegraph.proxy.bodyTopRow\n // ) {\n // // 全量更新,do nothing\n // } else if (proxy.rowEnd === proxy.table.scenegraph.proxy.bodyBottomRow) {\n // const totalHeight = proxy.table.getAllRowsHeight();\n // const top = totalHeight - proxy.table.scenegraph.height;\n // proxy.updateBody(top);\n // } else if (proxy.rowStart === proxy.table.scenegraph.proxy.bodyTopRow) {\n // proxy.updateBody(0);\n // }\n\n proxy.table.scenegraph.updateNextFrame();\n if (proxy.table.heightMode !== 'autoHeight') {\n await proxy.progress();\n }\n}\n"]}
@@ -166,7 +166,7 @@ function computeTextWidth(col, row, table) {
166
166
  const cellValue = table.getCellValue(col, row), actStyle = table._getCellStyle(col, row);
167
167
  let iconWidth = 0;
168
168
  const define = table.getBodyColumnDefine(col, row);
169
- if ("body" !== table.getCellType(col, row) || (!!(null == define ? void 0 : define.icon) || !!(null == define ? void 0 : define.tree))) {
169
+ if ("body" !== table.getCellLocation(col, row) || (!!(null == define ? void 0 : define.icon) || !!(null == define ? void 0 : define.tree))) {
170
170
  const icons = table.getCellIcons(col, row);
171
171
  null == icons || icons.forEach((icon => {
172
172
  var _a, _b, _c;