@visactor/vtable 1.14.4-alpha.4 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/cjs/ListTable.d.ts +2 -2
  2. package/cjs/ListTable.js +1 -1
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotTable.js +5 -5
  5. package/cjs/PivotTable.js.map +1 -1
  6. package/cjs/components/empty-tip/empty-tip.js +4 -2
  7. package/cjs/components/empty-tip/empty-tip.js.map +1 -1
  8. package/cjs/core/BaseTable.d.ts +4 -0
  9. package/cjs/core/BaseTable.js +51 -21
  10. package/cjs/core/BaseTable.js.map +1 -1
  11. package/cjs/core/record-helper.d.ts +1 -1
  12. package/cjs/core/record-helper.js.map +1 -1
  13. package/cjs/core/tableHelper.d.ts +1 -0
  14. package/cjs/core/tableHelper.js +13 -2
  15. package/cjs/core/tableHelper.js.map +1 -1
  16. package/cjs/core/utils/get-custom-merge-cell-func.d.ts +2 -0
  17. package/cjs/core/utils/get-custom-merge-cell-func.js +14 -0
  18. package/cjs/core/utils/get-custom-merge-cell-func.js.map +1 -0
  19. package/cjs/data/CachedDataSource.js +8 -2
  20. package/cjs/data/CachedDataSource.js.map +1 -1
  21. package/cjs/data/DataSource.d.ts +3 -3
  22. package/cjs/data/DataSource.js +29 -25
  23. package/cjs/data/DataSource.js.map +1 -1
  24. package/cjs/dataset/dataset-pivot-table.d.ts +1 -1
  25. package/cjs/dataset/dataset-pivot-table.js +11 -11
  26. package/cjs/dataset/dataset-pivot-table.js.map +1 -1
  27. package/cjs/dataset/dataset.d.ts +1 -15
  28. package/cjs/dataset/dataset.js +78 -75
  29. package/cjs/dataset/dataset.js.map +1 -1
  30. package/cjs/event/list-table/checkbox.js +15 -3
  31. package/cjs/event/list-table/checkbox.js.map +1 -1
  32. package/cjs/event/listener/table-group.js.map +1 -1
  33. package/cjs/header-helper/style.js +2 -1
  34. package/cjs/index.d.ts +2 -1
  35. package/cjs/index.js +13 -4
  36. package/cjs/index.js.map +1 -1
  37. package/cjs/layout/index.js +1 -2
  38. package/cjs/layout/pivot-header-layout.js +3 -1
  39. package/cjs/layout/pivot-header-layout.js.map +1 -1
  40. package/cjs/layout/simple-header-layout.d.ts +1 -1
  41. package/cjs/layout/simple-header-layout.js +3 -1
  42. package/cjs/layout/simple-header-layout.js.map +1 -1
  43. package/cjs/plugins/chartModules.js +1 -1
  44. package/cjs/register.d.ts +8 -0
  45. package/cjs/register.js +9 -4
  46. package/cjs/register.js.map +1 -1
  47. package/cjs/scenegraph/component/menu.d.ts +41 -0
  48. package/cjs/scenegraph/graphic/icon.js +1 -1
  49. package/cjs/scenegraph/graphic/icon.js.map +1 -1
  50. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +1 -1
  51. package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  52. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  53. package/cjs/scenegraph/layout/frozen-react.js +9 -4
  54. package/cjs/scenegraph/layout/frozen-react.js.map +1 -1
  55. package/cjs/scenegraph/utils/text-icon-layout.js +0 -1
  56. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  57. package/cjs/scenegraph/utils/text-measure.d.ts +38 -0
  58. package/cjs/scenegraph/utils/text-measure.js +12 -4
  59. package/cjs/scenegraph/utils/text-measure.js.map +1 -1
  60. package/cjs/state/checkbox/checkbox.js +1 -1
  61. package/cjs/state/checkbox/checkbox.js.map +1 -1
  62. package/cjs/state/state.d.ts +1 -1
  63. package/cjs/state/state.js +10 -8
  64. package/cjs/state/state.js.map +1 -1
  65. package/cjs/ts-types/base-table.d.ts +10 -2
  66. package/cjs/ts-types/base-table.js.map +1 -1
  67. package/cjs/ts-types/component/empty-tip.d.ts +1 -0
  68. package/cjs/ts-types/component/empty-tip.js.map +1 -1
  69. package/cjs/{dataset/statistics-helper.d.ts → ts-types/dataset/aggregation.d.ts} +24 -10
  70. package/cjs/{dataset/statistics-helper.js → ts-types/dataset/aggregation.js} +49 -49
  71. package/cjs/ts-types/dataset/aggregation.js.map +1 -0
  72. package/cjs/ts-types/dataset/index.d.ts +1 -0
  73. package/cjs/ts-types/dataset/index.js +21 -0
  74. package/cjs/ts-types/dataset/index.js.map +1 -0
  75. package/cjs/ts-types/index.d.ts +1 -0
  76. package/cjs/ts-types/index.js +1 -1
  77. package/cjs/ts-types/index.js.map +1 -1
  78. package/cjs/ts-types/list-table/layout-map/api.d.ts +1 -1
  79. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  80. package/cjs/ts-types/new-data-set.d.ts +3 -2
  81. package/cjs/ts-types/new-data-set.js.map +1 -1
  82. package/cjs/ts-types/table-engine.d.ts +4 -2
  83. package/cjs/ts-types/table-engine.js.map +1 -1
  84. package/cjs/vrender.js.map +1 -1
  85. package/dist/vtable.js +7955 -6959
  86. package/dist/vtable.min.js +2 -2
  87. package/es/ListTable.d.ts +2 -2
  88. package/es/ListTable.js +1 -1
  89. package/es/ListTable.js.map +1 -1
  90. package/es/PivotTable.js +5 -5
  91. package/es/PivotTable.js.map +1 -1
  92. package/es/components/empty-tip/empty-tip.js +4 -3
  93. package/es/components/empty-tip/empty-tip.js.map +1 -1
  94. package/es/core/BaseTable.d.ts +4 -0
  95. package/es/core/BaseTable.js +55 -21
  96. package/es/core/BaseTable.js.map +1 -1
  97. package/es/core/record-helper.d.ts +1 -1
  98. package/es/core/record-helper.js.map +1 -1
  99. package/es/core/tableHelper.d.ts +1 -0
  100. package/es/core/tableHelper.js +10 -0
  101. package/es/core/tableHelper.js.map +1 -1
  102. package/es/core/utils/get-custom-merge-cell-func.d.ts +2 -0
  103. package/es/core/utils/get-custom-merge-cell-func.js +6 -0
  104. package/es/core/utils/get-custom-merge-cell-func.js.map +1 -0
  105. package/es/data/CachedDataSource.js +3 -1
  106. package/es/data/CachedDataSource.js.map +1 -1
  107. package/es/data/DataSource.d.ts +3 -3
  108. package/es/data/DataSource.js +20 -16
  109. package/es/data/DataSource.js.map +1 -1
  110. package/es/dataset/dataset-pivot-table.d.ts +1 -1
  111. package/es/dataset/dataset-pivot-table.js +2 -2
  112. package/es/dataset/dataset-pivot-table.js.map +1 -1
  113. package/es/dataset/dataset.d.ts +1 -15
  114. package/es/dataset/dataset.js +68 -65
  115. package/es/dataset/dataset.js.map +1 -1
  116. package/es/event/list-table/checkbox.js +15 -2
  117. package/es/event/list-table/checkbox.js.map +1 -1
  118. package/es/event/listener/table-group.js.map +1 -1
  119. package/es/header-helper/style.js +2 -1
  120. package/es/index.d.ts +2 -1
  121. package/es/index.js +3 -1
  122. package/es/index.js.map +1 -1
  123. package/es/layout/index.js +1 -2
  124. package/es/layout/pivot-header-layout.js +1 -1
  125. package/es/layout/pivot-header-layout.js.map +1 -1
  126. package/es/layout/simple-header-layout.d.ts +1 -1
  127. package/es/layout/simple-header-layout.js +3 -1
  128. package/es/layout/simple-header-layout.js.map +1 -1
  129. package/es/plugins/chartModules.js +1 -1
  130. package/es/register.d.ts +8 -0
  131. package/es/register.js +8 -1
  132. package/es/register.js.map +1 -1
  133. package/es/scenegraph/component/menu.d.ts +41 -0
  134. package/es/scenegraph/graphic/icon.js +1 -1
  135. package/es/scenegraph/graphic/icon.js.map +1 -1
  136. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +1 -1
  137. package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
  138. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  139. package/es/scenegraph/layout/frozen-react.js +9 -4
  140. package/es/scenegraph/layout/frozen-react.js.map +1 -1
  141. package/es/scenegraph/utils/text-icon-layout.js +0 -1
  142. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  143. package/es/scenegraph/utils/text-measure.d.ts +38 -0
  144. package/es/scenegraph/utils/text-measure.js +12 -4
  145. package/es/scenegraph/utils/text-measure.js.map +1 -1
  146. package/es/state/checkbox/checkbox.js +1 -1
  147. package/es/state/checkbox/checkbox.js.map +1 -1
  148. package/es/state/state.d.ts +1 -1
  149. package/es/state/state.js +10 -8
  150. package/es/state/state.js.map +1 -1
  151. package/es/ts-types/base-table.d.ts +10 -2
  152. package/es/ts-types/base-table.js.map +1 -1
  153. package/es/ts-types/component/empty-tip.d.ts +1 -0
  154. package/es/ts-types/component/empty-tip.js.map +1 -1
  155. package/es/{dataset/statistics-helper.d.ts → ts-types/dataset/aggregation.d.ts} +24 -10
  156. package/es/{dataset/statistics-helper.js → ts-types/dataset/aggregation.js} +31 -31
  157. package/es/ts-types/dataset/aggregation.js.map +1 -0
  158. package/es/ts-types/dataset/index.d.ts +1 -0
  159. package/es/ts-types/dataset/index.js +2 -0
  160. package/es/ts-types/dataset/index.js.map +1 -0
  161. package/es/ts-types/index.d.ts +1 -0
  162. package/es/ts-types/index.js +2 -0
  163. package/es/ts-types/index.js.map +1 -1
  164. package/es/ts-types/list-table/layout-map/api.d.ts +1 -1
  165. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  166. package/es/ts-types/new-data-set.d.ts +3 -2
  167. package/es/ts-types/new-data-set.js.map +1 -1
  168. package/es/ts-types/table-engine.d.ts +4 -2
  169. package/es/ts-types/table-engine.js.map +1 -1
  170. package/es/vrender.js.map +1 -1
  171. package/package.json +10 -8
  172. package/cjs/dataset/statistics-helper.js.map +0 -1
  173. package/es/dataset/statistics-helper.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ import type { IGroup } from './../../vrender';
2
+ import type { MenuListItem } from '../../ts-types';
3
+ import { Group } from '../graphic/group';
4
+ import type { BaseTableAPI } from '../../ts-types/base-table';
5
+ export declare enum MenuType {
6
+ 'dropDown' = "dropDown",
7
+ 'contextmenu' = "contextmenu",
8
+ 'custom' = "custom"
9
+ }
10
+ type MenuInfo = MenuListItem[];
11
+ export declare class MenuHandler {
12
+ private _table;
13
+ private _menuInstance;
14
+ private _menuInfo;
15
+ constructor(table: BaseTableAPI);
16
+ bindTableComponent(componentGroup: Group): void;
17
+ release(): void;
18
+ attach(x: number, y: number, col: number, row: number, type: MenuType, menuInfo?: MenuInfo): void;
19
+ updateMenuInfo(col: number, row: number, type: MenuType, menuInfo: MenuListItem[], highlightIndex: number): void;
20
+ checkDropDownMenuChange(col: number, row: number): boolean;
21
+ checkContextMenuChange(x: number, y: number): boolean;
22
+ updateMenuInstance(menuInfo: MenuInfo, highlightIndex: number): void;
23
+ updatePosition(x: number, y: number): void;
24
+ addToScene(): void;
25
+ detach(): void;
26
+ getMenuInfo(col: number, row: number, type: MenuType): {
27
+ menuInfo: MenuListItem[];
28
+ highlightIndex: number;
29
+ };
30
+ bindEvent(): void;
31
+ getEventInfo(target: IGroup): {
32
+ col: number;
33
+ row: number;
34
+ menuKey: string;
35
+ dropDownIndex: number;
36
+ text: string;
37
+ highlight: boolean;
38
+ };
39
+ get bounds(): import("@visactor/vutils").IBounds;
40
+ }
41
+ export {};
@@ -13,7 +13,7 @@ class Icon extends vrender_1.Image {
13
13
  this.attribute.isGif && this.attribute.gif && this.loadGif();
14
14
  }
15
15
  loadGif() {
16
- this.playing = !1, vrender_1.ResourceLoader.GetFile(this.attribute.gif + "?role=gif", "arrayBuffer").then((res => {
16
+ this.playing = !1, vrender_1.ResourceLoader.GetFile(this.attribute.gif + "?role=gif" + `&radom=${Math.random()}`, "arrayBuffer").then((res => {
17
17
  const gif = (0, gifuct_js_1.parseGIF)(res), frames = (0, gifuct_js_1.decompressFrames)(gif, !0);
18
18
  this.renderGIF(frames), this.resources.set(this.attribute.image, {
19
19
  state: "success",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/graphic/icon.ts"],"names":[],"mappings":"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","file":"icon.js","sourcesContent":["import type { IImageGraphicAttribute, ISetAttributeContext } from './../../vrender';\nimport { Image, ResourceLoader } from './../../vrender';\nimport type { IIconBase } from '../../ts-types';\nimport type { ParsedFrame } from 'gifuct-js';\nimport { decompressFrames, parseGIF } from 'gifuct-js';\n\nexport interface IIconGraphicAttribute extends IImageGraphicAttribute {\n backgroundWidth?: number;\n backgroundHeight?: number;\n backgroundColor?: string;\n visibleTime?: string;\n funcType?: string;\n hoverImage?: string | HTMLImageElement | HTMLCanvasElement;\n originImage?: string | HTMLImageElement | HTMLCanvasElement;\n // margin?: [number, number, number, number];\n marginLeft?: number;\n marginRight?: number;\n shape?: 'circle' | 'square';\n interactive?: boolean;\n}\n\nexport class Icon extends Image {\n declare attribute: IIconGraphicAttribute;\n role?: string;\n tooltip?: IIconBase['tooltip'];\n frameImageData?: ImageData;\n tempCanvas?: HTMLCanvasElement;\n tempCtx?: CanvasRenderingContext2D;\n gifCanvas?: HTMLCanvasElement;\n gifCtx?: CanvasRenderingContext2D;\n loadedFrames?: ParsedFrame[];\n frameIndex?: number;\n playing?: boolean;\n lastTime?: number;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(params: IIconGraphicAttribute) {\n super(params);\n\n if (this.attribute.visibleTime === 'mouseenter_cell' || this.attribute.visibleTime === 'click_cell') {\n this.attribute.opacity = 0;\n }\n\n if (this.attribute.hoverImage) {\n this.attribute.originImage = this.attribute.image;\n }\n\n if ((this.attribute as any).isGif && (this.attribute as any).gif) {\n this.loadGif();\n }\n\n // if (this.attribute.margin) {\n // this.attribute.boundsPadding = this.attribute.margin;\n // this.attribute.dx = this.attribute.margin[3] ?? 0;\n // }\n }\n\n loadGif() {\n this.playing = false;\n ResourceLoader.GetFile((this.attribute as any).gif + '?role=gif', 'arrayBuffer') // ?role=gif: hack for ResourceLoader cache\n .then((res: ArrayBuffer) => {\n const gif = parseGIF(res);\n const frames = decompressFrames(gif, true);\n this.renderGIF(frames);\n\n // hack for image resource\n (this as any).resources.set((this.attribute as any).image, {\n state: 'success',\n data: this.gifCanvas\n });\n })\n .catch((e: any) => {\n console.error('Gif load error: ', e);\n });\n }\n\n get backgroundWidth(): number {\n return this.attribute.backgroundWidth ?? this.attribute.width ?? 0;\n }\n\n get backgroundHeight(): number {\n return this.attribute.backgroundHeight ?? this.attribute.height ?? 0;\n }\n\n // protected tryUpdateAABBBounds() {\n // super.tryUpdateAABBBounds();\n // // 扩大范围\n // const { width, height } = this.attribute;\n // const { backgroundWidth = width, backgroundHeight = height } = this.attribute;\n // const expandX = (backgroundWidth - width) / 2;\n // const expandY = (backgroundHeight - height) / 2;\n // this._AABBBounds.expand([expandY, expandX, expandY, expandX]);\n\n // return this._AABBBounds;\n // }\n\n renderGIF(frames: ParsedFrame[]) {\n this.loadedFrames = frames;\n this.frameIndex = 0;\n\n if (!this.tempCanvas) {\n this.tempCanvas = document.createElement('canvas');\n this.tempCtx = this.tempCanvas.getContext('2d');\n }\n\n if (!this.gifCanvas) {\n this.gifCanvas = document.createElement('canvas');\n this.gifCtx = this.gifCanvas.getContext('2d');\n }\n\n this.gifCanvas.width = frames[0].dims.width;\n this.gifCanvas.height = frames[0].dims.height;\n\n this.playing = true;\n this.lastTime = new Date().getTime();\n this.animate().to({}, 1000, 'linear').loop(Infinity);\n }\n\n renderFrame(context: CanvasRenderingContext2D, x: number, y: number) {\n // get the frame\n const frame = this.loadedFrames[this.frameIndex || 0];\n\n if (frame.disposalType === 2) {\n this.gifCtx.clearRect(0, 0, this.gifCanvas.width, this.gifCanvas.height);\n }\n\n // draw the patch\n this.drawPatch(frame);\n\n // perform manipulation\n this.manipulate(context, x, y);\n\n // update the frame index\n // this.frameIndex++;\n const diff = new Date().getTime() - this.lastTime;\n if (frame.delay < diff) {\n // return;\n this.frameIndex++;\n this.lastTime = new Date().getTime();\n }\n if (this.frameIndex >= this.loadedFrames.length) {\n this.frameIndex = 0;\n }\n }\n\n drawPatch(frame: ParsedFrame) {\n const dims = frame.dims;\n\n if (\n !this.frameImageData ||\n dims.width !== this.frameImageData.width ||\n dims.height !== this.frameImageData.height\n ) {\n this.tempCanvas.width = dims.width;\n this.tempCanvas.height = dims.height;\n this.frameImageData = this.tempCtx.createImageData(dims.width, dims.height);\n }\n\n // set the patch data as an override\n this.frameImageData.data.set(frame.patch);\n\n // draw the patch back over the canvas\n this.tempCtx.putImageData(this.frameImageData, 0, 0);\n\n // gifCtx.drawImage(tempCanvas, dims.left, dims.top)\n // this.attribute.image = this.tempCanvas;\n\n this.gifCtx.drawImage(this.tempCanvas, dims.left, dims.top);\n }\n\n manipulate(context: CanvasRenderingContext2D, x: number, y: number) {\n context.drawImage(\n this.gifCanvas,\n 0,\n 0,\n this.gifCanvas.width,\n this.gifCanvas.height,\n x,\n y,\n this.attribute.width,\n this.attribute.height\n );\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void {\n super.setAttribute(key, value, forceUpdateTag, context);\n if (key === 'gif') {\n this.loadGif();\n }\n }\n\n setAttributes(\n params: Partial<IIconGraphicAttribute>,\n forceUpdateTag?: boolean,\n context?: ISetAttributeContext\n ): void {\n super.setAttributes(params, forceUpdateTag, context);\n if ((params as any).gif) {\n this.loadGif();\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/graphic/icon.ts"],"names":[],"mappings":";;;AACA,6CAAwD;AAGxD,yCAAuD;AAiBvD,MAAa,IAAK,SAAQ,eAAK;IAe7B,YAAY,MAA6B;QACvC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,iBAAiB,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,YAAY,EAAE;YACnG,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SACnD;QAED,IAAK,IAAI,CAAC,SAAiB,CAAC,KAAK,IAAK,IAAI,CAAC,SAAiB,CAAC,GAAG,EAAE;YAChE,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IAMH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,wBAAc,CAAC,OAAO,CAAE,IAAI,CAAC,SAAiB,CAAC,GAAG,GAAG,WAAW,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC;aACzG,IAAI,CAAC,CAAC,GAAgB,EAAE,EAAE;YACzB,MAAM,GAAG,GAAG,IAAA,oBAAQ,EAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAA,4BAAgB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAGtB,IAAY,CAAC,SAAS,CAAC,GAAG,CAAE,IAAI,CAAC,SAAiB,CAAC,KAAK,EAAE;gBACzD,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,IAAI,CAAC,SAAS;aACrB,CAAC,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,eAAe;;QACjB,OAAO,MAAA,MAAA,IAAI,CAAC,SAAS,CAAC,eAAe,mCAAI,IAAI,CAAC,SAAS,CAAC,KAAK,mCAAI,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,gBAAgB;;QAClB,OAAO,MAAA,MAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,mCAAI,IAAI,CAAC,SAAS,CAAC,MAAM,mCAAI,CAAC,CAAC;IACvE,CAAC;IAcD,SAAS,CAAC,MAAqB;QAC7B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAE9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,OAAiC,EAAE,CAAS,EAAE,CAAS;QAEjE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAEtD,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SAC1E;QAGD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAGtB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAI/B,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE;YAEtB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAC/C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACrB;IACH,CAAC;IAED,SAAS,CAAC,KAAkB;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAExB,IACE,CAAC,IAAI,CAAC,cAAc;YACpB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK;YACxC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAC1C;YACA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7E;QAGD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAG1C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAKrD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,UAAU,CAAC,OAAiC,EAAE,CAAS,EAAE,CAAS;QAChE,OAAO,CAAC,SAAS,CACf,IAAI,CAAC,SAAS,EACd,CAAC,EACD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB,IAAI,CAAC,SAAS,CAAC,MAAM,EACrB,CAAC,EACD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CACtB,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,KAAU,EAAE,cAAwB,EAAE,OAA8B;QAC5F,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,GAAG,KAAK,KAAK,EAAE;YACjB,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAED,aAAa,CACX,MAAsC,EACtC,cAAwB,EACxB,OAA8B;QAE9B,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACrD,IAAK,MAAc,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;CACF;AApLD,oBAoLC","file":"icon.js","sourcesContent":["import type { IImageGraphicAttribute, ISetAttributeContext } from './../../vrender';\nimport { Image, ResourceLoader } from './../../vrender';\nimport type { IIconBase } from '../../ts-types';\nimport type { ParsedFrame } from 'gifuct-js';\nimport { decompressFrames, parseGIF } from 'gifuct-js';\n\nexport interface IIconGraphicAttribute extends IImageGraphicAttribute {\n backgroundWidth?: number;\n backgroundHeight?: number;\n backgroundColor?: string;\n visibleTime?: string;\n funcType?: string;\n hoverImage?: string | HTMLImageElement | HTMLCanvasElement;\n originImage?: string | HTMLImageElement | HTMLCanvasElement;\n // margin?: [number, number, number, number];\n marginLeft?: number;\n marginRight?: number;\n shape?: 'circle' | 'square';\n interactive?: boolean;\n}\n\nexport class Icon extends Image {\n declare attribute: IIconGraphicAttribute;\n role?: string;\n tooltip?: IIconBase['tooltip'];\n frameImageData?: ImageData;\n tempCanvas?: HTMLCanvasElement;\n tempCtx?: CanvasRenderingContext2D;\n gifCanvas?: HTMLCanvasElement;\n gifCtx?: CanvasRenderingContext2D;\n loadedFrames?: ParsedFrame[];\n frameIndex?: number;\n playing?: boolean;\n lastTime?: number;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(params: IIconGraphicAttribute) {\n super(params);\n\n if (this.attribute.visibleTime === 'mouseenter_cell' || this.attribute.visibleTime === 'click_cell') {\n this.attribute.opacity = 0;\n }\n\n if (this.attribute.hoverImage) {\n this.attribute.originImage = this.attribute.image;\n }\n\n if ((this.attribute as any).isGif && (this.attribute as any).gif) {\n this.loadGif();\n }\n\n // if (this.attribute.margin) {\n // this.attribute.boundsPadding = this.attribute.margin;\n // this.attribute.dx = this.attribute.margin[3] ?? 0;\n // }\n }\n\n loadGif() {\n this.playing = false;\n ResourceLoader.GetFile((this.attribute as any).gif + '?role=gif' + `&radom=${Math.random()}`, 'arrayBuffer') // ?role=gif: hack for ResourceLoader cache\n .then((res: ArrayBuffer) => {\n const gif = parseGIF(res);\n const frames = decompressFrames(gif, true);\n this.renderGIF(frames);\n\n // hack for image resource\n (this as any).resources.set((this.attribute as any).image, {\n state: 'success',\n data: this.gifCanvas\n });\n })\n .catch((e: any) => {\n console.error('Gif load error: ', e);\n });\n }\n\n get backgroundWidth(): number {\n return this.attribute.backgroundWidth ?? this.attribute.width ?? 0;\n }\n\n get backgroundHeight(): number {\n return this.attribute.backgroundHeight ?? this.attribute.height ?? 0;\n }\n\n // protected tryUpdateAABBBounds() {\n // super.tryUpdateAABBBounds();\n // // 扩大范围\n // const { width, height } = this.attribute;\n // const { backgroundWidth = width, backgroundHeight = height } = this.attribute;\n // const expandX = (backgroundWidth - width) / 2;\n // const expandY = (backgroundHeight - height) / 2;\n // this._AABBBounds.expand([expandY, expandX, expandY, expandX]);\n\n // return this._AABBBounds;\n // }\n\n renderGIF(frames: ParsedFrame[]) {\n this.loadedFrames = frames;\n this.frameIndex = 0;\n\n if (!this.tempCanvas) {\n this.tempCanvas = document.createElement('canvas');\n this.tempCtx = this.tempCanvas.getContext('2d');\n }\n\n if (!this.gifCanvas) {\n this.gifCanvas = document.createElement('canvas');\n this.gifCtx = this.gifCanvas.getContext('2d');\n }\n\n this.gifCanvas.width = frames[0].dims.width;\n this.gifCanvas.height = frames[0].dims.height;\n\n this.playing = true;\n this.lastTime = new Date().getTime();\n this.animate().to({}, 1000, 'linear').loop(Infinity);\n }\n\n renderFrame(context: CanvasRenderingContext2D, x: number, y: number) {\n // get the frame\n const frame = this.loadedFrames[this.frameIndex || 0];\n\n if (frame.disposalType === 2) {\n this.gifCtx.clearRect(0, 0, this.gifCanvas.width, this.gifCanvas.height);\n }\n\n // draw the patch\n this.drawPatch(frame);\n\n // perform manipulation\n this.manipulate(context, x, y);\n\n // update the frame index\n // this.frameIndex++;\n const diff = new Date().getTime() - this.lastTime;\n if (frame.delay < diff) {\n // return;\n this.frameIndex++;\n this.lastTime = new Date().getTime();\n }\n if (this.frameIndex >= this.loadedFrames.length) {\n this.frameIndex = 0;\n }\n }\n\n drawPatch(frame: ParsedFrame) {\n const dims = frame.dims;\n\n if (\n !this.frameImageData ||\n dims.width !== this.frameImageData.width ||\n dims.height !== this.frameImageData.height\n ) {\n this.tempCanvas.width = dims.width;\n this.tempCanvas.height = dims.height;\n this.frameImageData = this.tempCtx.createImageData(dims.width, dims.height);\n }\n\n // set the patch data as an override\n this.frameImageData.data.set(frame.patch);\n\n // draw the patch back over the canvas\n this.tempCtx.putImageData(this.frameImageData, 0, 0);\n\n // gifCtx.drawImage(tempCanvas, dims.left, dims.top)\n // this.attribute.image = this.tempCanvas;\n\n this.gifCtx.drawImage(this.tempCanvas, dims.left, dims.top);\n }\n\n manipulate(context: CanvasRenderingContext2D, x: number, y: number) {\n context.drawImage(\n this.gifCanvas,\n 0,\n 0,\n this.gifCanvas.width,\n this.gifCanvas.height,\n x,\n y,\n this.attribute.width,\n this.attribute.height\n );\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void {\n super.setAttribute(key, value, forceUpdateTag, context);\n if (key === 'gif') {\n this.loadGif();\n }\n }\n\n setAttributes(\n params: Partial<IIconGraphicAttribute>,\n forceUpdateTag?: boolean,\n context?: ISetAttributeContext\n ): void {\n super.setAttributes(params, forceUpdateTag, context);\n if ((params as any).gif) {\n this.loadGif();\n }\n }\n}\n"]}
@@ -26,7 +26,7 @@ function createGroupForFirstScreen(cornerHeaderGroup, colHeaderGroup, rowHeaderG
26
26
  }), (0, column_1.createColGroup)(cornerHeaderGroup, xOrigin, yOrigin, 0, table.frozenColCount - 1, 0, table.frozenRowCount - 1, table.isListTable() ? "columnHeader" : "cornerHeader", table),
27
27
  distCol - table.rightFrozenColCount >= table.frozenColCount && (0, column_1.createColGroup)(colHeaderGroup, xOrigin, yOrigin, table.frozenColCount, distCol - table.rightFrozenColCount, 0, table.frozenRowCount - 1, "columnHeader", table),
28
28
  table.frozenColCount > 0 && (table.leftRowSeriesNumberCount > 0 && (0, column_1.createColGroup)(rowHeaderGroup, xOrigin, yOrigin, 0, table.leftRowSeriesNumberCount - 1, table.frozenRowCount, distRow - table.bottomFrozenRowCount, "rowHeader", table),
29
- table.rowHeaderLevelCount > 0 && (0, column_1.createColGroup)(rowHeaderGroup, xOrigin, yOrigin, table.leftRowSeriesNumberCount, table.leftRowSeriesNumberCount + table.rowHeaderLevelCount - 1, table.frozenRowCount, distRow - table.bottomFrozenRowCount, "rowHeader", table),
29
+ table.frozenColCount > table.leftRowSeriesNumberCount && (0, column_1.createColGroup)(rowHeaderGroup, xOrigin, yOrigin, table.leftRowSeriesNumberCount, Math.min(table.frozenColCount - 1, table.rowHeaderLevelCount + table.leftRowSeriesNumberCount - 1), table.frozenRowCount, distRow - table.bottomFrozenRowCount, "rowHeader", table),
30
30
  table.frozenColCount > table.rowHeaderLevelCount + table.leftRowSeriesNumberCount && (0,
31
31
  column_1.createColGroup)(rowHeaderGroup, xOrigin, yOrigin, table.rowHeaderLevelCount + table.leftRowSeriesNumberCount, table.frozenColCount - 1, table.frozenRowCount, distRow - table.bottomFrozenRowCount, "body", table)),
32
32
  table.bottomFrozenRowCount > 0 && (table.frozenColCount > 0 && (table.leftRowSeriesNumberCount > 0 && (0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/group-creater/progress/create-group-for-first-screen.ts"],"names":[],"mappings":"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","file":"create-group-for-first-screen.js","sourcesContent":["import type { ListTable } from '../../../ListTable';\nimport { ListTableAPI } from '../../../ts-types';\nimport type { Group } from '../../graphic/group';\nimport { computeColsWidth } from '../../layout/compute-col-width';\nimport { computeRowsHeight } from '../../layout/compute-row-height';\nimport { createColGroup } from '../column';\nimport type { SceneProxy } from './proxy';\n\nexport function 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 proxy: SceneProxy\n) {\n const { table } = proxy;\n const { leftBottomCornerGroup, rightTopCornerGroup, rightBottomCornerGroup } = table.scenegraph;\n\n // compute parameters\n proxy.setParamsForRow();\n proxy.setParamsForColumn();\n\n let distCol;\n let distRow;\n let distColForCompute;\n let distRowForCompute;\n if (\n table.widthMode === 'adaptive' ||\n (table.options.autoWrapText && (table.heightMode === 'adaptive' || table.isAutoRowHeight()))\n ) {\n // distCol = table.colCount - 1;\n // proxy.colEnd = distCol;\n\n distColForCompute = table.colCount - 1;\n distCol = Math.min(proxy.firstScreenColLimit - 1, table.colCount - 1);\n } else {\n distCol = Math.min(proxy.firstScreenColLimit - 1, table.colCount - 1);\n }\n if (table.heightMode === 'adaptive') {\n // distRow = table.rowCount - 1;\n // proxy.rowEnd = distRow;\n\n distRowForCompute = table.rowCount - 1;\n distRow = Math.min(proxy.firstScreenRowLimit - 1, table.rowCount - 1);\n } else {\n distRow = Math.min(proxy.firstScreenRowLimit - 1, table.rowCount - 1);\n }\n if (table.internalProps._widthResizedColMap.size === 0) {\n // compute colums width in first screen\n computeColsWidth(table, 0, distColForCompute ?? distCol);\n }\n\n if (table.internalProps._heightResizedRowMap.size === 0) {\n // compute rows height in first screen\n computeRowsHeight(table, 0, distRowForCompute ?? distRow);\n }\n\n if (distCol < table.colCount - table.rightFrozenColCount) {\n // compute right frozen row height\n computeColsWidth(table, table.colCount - table.rightFrozenColCount, table.colCount - 1);\n }\n if (distRow < table.rowCount - table.bottomFrozenRowCount) {\n // compute bottom frozen row height\n computeRowsHeight(table, table.rowCount - table.bottomFrozenRowCount, table.rowCount - 1);\n }\n\n // update colHeaderGroup rowHeaderGroup bodyGroup position\n table.scenegraph.colHeaderGroup.setAttribute('x', table.getFrozenColsWidth());\n table.scenegraph.rowHeaderGroup.setAttribute('y', table.getFrozenRowsHeight());\n table.scenegraph.bottomFrozenGroup.setAttribute('x', table.getFrozenColsWidth());\n table.scenegraph.rightFrozenGroup.setAttribute('y', table.getFrozenRowsHeight());\n table.scenegraph.bodyGroup.setAttributes({\n x: table.getFrozenColsWidth(),\n y: table.getFrozenRowsHeight()\n });\n\n // create cornerHeaderGroup\n createColGroup(\n cornerHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.frozenColCount - 1, // colEnd\n 0, // rowStart\n table.frozenRowCount - 1, // rowEnd\n table.isListTable() ? 'columnHeader' : 'cornerHeader', // CellType\n table\n );\n\n // create colHeaderGroup\n distCol - table.rightFrozenColCount >= table.frozenColCount &&\n createColGroup(\n colHeaderGroup,\n xOrigin,\n yOrigin,\n table.frozenColCount, // colStart\n // Math.min(proxy.firstScreenColLimit, table.colCount - 1 - table.rightFrozenColCount), // colEnd\n distCol - table.rightFrozenColCount,\n 0, // rowStart\n table.frozenRowCount - 1, // rowEnd\n 'columnHeader', // isHeader\n table\n );\n\n // create rowHeaderGroup\n if (table.frozenColCount > 0) {\n if (table.leftRowSeriesNumberCount > 0) {\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.leftRowSeriesNumberCount - 1, // colEnd\n table.frozenRowCount, // rowStart\n // Math.min(proxy.firstScreenRowLimit, table.rowCount - 1 - table.bottomFrozenRowCount), // rowEnd\n distRow - table.bottomFrozenRowCount,\n 'rowHeader', // isHeader\n table\n );\n }\n if (table.rowHeaderLevelCount > 0) {\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n table.leftRowSeriesNumberCount, // colStart\n table.leftRowSeriesNumberCount + table.rowHeaderLevelCount - 1, // colEnd\n table.frozenRowCount, // rowStart\n // Math.min(proxy.firstScreenRowLimit, table.rowCount - 1 - table.bottomFrozenRowCount), // rowEnd\n distRow - table.bottomFrozenRowCount,\n 'rowHeader', // isHeader\n table\n );\n }\n if (table.frozenColCount > table.rowHeaderLevelCount + table.leftRowSeriesNumberCount) {\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n table.rowHeaderLevelCount + table.leftRowSeriesNumberCount, // colStart\n table.frozenColCount - 1, // colEnd\n table.frozenRowCount, // rowStart\n // Math.min(proxy.firstScreenRowLimit, table.rowCount - 1 - table.bottomFrozenRowCount), // rowEnd\n distRow - table.bottomFrozenRowCount,\n 'body',\n table\n );\n }\n }\n\n if (table.bottomFrozenRowCount > 0) {\n // if (!table.isPivotChart()) {\n // create left bottom frozen\n // if (table.rowHeaderLevelCount > 0) {\n // createColGroup(\n // leftBottomCornerGroup,\n // xOrigin,\n // yOrigin,\n // 0, // colStart\n // table.rowHeaderLevelCount - 1, // colEnd\n // table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n // table.rowCount - 1, // rowEnd\n // 'rowHeader', // isHeader\n // table\n // );\n // }\n // if (table.frozenColCount > table.rowHeaderLevelCount) {\n // createColGroup(\n // leftBottomCornerGroup,\n // xOrigin,\n // yOrigin,\n // table.rowHeaderLevelCount, // colStart\n // table.frozenColCount - 1, // colEnd\n // table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n // table.rowCount - 1, // rowEnd\n // 'body',\n // table\n // );\n // }\n\n if (table.frozenColCount > 0) {\n if (table.leftRowSeriesNumberCount > 0) {\n createColGroup(\n leftBottomCornerGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.leftRowSeriesNumberCount - 1, // colEnd\n table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n table.rowCount - 1, // rowEnd\n 'rowHeader', // isHeader\n table\n );\n }\n if (table.rowHeaderLevelCount > 0) {\n createColGroup(\n leftBottomCornerGroup,\n xOrigin,\n yOrigin,\n table.leftRowSeriesNumberCount, // colStart\n table.leftRowSeriesNumberCount + table.rowHeaderLevelCount - 1, // colEnd\n table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n table.rowCount - 1, // rowEnd\n 'rowHeader', // isHeader\n table\n );\n }\n if (table.frozenColCount > table.rowHeaderLevelCount + table.leftRowSeriesNumberCount) {\n createColGroup(\n leftBottomCornerGroup,\n xOrigin,\n yOrigin,\n table.rowHeaderLevelCount + table.leftRowSeriesNumberCount, // colStart\n table.frozenColCount - 1, // colEnd\n table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n table.rowCount - 1, // rowEnd\n 'body',\n table\n );\n }\n }\n // }\n // create bottomFrozenGroup\n distCol - table.rightFrozenColCount >= table.frozenColCount &&\n createColGroup(\n bottomFrozenGroup,\n xOrigin,\n yOrigin,\n table.frozenColCount, // colStart\n // Math.min(proxy.firstScreenColLimit, table.colCount - 1 - table.rightFrozenColCount), // colEnd\n distCol - table.rightFrozenColCount,\n table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n table.rowCount - 1, // rowEnd\n table.isPivotChart() ? 'rowHeader' : 'body', // isHeader\n table\n );\n }\n\n if (table.rightFrozenColCount > 0) {\n // if (!table.isPivotChart()) {\n // create right top frozen Group\n createColGroup(\n rightTopCornerGroup,\n xOrigin,\n yOrigin,\n table.colCount - 1 - table.rightFrozenColCount + 1, // colStart\n table.colCount - 1, // colEnd\n 0, // rowStart\n table.frozenRowCount - 1, // rowEnd\n 'columnHeader', // isHeader\n table\n );\n // }\n // create rightFrozenGroup\n createColGroup(\n rightFrozenGroup,\n xOrigin,\n yOrigin,\n table.colCount - 1 - table.rightFrozenColCount + 1, // colStart\n table.colCount - 1, // colEnd\n table.frozenRowCount, // rowStart\n // Math.min(proxy.firstScreenRowLimit, table.rowCount - 1 - table.bottomFrozenRowCount), // rowEnd\n distRow - table.bottomFrozenRowCount,\n table.isPivotChart() ? 'rowHeader' : 'body', // isHeader\n table\n );\n }\n\n if (table.bottomFrozenRowCount > 0 && table.rightFrozenColCount > 0) {\n // create right bottom frozen Group\n createColGroup(\n rightBottomCornerGroup,\n xOrigin,\n yOrigin,\n table.colCount - 1 - table.rightFrozenColCount + 1, // colStart\n table.colCount - 1, // colEnd\n table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n table.rowCount - 1, // rowEnd\n 'body', // isHeader\n table\n );\n }\n\n // create bodyGroup\n distCol - table.rightFrozenColCount >= table.frozenColCount &&\n createColGroup(\n bodyGroup,\n xOrigin,\n yOrigin,\n table.frozenColCount, // colStart\n // Math.min(proxy.firstScreenColLimit, table.colCount - 1 - table.rightFrozenColCount), // colEnd\n distCol - table.rightFrozenColCount,\n table.frozenRowCount, // rowStart\n // Math.min(proxy.firstScreenRowLimit, table.rowCount - 1 - table.bottomFrozenRowCount), // rowEnd\n distRow - table.bottomFrozenRowCount,\n 'body', // isHeader\n table\n );\n\n // update progress information\n if (\n !bodyGroup.firstChild &&\n !colHeaderGroup.firstChild &&\n !cornerHeaderGroup.firstChild &&\n !rowHeaderGroup.firstChild\n ) {\n // 无数据\n proxy.currentRow = proxy.totalRow;\n proxy.rowEnd = proxy.currentRow;\n proxy.rowUpdatePos = proxy.rowEnd + 1;\n proxy.referenceRow = proxy.rowStart + Math.floor((proxy.rowEnd - proxy.rowStart) / 2);\n\n proxy.currentCol = proxy.totalCol;\n proxy.colEnd = proxy.currentCol;\n proxy.colUpdatePos = proxy.colEnd + 1;\n proxy.referenceCol = proxy.colStart + Math.floor((proxy.colEnd - proxy.colStart) / 2);\n } else {\n proxy.currentRow =\n (bodyGroup.firstChild as Group)?.rowNumber ?? (rowHeaderGroup.firstChild as Group)?.rowNumber ?? proxy.totalRow;\n proxy.rowEnd = proxy.currentRow;\n proxy.rowUpdatePos = proxy.rowEnd + 1;\n proxy.referenceRow = proxy.rowStart + Math.floor((proxy.rowEnd - proxy.rowStart) / 2);\n\n proxy.currentCol =\n (bodyGroup.lastChild as Group)?.col ??\n (colHeaderGroup.lastChild as Group)?.col ??\n (rowHeaderGroup.lastChild as Group)?.col ??\n (cornerHeaderGroup.lastChild as Group)?.col ??\n proxy.totalCol;\n proxy.colEnd = proxy.currentCol;\n proxy.colUpdatePos = proxy.colEnd + 1;\n proxy.referenceCol = proxy.colStart + Math.floor((proxy.colEnd - proxy.colStart) / 2);\n\n // 开始异步任务\n proxy.progress();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/group-creater/progress/create-group-for-first-screen.ts"],"names":[],"mappings":";;;AAGA,sEAAkE;AAClE,wEAAoE;AACpE,sCAA2C;AAG3C,SAAgB,yBAAyB,CACvC,iBAAwB,EACxB,cAAqB,EACrB,cAAqB,EACrB,gBAAuB,EACvB,iBAAwB,EACxB,SAAgB,EAChB,OAAe,EACf,OAAe,EACf,KAAiB;;IAEjB,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,MAAM,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;IAGhG,KAAK,CAAC,eAAe,EAAE,CAAC;IACxB,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAE3B,IAAI,OAAO,CAAC;IACZ,IAAI,OAAO,CAAC;IACZ,IAAI,iBAAiB,CAAC;IACtB,IAAI,iBAAiB,CAAC;IACtB,IACE,KAAK,CAAC,SAAS,KAAK,UAAU;QAC9B,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,EAC5F;QAIA,iBAAiB,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;KACvE;SAAM;QACL,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;KACvE;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;QAInC,iBAAiB,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;KACvE;SAAM;QACL,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;KACvE;IACD,IAAI,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,EAAE;QAEtD,IAAA,oCAAgB,EAAC,KAAK,EAAE,CAAC,EAAE,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,OAAO,CAAC,CAAC;KAC1D;IAED,IAAI,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,EAAE;QAEvD,IAAA,sCAAiB,EAAC,KAAK,EAAE,CAAC,EAAE,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,OAAO,CAAC,CAAC;KAC3D;IAED,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,EAAE;QAExD,IAAA,oCAAgB,EAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;KACzF;IACD,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE;QAEzD,IAAA,sCAAiB,EAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;KAC3F;IAGD,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC/E,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACjF,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACjF,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC;QACvC,CAAC,EAAE,KAAK,CAAC,kBAAkB,EAAE;QAC7B,CAAC,EAAE,KAAK,CAAC,mBAAmB,EAAE;KAC/B,CAAC,CAAC;IAGH,IAAA,uBAAc,EACZ,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,CAAC,EACD,KAAK,CAAC,cAAc,GAAG,CAAC,EACxB,CAAC,EACD,KAAK,CAAC,cAAc,GAAG,CAAC,EACxB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,EACrD,KAAK,CACN,CAAC;IAGF,OAAO,GAAG,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,cAAc;QACzD,IAAA,uBAAc,EACZ,cAAc,EACd,OAAO,EACP,OAAO,EACP,KAAK,CAAC,cAAc,EAEpB,OAAO,GAAG,KAAK,CAAC,mBAAmB,EACnC,CAAC,EACD,KAAK,CAAC,cAAc,GAAG,CAAC,EACxB,cAAc,EACd,KAAK,CACN,CAAC;IAGJ,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE;QAC5B,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,EAAE;YACtC,IAAA,uBAAc,EACZ,cAAc,EACd,OAAO,EACP,OAAO,EACP,CAAC,EACD,KAAK,CAAC,wBAAwB,GAAG,CAAC,EAClC,KAAK,CAAC,cAAc,EAEpB,OAAO,GAAG,KAAK,CAAC,oBAAoB,EACpC,WAAW,EACX,KAAK,CACN,CAAC;SACH;QACD,IAAI,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,wBAAwB,EAAE;YACzD,IAAA,uBAAc,EACZ,cAAc,EACd,OAAO,EACP,OAAO,EACP,KAAK,CAAC,wBAAwB,EAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAC,EAClG,KAAK,CAAC,cAAc,EAEpB,OAAO,GAAG,KAAK,CAAC,oBAAoB,EACpC,WAAW,EACX,KAAK,CACN,CAAC;SACH;QACD,IAAI,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,EAAE;YACrF,IAAA,uBAAc,EACZ,cAAc,EACd,OAAO,EACP,OAAO,EACP,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,EAC1D,KAAK,CAAC,cAAc,GAAG,CAAC,EACxB,KAAK,CAAC,cAAc,EAEpB,OAAO,GAAG,KAAK,CAAC,oBAAoB,EACpC,MAAM,EACN,KAAK,CACN,CAAC;SACH;KACF;IAED,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE;QA8BlC,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE;YAC5B,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,EAAE;gBACtC,IAAA,uBAAc,EACZ,qBAAqB,EACrB,OAAO,EACP,OAAO,EACP,CAAC,EACD,KAAK,CAAC,wBAAwB,GAAG,CAAC,EAClC,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,EACnD,KAAK,CAAC,QAAQ,GAAG,CAAC,EAClB,WAAW,EACX,KAAK,CACN,CAAC;aACH;YACD,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE;gBACjC,IAAA,uBAAc,EACZ,qBAAqB,EACrB,OAAO,EACP,OAAO,EACP,KAAK,CAAC,wBAAwB,EAC9B,KAAK,CAAC,wBAAwB,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAC9D,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,EACnD,KAAK,CAAC,QAAQ,GAAG,CAAC,EAClB,WAAW,EACX,KAAK,CACN,CAAC;aACH;YACD,IAAI,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,EAAE;gBACrF,IAAA,uBAAc,EACZ,qBAAqB,EACrB,OAAO,EACP,OAAO,EACP,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,EAC1D,KAAK,CAAC,cAAc,GAAG,CAAC,EACxB,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,EACnD,KAAK,CAAC,QAAQ,GAAG,CAAC,EAClB,MAAM,EACN,KAAK,CACN,CAAC;aACH;SACF;QAGD,OAAO,GAAG,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,cAAc;YACzD,IAAA,uBAAc,EACZ,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,KAAK,CAAC,cAAc,EAEpB,OAAO,GAAG,KAAK,CAAC,mBAAmB,EACnC,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,EACnD,KAAK,CAAC,QAAQ,GAAG,CAAC,EAClB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAC3C,KAAK,CACN,CAAC;KACL;IAED,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE;QAGjC,IAAA,uBAAc,EACZ,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAClD,KAAK,CAAC,QAAQ,GAAG,CAAC,EAClB,CAAC,EACD,KAAK,CAAC,cAAc,GAAG,CAAC,EACxB,cAAc,EACd,KAAK,CACN,CAAC;QAGF,IAAA,uBAAc,EACZ,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAClD,KAAK,CAAC,QAAQ,GAAG,CAAC,EAClB,KAAK,CAAC,cAAc,EAEpB,OAAO,GAAG,KAAK,CAAC,oBAAoB,EACpC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAC3C,KAAK,CACN,CAAC;KACH;IAED,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAAE;QAEnE,IAAA,uBAAc,EACZ,sBAAsB,EACtB,OAAO,EACP,OAAO,EACP,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAClD,KAAK,CAAC,QAAQ,GAAG,CAAC,EAClB,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,EACnD,KAAK,CAAC,QAAQ,GAAG,CAAC,EAClB,MAAM,EACN,KAAK,CACN,CAAC;KACH;IAGD,OAAO,GAAG,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,cAAc;QACzD,IAAA,uBAAc,EACZ,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,CAAC,cAAc,EAEpB,OAAO,GAAG,KAAK,CAAC,mBAAmB,EACnC,KAAK,CAAC,cAAc,EAEpB,OAAO,GAAG,KAAK,CAAC,oBAAoB,EACpC,MAAM,EACN,KAAK,CACN,CAAC;IAGJ,IACE,CAAC,SAAS,CAAC,UAAU;QACrB,CAAC,cAAc,CAAC,UAAU;QAC1B,CAAC,iBAAiB,CAAC,UAAU;QAC7B,CAAC,cAAc,CAAC,UAAU,EAC1B;QAEA,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;QAClC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;QAChC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtF,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;QAClC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;QAChC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;KACvF;SAAM;QACL,KAAK,CAAC,UAAU;YACd,MAAA,MAAA,MAAC,SAAS,CAAC,UAAoB,0CAAE,SAAS,mCAAI,MAAC,cAAc,CAAC,UAAoB,0CAAE,SAAS,mCAAI,KAAK,CAAC,QAAQ,CAAC;QAClH,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;QAChC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtF,KAAK,CAAC,UAAU;YACd,MAAA,MAAA,MAAA,MAAA,MAAC,SAAS,CAAC,SAAmB,0CAAE,GAAG,mCACnC,MAAC,cAAc,CAAC,SAAmB,0CAAE,GAAG,mCACxC,MAAC,cAAc,CAAC,SAAmB,0CAAE,GAAG,mCACxC,MAAC,iBAAiB,CAAC,SAAmB,0CAAE,GAAG,mCAC3C,KAAK,CAAC,QAAQ,CAAC;QACjB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;QAChC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAGtF,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;AACH,CAAC;AA5UD,8DA4UC","file":"create-group-for-first-screen.js","sourcesContent":["import type { ListTable } from '../../../ListTable';\nimport { ListTableAPI } from '../../../ts-types';\nimport type { Group } from '../../graphic/group';\nimport { computeColsWidth } from '../../layout/compute-col-width';\nimport { computeRowsHeight } from '../../layout/compute-row-height';\nimport { createColGroup } from '../column';\nimport type { SceneProxy } from './proxy';\n\nexport function 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 proxy: SceneProxy\n) {\n const { table } = proxy;\n const { leftBottomCornerGroup, rightTopCornerGroup, rightBottomCornerGroup } = table.scenegraph;\n\n // compute parameters\n proxy.setParamsForRow();\n proxy.setParamsForColumn();\n\n let distCol;\n let distRow;\n let distColForCompute;\n let distRowForCompute;\n if (\n table.widthMode === 'adaptive' ||\n (table.options.autoWrapText && (table.heightMode === 'adaptive' || table.isAutoRowHeight()))\n ) {\n // distCol = table.colCount - 1;\n // proxy.colEnd = distCol;\n\n distColForCompute = table.colCount - 1;\n distCol = Math.min(proxy.firstScreenColLimit - 1, table.colCount - 1);\n } else {\n distCol = Math.min(proxy.firstScreenColLimit - 1, table.colCount - 1);\n }\n if (table.heightMode === 'adaptive') {\n // distRow = table.rowCount - 1;\n // proxy.rowEnd = distRow;\n\n distRowForCompute = table.rowCount - 1;\n distRow = Math.min(proxy.firstScreenRowLimit - 1, table.rowCount - 1);\n } else {\n distRow = Math.min(proxy.firstScreenRowLimit - 1, table.rowCount - 1);\n }\n if (table.internalProps._widthResizedColMap.size === 0) {\n // compute colums width in first screen\n computeColsWidth(table, 0, distColForCompute ?? distCol);\n }\n\n if (table.internalProps._heightResizedRowMap.size === 0) {\n // compute rows height in first screen\n computeRowsHeight(table, 0, distRowForCompute ?? distRow);\n }\n\n if (distCol < table.colCount - table.rightFrozenColCount) {\n // compute right frozen row height\n computeColsWidth(table, table.colCount - table.rightFrozenColCount, table.colCount - 1);\n }\n if (distRow < table.rowCount - table.bottomFrozenRowCount) {\n // compute bottom frozen row height\n computeRowsHeight(table, table.rowCount - table.bottomFrozenRowCount, table.rowCount - 1);\n }\n\n // update colHeaderGroup rowHeaderGroup bodyGroup position\n table.scenegraph.colHeaderGroup.setAttribute('x', table.getFrozenColsWidth());\n table.scenegraph.rowHeaderGroup.setAttribute('y', table.getFrozenRowsHeight());\n table.scenegraph.bottomFrozenGroup.setAttribute('x', table.getFrozenColsWidth());\n table.scenegraph.rightFrozenGroup.setAttribute('y', table.getFrozenRowsHeight());\n table.scenegraph.bodyGroup.setAttributes({\n x: table.getFrozenColsWidth(),\n y: table.getFrozenRowsHeight()\n });\n\n // create cornerHeaderGroup\n createColGroup(\n cornerHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.frozenColCount - 1, // colEnd\n 0, // rowStart\n table.frozenRowCount - 1, // rowEnd\n table.isListTable() ? 'columnHeader' : 'cornerHeader', // CellType\n table\n );\n\n // create colHeaderGroup\n distCol - table.rightFrozenColCount >= table.frozenColCount &&\n createColGroup(\n colHeaderGroup,\n xOrigin,\n yOrigin,\n table.frozenColCount, // colStart\n // Math.min(proxy.firstScreenColLimit, table.colCount - 1 - table.rightFrozenColCount), // colEnd\n distCol - table.rightFrozenColCount,\n 0, // rowStart\n table.frozenRowCount - 1, // rowEnd\n 'columnHeader', // isHeader\n table\n );\n\n // create rowHeaderGroup\n if (table.frozenColCount > 0) {\n if (table.leftRowSeriesNumberCount > 0) {\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.leftRowSeriesNumberCount - 1, // colEnd\n table.frozenRowCount, // rowStart\n // Math.min(proxy.firstScreenRowLimit, table.rowCount - 1 - table.bottomFrozenRowCount), // rowEnd\n distRow - table.bottomFrozenRowCount,\n 'rowHeader', // isHeader\n table\n );\n }\n if (table.frozenColCount > table.leftRowSeriesNumberCount) {\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n table.leftRowSeriesNumberCount, // colStart\n Math.min(table.frozenColCount - 1, table.rowHeaderLevelCount + table.leftRowSeriesNumberCount - 1), // colEnd\n table.frozenRowCount, // rowStart\n // Math.min(proxy.firstScreenRowLimit, table.rowCount - 1 - table.bottomFrozenRowCount), // rowEnd\n distRow - table.bottomFrozenRowCount,\n 'rowHeader', // isHeader\n table\n );\n }\n if (table.frozenColCount > table.rowHeaderLevelCount + table.leftRowSeriesNumberCount) {\n createColGroup(\n rowHeaderGroup,\n xOrigin,\n yOrigin,\n table.rowHeaderLevelCount + table.leftRowSeriesNumberCount, // colStart\n table.frozenColCount - 1, // colEnd\n table.frozenRowCount, // rowStart\n // Math.min(proxy.firstScreenRowLimit, table.rowCount - 1 - table.bottomFrozenRowCount), // rowEnd\n distRow - table.bottomFrozenRowCount,\n 'body',\n table\n );\n }\n }\n\n if (table.bottomFrozenRowCount > 0) {\n // if (!table.isPivotChart()) {\n // create left bottom frozen\n // if (table.rowHeaderLevelCount > 0) {\n // createColGroup(\n // leftBottomCornerGroup,\n // xOrigin,\n // yOrigin,\n // 0, // colStart\n // table.rowHeaderLevelCount - 1, // colEnd\n // table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n // table.rowCount - 1, // rowEnd\n // 'rowHeader', // isHeader\n // table\n // );\n // }\n // if (table.frozenColCount > table.rowHeaderLevelCount) {\n // createColGroup(\n // leftBottomCornerGroup,\n // xOrigin,\n // yOrigin,\n // table.rowHeaderLevelCount, // colStart\n // table.frozenColCount - 1, // colEnd\n // table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n // table.rowCount - 1, // rowEnd\n // 'body',\n // table\n // );\n // }\n\n if (table.frozenColCount > 0) {\n if (table.leftRowSeriesNumberCount > 0) {\n createColGroup(\n leftBottomCornerGroup,\n xOrigin,\n yOrigin,\n 0, // colStart\n table.leftRowSeriesNumberCount - 1, // colEnd\n table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n table.rowCount - 1, // rowEnd\n 'rowHeader', // isHeader\n table\n );\n }\n if (table.rowHeaderLevelCount > 0) {\n createColGroup(\n leftBottomCornerGroup,\n xOrigin,\n yOrigin,\n table.leftRowSeriesNumberCount, // colStart\n table.leftRowSeriesNumberCount + table.rowHeaderLevelCount - 1, // colEnd\n table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n table.rowCount - 1, // rowEnd\n 'rowHeader', // isHeader\n table\n );\n }\n if (table.frozenColCount > table.rowHeaderLevelCount + table.leftRowSeriesNumberCount) {\n createColGroup(\n leftBottomCornerGroup,\n xOrigin,\n yOrigin,\n table.rowHeaderLevelCount + table.leftRowSeriesNumberCount, // colStart\n table.frozenColCount - 1, // colEnd\n table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n table.rowCount - 1, // rowEnd\n 'body',\n table\n );\n }\n }\n // }\n // create bottomFrozenGroup\n distCol - table.rightFrozenColCount >= table.frozenColCount &&\n createColGroup(\n bottomFrozenGroup,\n xOrigin,\n yOrigin,\n table.frozenColCount, // colStart\n // Math.min(proxy.firstScreenColLimit, table.colCount - 1 - table.rightFrozenColCount), // colEnd\n distCol - table.rightFrozenColCount,\n table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n table.rowCount - 1, // rowEnd\n table.isPivotChart() ? 'rowHeader' : 'body', // isHeader\n table\n );\n }\n\n if (table.rightFrozenColCount > 0) {\n // if (!table.isPivotChart()) {\n // create right top frozen Group\n createColGroup(\n rightTopCornerGroup,\n xOrigin,\n yOrigin,\n table.colCount - 1 - table.rightFrozenColCount + 1, // colStart\n table.colCount - 1, // colEnd\n 0, // rowStart\n table.frozenRowCount - 1, // rowEnd\n 'columnHeader', // isHeader\n table\n );\n // }\n // create rightFrozenGroup\n createColGroup(\n rightFrozenGroup,\n xOrigin,\n yOrigin,\n table.colCount - 1 - table.rightFrozenColCount + 1, // colStart\n table.colCount - 1, // colEnd\n table.frozenRowCount, // rowStart\n // Math.min(proxy.firstScreenRowLimit, table.rowCount - 1 - table.bottomFrozenRowCount), // rowEnd\n distRow - table.bottomFrozenRowCount,\n table.isPivotChart() ? 'rowHeader' : 'body', // isHeader\n table\n );\n }\n\n if (table.bottomFrozenRowCount > 0 && table.rightFrozenColCount > 0) {\n // create right bottom frozen Group\n createColGroup(\n rightBottomCornerGroup,\n xOrigin,\n yOrigin,\n table.colCount - 1 - table.rightFrozenColCount + 1, // colStart\n table.colCount - 1, // colEnd\n table.rowCount - 1 - table.bottomFrozenRowCount + 1, // rowStart\n table.rowCount - 1, // rowEnd\n 'body', // isHeader\n table\n );\n }\n\n // create bodyGroup\n distCol - table.rightFrozenColCount >= table.frozenColCount &&\n createColGroup(\n bodyGroup,\n xOrigin,\n yOrigin,\n table.frozenColCount, // colStart\n // Math.min(proxy.firstScreenColLimit, table.colCount - 1 - table.rightFrozenColCount), // colEnd\n distCol - table.rightFrozenColCount,\n table.frozenRowCount, // rowStart\n // Math.min(proxy.firstScreenRowLimit, table.rowCount - 1 - table.bottomFrozenRowCount), // rowEnd\n distRow - table.bottomFrozenRowCount,\n 'body', // isHeader\n table\n );\n\n // update progress information\n if (\n !bodyGroup.firstChild &&\n !colHeaderGroup.firstChild &&\n !cornerHeaderGroup.firstChild &&\n !rowHeaderGroup.firstChild\n ) {\n // 无数据\n proxy.currentRow = proxy.totalRow;\n proxy.rowEnd = proxy.currentRow;\n proxy.rowUpdatePos = proxy.rowEnd + 1;\n proxy.referenceRow = proxy.rowStart + Math.floor((proxy.rowEnd - proxy.rowStart) / 2);\n\n proxy.currentCol = proxy.totalCol;\n proxy.colEnd = proxy.currentCol;\n proxy.colUpdatePos = proxy.colEnd + 1;\n proxy.referenceCol = proxy.colStart + Math.floor((proxy.colEnd - proxy.colStart) / 2);\n } else {\n proxy.currentRow =\n (bodyGroup.firstChild as Group)?.rowNumber ?? (rowHeaderGroup.firstChild as Group)?.rowNumber ?? proxy.totalRow;\n proxy.rowEnd = proxy.currentRow;\n proxy.rowUpdatePos = proxy.rowEnd + 1;\n proxy.referenceRow = proxy.rowStart + Math.floor((proxy.rowEnd - proxy.rowStart) / 2);\n\n proxy.currentCol =\n (bodyGroup.lastChild as Group)?.col ??\n (colHeaderGroup.lastChild as Group)?.col ??\n (rowHeaderGroup.lastChild as Group)?.col ??\n (cornerHeaderGroup.lastChild as Group)?.col ??\n proxy.totalCol;\n proxy.colEnd = proxy.currentCol;\n proxy.colUpdatePos = proxy.colEnd + 1;\n proxy.referenceCol = proxy.colStart + Math.floor((proxy.colEnd - proxy.colStart) / 2);\n\n // 开始异步任务\n proxy.progress();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/group-creater/progress/proxy.ts"],"names":[],"mappings":"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","file":"proxy.js","sourcesContent":["import { isNumber, isValid } 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';\nimport { updateAutoColumn } from './update-position/update-auto-column';\nimport { getDefaultHeight, getDefaultWidth } from './default-width-height';\nimport { handleTextStick } from '../../stick-text';\nimport type { ColumnInfo, RowInfo } from '../../../ts-types';\n\nexport class SceneProxy {\n table: BaseTableAPI;\n isRelease: boolean = false;\n mode: 'column' | 'row' | 'pivot' = 'column';\n isProgressing: boolean;\n\n rowLimit = 200;\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 totalActualBodyRowCount: number; // 实际表格body部分的行数\n deltaY: number = 0;\n deltaHeight: 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 totalActualBodyColCount: number; // 实际表格body部分的列数\n deltaX: number = 0;\n deltaWidth: 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 this.rowLimit = Math.max(100, Math.ceil((table.tableNoFrameHeight * 2) / table.defaultRowHeight));\n this.colLimit = Math.max(100, Math.ceil((table.tableNoFrameWidth * 2) / table.defaultColWidth));\n } else if (this.table.isAutoRowHeight()) {\n // this.rowLimit = 100;\n this.rowLimit = Math.max(100, Math.ceil((table.tableNoFrameHeight * 2) / table.defaultRowHeight));\n } else if (this.table.widthMode === 'autoWidth') {\n // this.colLimit = 100;\n this.colLimit = Math.max(100, Math.ceil((table.tableNoFrameWidth * 2) / table.defaultColWidth));\n } else {\n this.rowLimit = Math.max(200, Math.ceil((table.tableNoFrameHeight * 2) / table.defaultRowHeight));\n this.colLimit = Math.max(100, Math.ceil((table.tableNoFrameWidth * 2) / table.defaultColWidth));\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 get bodyLeftCol(): number {\n return this.table.frozenColCount;\n }\n\n setParamsForColumn() {\n // this.bodyLeftCol = this.table.frozenColCount;\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.totalActualBodyColCount = totalActualBodyColCount;\n this.totalCol = this.bodyLeftCol + totalActualBodyColCount - 1; // 目标渐进完成的col\n this.colStart = this.bodyLeftCol;\n this.colEnd = this.totalCol; // temp for first screen, will replace in createGroupForFirstScreen()\n const defaultColWidth = this.table.defaultColWidth;\n // const defaultColWidth = getDefaultHeight(this.table);\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 = Math.max(\n 15, // min firstScreenColLimit\n this.bodyLeftCol + Math.min(this.colLimit, Math.ceil(widthLimit / defaultColWidth))\n );\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.colUpdatePos = this.bodyRightCol;\n }\n\n setParamsForRow() {\n this.bodyTopRow = this.table.frozenRowCount;\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.totalActualBodyRowCount = totalActualBodyRowCount;\n this.totalRow = this.bodyTopRow + totalActualBodyRowCount - 1; // 目标渐进完成的row\n this.rowStart = this.bodyTopRow;\n this.rowEnd = this.totalRow; // temp for first screen, will replace in createGroupForFirstScreen()\n const defaultRowHeight = this.table.defaultRowHeight;\n // const defaultRowHeight = getDefaultWidth(this.table);\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 = Math.max(\n 30, // min firstScreenRowLimit\n this.bodyTopRow + Math.min(this.rowLimit, Math.ceil(heightLimit / defaultRowHeight))\n );\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.rowUpdatePos = this.bodyBottomRow;\n }\n\n refreshRowCount() {\n this.bodyTopRow = this.table.frozenRowCount;\n this.bodyBottomRow = this.table.rowCount - 1 - this.table.bottomFrozenRowCount;\n const totalActualBodyRowCount = Math.min(this.rowLimit, this.bodyBottomRow - this.bodyTopRow + 1); // 渐进加载总row数量\n this.totalActualBodyRowCount = totalActualBodyRowCount;\n this.totalRow = this.rowStart + totalActualBodyRowCount - 1; // 目标渐进完成的row\n\n // this.rowStart = this.bodyTopRow;\n // this.rowEnd = this.totalRow; // temp for first screen, will replace in createGroupForFirstScreen()\n }\n\n refreshColCount() {\n this.bodyRightCol = this.table.colCount - 1 - this.table.rightFrozenColCount;\n const totalActualBodyColCount = Math.min(this.colLimit, this.bodyRightCol - this.bodyLeftCol + 1);\n this.totalActualBodyColCount = totalActualBodyColCount;\n this.totalCol = this.bodyLeftCol + totalActualBodyColCount - 1; // 目标渐进完成的col\n\n this.colStart = this.bodyLeftCol;\n this.colEnd = this.totalCol; // temp for first screen, will replace in createGroupForFirstScreen()\n }\n\n resize() {\n const defaultColWidth = this.table.defaultColWidth;\n this.taskColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth) * 1;\n const widthLimit = this.table.tableNoFrameWidth * 5;\n this.screenColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth);\n this.firstScreenColLimit = this.bodyLeftCol + Math.min(this.colLimit, Math.ceil(widthLimit / defaultColWidth));\n\n const defaultRowHeight = this.table.defaultRowHeight;\n this.taskRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight) * 1;\n const heightLimit = this.table.tableNoFrameHeight * 5;\n this.screenRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight);\n this.firstScreenRowLimit = this.bodyTopRow + Math.min(this.rowLimit, Math.ceil(heightLimit / defaultRowHeight));\n }\n\n 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 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 if (this.isProgressing) {\n return;\n }\n this.isProgressing = true;\n return new Promise<void>((resolve, reject) => {\n setTimeout(async () => {\n this.isProgressing = false;\n if (this.isRelease) {\n return;\n }\n // console.log('progress col', this.colUpdatePos, this.colEnd, this.currentCol, this.totalCol);\n // console.log('progress row', this.rowUpdatePos, this.rowEnd, this.currentRow, this.totalRow);\n // console.log('before: createRow', table.scenegraph.bodyGroup.lastChild.attribute);\n // if (this.isSkipProgress) {\n // await this.progress();\n // } else\n if (this.colUpdatePos <= this.colEnd) {\n // console.log('progress colUpdatePos', this.colUpdatePos);\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 handleTextStick(this.table);\n this.table.scenegraph.updateNextFrame();\n resolve();\n }, 16);\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 this.rowEnd = endRow;\n\n if (this.table.frozenColCount) {\n // create row header row cellGroup\n let maxHeight = 0;\n for (let col = 0; col < this.table.frozenColCount; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellLocation = this.table.isListTable() ? 'body' : '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.defaultRowHeight,\n this.table\n // cellLocation\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 cellLocation = this.table.isPivotChart() ? 'rowHeader' : 'body'; // isHeader\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.defaultRowHeight,\n this.table\n // cellLocation\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 if (!colGroup) {\n continue;\n }\n const cellLocation = col < this.table.rowHeaderLevelCount ? 'rowHeader' : '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.defaultRowHeight,\n this.table\n // cellLocation\n );\n maxHeight = Math.max(maxHeight, height);\n }\n this.table.scenegraph.bodyGroup.setAttribute('height', maxHeight);\n\n this.currentRow = endRow;\n this.rowUpdatePos = this.rowEnd;\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 this.colEnd = endCol;\n\n // update last merge cell size\n for (let row = 0; row < this.table.rowCount; row++) {\n const cellGroup = this.highPerformanceGetCell(this.currentCol, row);\n if (cellGroup.role === 'cell' && isNumber(cellGroup.mergeStartCol) && cellGroup.mergeStartCol > this.currentCol) {\n this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);\n }\n }\n\n // create column\n if (this.table.frozenRowCount) {\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.frozenRowCount - 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 let lastColumnGroup =\n this.table.scenegraph.bodyGroup.lastChild &&\n ((this.table.scenegraph.bodyGroup.lastChild instanceof Group\n ? this.table.scenegraph.bodyGroup.lastChild\n : this.table.scenegraph.bodyGroup.lastChild._prev) as Group);\n if (!lastColumnGroup) {\n lastColumnGroup =\n this.table.scenegraph.colHeaderGroup.lastChild &&\n ((this.table.scenegraph.colHeaderGroup.lastChild instanceof Group\n ? this.table.scenegraph.colHeaderGroup.lastChild\n : this.table.scenegraph.colHeaderGroup.lastChild._prev) as Group);\n }\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.colUpdatePos = 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, isEnd = false) {\n const yLimitTop =\n this.table.getRowsHeight(this.bodyTopRow, this.bodyTopRow + (this.rowEnd - this.rowStart + 1)) / 2;\n const yLimitBottom = this.table.getAllRowsHeight() - yLimitTop;\n\n const screenTop = this.table.getTargetRowAt(y + this.table.scenegraph.colHeaderGroup.attribute.height);\n if (screenTop) {\n this.screenTopRow = screenTop.row;\n }\n\n if (y < yLimitTop && this.rowStart === this.bodyTopRow) {\n // 执行真实body group坐标修改\n this.updateDeltaY(y);\n this.updateBody(y - this.deltaY);\n } else if (y > yLimitBottom && this.rowEnd === this.bodyBottomRow) {\n // 执行真实body group坐标修改\n this.updateDeltaY(y);\n this.updateBody(y - this.deltaY);\n } else if (\n (!this.table.scenegraph.bodyGroup.firstChild ||\n this.table.scenegraph.bodyGroup.firstChild.type !== 'group' ||\n this.table.scenegraph.bodyGroup.firstChild.childrenCount === 0) &&\n (!this.table.scenegraph.rowHeaderGroup.firstChild ||\n this.table.scenegraph.rowHeaderGroup.firstChild.type !== 'group' ||\n this.table.scenegraph.rowHeaderGroup.firstChild.childrenCount === 0)\n ) {\n this.updateDeltaY(y);\n // 兼容异步加载数据promise的情况 childrenCount=0 如果用户立即调用setScrollTop执行dynamicSetY会出错\n this.updateBody(y - this.deltaY);\n } else {\n // 执行动态更新节点\n this.dynamicSetY(y, screenTop, isEnd);\n }\n }\n\n async setX(x: number, isEnd = false) {\n const xLimitLeft =\n this.table.getColsWidth(this.bodyLeftCol, this.bodyLeftCol + (this.colEnd - this.colStart + 1)) / 2;\n const xLimitRight = this.table.getAllColsWidth() - xLimitLeft;\n\n const screenLeft = this.table.getTargetColAt(x + this.table.scenegraph.rowHeaderGroup.attribute.width);\n if (screenLeft) {\n this.screenLeftCol = screenLeft.col;\n }\n\n if (x < xLimitLeft && this.colStart === this.bodyLeftCol) {\n // 执行真实body group坐标修改\n this.updateDeltaX(x);\n this.table.scenegraph.setBodyAndColHeaderX(-x + this.deltaX);\n } else if (x > xLimitRight && this.colEnd === this.bodyRightCol) {\n // 执行真实body group坐标修改\n this.updateDeltaX(x);\n this.table.scenegraph.setBodyAndColHeaderX(-x + this.deltaX);\n } else if (\n // 注意判断关系 这里不是 || 而是 &&\n this.table.scenegraph.bodyGroup.firstChild &&\n this.table.scenegraph.bodyGroup.firstChild.type === 'group' &&\n this.table.scenegraph.bodyGroup.firstChild.childrenCount === 0\n ) {\n // 兼容异步加载数据promise的情况 childrenCount=0 如果用户立即调用setScrollLeft执行dynamicSetX会出错\n this.updateDeltaX(x);\n this.table.scenegraph.setBodyAndColHeaderX(-x + this.deltaX);\n } else {\n // 执行动态更新节点\n this.dynamicSetX(x, screenLeft, isEnd);\n }\n }\n\n async dynamicSetY(y: number, screenTop: RowInfo | null, isEnd = false) {\n dynamicSetY(y, screenTop, isEnd, this);\n }\n async dynamicSetX(x: number, screenLeft: ColumnInfo | null, isEnd = false) {\n dynamicSetX(x, screenLeft, isEnd, 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.isAutoRowHeight()) {\n computeRowsHeight(this.table, this.rowUpdatePos, distRow, false);\n }\n\n updateRowContent(this.rowUpdatePos, distRow, this);\n\n if (this.table.isAutoRowHeight()) {\n // body group\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n this.rowUpdatePos, // rowStart\n distRow, // rowEnd\n this.table,\n this.rowUpdateDirection,\n true\n );\n // row header group\n updateAutoRow(\n 0, // colStart\n this.table.frozenColCount - 1, // colEnd\n this.rowUpdatePos, // rowStart\n distRow, // rowEnd\n this.table,\n this.rowUpdateDirection,\n true\n );\n // right frozen group\n updateAutoRow(\n this.table.colCount - this.table.rightFrozenColCount, // colStart\n this.table.colCount - 1, // colEnd\n this.rowUpdatePos, // rowStart\n distRow, // rowEnd\n this.table,\n this.rowUpdateDirection,\n true\n );\n }\n\n this.rowUpdatePos = distRow + 1;\n }\n /** 更新底部冻结行的单元格内容 包括两边的角头 */\n updateBottomFrozenCellGroups() {\n const startRow = this.table.rowCount - this.table.bottomFrozenRowCount;\n const endRow = this.table.rowCount - 1;\n if (this.table.isAutoRowHeight()) {\n computeRowsHeight(this.table, startRow, endRow, false);\n }\n console.log('updateBottomFrozenCellGroups', startRow, endRow);\n updateRowContent(startRow, endRow, this);\n\n if (this.table.isAutoRowHeight()) {\n // body group\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n startRow, // rowStart\n endRow, // rowEnd\n this.table,\n this.rowUpdateDirection\n );\n // row header group\n updateAutoRow(\n 0, // colStart\n this.table.frozenColCount - 1, // colEnd\n startRow, // rowStart\n endRow, // rowEnd\n this.table,\n this.rowUpdateDirection\n );\n // right frozen group\n updateAutoRow(\n this.table.colCount - this.table.rightFrozenColCount, // colStart\n this.table.colCount - 1, // colEnd\n startRow, // rowStart\n endRow, // rowEnd\n this.table,\n this.rowUpdateDirection\n );\n }\n }\n /** 更新底部冻结行的单元格内容 包括两边的角头 */\n updateRightFrozenCellGroups() {\n const startCol = this.table.colCount - this.table.rightFrozenColCount;\n const endCol = this.table.colCount - 1;\n if (this.table.widthMode === 'autoWidth') {\n computeColsWidth(this.table, startCol, endCol, false);\n }\n console.log('updateRightFrozenCellGroups', startCol, endCol);\n updateColContent(startCol, endCol, this);\n\n if (this.table.isAutoRowHeight()) {\n // body group\n updateAutoColumn(startCol, endCol, this.table, this.colUpdateDirection);\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.mergeStartCol = undefined;\n cellGroup.mergeStartRow = undefined;\n cellGroup.mergeEndCol = undefined;\n cellGroup.mergeEndRow = undefined;\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 || cellGroup.role !== 'cell') {\n return cellGroup;\n }\n\n const newCellGroup = this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);\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.frozenRowCount && // 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.frozenColCount && // 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 updateDeltaY(y: number, screenTopY?: number, screenTopRow?: number) {\n if (this.rowStart === this.bodyTopRow) {\n const cellGroup = this.table.scenegraph.highPerformanceGetCell(this.colStart, this.rowStart, true);\n if (cellGroup.role === 'cell') {\n const deltaY = cellGroup.attribute.y;\n this.deltaY = -deltaY;\n }\n } else if (this.rowEnd === this.bodyBottomRow) {\n const cellGroup = this.table.scenegraph.highPerformanceGetCell(this.colStart, this.rowEnd, true);\n if (cellGroup.role === 'cell') {\n // const deltaY =\n // cellGroup.attribute.y +\n // cellGroup.attribute.height -\n // (this.table.tableNoFrameHeight - this.table.getFrozenRowsHeight() - this.table.getBottomFrozenRowsHeight()) -\n // y;\n const deltaY =\n cellGroup.attribute.y +\n cellGroup.attribute.height -\n (this.table.getAllRowsHeight() - this.table.getFrozenRowsHeight() - this.table.getBottomFrozenRowsHeight());\n this.deltaY = -deltaY;\n }\n } else if (isValid(screenTopY) && isValid(screenTopRow)) {\n let cellGroup = this.table.scenegraph.highPerformanceGetCell(this.colStart, screenTopRow, true);\n if (cellGroup.role !== 'cell') {\n cellGroup = this.table.scenegraph.highPerformanceGetCell(0, screenTopRow, true);\n }\n const bodyY = y - this.deltaY;\n const distRowYOffset = screenTopY - bodyY; // dist cell 距离表格顶部的位置差\n const currentRowYOffset = cellGroup.attribute.y - bodyY + this.table.getFrozenRowsHeight(); // current cell 距离表格顶部的位置差\n // const deltaY = screenTopY - (cellGroup.attribute.y + );\n this.deltaY = distRowYOffset - currentRowYOffset;\n }\n }\n\n updateDeltaX(x: number, screenLeftX?: number, screenLeftCol?: number) {\n if (this.colStart === this.bodyLeftCol) {\n const colGroup = this.table.scenegraph.getColGroup(this.colStart);\n if (colGroup) {\n const deltaX = colGroup.attribute.x;\n this.deltaX = -deltaX;\n }\n } else if (this.colEnd === this.bodyRightCol) {\n const colGroup = this.table.scenegraph.getColGroup(this.colEnd);\n if (colGroup) {\n const deltaX =\n colGroup.attribute.x +\n colGroup.attribute.width -\n (this.table.getAllColsWidth() - this.table.getFrozenColsWidth() - this.table.getRightFrozenColsWidth());\n this.deltaX = -deltaX;\n }\n } else if (isValid(screenLeftX) && isValid(screenLeftCol)) {\n const colGroup =\n this.table.scenegraph.getColGroup(screenLeftCol) || this.table.scenegraph.getColGroup(screenLeftCol, true);\n // const deltaX = screenLeftX - (colGroup.attribute.x + this.table.getFrozenColsWidth() + this.deltaX);\n // this.deltaX = deltaX + this.deltaX;\n const bodyX = x - this.deltaX;\n const distColXOffset = screenLeftX - bodyX; // dist col 距离表格左侧的位置差\n const currentColXOffset = colGroup.attribute.x - bodyX + this.table.getFrozenColsWidth(); // current col 距离表格左侧的位置差\n this.deltaX = distColXOffset - currentColXOffset;\n }\n }\n\n release() {\n this.isRelease = true;\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 }\n const prev = cacheCellGroup._prev as Group;\n const next = cacheCellGroup._next as Group;\n // cacheCellGroup may have wrong order\n if (cacheCellGroup.row > row && prev && prev.row === cacheCellGroup.row - 1) {\n return getCellByCache(prev, row);\n }\n if (cacheCellGroup.row < row && next && next.row === cacheCellGroup.row + 1) {\n return getCellByCache(next, row);\n }\n return null;\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/group-creater/progress/proxy.ts"],"names":[],"mappings":"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","file":"proxy.js","sourcesContent":["import { isNumber, isValid } 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';\nimport { updateAutoColumn } from './update-position/update-auto-column';\nimport { getDefaultHeight, getDefaultWidth } from './default-width-height';\nimport { handleTextStick } from '../../stick-text';\nimport type { ColumnInfo, RowInfo } from '../../../ts-types';\n\nexport class SceneProxy {\n table: BaseTableAPI;\n isRelease: boolean = false;\n mode: 'column' | 'row' | 'pivot' = 'column';\n isProgressing: boolean;\n\n rowLimit = 200;\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 totalActualBodyRowCount: number; // 实际表格body部分的行数\n deltaY: number = 0;\n deltaHeight: 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 totalActualBodyColCount: number; // 实际表格body部分的列数\n deltaX: number = 0;\n deltaWidth: 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 this.rowLimit = Math.max(100, Math.ceil((table.tableNoFrameHeight * 2) / table.defaultRowHeight));\n this.colLimit = Math.max(100, Math.ceil((table.tableNoFrameWidth * 2) / table.defaultColWidth));\n } else if (this.table.isAutoRowHeight()) {\n // this.rowLimit = 100;\n this.rowLimit = Math.max(100, Math.ceil((table.tableNoFrameHeight * 2) / table.defaultRowHeight));\n } else if (this.table.widthMode === 'autoWidth') {\n // this.colLimit = 100;\n this.colLimit = Math.max(100, Math.ceil((table.tableNoFrameWidth * 2) / table.defaultColWidth));\n } else {\n this.rowLimit = Math.max(200, Math.ceil((table.tableNoFrameHeight * 2) / table.defaultRowHeight));\n this.colLimit = Math.max(100, Math.ceil((table.tableNoFrameWidth * 2) / table.defaultColWidth));\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 get bodyLeftCol(): number {\n return this.table.frozenColCount;\n }\n\n setParamsForColumn() {\n // this.bodyLeftCol = this.table.frozenColCount;\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.totalActualBodyColCount = totalActualBodyColCount;\n this.totalCol = this.bodyLeftCol + totalActualBodyColCount - 1; // 目标渐进完成的col\n this.colStart = this.bodyLeftCol;\n this.colEnd = this.totalCol; // temp for first screen, will replace in createGroupForFirstScreen()\n const defaultColWidth = this.table.defaultColWidth;\n // const defaultColWidth = getDefaultHeight(this.table);\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 = Math.max(\n 15, // min firstScreenColLimit\n this.bodyLeftCol + Math.min(this.colLimit, Math.ceil(widthLimit / defaultColWidth))\n );\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.colUpdatePos = this.bodyRightCol;\n }\n\n setParamsForRow() {\n this.bodyTopRow = this.table.frozenRowCount;\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.totalActualBodyRowCount = totalActualBodyRowCount;\n this.totalRow = this.bodyTopRow + totalActualBodyRowCount - 1; // 目标渐进完成的row\n this.rowStart = this.bodyTopRow;\n this.rowEnd = this.totalRow; // temp for first screen, will replace in createGroupForFirstScreen()\n const defaultRowHeight = this.table.defaultRowHeight;\n // const defaultRowHeight = getDefaultWidth(this.table);\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 = Math.max(\n 30, // min firstScreenRowLimit\n this.bodyTopRow + Math.min(this.rowLimit, Math.ceil(heightLimit / defaultRowHeight))\n );\n // this.firstScreenRowLimit = this.bodyBottomRow;\n\n this.rowUpdatePos = this.bodyBottomRow;\n }\n\n refreshRowCount() {\n this.bodyTopRow = this.table.frozenRowCount;\n this.bodyBottomRow = this.table.rowCount - 1 - this.table.bottomFrozenRowCount;\n const totalActualBodyRowCount = Math.min(this.rowLimit, this.bodyBottomRow - this.bodyTopRow + 1); // 渐进加载总row数量\n this.totalActualBodyRowCount = totalActualBodyRowCount;\n this.totalRow = this.rowStart + totalActualBodyRowCount - 1; // 目标渐进完成的row\n\n // this.rowStart = this.bodyTopRow;\n // this.rowEnd = this.totalRow; // temp for first screen, will replace in createGroupForFirstScreen()\n }\n\n refreshColCount() {\n this.bodyRightCol = this.table.colCount - 1 - this.table.rightFrozenColCount;\n const totalActualBodyColCount = Math.min(this.colLimit, this.bodyRightCol - this.bodyLeftCol + 1);\n this.totalActualBodyColCount = totalActualBodyColCount;\n this.totalCol = this.bodyLeftCol + totalActualBodyColCount - 1; // 目标渐进完成的col\n\n this.colStart = this.bodyLeftCol;\n this.colEnd = this.totalCol; // temp for first screen, will replace in createGroupForFirstScreen()\n }\n\n resize() {\n const defaultColWidth = this.table.defaultColWidth;\n this.taskColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth) * 1;\n const widthLimit = this.table.tableNoFrameWidth * 5;\n this.screenColCount = Math.ceil(this.table.tableNoFrameWidth / defaultColWidth);\n this.firstScreenColLimit = this.bodyLeftCol + Math.min(this.colLimit, Math.ceil(widthLimit / defaultColWidth));\n\n const defaultRowHeight = this.table.defaultRowHeight;\n this.taskRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight) * 1;\n const heightLimit = this.table.tableNoFrameHeight * 5;\n this.screenRowCount = Math.ceil(this.table.tableNoFrameHeight / defaultRowHeight);\n this.firstScreenRowLimit = this.bodyTopRow + Math.min(this.rowLimit, Math.ceil(heightLimit / defaultRowHeight));\n }\n\n 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 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 if (this.isProgressing) {\n return;\n }\n this.isProgressing = true;\n return new Promise<void>((resolve, reject) => {\n setTimeout(async () => {\n this.isProgressing = false;\n if (this.isRelease) {\n return;\n }\n // console.log('progress col', this.colUpdatePos, this.colEnd, this.currentCol, this.totalCol);\n // console.log('progress row', this.rowUpdatePos, this.rowEnd, this.currentRow, this.totalRow);\n // console.log('before: createRow', table.scenegraph.bodyGroup.lastChild.attribute);\n // if (this.isSkipProgress) {\n // await this.progress();\n // } else\n if (this.colUpdatePos <= this.colEnd) {\n // console.log('progress colUpdatePos', this.colUpdatePos);\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 handleTextStick(this.table);\n this.table.scenegraph.updateNextFrame();\n resolve();\n }, 16);\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 this.rowEnd = endRow;\n\n if (this.table.frozenColCount) {\n // create row header row cellGroup\n let maxHeight = 0;\n for (let col = 0; col < this.table.frozenColCount; col++) {\n const colGroup = this.table.scenegraph.getColGroup(col);\n const cellLocation = this.table.isListTable() ? 'body' : '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.defaultRowHeight,\n this.table\n // cellLocation\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 cellLocation = this.table.isPivotChart() ? 'rowHeader' : 'body'; // isHeader\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.defaultRowHeight,\n this.table\n // cellLocation\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 if (!colGroup) {\n continue;\n }\n const cellLocation = col < this.table.rowHeaderLevelCount ? 'rowHeader' : '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.defaultRowHeight,\n this.table\n // cellLocation\n );\n maxHeight = Math.max(maxHeight, height);\n }\n this.table.scenegraph.bodyGroup.setAttribute('height', maxHeight);\n\n this.currentRow = endRow;\n this.rowUpdatePos = this.rowEnd;\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 this.colEnd = endCol;\n\n // update last merge cell size\n for (let row = 0; row < this.table.rowCount; row++) {\n const cellGroup = this.highPerformanceGetCell(this.currentCol, row);\n if (cellGroup.role === 'cell' && isNumber(cellGroup.mergeStartCol) && cellGroup.mergeStartCol > this.currentCol) {\n this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);\n }\n }\n\n // create column\n if (this.table.frozenRowCount) {\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.frozenRowCount - 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 let lastColumnGroup =\n this.table.scenegraph.bodyGroup.lastChild &&\n ((this.table.scenegraph.bodyGroup.lastChild instanceof Group\n ? this.table.scenegraph.bodyGroup.lastChild\n : this.table.scenegraph.bodyGroup.lastChild._prev) as Group);\n if (!lastColumnGroup) {\n lastColumnGroup =\n this.table.scenegraph.colHeaderGroup.lastChild &&\n ((this.table.scenegraph.colHeaderGroup.lastChild instanceof Group\n ? this.table.scenegraph.colHeaderGroup.lastChild\n : this.table.scenegraph.colHeaderGroup.lastChild._prev) as Group);\n }\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.colUpdatePos = 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, isEnd = false) {\n const yLimitTop =\n this.table.getRowsHeight(this.bodyTopRow, this.bodyTopRow + (this.rowEnd - this.rowStart + 1)) / 2;\n const yLimitBottom = this.table.getAllRowsHeight() - yLimitTop;\n\n const screenTop = this.table.getTargetRowAt(y + this.table.scenegraph.colHeaderGroup.attribute.height);\n if (screenTop) {\n this.screenTopRow = screenTop.row;\n }\n\n if (y < yLimitTop && this.rowStart === this.bodyTopRow) {\n // 执行真实body group坐标修改\n this.updateDeltaY(y);\n this.updateBody(y - this.deltaY);\n } else if (y > yLimitBottom && this.rowEnd === this.bodyBottomRow) {\n // 执行真实body group坐标修改\n this.updateDeltaY(y);\n this.updateBody(y - this.deltaY);\n } else if (\n (!this.table.scenegraph.bodyGroup.firstChild ||\n this.table.scenegraph.bodyGroup.firstChild.type !== 'group' ||\n this.table.scenegraph.bodyGroup.firstChild.childrenCount === 0) &&\n (!this.table.scenegraph.rowHeaderGroup.firstChild ||\n this.table.scenegraph.rowHeaderGroup.firstChild.type !== 'group' ||\n this.table.scenegraph.rowHeaderGroup.firstChild.childrenCount === 0)\n ) {\n this.updateDeltaY(y);\n // 兼容异步加载数据promise的情况 childrenCount=0 如果用户立即调用setScrollTop执行dynamicSetY会出错\n this.updateBody(y - this.deltaY);\n } else {\n // 执行动态更新节点\n this.dynamicSetY(y, screenTop, isEnd);\n }\n }\n\n async setX(x: number, isEnd = false) {\n const xLimitLeft =\n this.table.getColsWidth(this.bodyLeftCol, this.bodyLeftCol + (this.colEnd - this.colStart + 1)) / 2;\n const xLimitRight = this.table.getAllColsWidth() - xLimitLeft;\n\n const screenLeft = this.table.getTargetColAt(x + this.table.scenegraph.rowHeaderGroup.attribute.width);\n if (screenLeft) {\n this.screenLeftCol = screenLeft.col;\n }\n\n if (x < xLimitLeft && this.colStart === this.bodyLeftCol) {\n // 执行真实body group坐标修改\n this.updateDeltaX(x);\n this.table.scenegraph.setBodyAndColHeaderX(-x + this.deltaX);\n } else if (x > xLimitRight && this.colEnd === this.bodyRightCol) {\n // 执行真实body group坐标修改\n this.updateDeltaX(x);\n this.table.scenegraph.setBodyAndColHeaderX(-x + this.deltaX);\n } else if (\n // 注意判断关系 这里不是 || 而是 &&\n this.table.scenegraph.bodyGroup.firstChild &&\n this.table.scenegraph.bodyGroup.firstChild.type === 'group' &&\n this.table.scenegraph.bodyGroup.firstChild.childrenCount === 0\n ) {\n // 兼容异步加载数据promise的情况 childrenCount=0 如果用户立即调用setScrollLeft执行dynamicSetX会出错\n this.updateDeltaX(x);\n this.table.scenegraph.setBodyAndColHeaderX(-x + this.deltaX);\n } else {\n // 执行动态更新节点\n this.dynamicSetX(x, screenLeft, isEnd);\n }\n }\n\n async dynamicSetY(y: number, screenTop: RowInfo | null, isEnd = false) {\n dynamicSetY(y, screenTop, isEnd, this);\n }\n async dynamicSetX(x: number, screenLeft: ColumnInfo | null, isEnd = false) {\n dynamicSetX(x, screenLeft, isEnd, 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.isAutoRowHeight()) {\n computeRowsHeight(this.table, this.rowUpdatePos, distRow, false);\n }\n\n updateRowContent(this.rowUpdatePos, distRow, this);\n\n if (this.table.isAutoRowHeight()) {\n // body group\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n this.rowUpdatePos, // rowStart\n distRow, // rowEnd\n this.table,\n this.rowUpdateDirection,\n true\n );\n // row header group\n updateAutoRow(\n 0, // colStart\n this.table.frozenColCount - 1, // colEnd\n this.rowUpdatePos, // rowStart\n distRow, // rowEnd\n this.table,\n this.rowUpdateDirection,\n true\n );\n // right frozen group\n updateAutoRow(\n this.table.colCount - this.table.rightFrozenColCount, // colStart\n this.table.colCount - 1, // colEnd\n this.rowUpdatePos, // rowStart\n distRow, // rowEnd\n this.table,\n this.rowUpdateDirection,\n true\n );\n }\n\n this.rowUpdatePos = distRow + 1;\n }\n /** 更新底部冻结行的单元格内容 包括两边的角头 */\n updateBottomFrozenCellGroups() {\n const startRow = this.table.rowCount - this.table.bottomFrozenRowCount;\n const endRow = this.table.rowCount - 1;\n if (this.table.isAutoRowHeight()) {\n computeRowsHeight(this.table, startRow, endRow, false);\n }\n updateRowContent(startRow, endRow, this);\n\n if (this.table.isAutoRowHeight()) {\n // body group\n updateAutoRow(\n this.bodyLeftCol, // colStart\n this.bodyRightCol, // colEnd\n startRow, // rowStart\n endRow, // rowEnd\n this.table,\n this.rowUpdateDirection\n );\n // row header group\n updateAutoRow(\n 0, // colStart\n this.table.frozenColCount - 1, // colEnd\n startRow, // rowStart\n endRow, // rowEnd\n this.table,\n this.rowUpdateDirection\n );\n // right frozen group\n updateAutoRow(\n this.table.colCount - this.table.rightFrozenColCount, // colStart\n this.table.colCount - 1, // colEnd\n startRow, // rowStart\n endRow, // rowEnd\n this.table,\n this.rowUpdateDirection\n );\n }\n }\n /** 更新底部冻结行的单元格内容 包括两边的角头 */\n updateRightFrozenCellGroups() {\n const startCol = this.table.colCount - this.table.rightFrozenColCount;\n const endCol = this.table.colCount - 1;\n if (this.table.widthMode === 'autoWidth') {\n computeColsWidth(this.table, startCol, endCol, false);\n }\n console.log('updateRightFrozenCellGroups', startCol, endCol);\n updateColContent(startCol, endCol, this);\n\n if (this.table.isAutoRowHeight()) {\n // body group\n updateAutoColumn(startCol, endCol, this.table, this.colUpdateDirection);\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.mergeStartCol = undefined;\n cellGroup.mergeStartRow = undefined;\n cellGroup.mergeEndCol = undefined;\n cellGroup.mergeEndRow = undefined;\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 || cellGroup.role !== 'cell') {\n return cellGroup;\n }\n\n const newCellGroup = this.table.scenegraph.updateCellContent(cellGroup.col, cellGroup.row);\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.frozenRowCount && // 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.frozenColCount && // 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 updateDeltaY(y: number, screenTopY?: number, screenTopRow?: number) {\n if (this.rowStart === this.bodyTopRow) {\n const cellGroup = this.table.scenegraph.highPerformanceGetCell(this.colStart, this.rowStart, true);\n if (cellGroup.role === 'cell') {\n const deltaY = cellGroup.attribute.y;\n this.deltaY = -deltaY;\n }\n } else if (this.rowEnd === this.bodyBottomRow) {\n const cellGroup = this.table.scenegraph.highPerformanceGetCell(this.colStart, this.rowEnd, true);\n if (cellGroup.role === 'cell') {\n // const deltaY =\n // cellGroup.attribute.y +\n // cellGroup.attribute.height -\n // (this.table.tableNoFrameHeight - this.table.getFrozenRowsHeight() - this.table.getBottomFrozenRowsHeight()) -\n // y;\n const deltaY =\n cellGroup.attribute.y +\n cellGroup.attribute.height -\n (this.table.getAllRowsHeight() - this.table.getFrozenRowsHeight() - this.table.getBottomFrozenRowsHeight());\n this.deltaY = -deltaY;\n }\n } else if (isValid(screenTopY) && isValid(screenTopRow)) {\n let cellGroup = this.table.scenegraph.highPerformanceGetCell(this.colStart, screenTopRow, true);\n if (cellGroup.role !== 'cell') {\n cellGroup = this.table.scenegraph.highPerformanceGetCell(0, screenTopRow, true);\n }\n const bodyY = y - this.deltaY;\n const distRowYOffset = screenTopY - bodyY; // dist cell 距离表格顶部的位置差\n const currentRowYOffset = cellGroup.attribute.y - bodyY + this.table.getFrozenRowsHeight(); // current cell 距离表格顶部的位置差\n // const deltaY = screenTopY - (cellGroup.attribute.y + );\n this.deltaY = distRowYOffset - currentRowYOffset;\n }\n }\n\n updateDeltaX(x: number, screenLeftX?: number, screenLeftCol?: number) {\n if (this.colStart === this.bodyLeftCol) {\n const colGroup = this.table.scenegraph.getColGroup(this.colStart);\n if (colGroup) {\n const deltaX = colGroup.attribute.x;\n this.deltaX = -deltaX;\n }\n } else if (this.colEnd === this.bodyRightCol) {\n const colGroup = this.table.scenegraph.getColGroup(this.colEnd);\n if (colGroup) {\n const deltaX =\n colGroup.attribute.x +\n colGroup.attribute.width -\n (this.table.getAllColsWidth() - this.table.getFrozenColsWidth() - this.table.getRightFrozenColsWidth());\n this.deltaX = -deltaX;\n }\n } else if (isValid(screenLeftX) && isValid(screenLeftCol)) {\n const colGroup =\n this.table.scenegraph.getColGroup(screenLeftCol) || this.table.scenegraph.getColGroup(screenLeftCol, true);\n // const deltaX = screenLeftX - (colGroup.attribute.x + this.table.getFrozenColsWidth() + this.deltaX);\n // this.deltaX = deltaX + this.deltaX;\n const bodyX = x - this.deltaX;\n const distColXOffset = screenLeftX - bodyX; // dist col 距离表格左侧的位置差\n const currentColXOffset = colGroup.attribute.x - bodyX + this.table.getFrozenColsWidth(); // current col 距离表格左侧的位置差\n this.deltaX = distColXOffset - currentColXOffset;\n }\n }\n\n release() {\n this.isRelease = true;\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 }\n const prev = cacheCellGroup._prev as Group;\n const next = cacheCellGroup._next as Group;\n // cacheCellGroup may have wrong order\n if (cacheCellGroup.row > row && prev && prev.row === cacheCellGroup.row - 1) {\n return getCellByCache(prev, row);\n }\n if (cacheCellGroup.row < row && next && next.row === cacheCellGroup.row + 1) {\n return getCellByCache(next, row);\n }\n return null;\n}\n"]}
@@ -64,15 +64,20 @@ function updateReactContainer(table) {
64
64
 
65
65
  function updateReactComponentContainer(scene) {
66
66
  if (!scene.table.reactCustomLayout) return;
67
- const {table: table, stage: stage} = scene, plugin = stage.pluginService.findPluginsByName("ReactAttributePlugin")[0], {htmlMap: htmlMap} = plugin;
67
+ const {table: table, stage: stage} = scene, plugin = stage.pluginService.findPluginsByName("ReactAttributePlugin")[0], {htmlMap: htmlMap, renderId: stageRenderId} = plugin;
68
68
  for (const key in htmlMap) {
69
- const item = htmlMap[key], {graphic: graphic, wrapContainer: wrapContainer} = item;
69
+ const item = htmlMap[key], {graphic: graphic, wrapContainer: wrapContainer, renderId: renderId} = item;
70
+ if (renderId !== stageRenderId) continue;
70
71
  let targetContainer;
71
72
  if (scene.frozenColCount > table.frozenColCount) {
72
- const {col: col, row: row} = (0, util_1.getTargetCell)(graphic);
73
+ const targetCell = (0, util_1.getTargetCell)(graphic);
74
+ if (!targetCell) continue;
75
+ const {col: col, row: row} = targetCell;
73
76
  row >= table.rowCount - table.bottomFrozenRowCount && col < scene.frozenColCount && col >= table.frozenColCount && graphic.attribute.react.container === table.frozenBottomDomContainer ? targetContainer = table.bottomDomContainer : row >= table.frozenRowCount && col < scene.frozenColCount && col >= table.frozenColCount && graphic.attribute.react.container === table.frozenBodyDomContainer ? targetContainer = table.bodyDomContainer : row < table.frozenRowCount && col < scene.frozenColCount && col >= table.frozenColCount && graphic.attribute.react.container === table.frozenHeaderDomContainer && (targetContainer = table.headerDomContainer);
74
77
  } else if (scene.frozenColCount < table.frozenColCount) {
75
- const {col: col, row: row} = (0, util_1.getTargetCell)(graphic);
78
+ const targetCell = (0, util_1.getTargetCell)(graphic);
79
+ if (!targetCell) continue;
80
+ const {col: col, row: row} = targetCell;
76
81
  row >= table.rowCount - table.bottomFrozenRowCount && col < table.frozenColCount && col >= scene.frozenColCount && graphic.attribute.react.container === table.bottomDomContainer ? targetContainer = table.frozenBottomDomContainer : row >= table.frozenRowCount && col < table.frozenColCount && col >= scene.frozenColCount && graphic.attribute.react.container === table.bodyDomContainer ? targetContainer = table.frozenBodyDomContainer : row < table.frozenRowCount && col < table.frozenColCount && col >= scene.frozenColCount && graphic.attribute.react.container === table.headerDomContainer && (targetContainer = table.frozenHeaderDomContainer);
77
82
  }
78
83
  targetContainer && (targetContainer.appendChild(wrapContainer), item.nativeContainer = targetContainer,