@visactor/vtable-gantt 1.26.4 → 1.26.6

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 (63) hide show
  1. package/cjs/Gantt.d.ts +6 -6
  2. package/cjs/Gantt.js +35 -22
  3. package/cjs/Gantt.js.map +1 -1
  4. package/cjs/gantt-helper.js +2 -2
  5. package/cjs/gantt-helper.js.map +1 -1
  6. package/cjs/index.d.ts +3 -2
  7. package/cjs/index.js +11 -2
  8. package/cjs/index.js.map +1 -1
  9. package/cjs/scenegraph/gantt-node.d.ts +1 -1
  10. package/cjs/scenegraph/gantt-node.js.map +1 -1
  11. package/cjs/scenegraph/graphic/group-contribution-render.js +2 -2
  12. package/cjs/scenegraph/graphic/group-contribution-render.js.map +1 -1
  13. package/cjs/scenegraph/graphic/index.d.ts +1 -2
  14. package/cjs/scenegraph/graphic/index.js +2 -2
  15. package/cjs/scenegraph/graphic/index.js.map +1 -1
  16. package/cjs/scenegraph/scenegraph.d.ts +2 -1
  17. package/cjs/scenegraph/scenegraph.js +24 -7
  18. package/cjs/scenegraph/scenegraph.js.map +1 -1
  19. package/cjs/scenegraph/task-bar.d.ts +2 -2
  20. package/cjs/scenegraph/task-bar.js +3 -2
  21. package/cjs/scenegraph/task-bar.js.map +1 -1
  22. package/cjs/state/state-manager.js +4 -2
  23. package/cjs/state/state-manager.js.map +1 -1
  24. package/cjs/tools/pixel-ratio.js +2 -2
  25. package/cjs/tools/pixel-ratio.js.map +1 -1
  26. package/cjs/ts-types/events.d.ts +11 -9
  27. package/cjs/ts-types/events.js.map +1 -1
  28. package/cjs/zoom-scale/DataZoomIntegration.d.ts +1 -0
  29. package/cjs/zoom-scale/DataZoomIntegration.js +19 -5
  30. package/cjs/zoom-scale/DataZoomIntegration.js.map +1 -1
  31. package/dist/vtable-gantt.js +72640 -63540
  32. package/dist/vtable-gantt.min.js +1 -1
  33. package/es/Gantt.d.ts +6 -6
  34. package/es/Gantt.js +35 -22
  35. package/es/Gantt.js.map +1 -1
  36. package/es/gantt-helper.js +3 -1
  37. package/es/gantt-helper.js.map +1 -1
  38. package/es/index.d.ts +3 -2
  39. package/es/index.js +4 -2
  40. package/es/index.js.map +1 -1
  41. package/es/scenegraph/gantt-node.d.ts +1 -1
  42. package/es/scenegraph/gantt-node.js.map +1 -1
  43. package/es/scenegraph/graphic/group-contribution-render.js +4 -2
  44. package/es/scenegraph/graphic/group-contribution-render.js.map +1 -1
  45. package/es/scenegraph/graphic/index.d.ts +1 -2
  46. package/es/scenegraph/graphic/index.js +3 -3
  47. package/es/scenegraph/graphic/index.js.map +1 -1
  48. package/es/scenegraph/scenegraph.d.ts +2 -1
  49. package/es/scenegraph/scenegraph.js +25 -6
  50. package/es/scenegraph/scenegraph.js.map +1 -1
  51. package/es/scenegraph/task-bar.d.ts +2 -2
  52. package/es/scenegraph/task-bar.js +2 -2
  53. package/es/scenegraph/task-bar.js.map +1 -1
  54. package/es/state/state-manager.js +4 -2
  55. package/es/state/state-manager.js.map +1 -1
  56. package/es/tools/pixel-ratio.js +1 -1
  57. package/es/tools/pixel-ratio.js.map +1 -1
  58. package/es/ts-types/events.d.ts +11 -9
  59. package/es/ts-types/events.js.map +1 -1
  60. package/es/zoom-scale/DataZoomIntegration.d.ts +1 -0
  61. package/es/zoom-scale/DataZoomIntegration.js +21 -5
  62. package/es/zoom-scale/DataZoomIntegration.js.map +1 -1
  63. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/gantt-node.ts"],"names":[],"mappings":"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","file":"gantt-node.js","sourcesContent":["import type { IRect, IText, IGroupGraphicAttribute } from '@visactor/vtable/es/vrender';\nimport type { ITaskBarLabelTextStyle } from '../ts-types';\nimport { Group } from '@visactor/vtable/es/vrender';\nimport { getTextPos } from '../gantt-helper';\nimport { toBoxArray } from '../tools/util';\nimport { isValid } from '@visactor/vutils';\nimport { textMeasure } from '@visactor/vtable';\n\nexport class GanttTaskBarNode extends Group {\n milestoneTextLabel?: IText;\n milestoneTextContainer?: Group;\n clipGroupBox: Group;\n barRect?: IRect;\n progressRect?: IRect;\n textLabel?: IText;\n declare name: string;\n task_index: number;\n sub_task_index?: number;\n record?: any;\n labelStyle?: ITaskBarLabelTextStyle;\n\n _lastWidth?: number;\n _lastHeight?: number;\n _lastX?: number;\n _lastY?: number;\n constructor(attrs: IGroupGraphicAttribute) {\n super(attrs);\n this._lastWidth = attrs.width;\n this._lastHeight = attrs.height;\n this._lastX = attrs.x;\n this._lastY = attrs.y;\n }\n\n /**\n * 更新任务条文本标签的位置和样式\n * @description 根据任务条的大小和配置,更新文本标签的位置、对齐方式等属性\n * orient: 直接将文本显示在指定方位位置\n * orientHandleWithOverflow: 只有当文本溢出时才在指定方位显示,当配置了orient时此配置无效\n */\n updateTextPosition() {\n if (!this.textLabel || !this.barRect) {\n return;\n }\n\n const labelStyle = this.labelStyle || {};\n const {\n textAlign = 'left',\n textBaseline = 'middle',\n textOverflow,\n color = '#333333',\n outsideColor = '#333333',\n padding: rawPadding = 8\n } = labelStyle;\n\n const padding = Array.isArray(rawPadding) ? rawPadding[3] : rawPadding;\n const barWidth = this.barRect.attribute.width;\n const barHeight = this.barRect.attribute.height;\n\n const fontSize = this.textLabel.attribute.fontSize || 12;\n const fontFamily = this.textLabel.attribute.fontFamily || 'Arial';\n const text = String(this.textLabel.attribute.text || '');\n const textWidth = textMeasure.measureTextWidth(text, { fontSize, fontFamily });\n\n const textFitsInBar = textWidth + padding * 2 <= barWidth;\n const defaultPosition = getTextPos(toBoxArray(padding), textAlign, textBaseline, barWidth, barHeight);\n const textPosition =\n labelStyle.orient ||\n (!textFitsInBar && labelStyle.orientHandleWithOverflow ? labelStyle.orientHandleWithOverflow : null);\n\n this.textLabel.setAttribute('visible', true);\n this.textLabel.setAttribute('textBaseline', textBaseline);\n\n if (textPosition) {\n this.textLabel.parent?.removeChild(this.textLabel);\n this.appendChild(this.textLabel);\n this.textLabel.setAttribute('fill', outsideColor);\n this.textLabel.setAttribute('ellipsis', undefined);\n this.textLabel.setAttribute('maxLineWidth', undefined);\n this.textLabel.setAttribute('zIndex', 10000);\n this.setAttribute('zIndex', 10000);\n\n type Position = {\n x: number;\n y: number;\n align: string;\n baseline: string;\n };\n type Positions = {\n [key: string]: Position;\n };\n\n const positions: Positions = {\n left: {\n x: -padding,\n y: barHeight / 2,\n align: 'right',\n baseline: 'middle'\n },\n right: {\n x: barWidth + padding,\n y: barHeight / 2,\n align: 'left',\n baseline: 'middle'\n },\n top: {\n x: barWidth / 2,\n y: -padding,\n align: 'center',\n baseline: 'bottom'\n },\n bottom: {\n x: barWidth / 2,\n y: barHeight + padding,\n align: 'center',\n baseline: 'top'\n }\n };\n\n const pos = positions[textPosition];\n if (pos) {\n this.textLabel.setAttribute('x', pos.x);\n this.textLabel.setAttribute('y', pos.y);\n this.textLabel.setAttribute('textAlign', pos.align);\n this.textLabel.setAttribute('textBaseline', pos.baseline);\n }\n } else {\n this.textLabel.parent?.removeChild(this.textLabel);\n this.clipGroupBox?.appendChild(this.textLabel);\n this.textLabel.setAttribute('x', defaultPosition.x);\n this.textLabel.setAttribute('y', defaultPosition.y);\n this.textLabel.setAttribute('textAlign', textAlign);\n this.textLabel.setAttribute('fill', color);\n this.textLabel.setAttribute('maxLineWidth', barWidth - padding);\n this.textLabel.setAttribute(\n 'ellipsis',\n textOverflow === 'clip'\n ? ''\n : textOverflow === 'ellipsis'\n ? '...'\n : isValid(textOverflow)\n ? textOverflow\n : undefined\n );\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/gantt-node.ts"],"names":[],"mappings":"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","file":"gantt-node.js","sourcesContent":["import type { IRect, IText, IGroupGraphicAttribute } from '@visactor/vtable/es/vrender';\nimport type { ITaskBarLabelTextStyle } from '../ts-types';\nimport { Group } from '@visactor/vtable/es/vrender';\nimport { getTextPos } from '../gantt-helper';\nimport { toBoxArray } from '../tools/util';\nimport { isValid } from '@visactor/vutils';\nimport { textMeasure } from '@visactor/vtable';\n\nexport class GanttTaskBarNode extends Group {\n milestoneTextLabel?: IText;\n milestoneTextContainer?: Group;\n clipGroupBox: Group;\n barRect?: IRect;\n progressRect?: IRect;\n textLabel?: IText;\n declare name: string;\n task_index: number;\n sub_task_index?: number | number[];\n record?: any;\n labelStyle?: ITaskBarLabelTextStyle;\n\n _lastWidth?: number;\n _lastHeight?: number;\n _lastX?: number;\n _lastY?: number;\n constructor(attrs: IGroupGraphicAttribute) {\n super(attrs);\n this._lastWidth = attrs.width;\n this._lastHeight = attrs.height;\n this._lastX = attrs.x;\n this._lastY = attrs.y;\n }\n\n /**\n * 更新任务条文本标签的位置和样式\n * @description 根据任务条的大小和配置,更新文本标签的位置、对齐方式等属性\n * orient: 直接将文本显示在指定方位位置\n * orientHandleWithOverflow: 只有当文本溢出时才在指定方位显示,当配置了orient时此配置无效\n */\n updateTextPosition() {\n if (!this.textLabel || !this.barRect) {\n return;\n }\n\n const labelStyle = this.labelStyle || {};\n const {\n textAlign = 'left',\n textBaseline = 'middle',\n textOverflow,\n color = '#333333',\n outsideColor = '#333333',\n padding: rawPadding = 8\n } = labelStyle;\n\n const padding = Array.isArray(rawPadding) ? rawPadding[3] : rawPadding;\n const barWidth = this.barRect.attribute.width;\n const barHeight = this.barRect.attribute.height;\n\n const fontSize = this.textLabel.attribute.fontSize || 12;\n const fontFamily = this.textLabel.attribute.fontFamily || 'Arial';\n const text = String(this.textLabel.attribute.text || '');\n const textWidth = textMeasure.measureTextWidth(text, { fontSize, fontFamily });\n\n const textFitsInBar = textWidth + padding * 2 <= barWidth;\n const defaultPosition = getTextPos(toBoxArray(padding), textAlign, textBaseline, barWidth, barHeight);\n const textPosition =\n labelStyle.orient ||\n (!textFitsInBar && labelStyle.orientHandleWithOverflow ? labelStyle.orientHandleWithOverflow : null);\n\n this.textLabel.setAttribute('visible', true);\n this.textLabel.setAttribute('textBaseline', textBaseline);\n\n if (textPosition) {\n this.textLabel.parent?.removeChild(this.textLabel);\n this.appendChild(this.textLabel);\n this.textLabel.setAttribute('fill', outsideColor);\n this.textLabel.setAttribute('ellipsis', undefined);\n this.textLabel.setAttribute('maxLineWidth', undefined);\n this.textLabel.setAttribute('zIndex', 10000);\n this.setAttribute('zIndex', 10000);\n\n type Position = {\n x: number;\n y: number;\n align: string;\n baseline: string;\n };\n type Positions = {\n [key: string]: Position;\n };\n\n const positions: Positions = {\n left: {\n x: -padding,\n y: barHeight / 2,\n align: 'right',\n baseline: 'middle'\n },\n right: {\n x: barWidth + padding,\n y: barHeight / 2,\n align: 'left',\n baseline: 'middle'\n },\n top: {\n x: barWidth / 2,\n y: -padding,\n align: 'center',\n baseline: 'bottom'\n },\n bottom: {\n x: barWidth / 2,\n y: barHeight + padding,\n align: 'center',\n baseline: 'top'\n }\n };\n\n const pos = positions[textPosition];\n if (pos) {\n this.textLabel.setAttribute('x', pos.x);\n this.textLabel.setAttribute('y', pos.y);\n this.textLabel.setAttribute('textAlign', pos.align);\n this.textLabel.setAttribute('textBaseline', pos.baseline);\n }\n } else {\n this.textLabel.parent?.removeChild(this.textLabel);\n this.clipGroupBox?.appendChild(this.textLabel);\n this.textLabel.setAttribute('x', defaultPosition.x);\n this.textLabel.setAttribute('y', defaultPosition.y);\n this.textLabel.setAttribute('textAlign', textAlign);\n this.textLabel.setAttribute('fill', color);\n this.textLabel.setAttribute('maxLineWidth', barWidth - padding);\n this.textLabel.setAttribute(\n 'ellipsis',\n textOverflow === 'clip'\n ? ''\n : textOverflow === 'ellipsis'\n ? '...'\n : isValid(textOverflow)\n ? textOverflow\n : undefined\n );\n }\n }\n}\n"]}
@@ -4,7 +4,9 @@ var __decorate = this && this.__decorate || function(decorators, target, key, de
4
4
  return c > 3 && r && Object.defineProperty(target, key, r), r;
5
5
  };
6
6
 
7
- import { injectable, BaseRenderContributionTime } from "@visactor/vtable/es/vrender";
7
+ import { BaseRenderContributionTime } from "@visactor/vtable/es/vrender";
8
+
9
+ const injectable = () => target => target;
8
10
 
9
11
  let DateHeaderGroupBeforeRenderContribution = class {
10
12
  constructor() {
@@ -26,7 +28,7 @@ let DateHeaderGroupBeforeRenderContribution = class {
26
28
  }
27
29
  };
28
30
 
29
- DateHeaderGroupBeforeRenderContribution = __decorate([ injectable() ], DateHeaderGroupBeforeRenderContribution);
31
+ DateHeaderGroupBeforeRenderContribution = __decorate([ target => target ], DateHeaderGroupBeforeRenderContribution);
30
32
 
31
33
  export { DateHeaderGroupBeforeRenderContribution };
32
34
  //# sourceMappingURL=group-contribution-render.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/graphic/group-contribution-render.ts"],"names":[],"mappings":";;;;;;AAUA,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAO9E,IAAM,uCAAuC,GAA7C,MAAM,uCAAuC;IAA7C;QACL,SAAI,GAA+B,0BAA0B,CAAC,gBAAgB,CAAC;QAC/E,aAAQ,GAAG,IAAI,CAAC;QAChB,UAAK,GAAG,CAAC,CAAC;QACV,qBAAgB,GAAW,QAAQ,CAAC;IAoDtC,CAAC;IAnDC,SAAS,CACP,KAAa,EACb,OAAmB,EACnB,CAAS,EACT,CAAS,EACT,MAAe,EACf,QAAiB,EACjB,QAAiB,EACjB,QAAiB,EACjB,cAAgD,EAChD,WAAyB,EACzB,MAIY,EACZ,QAIY,EACZ,cAAuD;QAEvD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE;YACrC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAU,EAAE,EAAE;;gBACnC,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,EAAE;oBAChF,MAAM,IAAI,GAAG,KAAK,CAAC;oBACnB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;oBACzC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;oBAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;oBACjD,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;oBAC1D,IAAI,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;wBAErC,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;4BAC3E,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,mCAAI,CAAC,CAAC,CAAC;yBACtD;6BAAM;4BACL,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,EAAE;gCAClC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;gCACvD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;6BAC7D;iCAAM,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,EAAE;gCACzC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;gCACvD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;6BAC7D;yBACF;qBAEF;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF,CAAA;AAxDY,uCAAuC;IADnD,UAAU,EAAE;GACA,uCAAuC,CAwDnD;SAxDY,uCAAuC","file":"group-contribution-render.js","sourcesContent":["import type {\n IContext2d,\n IDrawContext,\n IMarkAttribute,\n IGraphicAttribute,\n IThemeAttribute,\n IGroupGraphicAttribute,\n IGroup,\n IGroupRenderContribution\n} from '@visactor/vtable/es/vrender';\nimport { injectable, BaseRenderContributionTime } from '@visactor/vtable/es/vrender';\n\n// const highlightDash: number[] = [];\n\n// SplitGroupContribution处理分段渲染stroke\n// stroke/strokeArrayWidth/strokeArrayColor 为数组时调用\n@injectable()\nexport class DateHeaderGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n supportedAppName: string = 'vtable';\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n if (group.name === 'date-header-cell') {\n group.forEachChildren((child: any) => {\n if (child.name === 'date-header-cell-text' && child.attribute.textStick === true) {\n const text = child;\n text.setAttribute('dx', 0);\n const textBounds = text.globalAABBBounds;\n const stageBound = text.stage.globalAABBBounds;\n const groupParent = text.parent.globalAABBBounds;\n const intersectBounds = stageBound.intersect(groupParent);\n if (stageBound.intersect(groupParent)) {\n // if (!stageBound.contains(textBounds)) {\n if (textBounds.width() >= intersectBounds.width() && text.attribute.last_dx) {\n text.setAttribute('dx', text.attribute.last_dx ?? 0);\n } else {\n if (stageBound.x1 >= textBounds.x1) {\n text.setAttribute('dx', stageBound.x1 - textBounds.x1);\n text.setAttribute('last_dx', stageBound.x1 - textBounds.x1);\n } else if (stageBound.x2 <= textBounds.x2) {\n text.setAttribute('dx', stageBound.x2 - textBounds.x2);\n text.setAttribute('last_dx', stageBound.x1 - textBounds.x1);\n }\n }\n // }\n }\n }\n });\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/graphic/group-contribution-render.ts"],"names":[],"mappings":";;;;;;AAUA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,MAAM,UAAU,GACd,GAAG,EAAE,CACL,CAAI,MAAS,EAAK,EAAE,CAClB,MAAM,CAAC;AAOJ,IAAM,uCAAuC,GAA7C,MAAM,uCAAuC;IAA7C;QACL,SAAI,GAA+B,0BAA0B,CAAC,gBAAgB,CAAC;QAC/E,aAAQ,GAAG,IAAI,CAAC;QAChB,UAAK,GAAG,CAAC,CAAC;QACV,qBAAgB,GAAW,QAAQ,CAAC;IAoDtC,CAAC;IAnDC,SAAS,CACP,KAAa,EACb,OAAmB,EACnB,CAAS,EACT,CAAS,EACT,MAAe,EACf,QAAiB,EACjB,QAAiB,EACjB,QAAiB,EACjB,cAAgD,EAChD,WAAyB,EACzB,MAIY,EACZ,QAIY,EACZ,cAAuD;QAEvD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE;YACrC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAU,EAAE,EAAE;;gBACnC,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,EAAE;oBAChF,MAAM,IAAI,GAAG,KAAK,CAAC;oBACnB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;oBACzC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;oBAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;oBACjD,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;oBAC1D,IAAI,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;wBAErC,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;4BAC3E,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,mCAAI,CAAC,CAAC,CAAC;yBACtD;6BAAM;4BACL,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,EAAE;gCAClC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;gCACvD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;6BAC7D;iCAAM,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,EAAE;gCACzC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;gCACvD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;6BAC7D;yBACF;qBAEF;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF,CAAA;AAxDY,uCAAuC;IADnD,UAAU,EAAE;GACA,uCAAuC,CAwDnD;SAxDY,uCAAuC","file":"group-contribution-render.js","sourcesContent":["import type {\n IContext2d,\n IDrawContext,\n IMarkAttribute,\n IGraphicAttribute,\n IThemeAttribute,\n IGroupGraphicAttribute,\n IGroup,\n IGroupRenderContribution\n} from '@visactor/vtable/es/vrender';\nimport { BaseRenderContributionTime } from '@visactor/vtable/es/vrender';\n\nconst injectable =\n () =>\n <T>(target: T): T =>\n target;\n\n// const highlightDash: number[] = [];\n\n// SplitGroupContribution处理分段渲染stroke\n// stroke/strokeArrayWidth/strokeArrayColor 为数组时调用\n@injectable()\nexport class DateHeaderGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n supportedAppName: string = 'vtable';\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n if (group.name === 'date-header-cell') {\n group.forEachChildren((child: any) => {\n if (child.name === 'date-header-cell-text' && child.attribute.textStick === true) {\n const text = child;\n text.setAttribute('dx', 0);\n const textBounds = text.globalAABBBounds;\n const stageBound = text.stage.globalAABBBounds;\n const groupParent = text.parent.globalAABBBounds;\n const intersectBounds = stageBound.intersect(groupParent);\n if (stageBound.intersect(groupParent)) {\n // if (!stageBound.contains(textBounds)) {\n if (textBounds.width() >= intersectBounds.width() && text.attribute.last_dx) {\n text.setAttribute('dx', text.attribute.last_dx ?? 0);\n } else {\n if (stageBound.x1 >= textBounds.x1) {\n text.setAttribute('dx', stageBound.x1 - textBounds.x1);\n text.setAttribute('last_dx', stageBound.x1 - textBounds.x1);\n } else if (stageBound.x2 <= textBounds.x2) {\n text.setAttribute('dx', stageBound.x2 - textBounds.x2);\n text.setAttribute('last_dx', stageBound.x1 - textBounds.x1);\n }\n }\n // }\n }\n }\n });\n }\n }\n}\n"]}
@@ -1,3 +1,2 @@
1
- import { ContainerModule } from '@visactor/vtable/es/vrender';
2
- declare const _default: ContainerModule;
1
+ declare const _default: ({ bind }: any) => void;
3
2
  export default _default;
@@ -1,8 +1,8 @@
1
- import { ContainerModule, GroupRenderContribution } from "@visactor/vtable/es/vrender";
1
+ import { GroupRenderContribution } from "@visactor/vtable/es/vrender";
2
2
 
3
3
  import { DateHeaderGroupBeforeRenderContribution } from "./group-contribution-render";
4
4
 
5
- export default new ContainerModule(((bind, unbind, isBound, rebind) => {
5
+ export default ({bind: bind}) => {
6
6
  bind(DateHeaderGroupBeforeRenderContribution).toSelf().inSingletonScope(), bind(GroupRenderContribution).toService(DateHeaderGroupBeforeRenderContribution);
7
- }));
7
+ };
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/graphic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEvF,OAAO,EAAE,uCAAuC,EAAE,MAAM,6BAA6B,CAAC;AAEtF,eAAe,IAAI,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAMnE,IAAI,CAAC,uCAAuC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1E,IAAI,CAAC,uBAAuB,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC","file":"index.js","sourcesContent":["import { ContainerModule, GroupRenderContribution } from '@visactor/vtable/es/vrender';\n\nimport { DateHeaderGroupBeforeRenderContribution } from './group-contribution-render';\n\nexport default new ContainerModule((bind, unbind, isBound, rebind) => {\n // text 渲染器注入contributions\n // bind(TextStickBeforeRenderContribution).toSelf().inSingletonScope();\n // bind(TextRenderContribution).toService(TextStickBeforeRenderContribution);\n\n // group 渲染器注入contributions\n bind(DateHeaderGroupBeforeRenderContribution).toSelf().inSingletonScope();\n bind(GroupRenderContribution).toService(DateHeaderGroupBeforeRenderContribution);\n});\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/graphic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,uCAAuC,EAAE,MAAM,6BAA6B,CAAC;AAEtF,eAAe,CAAC,EAAE,IAAI,EAAO,EAAE,EAAE;IAM/B,IAAI,CAAC,uCAAuC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1E,IAAI,CAAC,uBAAuB,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;AACnF,CAAC,CAAC","file":"index.js","sourcesContent":["import { GroupRenderContribution } from '@visactor/vtable/es/vrender';\n\nimport { DateHeaderGroupBeforeRenderContribution } from './group-contribution-render';\n\nexport default ({ bind }: any) => {\n // text 渲染器注入contributions\n // bind(TextStickBeforeRenderContribution).toSelf().inSingletonScope();\n // bind(TextRenderContribution).toService(TextStickBeforeRenderContribution);\n\n // group 渲染器注入contributions\n bind(DateHeaderGroupBeforeRenderContribution).toSelf().inSingletonScope();\n bind(GroupRenderContribution).toService(DateHeaderGroupBeforeRenderContribution);\n};\n"]}
@@ -29,6 +29,7 @@ export declare class Scenegraph {
29
29
  taskCreationButton: TaskCreationButton;
30
30
  toolTip: ToolTip;
31
31
  stage: Stage;
32
+ releaseVRenderAppRef?: () => void;
32
33
  tableGroupWidth: number;
33
34
  tableGroupHeight: number;
34
35
  constructor(gantt: Gantt);
@@ -55,5 +56,5 @@ export declare class Scenegraph {
55
56
  hideTaskCreationButton(): void;
56
57
  showToolTip(target: any): void;
57
58
  hideToolTip(): void;
58
- refreshRecordLinkNodes(taskIndex: number, sub_task_index: number, target: GanttTaskBarNode, dy?: number): void;
59
+ refreshRecordLinkNodes(taskIndex: number, sub_task_index: number | number[], target: GanttTaskBarNode, dy?: number): void;
59
60
  }
@@ -1,4 +1,6 @@
1
- import { container, Group, vglobal, createStage } from "@visactor/vtable/es/vrender";
1
+ import { container, Group } from "@visactor/vtable/es/vrender";
2
+
3
+ import { createStageFromVRenderApp } from "@visactor/vtable/es/vrender-app";
2
4
 
3
5
  import { Grid } from "./grid";
4
6
 
@@ -34,22 +36,31 @@ container.load(graphicContribution);
34
36
 
35
37
  export class Scenegraph {
36
38
  constructor(gantt) {
39
+ var _a, _b, _c, _d;
37
40
  let width, height;
38
41
  this._gantt = gantt, this.tableGroupWidth = gantt.tableNoFrameWidth, this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight),
39
- "node" === Env.mode || (vglobal.setEnv("browser"), width = gantt.canvas.width, height = gantt.canvas.height),
40
- this.stage = createStage({
42
+ "node" === Env.mode || (width = null !== (_b = null === (_a = gantt.canvas.parentElement) || void 0 === _a ? void 0 : _a.offsetWidth) && void 0 !== _b ? _b : gantt.canvas.width,
43
+ height = null !== (_d = null === (_c = gantt.canvas.parentElement) || void 0 === _c ? void 0 : _c.offsetHeight) && void 0 !== _d ? _d : gantt.canvas.height);
44
+ const {stage: stage, releaseAppRef: releaseAppRef} = createStageFromVRenderApp({
41
45
  canvas: gantt.canvas,
42
46
  width: width,
43
47
  height: height,
44
48
  disableDirtyBounds: !1,
45
49
  background: gantt.parsedOptions.underlayBackgroundColor,
50
+ dpr: gantt.parsedOptions.pixelRatio,
46
51
  enableLayout: !0,
47
52
  autoRender: !1,
53
+ canvasControled: !0,
48
54
  context: {
49
55
  appName: "vtable"
50
56
  },
51
57
  pluginList: [ "poptipForText" ]
52
- }), this.stage.gantt = this._gantt, this.stage.table = this._gantt, this.stage.defaultLayer.setTheme({
58
+ }, {
59
+ mode: "node" === Env.mode ? "node" : "browser",
60
+ scope: "vtable-gantt"
61
+ });
62
+ this.stage = stage, this.releaseVRenderAppRef = releaseAppRef, this.stage.gantt = this._gantt,
63
+ this.stage.table = this._gantt, this.stage.defaultLayer.setTheme({
53
64
  group: {
54
65
  boundsPadding: 0,
55
66
  strokeBoundsBuffer: 0,
@@ -76,10 +87,12 @@ export class Scenegraph {
76
87
  this.dragOrderLine = new DragOrderLine(this);
77
88
  }
78
89
  updateSceneGraph() {
90
+ var _a, _b, _c, _d;
79
91
  const gantt = this._gantt;
80
92
  let width, height;
81
93
  this.tableGroupWidth = gantt.tableNoFrameWidth, this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight),
82
- "node" === Env.mode || (vglobal.setEnv("browser"), width = gantt.canvas.width, height = gantt.canvas.height),
94
+ "node" === Env.mode || (width = null !== (_b = null === (_a = gantt.canvas.parentElement) || void 0 === _a ? void 0 : _a.offsetWidth) && void 0 !== _b ? _b : gantt.canvas.width / gantt.parsedOptions.pixelRatio,
95
+ height = null !== (_d = null === (_c = gantt.canvas.parentElement) || void 0 === _c ? void 0 : _c.offsetHeight) && void 0 !== _d ? _d : gantt.canvas.height / gantt.parsedOptions.pixelRatio),
83
96
  this.stage.resize(width, height), this.refreshAll();
84
97
  }
85
98
  afterCreateSceneGraph() {
@@ -153,7 +166,13 @@ export class Scenegraph {
153
166
  this.updateTableSize(), this.scrollbarComponent.updateScrollBar(), this.updateNextFrame();
154
167
  }
155
168
  release() {
156
- this.stage.release();
169
+ const releaseAppRef = this.releaseVRenderAppRef;
170
+ this.releaseVRenderAppRef = void 0;
171
+ try {
172
+ this.stage.release();
173
+ } finally {
174
+ null == releaseAppRef || releaseAppRef();
175
+ }
157
176
  }
158
177
  showTaskCreationButton(x, y, dateIndex) {
159
178
  this.taskCreationButton || (this.taskCreationButton = new TaskCreationButton(this._gantt.scenegraph));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/scenegraph.ts"],"names":[],"mappings":"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","file":"scenegraph.js","sourcesContent":["import type { Stage } from '@visactor/vtable/es/vrender';\nimport { container, Group, vglobal, createStage } from '@visactor/vtable/es/vrender';\nimport { Grid } from './grid';\nimport type { Gantt } from '../Gantt';\nimport { Env } from '../env';\nimport { ScrollBarComponent } from './scroll-bar';\nimport { bindScrollBarListener } from '../event/scroll';\nimport { TimelineHeader } from './timeline-header';\nimport { TaskBar } from './task-bar';\nimport { MarkLine } from './mark-line';\nimport { FrameBorder } from './frame-border';\nimport { findRecordByTaskKey, getTaskIndexsByTaskY } from '../gantt-helper';\nimport graphicContribution from './graphic';\nimport { TaskCreationButton } from './task-creation-button';\nimport { ToolTip } from './tooltip';\nimport { DependencyLink, updateLinkLinePoints } from './dependency-link';\nimport { DragOrderLine } from './drag-order-line';\nimport type { GanttTaskBarNode } from './gantt-node';\nimport { TasksShowMode, TaskType } from '../ts-types';\ncontainer.load(graphicContribution);\nexport class Scenegraph {\n dateStepWidth: number;\n rowHeight: number;\n _scales: {}[];\n timelineHeader: TimelineHeader;\n grid: Grid;\n dependencyLink: DependencyLink;\n taskBar: TaskBar;\n _gantt: Gantt;\n ganttGroup: Group;\n scrollbarComponent: ScrollBarComponent;\n markLine: MarkLine;\n dragOrderLine: DragOrderLine;\n frameBorder: FrameBorder;\n taskCreationButton: TaskCreationButton;\n toolTip: ToolTip;\n stage: Stage;\n tableGroupWidth: number;\n tableGroupHeight: number;\n constructor(gantt: Gantt) {\n this._gantt = gantt;\n this.tableGroupWidth = gantt.tableNoFrameWidth;\n this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight);\n let width;\n let height;\n if (Env.mode === 'node') {\n // vglobal.setEnv('node', gantt.options.modeParams);\n // width = table.canvasWidth;\n // height = table.canvasHeight;\n } else {\n vglobal.setEnv('browser');\n width = gantt.canvas.width;\n height = gantt.canvas.height;\n }\n this.stage = createStage({\n canvas: gantt.canvas,\n width,\n height,\n disableDirtyBounds: false,\n background: gantt.parsedOptions.underlayBackgroundColor,\n // dpr: gantt.internalProps.pixelRatio,\n enableLayout: true,\n autoRender: false,\n context: {\n appName: 'vtable'\n },\n pluginList: ['poptipForText']\n // afterRender: () => {\n // this._gantt.fireListeners('after_render', null);\n // }\n });\n (this.stage as any).gantt = this._gantt;\n (this.stage as any).table = this._gantt; // 为了使用bindDebugTool\n this.stage.defaultLayer.setTheme({\n group: {\n boundsPadding: 0,\n strokeBoundsBuffer: 0,\n lineJoin: 'round'\n },\n text: {\n ignoreBuf: true\n }\n });\n this.initSceneGraph();\n }\n\n initSceneGraph() {\n const scene = this;\n\n scene.ganttGroup = new Group({\n x: scene._gantt.tableX,\n y: scene._gantt.tableY,\n width: this.tableGroupWidth,\n height: this.tableGroupHeight,\n clip: true,\n pickable: false\n });\n scene.stage.defaultLayer.add(scene.ganttGroup);\n scene.ganttGroup.name = 'table';\n // 初始化顶部时间线表头部分\n scene.timelineHeader = new TimelineHeader(scene);\n\n // 初始化网格线组件\n scene.grid = new Grid(scene);\n // 初始化任务条线组件\n scene.dependencyLink = new DependencyLink(scene);\n // 初始化任务条线组件\n scene.taskBar = new TaskBar(scene);\n\n // 初始化标记线组件\n scene.markLine = new MarkLine(scene);\n scene.toolTip = new ToolTip(scene);\n\n // 初始化边框\n scene.frameBorder = new FrameBorder(scene);\n\n // 初始化滚动条组件\n scene.scrollbarComponent = new ScrollBarComponent(scene._gantt);\n scene.stage.defaultLayer.addChild(scene.scrollbarComponent.hScrollBar);\n scene.stage.defaultLayer.addChild(scene.scrollbarComponent.vScrollBar);\n\n //初始化换位交互标记线\n scene.dragOrderLine = new DragOrderLine(scene);\n }\n updateSceneGraph() {\n const gantt = this._gantt;\n this.tableGroupWidth = gantt.tableNoFrameWidth;\n this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight);\n let width;\n let height;\n if (Env.mode === 'node') {\n } else {\n vglobal.setEnv('browser');\n width = gantt.canvas.width;\n height = gantt.canvas.height;\n }\n this.stage.resize(width, height);\n this.refreshAll();\n }\n\n afterCreateSceneGraph() {\n this.scrollbarComponent.updateScrollBar();\n bindScrollBarListener(this._gantt.eventManager);\n }\n\n refreshAll() {\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroupWidth = this._gantt.tableNoFrameWidth;\n this.ganttGroup.setAttribute('height', this.tableGroupHeight);\n this.ganttGroup.setAttribute('width', this.tableGroupWidth);\n this.timelineHeader.refresh();\n this.grid.refresh();\n this.taskBar.refresh();\n this.dependencyLink.refresh();\n this.markLine.refresh();\n this.dependencyLink.refresh();\n this.frameBorder.refresh();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n\n refreshTaskBars() {\n // this.timelineHeader.refresh();\n // this.grid.refresh();\n this.dependencyLink.refresh();\n this.taskBar.refresh();\n // this.markLine.refresh();\n // this.frameBorder.refresh();\n // this.scrollbarComponent.refresh();\n this.updateNextFrame();\n }\n refreshTaskBarsAndGrid() {\n this._gantt.verticalSplitResizeLine.style.height = this._gantt.drawHeight + 'px'; //'100%';\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.ganttGroup.setAttribute('height', this.tableGroupHeight);\n // this.timelineHeader.refresh();\n this.grid.refresh();\n this.taskBar.refresh();\n this.dependencyLink.refresh();\n this.markLine.refresh();\n this.frameBorder.resize();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n\n updateTableSize() {\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroupWidth = this._gantt.tableNoFrameWidth;\n this.ganttGroup.setAttributes({\n x: this._gantt.tableX,\n y: this._gantt.tableY,\n width: this._gantt.tableNoFrameWidth,\n height: this.tableGroupHeight\n } as any);\n this.grid.resize();\n this.taskBar.resize();\n this.dependencyLink.resize();\n this.markLine.refresh();\n this.frameBorder.resize();\n }\n\n updateStageBackground() {\n this.stage.background = this._gantt.parsedOptions.underlayBackgroundColor;\n this.updateNextFrame();\n }\n\n /**\n * @description: 绘制场景树\n * @param {any} element\n * @param {CellRange} visibleCoord\n * @return {*}\n */\n renderSceneGraph() {\n this.stage.render();\n }\n\n /**\n * @description: 触发下一帧渲染\n * @return {*}\n */\n updateNextFrame() {\n this.stage.renderNextFrame();\n }\n get width(): number {\n return this.ganttGroup.attribute?.width ?? 0;\n }\n\n get height(): number {\n return this.ganttGroup.attribute?.height ?? 0;\n }\n\n get x(): number {\n return this.ganttGroup.attribute?.x ?? 0;\n }\n\n get y(): number {\n return this.ganttGroup.attribute?.y ?? 0;\n }\n\n /**\n * @description: 设置表格的x位置,滚动中使用\n * @param {number} x\n * @return {*}\n */\n setX(x: number, isEnd = false) {\n this.timelineHeader.setX(x);\n this.grid.setX(x);\n this.taskBar.setX(x);\n this.dependencyLink.setX(x);\n this.markLine.setX(x);\n this.updateNextFrame();\n // this._gantt.scenegraph.proxy.setX(-x, isEnd);\n }\n\n /**\n * @description: 更新表格的y位置,滚动中使用\n * @param {number} y\n * @return {*}\n */\n setY(y: number, isEnd = false) {\n // this._gantt.scenegraph.proxy.setY(-y, isEnd);\n this.grid.setY(y);\n this.taskBar.setY(y);\n this.dependencyLink.setY(y);\n this.updateNextFrame();\n }\n\n setPixelRatio(pixelRatio: number) {\n // this.stage.setDpr(pixelRatio);\n // 这里因为本时刻部分节点有更新bounds标记,直接render回导致开启DirtyBounds,无法完整重绘画布;\n // 所以这里先关闭DirtyBounds,等待下一帧再开启\n this.stage.disableDirtyBounds();\n this.stage.window.setDpr(pixelRatio);\n this.stage.render();\n this.stage.enableDirtyBounds();\n }\n\n resize() {\n this.updateTableSize();\n // this.updateBorderSizeAndPosition();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n release() {\n this.stage.release();\n }\n\n showTaskCreationButton(x: number, y: number, dateIndex: number) {\n if (!this.taskCreationButton) {\n this.taskCreationButton = new TaskCreationButton(this._gantt.scenegraph);\n }\n //根据最大最小宽度计算按钮的宽度\n const createButton_max_width = this._gantt.parsedOptions.taskBarCreationMaxWidth;\n const createButton_min_width = this._gantt.parsedOptions.taskBarCreationMinWidth;\n const col_width = this._gantt.getDateColWidth(dateIndex);\n const button_width = createButton_max_width\n ? Math.min(\n createButton_max_width,\n createButton_min_width ? Math.max(createButton_min_width, col_width) : col_width\n )\n : createButton_min_width\n ? Math.max(createButton_min_width, col_width)\n : col_width;\n // 调整x,使按钮居中\n const button_x = x - (button_width - col_width) / 2;\n this.taskCreationButton.show(button_x, y, button_width, this._gantt.parsedOptions.rowHeight);\n this.updateNextFrame();\n }\n\n hideTaskCreationButton() {\n if (this.taskCreationButton) {\n this.taskCreationButton.hide();\n this.updateNextFrame();\n }\n }\n\n showToolTip(target: any) {\n if (!this.toolTip) {\n this.toolTip = new ToolTip(this._gantt.scenegraph);\n }\n this.toolTip.show(target);\n }\n\n hideToolTip() {\n this.toolTip.hide();\n }\n\n refreshRecordLinkNodes(taskIndex: number, sub_task_index: number, target: GanttTaskBarNode, dy: number = 0) {\n const gantt: Gantt = this._gantt;\n const record = gantt.getRecordByIndex(taskIndex, sub_task_index);\n const vtable_gantt_linkedTo = record.vtable_gantt_linkedTo;\n const vtable_gantt_linkedFrom = record.vtable_gantt_linkedFrom;\n for (let i = 0; i < vtable_gantt_linkedTo?.length; i++) {\n const link = vtable_gantt_linkedTo[i];\n const linkLineNode = link.vtable_gantt_linkLineNode;\n const lineArrowNode = link.vtable_gantt_linkArrowNode;\n\n const { linkedToTaskKey, linkedFromTaskKey, type } = link;\n const { taskKeyField, minDate } = gantt.parsedOptions;\n const linkedFromTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedFromTaskKey);\n const linkedToTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedToTaskKey);\n // const { startDate: linkedToTaskStartDate, endDate: linkedToTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskIndex);\n // const taskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n // const { startDate: linkedFromTaskStartDate, endDate: linkedFromTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskShowIndex);\n\n let linkedToTaskStartDate;\n let linkedToTaskEndDate;\n let linkedToTaskTaskDays;\n // let linkedToTaskTaskRecord;\n let linkedFromTaskStartDate;\n let linkedFromTaskEndDate;\n let linkedFromTaskTaskDays;\n // let linkedFromTaskTaskRecord;\n\n let linkedToTaskShowIndex;\n let linkedFromTaskShowIndex;\n let diffY: number;\n const taskBarStyle = this._gantt.getTaskBarStyle(taskIndex, sub_task_index);\n if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n linkedFromTaskShowIndex = linkedFromTaskRecord.index[0];\n // linkedToTaskShowIndex = linkedToTaskRecord.index[0];\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex = beforeRowCountLinkedTo;\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n\n const taskbarHeight = taskBarStyle.width;\n diffY = target.attribute.y + taskbarHeight / 2 - (linkedToTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Project_Sub_Tasks_Inline) {\n const fromParentRecordShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index.slice(0, -1));\n const toParentRecordShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index.slice(0, -1));\n const fromParentRecord = gantt.getRecordByIndex(fromParentRecordShowIndex);\n const toParentRecord = gantt.getRecordByIndex(toParentRecordShowIndex);\n if (\n fromParentRecord.type === TaskType.PROJECT &&\n fromParentRecord.hierarchyState !== 'expand' &&\n gantt.parsedOptions.projectSubTasksExpandable !== false\n ) {\n // Task is part of a collapsed project - it appears inline with project\n linkedFromTaskShowIndex = fromParentRecordShowIndex;\n } else {\n // Normal task display\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n }\n if (\n toParentRecord.type === TaskType.PROJECT &&\n toParentRecord.hierarchyState !== 'expand' &&\n gantt.parsedOptions.projectSubTasksExpandable !== false\n ) {\n // Task is part of a collapsed project - it appears inline with project\n linkedToTaskShowIndex = toParentRecordShowIndex;\n } else {\n // Normal task display\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n }\n\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex, linkedToTaskRecord.index));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex, linkedFromTaskRecord.index));\n } else if (\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, linkedFromTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex =\n beforeRowCountLinkedFrom +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedFromTaskRecord.record.vtable_gantt_showIndex\n : linkedFromTaskRecord.index[1]);\n // const beforeRowCountLinkedTo =\n // gantt.getRowsHeightByIndex(0, linkedToTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n // linkedToTaskShowIndex = beforeRowCountLinkedTo + linkedToTaskRecord.index[1];\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex =\n beforeRowCountLinkedTo +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedToTaskRecord.record.vtable_gantt_showIndex\n : new_indexs.sub_task_index);\n\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n\n const taskbarHeight = taskBarStyle.width;\n diffY = target.attribute.y + taskbarHeight / 2 - (linkedToTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else {\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n if (linkedFromTaskShowIndex === -1 || linkedToTaskShowIndex === -1) {\n continue;\n }\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex));\n }\n if (\n !linkedFromTaskStartDate ||\n !linkedFromTaskEndDate ||\n !linkedToTaskStartDate ||\n !linkedToTaskEndDate ||\n !linkLineNode ||\n !lineArrowNode\n ) {\n return;\n }\n const { linePoints, arrowPoints } = updateLinkLinePoints(\n type,\n linkedFromTaskStartDate,\n linkedFromTaskEndDate,\n linkedFromTaskShowIndex,\n linkedFromTaskTaskDays,\n linkedFromTaskRecord.record.type === TaskType.MILESTONE,\n null,\n 0,\n linkedToTaskStartDate,\n linkedToTaskEndDate,\n linkedToTaskShowIndex,\n linkedToTaskTaskDays,\n linkedToTaskRecord.record.type === TaskType.MILESTONE,\n target,\n diffY ?? 0,\n this._gantt\n );\n linkLineNode.setAttribute('points', linePoints);\n lineArrowNode.setAttribute('points', arrowPoints);\n }\n\n for (let i = 0; i < vtable_gantt_linkedFrom?.length; i++) {\n const link = vtable_gantt_linkedFrom[i];\n const linkLineNode = link.vtable_gantt_linkLineNode;\n const lineArrowNode = link.vtable_gantt_linkArrowNode;\n\n const { linkedToTaskKey, linkedFromTaskKey, type } = link;\n const { taskKeyField, minDate } = gantt.parsedOptions;\n const linkedToTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedToTaskKey);\n const linkedFromTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedFromTaskKey);\n // const { startDate: linkedFromTaskStartDate, endDate: linkedFromTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskIndex);\n // const taskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n // const { startDate: linkedToTaskStartDate, endDate: linkedToTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskShowIndex);\n\n let linkedToTaskStartDate;\n let linkedToTaskEndDate;\n let linkedToTaskTaskDays;\n let linkedFromTaskStartDate;\n let linkedFromTaskEndDate;\n let linkedFromTaskTaskDays;\n\n let linkedToTaskShowIndex;\n let linkedFromTaskShowIndex;\n let diffY: number;\n const taskBarStyle = this._gantt.getTaskBarStyle(taskIndex, sub_task_index);\n if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex = beforeRowCountLinkedFrom;\n\n // linkedFromTaskShowIndex = linkedFromTaskRecord.index[0];\n linkedToTaskShowIndex = linkedToTaskRecord.index[0];\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n const taskbarHeight = taskBarStyle.width;\n diffY =\n target.attribute.y + taskbarHeight / 2 - (linkedFromTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Project_Sub_Tasks_Inline) {\n const fromParentRecordShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index.slice(0, -1));\n const toParentRecordShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index.slice(0, -1));\n const fromParentRecord = gantt.getRecordByIndex(fromParentRecordShowIndex);\n const toParentRecord = gantt.getRecordByIndex(toParentRecordShowIndex);\n if (\n fromParentRecord.type === TaskType.PROJECT &&\n fromParentRecord.hierarchyState !== 'expand' &&\n gantt.parsedOptions.projectSubTasksExpandable !== false\n ) {\n // Task is part of a collapsed project - it appears inline with project\n linkedFromTaskShowIndex = fromParentRecordShowIndex;\n } else {\n // Normal task display\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n }\n if (\n toParentRecord.type === TaskType.PROJECT &&\n toParentRecord.hierarchyState !== 'expand' &&\n gantt.parsedOptions.projectSubTasksExpandable !== false\n ) {\n // Task is part of a collapsed project - it appears inline with project\n linkedToTaskShowIndex = toParentRecordShowIndex;\n } else {\n // Normal task display\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n }\n\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex, linkedToTaskRecord.index));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex, linkedFromTaskRecord.index));\n } else if (\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n // const beforeRowCountLinkedFrom =\n // gantt.getRowsHeightByIndex(0, linkedFromTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n // linkedFromTaskShowIndex = beforeRowCountLinkedFrom + linkedFromTaskRecord.index[1];\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex =\n beforeRowCountLinkedFrom +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedFromTaskRecord.record.vtable_gantt_showIndex\n : new_indexs.sub_task_index);\n\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, linkedToTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex =\n beforeRowCountLinkedTo +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedToTaskRecord.record.vtable_gantt_showIndex\n : linkedToTaskRecord.index[1]);\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n const taskbarHeight = taskBarStyle.width;\n diffY =\n target.attribute.y + taskbarHeight / 2 - (linkedFromTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else {\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n if (linkedFromTaskShowIndex === -1 || linkedToTaskShowIndex === -1) {\n continue;\n }\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex));\n }\n if (\n !linkedFromTaskStartDate ||\n !linkedFromTaskEndDate ||\n !linkedToTaskStartDate ||\n !linkedToTaskEndDate ||\n !linkLineNode ||\n !lineArrowNode\n ) {\n return;\n }\n const { linePoints, arrowPoints } = updateLinkLinePoints(\n type,\n linkedFromTaskStartDate,\n linkedFromTaskEndDate,\n linkedFromTaskShowIndex,\n linkedFromTaskTaskDays,\n linkedFromTaskRecord.record.type === TaskType.MILESTONE,\n target,\n diffY ?? 0,\n linkedToTaskStartDate,\n linkedToTaskEndDate,\n linkedToTaskShowIndex,\n linkedToTaskTaskDays,\n linkedToTaskRecord.record.type === TaskType.MILESTONE,\n null,\n 0,\n this._gantt\n );\n linkLineNode.setAttribute('points', linePoints);\n lineArrowNode.setAttribute('points', arrowPoints);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/scenegraph.ts"],"names":[],"mappings":"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","file":"scenegraph.js","sourcesContent":["import type { Stage } from '@visactor/vtable/es/vrender';\nimport { container, Group } from '@visactor/vtable/es/vrender';\nimport { createStageFromVRenderApp } from '@visactor/vtable/es/vrender-app';\nimport { Grid } from './grid';\nimport type { Gantt } from '../Gantt';\nimport { Env } from '../env';\nimport { ScrollBarComponent } from './scroll-bar';\nimport { bindScrollBarListener } from '../event/scroll';\nimport { TimelineHeader } from './timeline-header';\nimport { TaskBar } from './task-bar';\nimport { MarkLine } from './mark-line';\nimport { FrameBorder } from './frame-border';\nimport { findRecordByTaskKey, getTaskIndexsByTaskY } from '../gantt-helper';\nimport graphicContribution from './graphic';\nimport { TaskCreationButton } from './task-creation-button';\nimport { ToolTip } from './tooltip';\nimport { DependencyLink, updateLinkLinePoints } from './dependency-link';\nimport { DragOrderLine } from './drag-order-line';\nimport type { GanttTaskBarNode } from './gantt-node';\nimport { TasksShowMode, TaskType } from '../ts-types';\n(container as any).load(graphicContribution);\nexport class Scenegraph {\n dateStepWidth: number;\n rowHeight: number;\n _scales: {}[];\n timelineHeader: TimelineHeader;\n grid: Grid;\n dependencyLink: DependencyLink;\n taskBar: TaskBar;\n _gantt: Gantt;\n ganttGroup: Group;\n scrollbarComponent: ScrollBarComponent;\n markLine: MarkLine;\n dragOrderLine: DragOrderLine;\n frameBorder: FrameBorder;\n taskCreationButton: TaskCreationButton;\n toolTip: ToolTip;\n stage: Stage;\n releaseVRenderAppRef?: () => void;\n tableGroupWidth: number;\n tableGroupHeight: number;\n constructor(gantt: Gantt) {\n this._gantt = gantt;\n this.tableGroupWidth = gantt.tableNoFrameWidth;\n this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight);\n let width;\n let height;\n if (Env.mode === 'node') {\n // vglobal.setEnv('node', gantt.options.modeParams);\n // width = table.canvasWidth;\n // height = table.canvasHeight;\n } else {\n width = gantt.canvas.parentElement?.offsetWidth ?? gantt.canvas.width;\n height = gantt.canvas.parentElement?.offsetHeight ?? gantt.canvas.height;\n }\n const { stage, releaseAppRef } = createStageFromVRenderApp(\n {\n canvas: gantt.canvas,\n width,\n height,\n disableDirtyBounds: false,\n background: gantt.parsedOptions.underlayBackgroundColor,\n dpr: gantt.parsedOptions.pixelRatio,\n enableLayout: true,\n autoRender: false,\n canvasControled: true,\n context: {\n appName: 'vtable'\n },\n pluginList: ['poptipForText']\n // afterRender: () => {\n // this._gantt.fireListeners('after_render', null);\n // }\n },\n { mode: Env.mode === 'node' ? 'node' : 'browser', scope: 'vtable-gantt' }\n );\n this.stage = stage as Stage;\n this.releaseVRenderAppRef = releaseAppRef;\n (this.stage as any).gantt = this._gantt;\n (this.stage as any).table = this._gantt; // 为了使用bindDebugTool\n this.stage.defaultLayer.setTheme({\n group: {\n boundsPadding: 0,\n strokeBoundsBuffer: 0,\n lineJoin: 'round'\n },\n text: {\n ignoreBuf: true\n }\n });\n this.initSceneGraph();\n }\n\n initSceneGraph() {\n const scene = this;\n\n scene.ganttGroup = new Group({\n x: scene._gantt.tableX,\n y: scene._gantt.tableY,\n width: this.tableGroupWidth,\n height: this.tableGroupHeight,\n clip: true,\n pickable: false\n });\n scene.stage.defaultLayer.add(scene.ganttGroup);\n scene.ganttGroup.name = 'table';\n // 初始化顶部时间线表头部分\n scene.timelineHeader = new TimelineHeader(scene);\n\n // 初始化网格线组件\n scene.grid = new Grid(scene);\n // 初始化任务条线组件\n scene.dependencyLink = new DependencyLink(scene);\n // 初始化任务条线组件\n scene.taskBar = new TaskBar(scene);\n\n // 初始化标记线组件\n scene.markLine = new MarkLine(scene);\n scene.toolTip = new ToolTip(scene);\n\n // 初始化边框\n scene.frameBorder = new FrameBorder(scene);\n\n // 初始化滚动条组件\n scene.scrollbarComponent = new ScrollBarComponent(scene._gantt);\n scene.stage.defaultLayer.addChild(scene.scrollbarComponent.hScrollBar);\n scene.stage.defaultLayer.addChild(scene.scrollbarComponent.vScrollBar);\n\n //初始化换位交互标记线\n scene.dragOrderLine = new DragOrderLine(scene);\n }\n updateSceneGraph() {\n const gantt = this._gantt;\n this.tableGroupWidth = gantt.tableNoFrameWidth;\n this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight);\n let width;\n let height;\n if (Env.mode === 'node') {\n } else {\n width = gantt.canvas.parentElement?.offsetWidth ?? gantt.canvas.width / gantt.parsedOptions.pixelRatio;\n height = gantt.canvas.parentElement?.offsetHeight ?? gantt.canvas.height / gantt.parsedOptions.pixelRatio;\n }\n this.stage.resize(width, height);\n this.refreshAll();\n }\n\n afterCreateSceneGraph() {\n this.scrollbarComponent.updateScrollBar();\n bindScrollBarListener(this._gantt.eventManager);\n }\n\n refreshAll() {\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroupWidth = this._gantt.tableNoFrameWidth;\n this.ganttGroup.setAttribute('height', this.tableGroupHeight);\n this.ganttGroup.setAttribute('width', this.tableGroupWidth);\n this.timelineHeader.refresh();\n this.grid.refresh();\n this.taskBar.refresh();\n this.dependencyLink.refresh();\n this.markLine.refresh();\n this.dependencyLink.refresh();\n this.frameBorder.refresh();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n\n refreshTaskBars() {\n // this.timelineHeader.refresh();\n // this.grid.refresh();\n this.dependencyLink.refresh();\n this.taskBar.refresh();\n // this.markLine.refresh();\n // this.frameBorder.refresh();\n // this.scrollbarComponent.refresh();\n this.updateNextFrame();\n }\n refreshTaskBarsAndGrid() {\n this._gantt.verticalSplitResizeLine.style.height = this._gantt.drawHeight + 'px'; //'100%';\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.ganttGroup.setAttribute('height', this.tableGroupHeight);\n // this.timelineHeader.refresh();\n this.grid.refresh();\n this.taskBar.refresh();\n this.dependencyLink.refresh();\n this.markLine.refresh();\n this.frameBorder.resize();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n\n updateTableSize() {\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroupWidth = this._gantt.tableNoFrameWidth;\n this.ganttGroup.setAttributes({\n x: this._gantt.tableX,\n y: this._gantt.tableY,\n width: this._gantt.tableNoFrameWidth,\n height: this.tableGroupHeight\n } as any);\n this.grid.resize();\n this.taskBar.resize();\n this.dependencyLink.resize();\n this.markLine.refresh();\n this.frameBorder.resize();\n }\n\n updateStageBackground() {\n this.stage.background = this._gantt.parsedOptions.underlayBackgroundColor;\n this.updateNextFrame();\n }\n\n /**\n * @description: 绘制场景树\n * @param {any} element\n * @param {CellRange} visibleCoord\n * @return {*}\n */\n renderSceneGraph() {\n this.stage.render();\n }\n\n /**\n * @description: 触发下一帧渲染\n * @return {*}\n */\n updateNextFrame() {\n this.stage.renderNextFrame();\n }\n get width(): number {\n return this.ganttGroup.attribute?.width ?? 0;\n }\n\n get height(): number {\n return this.ganttGroup.attribute?.height ?? 0;\n }\n\n get x(): number {\n return this.ganttGroup.attribute?.x ?? 0;\n }\n\n get y(): number {\n return this.ganttGroup.attribute?.y ?? 0;\n }\n\n /**\n * @description: 设置表格的x位置,滚动中使用\n * @param {number} x\n * @return {*}\n */\n setX(x: number, isEnd = false) {\n this.timelineHeader.setX(x);\n this.grid.setX(x);\n this.taskBar.setX(x);\n this.dependencyLink.setX(x);\n this.markLine.setX(x);\n this.updateNextFrame();\n // this._gantt.scenegraph.proxy.setX(-x, isEnd);\n }\n\n /**\n * @description: 更新表格的y位置,滚动中使用\n * @param {number} y\n * @return {*}\n */\n setY(y: number, isEnd = false) {\n // this._gantt.scenegraph.proxy.setY(-y, isEnd);\n this.grid.setY(y);\n this.taskBar.setY(y);\n this.dependencyLink.setY(y);\n this.updateNextFrame();\n }\n\n setPixelRatio(pixelRatio: number) {\n // this.stage.setDpr(pixelRatio);\n // 这里因为本时刻部分节点有更新bounds标记,直接render回导致开启DirtyBounds,无法完整重绘画布;\n // 所以这里先关闭DirtyBounds,等待下一帧再开启\n this.stage.disableDirtyBounds();\n this.stage.window.setDpr(pixelRatio);\n this.stage.render();\n this.stage.enableDirtyBounds();\n }\n\n resize() {\n this.updateTableSize();\n // this.updateBorderSizeAndPosition();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n release() {\n const releaseAppRef = this.releaseVRenderAppRef;\n this.releaseVRenderAppRef = undefined;\n\n try {\n this.stage.release();\n } finally {\n releaseAppRef?.();\n }\n }\n\n showTaskCreationButton(x: number, y: number, dateIndex: number) {\n if (!this.taskCreationButton) {\n this.taskCreationButton = new TaskCreationButton(this._gantt.scenegraph);\n }\n //根据最大最小宽度计算按钮的宽度\n const createButton_max_width = this._gantt.parsedOptions.taskBarCreationMaxWidth;\n const createButton_min_width = this._gantt.parsedOptions.taskBarCreationMinWidth;\n const col_width = this._gantt.getDateColWidth(dateIndex);\n const button_width = createButton_max_width\n ? Math.min(\n createButton_max_width,\n createButton_min_width ? Math.max(createButton_min_width, col_width) : col_width\n )\n : createButton_min_width\n ? Math.max(createButton_min_width, col_width)\n : col_width;\n // 调整x,使按钮居中\n const button_x = x - (button_width - col_width) / 2;\n this.taskCreationButton.show(button_x, y, button_width, this._gantt.parsedOptions.rowHeight);\n this.updateNextFrame();\n }\n\n hideTaskCreationButton() {\n if (this.taskCreationButton) {\n this.taskCreationButton.hide();\n this.updateNextFrame();\n }\n }\n\n showToolTip(target: any) {\n if (!this.toolTip) {\n this.toolTip = new ToolTip(this._gantt.scenegraph);\n }\n this.toolTip.show(target);\n }\n\n hideToolTip() {\n this.toolTip.hide();\n }\n\n refreshRecordLinkNodes(\n taskIndex: number,\n sub_task_index: number | number[],\n target: GanttTaskBarNode,\n dy: number = 0\n ) {\n const gantt: Gantt = this._gantt;\n const record = gantt.getRecordByIndex(taskIndex, sub_task_index);\n const vtable_gantt_linkedTo = record.vtable_gantt_linkedTo;\n const vtable_gantt_linkedFrom = record.vtable_gantt_linkedFrom;\n for (let i = 0; i < vtable_gantt_linkedTo?.length; i++) {\n const link = vtable_gantt_linkedTo[i];\n const linkLineNode = link.vtable_gantt_linkLineNode;\n const lineArrowNode = link.vtable_gantt_linkArrowNode;\n\n const { linkedToTaskKey, linkedFromTaskKey, type } = link;\n const { taskKeyField, minDate } = gantt.parsedOptions;\n const linkedFromTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedFromTaskKey);\n const linkedToTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedToTaskKey);\n // const { startDate: linkedToTaskStartDate, endDate: linkedToTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskIndex);\n // const taskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n // const { startDate: linkedFromTaskStartDate, endDate: linkedFromTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskShowIndex);\n\n let linkedToTaskStartDate;\n let linkedToTaskEndDate;\n let linkedToTaskTaskDays;\n // let linkedToTaskTaskRecord;\n let linkedFromTaskStartDate;\n let linkedFromTaskEndDate;\n let linkedFromTaskTaskDays;\n // let linkedFromTaskTaskRecord;\n\n let linkedToTaskShowIndex;\n let linkedFromTaskShowIndex;\n let diffY: number;\n const taskBarStyle = this._gantt.getTaskBarStyle(taskIndex, sub_task_index);\n if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n linkedFromTaskShowIndex = linkedFromTaskRecord.index[0];\n // linkedToTaskShowIndex = linkedToTaskRecord.index[0];\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex = beforeRowCountLinkedTo;\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n\n const taskbarHeight = taskBarStyle.width;\n diffY = target.attribute.y + taskbarHeight / 2 - (linkedToTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Project_Sub_Tasks_Inline) {\n const fromParentRecordShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index.slice(0, -1));\n const toParentRecordShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index.slice(0, -1));\n const fromParentRecord = gantt.getRecordByIndex(fromParentRecordShowIndex);\n const toParentRecord = gantt.getRecordByIndex(toParentRecordShowIndex);\n if (\n fromParentRecord.type === TaskType.PROJECT &&\n fromParentRecord.hierarchyState !== 'expand' &&\n gantt.parsedOptions.projectSubTasksExpandable !== false\n ) {\n // Task is part of a collapsed project - it appears inline with project\n linkedFromTaskShowIndex = fromParentRecordShowIndex;\n } else {\n // Normal task display\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n }\n if (\n toParentRecord.type === TaskType.PROJECT &&\n toParentRecord.hierarchyState !== 'expand' &&\n gantt.parsedOptions.projectSubTasksExpandable !== false\n ) {\n // Task is part of a collapsed project - it appears inline with project\n linkedToTaskShowIndex = toParentRecordShowIndex;\n } else {\n // Normal task display\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n }\n\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex, linkedToTaskRecord.index));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex, linkedFromTaskRecord.index));\n } else if (\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, linkedFromTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex =\n beforeRowCountLinkedFrom +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedFromTaskRecord.record.vtable_gantt_showIndex\n : linkedFromTaskRecord.index[1]);\n // const beforeRowCountLinkedTo =\n // gantt.getRowsHeightByIndex(0, linkedToTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n // linkedToTaskShowIndex = beforeRowCountLinkedTo + linkedToTaskRecord.index[1];\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex =\n beforeRowCountLinkedTo +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedToTaskRecord.record.vtable_gantt_showIndex\n : new_indexs.sub_task_index);\n\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n\n const taskbarHeight = taskBarStyle.width;\n diffY = target.attribute.y + taskbarHeight / 2 - (linkedToTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else {\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n if (linkedFromTaskShowIndex === -1 || linkedToTaskShowIndex === -1) {\n continue;\n }\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex));\n }\n if (\n !linkedFromTaskStartDate ||\n !linkedFromTaskEndDate ||\n !linkedToTaskStartDate ||\n !linkedToTaskEndDate ||\n !linkLineNode ||\n !lineArrowNode\n ) {\n return;\n }\n const { linePoints, arrowPoints } = updateLinkLinePoints(\n type,\n linkedFromTaskStartDate,\n linkedFromTaskEndDate,\n linkedFromTaskShowIndex,\n linkedFromTaskTaskDays,\n linkedFromTaskRecord.record.type === TaskType.MILESTONE,\n null,\n 0,\n linkedToTaskStartDate,\n linkedToTaskEndDate,\n linkedToTaskShowIndex,\n linkedToTaskTaskDays,\n linkedToTaskRecord.record.type === TaskType.MILESTONE,\n target,\n diffY ?? 0,\n this._gantt\n );\n linkLineNode.setAttribute('points', linePoints);\n lineArrowNode.setAttribute('points', arrowPoints);\n }\n\n for (let i = 0; i < vtable_gantt_linkedFrom?.length; i++) {\n const link = vtable_gantt_linkedFrom[i];\n const linkLineNode = link.vtable_gantt_linkLineNode;\n const lineArrowNode = link.vtable_gantt_linkArrowNode;\n\n const { linkedToTaskKey, linkedFromTaskKey, type } = link;\n const { taskKeyField, minDate } = gantt.parsedOptions;\n const linkedToTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedToTaskKey);\n const linkedFromTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedFromTaskKey);\n // const { startDate: linkedFromTaskStartDate, endDate: linkedFromTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskIndex);\n // const taskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n // const { startDate: linkedToTaskStartDate, endDate: linkedToTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskShowIndex);\n\n let linkedToTaskStartDate;\n let linkedToTaskEndDate;\n let linkedToTaskTaskDays;\n let linkedFromTaskStartDate;\n let linkedFromTaskEndDate;\n let linkedFromTaskTaskDays;\n\n let linkedToTaskShowIndex;\n let linkedFromTaskShowIndex;\n let diffY: number;\n const taskBarStyle = this._gantt.getTaskBarStyle(taskIndex, sub_task_index);\n if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex = beforeRowCountLinkedFrom;\n\n // linkedFromTaskShowIndex = linkedFromTaskRecord.index[0];\n linkedToTaskShowIndex = linkedToTaskRecord.index[0];\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n const taskbarHeight = taskBarStyle.width;\n diffY =\n target.attribute.y + taskbarHeight / 2 - (linkedFromTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Project_Sub_Tasks_Inline) {\n const fromParentRecordShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index.slice(0, -1));\n const toParentRecordShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index.slice(0, -1));\n const fromParentRecord = gantt.getRecordByIndex(fromParentRecordShowIndex);\n const toParentRecord = gantt.getRecordByIndex(toParentRecordShowIndex);\n if (\n fromParentRecord.type === TaskType.PROJECT &&\n fromParentRecord.hierarchyState !== 'expand' &&\n gantt.parsedOptions.projectSubTasksExpandable !== false\n ) {\n // Task is part of a collapsed project - it appears inline with project\n linkedFromTaskShowIndex = fromParentRecordShowIndex;\n } else {\n // Normal task display\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n }\n if (\n toParentRecord.type === TaskType.PROJECT &&\n toParentRecord.hierarchyState !== 'expand' &&\n gantt.parsedOptions.projectSubTasksExpandable !== false\n ) {\n // Task is part of a collapsed project - it appears inline with project\n linkedToTaskShowIndex = toParentRecordShowIndex;\n } else {\n // Normal task display\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n }\n\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex, linkedToTaskRecord.index));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex, linkedFromTaskRecord.index));\n } else if (\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n // const beforeRowCountLinkedFrom =\n // gantt.getRowsHeightByIndex(0, linkedFromTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n // linkedFromTaskShowIndex = beforeRowCountLinkedFrom + linkedFromTaskRecord.index[1];\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex =\n beforeRowCountLinkedFrom +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedFromTaskRecord.record.vtable_gantt_showIndex\n : new_indexs.sub_task_index);\n\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, linkedToTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex =\n beforeRowCountLinkedTo +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedToTaskRecord.record.vtable_gantt_showIndex\n : linkedToTaskRecord.index[1]);\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n const taskbarHeight = taskBarStyle.width;\n diffY =\n target.attribute.y + taskbarHeight / 2 - (linkedFromTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else {\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n if (linkedFromTaskShowIndex === -1 || linkedToTaskShowIndex === -1) {\n continue;\n }\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex));\n }\n if (\n !linkedFromTaskStartDate ||\n !linkedFromTaskEndDate ||\n !linkedToTaskStartDate ||\n !linkedToTaskEndDate ||\n !linkLineNode ||\n !lineArrowNode\n ) {\n return;\n }\n const { linePoints, arrowPoints } = updateLinkLinePoints(\n type,\n linkedFromTaskStartDate,\n linkedFromTaskEndDate,\n linkedFromTaskShowIndex,\n linkedFromTaskTaskDays,\n linkedFromTaskRecord.record.type === TaskType.MILESTONE,\n target,\n diffY ?? 0,\n linkedToTaskStartDate,\n linkedToTaskEndDate,\n linkedToTaskShowIndex,\n linkedToTaskTaskDays,\n linkedToTaskRecord.record.type === TaskType.MILESTONE,\n null,\n 0,\n this._gantt\n );\n linkLineNode.setAttribute('points', linePoints);\n lineArrowNode.setAttribute('points', arrowPoints);\n }\n }\n}\n"]}
@@ -29,7 +29,7 @@ export declare class TaskBar {
29
29
  barGroupBox: GanttTaskBarNode;
30
30
  baselineBar: any;
31
31
  };
32
- updateTaskBarNode(index: number, sub_task_index?: number): void;
32
+ updateTaskBarNode(index: number, sub_task_index?: number | number[]): void;
33
33
  initHoverBarIcons(): void;
34
34
  initLocateIconsGroup(): void;
35
35
  applyLocateIconStyle(icon: Group, hover: boolean): void;
@@ -46,5 +46,5 @@ export declare class TaskBar {
46
46
  removeSelectedBorder(): void;
47
47
  removeSecondSelectedBorder(): void;
48
48
  updateCreatingDependencyLine(x1: number, y1: number, x2: number, y2: number): void;
49
- getTaskBarNodeByIndex(index: number, sub_task_index?: number): GanttTaskBarNode;
49
+ getTaskBarNodeByIndex(index: number, sub_task_index?: number | number[]): GanttTaskBarNode;
50
50
  }
@@ -14,7 +14,7 @@ const TASKBAR_HOVER_ICON = '<svg width="100" height="200" xmlns="http://www.w3.o
14
14
 
15
15
  export const TASKBAR_HOVER_ICON_WIDTH = 10;
16
16
 
17
- const LOCATE_ICON_SIZE = 22, LOCATE_ICON_PADDING = 4, LOCATE_ICON_BG = "#f2f3f5", LOCATE_ICON_BG_HOVER = "#4080ff", LOCATE_ICON_ARROW = "#4e5969", LOCATE_ICON_ARROW_HOVER = "#ffffff";
17
+ const LOCATE_ICON_SIZE = 22, LOCATE_ICON_PADDING = 4, LOCATE_ICON_BG = "#f2f3f5", LOCATE_ICON_BG_HOVER = "#4080ff", LOCATE_ICON_ARROW = "#4e5969", LOCATE_ICON_ARROW_HOVER = "#ffffff", isSameSubTaskIndex = (source, target) => !isValid(target) || (Array.isArray(source) || Array.isArray(target) ? Array.isArray(source) && Array.isArray(target) && source.length === target.length && source.every(((value, index) => value === target[index])) : source === target);
18
18
 
19
19
  export class TaskBar {
20
20
  formatMilestoneText(text, record) {
@@ -627,7 +627,7 @@ export class TaskBar {
627
627
  let c = this.barContainer.firstChild;
628
628
  if (!c) return null;
629
629
  for (let i = 0; i < this.barContainer.childrenCount; i++) {
630
- if (c.task_index === index && (!isValid(sub_task_index) || isValid(sub_task_index) && c.sub_task_index === sub_task_index)) return c;
630
+ if (c.task_index === index && isSameSubTaskIndex(c.sub_task_index, sub_task_index)) return c;
631
631
  c = c._next;
632
632
  }
633
633
  return null;