@visactor/vtable-gantt 1.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/README.md +151 -0
  2. package/cjs/Gantt.d.ts +111 -0
  3. package/cjs/Gantt.js +244 -0
  4. package/cjs/Gantt.js.map +1 -0
  5. package/cjs/data/DataSource.d.ts +9 -0
  6. package/cjs/data/DataSource.js +30 -0
  7. package/cjs/data/DataSource.js.map +1 -0
  8. package/cjs/env.d.ts +19 -0
  9. package/cjs/env.js +48 -0
  10. package/cjs/env.js.map +1 -0
  11. package/cjs/event/EventHandler.d.ts +47 -0
  12. package/cjs/event/EventHandler.js +128 -0
  13. package/cjs/event/EventHandler.js.map +1 -0
  14. package/cjs/event/EventTarget.d.ts +12 -0
  15. package/cjs/event/EventTarget.js +67 -0
  16. package/cjs/event/EventTarget.js.map +1 -0
  17. package/cjs/event/event-manager.d.ts +15 -0
  18. package/cjs/event/event-manager.js +76 -0
  19. package/cjs/event/event-manager.js.map +1 -0
  20. package/cjs/event/scroll.d.ts +22 -0
  21. package/cjs/event/scroll.js +136 -0
  22. package/cjs/event/scroll.js.map +1 -0
  23. package/cjs/gantt-helper.d.ts +28 -0
  24. package/cjs/gantt-helper.js +225 -0
  25. package/cjs/gantt-helper.js.map +1 -0
  26. package/cjs/index.d.ts +7 -0
  27. package/cjs/index.js +48 -0
  28. package/cjs/index.js.map +1 -0
  29. package/cjs/register.d.ts +1 -0
  30. package/cjs/register.js +1 -0
  31. package/cjs/register.js.map +1 -0
  32. package/cjs/scenegraph/frame-border.d.ts +9 -0
  33. package/cjs/scenegraph/frame-border.js +42 -0
  34. package/cjs/scenegraph/frame-border.js.map +1 -0
  35. package/cjs/scenegraph/ganttNode.d.ts +7 -0
  36. package/cjs/scenegraph/ganttNode.js +16 -0
  37. package/cjs/scenegraph/ganttNode.js.map +1 -0
  38. package/cjs/scenegraph/grid.d.ts +30 -0
  39. package/cjs/scenegraph/grid.js +130 -0
  40. package/cjs/scenegraph/grid.js.map +1 -0
  41. package/cjs/scenegraph/mark-line.d.ts +15 -0
  42. package/cjs/scenegraph/mark-line.js +66 -0
  43. package/cjs/scenegraph/mark-line.js.map +1 -0
  44. package/cjs/scenegraph/scenegraph.d.ts +41 -0
  45. package/cjs/scenegraph/scenegraph.js +109 -0
  46. package/cjs/scenegraph/scenegraph.js.map +1 -0
  47. package/cjs/scenegraph/scroll-bar.d.ts +19 -0
  48. package/cjs/scenegraph/scroll-bar.js +150 -0
  49. package/cjs/scenegraph/scroll-bar.js.map +1 -0
  50. package/cjs/scenegraph/task-bar.d.ts +24 -0
  51. package/cjs/scenegraph/task-bar.js +188 -0
  52. package/cjs/scenegraph/task-bar.js.map +1 -0
  53. package/cjs/scenegraph/timeline-header.d.ts +10 -0
  54. package/cjs/scenegraph/timeline-header.js +134 -0
  55. package/cjs/scenegraph/timeline-header.js.map +1 -0
  56. package/cjs/state/gantt-table-sync.d.ts +7 -0
  57. package/cjs/state/gantt-table-sync.js +60 -0
  58. package/cjs/state/gantt-table-sync.js.map +1 -0
  59. package/cjs/state/state-manager.d.ts +58 -0
  60. package/cjs/state/state-manager.js +223 -0
  61. package/cjs/state/state-manager.js.map +1 -0
  62. package/cjs/themes.d.ts +1 -0
  63. package/cjs/themes.js +1 -0
  64. package/cjs/themes.js.map +1 -0
  65. package/cjs/tools/debounce.d.ts +1 -0
  66. package/cjs/tools/debounce.js +51 -0
  67. package/cjs/tools/debounce.js.map +1 -0
  68. package/cjs/tools/index.d.ts +2 -0
  69. package/cjs/tools/index.js +20 -0
  70. package/cjs/tools/index.js.map +1 -0
  71. package/cjs/tools/isx.d.ts +16 -0
  72. package/cjs/tools/isx.js +117 -0
  73. package/cjs/tools/isx.js.map +1 -0
  74. package/cjs/tools/pixel-ratio.d.ts +2 -0
  75. package/cjs/tools/pixel-ratio.js +16 -0
  76. package/cjs/tools/pixel-ratio.js.map +1 -0
  77. package/cjs/tools/util.d.ts +7 -0
  78. package/cjs/tools/util.js +87 -0
  79. package/cjs/tools/util.js.map +1 -0
  80. package/cjs/ts-types/EVENT_TYPE.d.ts +5 -0
  81. package/cjs/ts-types/EVENT_TYPE.js +9 -0
  82. package/cjs/ts-types/EVENT_TYPE.js.map +1 -0
  83. package/cjs/ts-types/common.d.ts +13 -0
  84. package/cjs/ts-types/common.js +14 -0
  85. package/cjs/ts-types/common.js.map +1 -0
  86. package/cjs/ts-types/events.d.ts +14 -0
  87. package/cjs/ts-types/events.js +6 -0
  88. package/cjs/ts-types/events.js.map +1 -0
  89. package/cjs/ts-types/gantt-engine.d.ts +163 -0
  90. package/cjs/ts-types/gantt-engine.js +6 -0
  91. package/cjs/ts-types/gantt-engine.js.map +1 -0
  92. package/cjs/ts-types/index.d.ts +4 -0
  93. package/cjs/ts-types/index.js +22 -0
  94. package/cjs/ts-types/index.js.map +1 -0
  95. package/dist/vtable-gantt.js +53942 -0
  96. package/dist/vtable-gantt.min.js +1 -0
  97. package/es/Gantt.d.ts +111 -0
  98. package/es/Gantt.js +246 -0
  99. package/es/Gantt.js.map +1 -0
  100. package/es/data/DataSource.d.ts +9 -0
  101. package/es/data/DataSource.js +22 -0
  102. package/es/data/DataSource.js.map +1 -0
  103. package/es/env.d.ts +19 -0
  104. package/es/env.js +42 -0
  105. package/es/env.js.map +1 -0
  106. package/es/event/EventHandler.d.ts +47 -0
  107. package/es/event/EventHandler.js +119 -0
  108. package/es/event/EventHandler.js.map +1 -0
  109. package/es/event/EventTarget.d.ts +12 -0
  110. package/es/event/EventTarget.js +58 -0
  111. package/es/event/EventTarget.js.map +1 -0
  112. package/es/event/event-manager.d.ts +15 -0
  113. package/es/event/event-manager.js +78 -0
  114. package/es/event/event-manager.js.map +1 -0
  115. package/es/event/scroll.d.ts +22 -0
  116. package/es/event/scroll.js +126 -0
  117. package/es/event/scroll.js.map +1 -0
  118. package/es/gantt-helper.d.ts +28 -0
  119. package/es/gantt-helper.js +220 -0
  120. package/es/gantt-helper.js.map +1 -0
  121. package/es/index.d.ts +7 -0
  122. package/es/index.js +10 -0
  123. package/es/index.js.map +1 -0
  124. package/es/register.d.ts +1 -0
  125. package/es/register.js +1 -0
  126. package/es/register.js.map +1 -0
  127. package/es/scenegraph/frame-border.d.ts +9 -0
  128. package/es/scenegraph/frame-border.js +34 -0
  129. package/es/scenegraph/frame-border.js.map +1 -0
  130. package/es/scenegraph/ganttNode.d.ts +7 -0
  131. package/es/scenegraph/ganttNode.js +8 -0
  132. package/es/scenegraph/ganttNode.js.map +1 -0
  133. package/es/scenegraph/grid.d.ts +30 -0
  134. package/es/scenegraph/grid.js +122 -0
  135. package/es/scenegraph/grid.js.map +1 -0
  136. package/es/scenegraph/mark-line.d.ts +15 -0
  137. package/es/scenegraph/mark-line.js +58 -0
  138. package/es/scenegraph/mark-line.js.map +1 -0
  139. package/es/scenegraph/scenegraph.d.ts +41 -0
  140. package/es/scenegraph/scenegraph.js +116 -0
  141. package/es/scenegraph/scenegraph.js.map +1 -0
  142. package/es/scenegraph/scroll-bar.d.ts +19 -0
  143. package/es/scenegraph/scroll-bar.js +144 -0
  144. package/es/scenegraph/scroll-bar.js.map +1 -0
  145. package/es/scenegraph/task-bar.d.ts +24 -0
  146. package/es/scenegraph/task-bar.js +188 -0
  147. package/es/scenegraph/task-bar.js.map +1 -0
  148. package/es/scenegraph/timeline-header.d.ts +10 -0
  149. package/es/scenegraph/timeline-header.js +130 -0
  150. package/es/scenegraph/timeline-header.js.map +1 -0
  151. package/es/state/gantt-table-sync.d.ts +7 -0
  152. package/es/state/gantt-table-sync.js +51 -0
  153. package/es/state/gantt-table-sync.js.map +1 -0
  154. package/es/state/state-manager.d.ts +58 -0
  155. package/es/state/state-manager.js +219 -0
  156. package/es/state/state-manager.js.map +1 -0
  157. package/es/themes.d.ts +1 -0
  158. package/es/themes.js +1 -0
  159. package/es/themes.js.map +1 -0
  160. package/es/tools/debounce.d.ts +1 -0
  161. package/es/tools/debounce.js +43 -0
  162. package/es/tools/debounce.js.map +1 -0
  163. package/es/tools/index.d.ts +2 -0
  164. package/es/tools/index.js +4 -0
  165. package/es/tools/index.js.map +1 -0
  166. package/es/tools/isx.d.ts +16 -0
  167. package/es/tools/isx.js +80 -0
  168. package/es/tools/isx.js.map +1 -0
  169. package/es/tools/pixel-ratio.d.ts +2 -0
  170. package/es/tools/pixel-ratio.js +12 -0
  171. package/es/tools/pixel-ratio.js.map +1 -0
  172. package/es/tools/util.d.ts +7 -0
  173. package/es/tools/util.js +78 -0
  174. package/es/tools/util.js.map +1 -0
  175. package/es/ts-types/EVENT_TYPE.d.ts +5 -0
  176. package/es/ts-types/EVENT_TYPE.js +5 -0
  177. package/es/ts-types/EVENT_TYPE.js.map +1 -0
  178. package/es/ts-types/common.d.ts +13 -0
  179. package/es/ts-types/common.js +13 -0
  180. package/es/ts-types/common.js.map +1 -0
  181. package/es/ts-types/events.d.ts +14 -0
  182. package/es/ts-types/events.js +2 -0
  183. package/es/ts-types/events.js.map +1 -0
  184. package/es/ts-types/gantt-engine.d.ts +163 -0
  185. package/es/ts-types/gantt-engine.js +2 -0
  186. package/es/ts-types/gantt-engine.js.map +1 -0
  187. package/es/ts-types/index.d.ts +4 -0
  188. package/es/ts-types/index.js +8 -0
  189. package/es/ts-types/index.js.map +1 -0
  190. package/package.json +122 -0
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.FrameBorder = void 0;
6
+
7
+ const vtable_1 = require("@visactor/vtable");
8
+
9
+ class FrameBorder {
10
+ constructor(scene) {
11
+ this._scene = scene, this.createFrameBorder();
12
+ }
13
+ createFrameBorder() {
14
+ const group = this._scene.tableGroup, frameStyle = this._scene._gantt.parsedOptions.frameStyle;
15
+ if (!frameStyle) return;
16
+ const {cornerRadius: cornerRadius, borderColor: borderColor, borderLineWidth: borderLineWidth, borderLineDash: borderLineDash} = frameStyle, groupAttributes = {}, rectAttributes = {
17
+ pickable: !1
18
+ };
19
+ if (borderLineWidth && (rectAttributes.stroke = !0, rectAttributes.fill = !1, rectAttributes.stroke = borderColor,
20
+ rectAttributes.lineWidth = borderLineWidth, borderLineDash && (rectAttributes.lineDash = borderLineDash),
21
+ rectAttributes.lineCap = "butt"), cornerRadius && (rectAttributes.cornerRadius = [ 0, 10, 10, 0 ],
22
+ groupAttributes.cornerRadius = [ 0, 10, 10, 0 ]), group.setAttributes(groupAttributes),
23
+ rectAttributes.stroke) {
24
+ rectAttributes.x = -borderLineWidth / 2, rectAttributes.y = borderLineWidth / 2,
25
+ rectAttributes.pickable = !1, rectAttributes.width = group.attribute.width + borderLineWidth / 2 + borderLineWidth / 2,
26
+ rectAttributes.height = group.attribute.height + borderLineWidth / 2 + borderLineWidth / 2;
27
+ const borderRect = vtable_1.VRender.createRect(rectAttributes);
28
+ borderRect.name = "border-rect", group.parent.insertAfter(borderRect, group), group.border = borderRect,
29
+ this.border = borderRect;
30
+ }
31
+ }
32
+ resize() {
33
+ const {cornerRadius: cornerRadius, borderColor: borderColor, borderLineWidth: borderLineWidth, borderLineDash: borderLineDash} = this._scene._gantt.parsedOptions.frameStyle;
34
+ this.border.setAttributes({
35
+ width: this._scene.tableGroup.attribute.width + this.border.attribute.lineWidth,
36
+ height: this._scene.tableGroup.attribute.height + this.border.attribute.lineWidth
37
+ });
38
+ }
39
+ }
40
+
41
+ exports.FrameBorder = FrameBorder;
42
+ //# sourceMappingURL=frame-border.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/scenegraph/frame-border.ts"],"names":[],"mappings":"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","file":"frame-border.js","sourcesContent":["import { VRender } from '@visactor/vtable';\n\nimport { isArray } from '@visactor/vutils';\nimport type { IFrameStyle } from '../ts-types';\nimport type { Gantt } from '../Gantt';\nimport type { Scenegraph } from './scenegraph';\n\nexport class FrameBorder {\n _scene: Scenegraph;\n border: VRender.IRect;\n constructor(scene: Scenegraph) {\n this._scene = scene;\n this.createFrameBorder();\n }\n createFrameBorder() {\n const justForXYPosition = false;\n const group = this._scene.tableGroup;\n const frameStyle = this._scene._gantt.parsedOptions.frameStyle;\n // const strokeArray = [true, true, true, false];\n if (!frameStyle) {\n return;\n }\n const { cornerRadius, borderColor, borderLineWidth, borderLineDash } = frameStyle;\n\n // const hasShadow = false;\n const groupAttributes: VRender.IGroupGraphicAttribute = {};\n const rectAttributes: VRender.IRectGraphicAttribute = {\n pickable: false\n };\n\n // 处理边框\n if (borderLineWidth) {\n rectAttributes.stroke = true;\n rectAttributes.fill = false;\n rectAttributes.stroke = borderColor; // getStroke(borderColor, strokeArray);\n rectAttributes.lineWidth = borderLineWidth as number;\n borderLineDash && (rectAttributes.lineDash = borderLineDash as number[]);\n rectAttributes.lineCap = 'butt';\n }\n\n // if (Array.isArray(borderLineWidth)) {\n // (rectAttributes as any).strokeArrayWidth = getQuadProps(borderLineWidth);\n // (rectAttributes as any).lineWidth = 1;\n // }\n\n if (cornerRadius) {\n rectAttributes.cornerRadius = [0, 10, 10, 0];\n groupAttributes.cornerRadius = [0, 10, 10, 0];\n }\n\n // const borderTop = (rectAttributes as any).strokeArrayWidth\n // ? (rectAttributes as any).strokeArrayWidth[0]\n // : (rectAttributes.lineWidth as number) ?? 0;\n // const borderRight = (rectAttributes as any).strokeArrayWidth\n // ? (rectAttributes as any).strokeArrayWidth[1]\n // : (rectAttributes.lineWidth as number) ?? 0;\n // const borderBottom = (rectAttributes as any).strokeArrayWidth\n // ? (rectAttributes as any).strokeArrayWidth[2]\n // : (rectAttributes.lineWidth as number) ?? 0;\n // const borderLeft = (rectAttributes as any).strokeArrayWidth\n // ? (rectAttributes as any).strokeArrayWidth[3]\n // : (rectAttributes.lineWidth as number) ?? 0;\n group.setAttributes(groupAttributes);\n\n if (justForXYPosition) {\n return;\n }\n\n if (rectAttributes.stroke) {\n rectAttributes.x = -borderLineWidth / 2; //为了可以绘制完整矩形 且左侧的边框不出现在group中\n rectAttributes.y = borderLineWidth / 2;\n rectAttributes.pickable = false;\n\n rectAttributes.width = group.attribute.width + borderLineWidth / 2 + borderLineWidth / 2;\n rectAttributes.height = group.attribute.height + borderLineWidth / 2 + borderLineWidth / 2;\n const borderRect = VRender.createRect(rectAttributes);\n borderRect.name = 'border-rect';\n group.parent.insertAfter(borderRect, group);\n (group as any).border = borderRect;\n this.border = borderRect;\n }\n }\n resize() {\n const { cornerRadius, borderColor, borderLineWidth, borderLineDash } = this._scene._gantt.parsedOptions.frameStyle;\n this.border.setAttributes({\n // x: -borderLineWidth / 2,\n // y: borderLineWidth / 2,\n width: this._scene.tableGroup.attribute.width + this.border.attribute.lineWidth,\n height: this._scene.tableGroup.attribute.height + this.border.attribute.lineWidth\n });\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { VRender } from '@visactor/vtable';
2
+ export declare class GanttTaskBarNode extends VRender.Group {
3
+ barRect?: VRender.IRect;
4
+ progressRect?: VRender.IRect;
5
+ textLabel?: VRender.IText;
6
+ constructor(attrs: VRender.IGroupGraphicAttribute);
7
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.GanttTaskBarNode = void 0;
6
+
7
+ const vtable_1 = require("@visactor/vtable");
8
+
9
+ class GanttTaskBarNode extends vtable_1.VRender.Group {
10
+ constructor(attrs) {
11
+ super(attrs);
12
+ }
13
+ }
14
+
15
+ exports.GanttTaskBarNode = GanttTaskBarNode;
16
+ //# sourceMappingURL=ganttNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/scenegraph/ganttNode.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAC3C,MAAa,gBAAiB,SAAQ,gBAAO,CAAC,KAAK;IAIjD,YAAY,KAAqC;QAC/C,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;CACF;AAPD,4CAOC","file":"ganttNode.js","sourcesContent":["import { VRender } from '@visactor/vtable';\nexport class GanttTaskBarNode extends VRender.Group {\n barRect?: VRender.IRect;\n progressRect?: VRender.IRect;\n textLabel?: VRender.IText;\n constructor(attrs: VRender.IGroupGraphicAttribute) {\n super(attrs);\n }\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import { VRender } from '@visactor/vtable';
2
+ import type { Scenegraph } from './scenegraph';
3
+ export declare class Grid {
4
+ vertical: boolean;
5
+ horizontal: boolean;
6
+ gridStyle: any;
7
+ scrollLeft: number;
8
+ scrollTop: number;
9
+ x: number;
10
+ y: number;
11
+ width: number;
12
+ height: number;
13
+ timelineDates: any;
14
+ colWidthPerDay: number;
15
+ rowHeight: number;
16
+ rowCount: number;
17
+ group: VRender.Group;
18
+ verticalLineGroup: VRender.Group;
19
+ horizontalLineGroup: VRender.Group;
20
+ allGridHeight: number;
21
+ allGridWidth: number;
22
+ _scene: Scenegraph;
23
+ constructor(scene: Scenegraph);
24
+ createVerticalLines(): void;
25
+ createHorizontalLines(): void;
26
+ refresh(): void;
27
+ setX(x: number): void;
28
+ setY(y: number): void;
29
+ resize(): void;
30
+ }
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.Grid = void 0;
6
+
7
+ const vtable_1 = require("@visactor/vtable");
8
+
9
+ class Grid {
10
+ constructor(scene) {
11
+ var _a, _b, _c, _d, _e;
12
+ this._scene = scene, this.vertical = !!scene._gantt.parsedOptions.gridStyle.verticalLine,
13
+ this.horizontal = !!scene._gantt.parsedOptions.gridStyle.horizontalLine, this.gridStyle = scene._gantt.parsedOptions.gridStyle,
14
+ this.scrollLeft = 0, this.scrollTop = 0, this.x = 0, this.y = scene._gantt.getAllHeaderRowsHeight(),
15
+ this.width = scene.tableGroup.attribute.width, this.height = scene.tableGroup.attribute.height - scene.timelineHeader.group.attribute.height,
16
+ this.timelineDates = scene._gantt.reverseSortedTimelineScales[0].timelineDates,
17
+ this.colWidthPerDay = scene._gantt.parsedOptions.colWidthPerDay, this.rowHeight = scene._gantt.parsedOptions.rowHeight,
18
+ this.rowCount = scene._gantt.itemCount, this.allGridWidth = scene._gantt.getAllColsWidth(),
19
+ this.allGridHeight = scene._gantt.getAllGridHeight(), this.group = new vtable_1.VRender.Group({
20
+ x: this.x,
21
+ y: this.y,
22
+ width: this.width,
23
+ height: this.height,
24
+ clip: !0,
25
+ fill: null === (_a = this.gridStyle) || void 0 === _a ? void 0 : _a.backgroundColor
26
+ }), this.group.name = "grid-container", scene.tableGroup.addChild(this.group);
27
+ const line = vtable_1.VRender.createLine({
28
+ pickable: !1,
29
+ stroke: null === (_b = scene._gantt.parsedOptions.timelineHeaderHorizontalLineStyle) || void 0 === _b ? void 0 : _b.lineColor,
30
+ lineWidth: null === (_c = scene._gantt.parsedOptions.timelineHeaderHorizontalLineStyle) || void 0 === _c ? void 0 : _c.lineWidth,
31
+ points: [ {
32
+ x: 0,
33
+ y: 1 & (null === (_d = scene._gantt.parsedOptions.timelineHeaderHorizontalLineStyle) || void 0 === _d ? void 0 : _d.lineWidth) ? .5 : 0
34
+ }, {
35
+ x: scene._gantt.getAllColsWidth(),
36
+ y: 1 & (null === (_e = scene._gantt.parsedOptions.timelineHeaderHorizontalLineStyle) || void 0 === _e ? void 0 : _e.lineWidth) ? .5 : 0
37
+ } ]
38
+ });
39
+ this.group.addChild(line), this.createVerticalLines(), this.createHorizontalLines();
40
+ }
41
+ createVerticalLines() {
42
+ var _a, _b, _c;
43
+ if (this.vertical) {
44
+ this.verticalLineGroup = new vtable_1.VRender.Group({
45
+ x: 0,
46
+ y: 0,
47
+ width: this.allGridWidth,
48
+ height: this.allGridHeight
49
+ }), this.verticalLineGroup.name = "grid-vertical", this.group.appendChild(this.verticalLineGroup);
50
+ const vLines = [];
51
+ let x = 0;
52
+ 1 & (null === (_a = this.gridStyle) || void 0 === _a ? void 0 : _a.verticalLine.lineWidth) && (x = .5);
53
+ for (let i = 0; i < this.timelineDates.length - 1; i++) {
54
+ const dateline = this.timelineDates[i];
55
+ x += Math.floor(this.colWidthPerDay * dateline.days);
56
+ const line = vtable_1.VRender.createLine({
57
+ pickable: !1,
58
+ stroke: null === (_b = this.gridStyle) || void 0 === _b ? void 0 : _b.verticalLine.lineColor,
59
+ lineWidth: null === (_c = this.gridStyle) || void 0 === _c ? void 0 : _c.verticalLine.lineWidth,
60
+ points: [ {
61
+ x: x,
62
+ y: 0
63
+ }, {
64
+ x: x,
65
+ y: this.allGridHeight
66
+ } ]
67
+ });
68
+ vLines.push(line), this.verticalLineGroup.appendChild(line);
69
+ }
70
+ }
71
+ }
72
+ createHorizontalLines() {
73
+ var _a, _b, _c;
74
+ if (this.horizontal) {
75
+ this.horizontalLineGroup = new vtable_1.VRender.Group({
76
+ x: 0,
77
+ y: 0,
78
+ width: this.allGridWidth,
79
+ height: this.allGridHeight
80
+ }), this.horizontalLineGroup.name = "grid-horizontal", this.group.appendChild(this.horizontalLineGroup);
81
+ const hLines = [];
82
+ let y = 0;
83
+ 1 & (null === (_a = this.gridStyle) || void 0 === _a ? void 0 : _a.horizontalLine.lineWidth) && (y += .5);
84
+ for (let i = 0; i < this.rowCount - 1; i++) {
85
+ y += Math.floor(this.rowHeight);
86
+ const line = vtable_1.VRender.createLine({
87
+ pickable: !1,
88
+ stroke: null === (_b = this.gridStyle) || void 0 === _b ? void 0 : _b.horizontalLine.lineColor,
89
+ lineWidth: null === (_c = this.gridStyle) || void 0 === _c ? void 0 : _c.horizontalLine.lineWidth,
90
+ points: [ {
91
+ x: 0,
92
+ y: y
93
+ }, {
94
+ x: this.allGridWidth,
95
+ y: y
96
+ } ]
97
+ });
98
+ hLines.push(line), this.horizontalLineGroup.appendChild(line);
99
+ }
100
+ }
101
+ }
102
+ refresh() {
103
+ var _a, _b;
104
+ this.width = this._scene.tableGroup.attribute.width, this.height = this._scene.tableGroup.attribute.height - this._scene.timelineHeader.group.attribute.height,
105
+ this.group.setAttributes({
106
+ width: this.width,
107
+ height: this.height
108
+ }), this.rowCount = this._scene._gantt.itemCount, this.allGridWidth = this._scene._gantt.getAllColsWidth(),
109
+ this.allGridHeight = this._scene._gantt.getAllGridHeight(), null === (_a = this.verticalLineGroup) || void 0 === _a || _a.parent.removeChild(this.verticalLineGroup),
110
+ null === (_b = this.horizontalLineGroup) || void 0 === _b || _b.parent.removeChild(this.horizontalLineGroup),
111
+ this.createVerticalLines(), this.createHorizontalLines();
112
+ }
113
+ setX(x) {
114
+ var _a, _b;
115
+ null === (_a = this.verticalLineGroup) || void 0 === _a || _a.setAttribute("x", x),
116
+ null === (_b = this.horizontalLineGroup) || void 0 === _b || _b.setAttribute("x", x);
117
+ }
118
+ setY(y) {
119
+ var _a, _b;
120
+ null === (_a = this.verticalLineGroup) || void 0 === _a || _a.setAttribute("y", y),
121
+ null === (_b = this.horizontalLineGroup) || void 0 === _b || _b.setAttribute("y", y);
122
+ }
123
+ resize() {
124
+ this.width = this._scene.tableGroup.attribute.width, this.height = this._scene.tableGroup.attribute.height - this._scene.timelineHeader.group.attribute.height,
125
+ this.group.setAttribute("width", this.width), this.group.setAttribute("height", this.height);
126
+ }
127
+ }
128
+
129
+ exports.Grid = Grid;
130
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/scenegraph/grid.ts"],"names":[],"mappings":"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","file":"grid.js","sourcesContent":["import { VRender } from '@visactor/vtable';\nimport { TYPES } from '@visactor/vtable';\nimport type { IGridStyle } from '../ts-types';\nimport { str } from '@visactor/vtable/es/tools/helper';\nimport type { Scenegraph } from './scenegraph';\nexport class Grid {\n vertical: boolean;\n horizontal: boolean;\n // verticalLineSpace: number;\n // horizontalLineSpace: number;\n gridStyle: any;\n scrollLeft: number;\n scrollTop: number;\n x: number;\n y: number;\n width: number;\n height: number;\n timelineDates: any;\n colWidthPerDay: number;\n rowHeight: number;\n rowCount: number;\n group: VRender.Group;\n verticalLineGroup: VRender.Group;\n horizontalLineGroup: VRender.Group;\n allGridHeight: number;\n allGridWidth: number;\n _scene: Scenegraph;\n constructor(scene: Scenegraph) {\n this._scene = scene;\n this.vertical = !!scene._gantt.parsedOptions.gridStyle.verticalLine;\n this.horizontal = !!scene._gantt.parsedOptions.gridStyle.horizontalLine;\n this.gridStyle = scene._gantt.parsedOptions.gridStyle;\n this.scrollLeft = 0;\n this.scrollTop = 0;\n this.x = 0;\n this.y = scene._gantt.getAllHeaderRowsHeight();\n this.width = scene.tableGroup.attribute.width;\n this.height = scene.tableGroup.attribute.height - scene.timelineHeader.group.attribute.height;\n this.timelineDates = scene._gantt.reverseSortedTimelineScales[0].timelineDates;\n this.colWidthPerDay = scene._gantt.parsedOptions.colWidthPerDay;\n this.rowHeight = scene._gantt.parsedOptions.rowHeight;\n this.rowCount = scene._gantt.itemCount;\n this.allGridWidth = scene._gantt.getAllColsWidth();\n this.allGridHeight = scene._gantt.getAllGridHeight();\n this.group = new VRender.Group({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height,\n clip: true,\n fill: this.gridStyle?.backgroundColor\n });\n this.group.name = 'grid-container';\n scene.tableGroup.addChild(this.group);\n //补充timelineHeader中不好绘制的底部的边线\n const line = VRender.createLine({\n pickable: false,\n stroke: scene._gantt.parsedOptions.timelineHeaderHorizontalLineStyle?.lineColor,\n lineWidth: scene._gantt.parsedOptions.timelineHeaderHorizontalLineStyle?.lineWidth,\n points: [\n { x: 0, y: scene._gantt.parsedOptions.timelineHeaderHorizontalLineStyle?.lineWidth & 1 ? 0.5 : 0 },\n {\n x: scene._gantt.getAllColsWidth(),\n y: scene._gantt.parsedOptions.timelineHeaderHorizontalLineStyle?.lineWidth & 1 ? 0.5 : 0\n }\n ]\n });\n this.group.addChild(line);\n this.createVerticalLines();\n\n this.createHorizontalLines();\n }\n createVerticalLines() {\n if (this.vertical) {\n this.verticalLineGroup = new VRender.Group({\n x: 0,\n y: 0,\n width: this.allGridWidth,\n height: this.allGridHeight\n });\n this.verticalLineGroup.name = 'grid-vertical';\n this.group.appendChild(this.verticalLineGroup);\n\n const vLines = [];\n let x = 0;\n if (this.gridStyle?.verticalLine.lineWidth & 1) {\n x = 0.5;\n }\n for (let i = 0; i < this.timelineDates.length - 1; i++) {\n const dateline = this.timelineDates[i];\n x = x + Math.floor(this.colWidthPerDay * dateline.days);\n const line = VRender.createLine({\n pickable: false,\n stroke: this.gridStyle?.verticalLine.lineColor,\n lineWidth: this.gridStyle?.verticalLine.lineWidth,\n points: [\n { x, y: 0 },\n { x, y: this.allGridHeight }\n ]\n });\n vLines.push(line);\n this.verticalLineGroup.appendChild(line);\n }\n }\n }\n createHorizontalLines() {\n if (this.horizontal) {\n this.horizontalLineGroup = new VRender.Group({\n x: 0,\n y: 0,\n width: this.allGridWidth,\n height: this.allGridHeight\n });\n this.horizontalLineGroup.name = 'grid-horizontal';\n this.group.appendChild(this.horizontalLineGroup);\n\n const hLines = [];\n let y = 0;\n if (this.gridStyle?.horizontalLine.lineWidth & 1) {\n y += 0.5;\n }\n for (let i = 0; i < this.rowCount - 1; i++) {\n y = y + Math.floor(this.rowHeight);\n const line = VRender.createLine({\n pickable: false,\n stroke: this.gridStyle?.horizontalLine.lineColor,\n lineWidth: this.gridStyle?.horizontalLine.lineWidth,\n points: [\n { x: 0, y },\n { x: this.allGridWidth, y }\n ]\n });\n hLines.push(line);\n this.horizontalLineGroup.appendChild(line);\n }\n }\n }\n /** 重新创建网格线场景树结点 */\n refresh() {\n this.width = this._scene.tableGroup.attribute.width;\n this.height = this._scene.tableGroup.attribute.height - this._scene.timelineHeader.group.attribute.height;\n this.group.setAttributes({\n width: this.width,\n height: this.height\n });\n this.rowCount = this._scene._gantt.itemCount;\n this.allGridWidth = this._scene._gantt.getAllColsWidth();\n this.allGridHeight = this._scene._gantt.getAllGridHeight();\n this.verticalLineGroup?.parent.removeChild(this.verticalLineGroup);\n this.horizontalLineGroup?.parent.removeChild(this.horizontalLineGroup);\n this.createVerticalLines();\n this.createHorizontalLines();\n }\n setX(x: number) {\n this.verticalLineGroup?.setAttribute('x', x);\n this.horizontalLineGroup?.setAttribute('x', x);\n }\n setY(y: number) {\n this.verticalLineGroup?.setAttribute('y', y);\n this.horizontalLineGroup?.setAttribute('y', y);\n }\n resize() {\n this.width = this._scene.tableGroup.attribute.width;\n this.height = this._scene.tableGroup.attribute.height - this._scene.timelineHeader.group.attribute.height;\n this.group.setAttribute('width', this.width);\n this.group.setAttribute('height', this.height);\n }\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import type { IMarkLine } from '../ts-types';
2
+ import type { Scenegraph } from './scenegraph';
3
+ import { VRender } from '@visactor/vtable';
4
+ export declare class MarkLine {
5
+ _scene: Scenegraph;
6
+ group: VRender.Group;
7
+ markLine: IMarkLine[];
8
+ markLIneContainer: VRender.Group;
9
+ markLineContainerWidth: number;
10
+ height: number;
11
+ constructor(scene: Scenegraph);
12
+ initMarkLines(): void;
13
+ refresh(): void;
14
+ setX(x: number): void;
15
+ }
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.MarkLine = void 0;
6
+
7
+ const vtable_1 = require("@visactor/vtable");
8
+
9
+ class MarkLine {
10
+ constructor(scene) {
11
+ this.markLineContainerWidth = 20, this._scene = scene, this.markLine = scene._gantt.parsedOptions.markLine,
12
+ this.height = Math.min(scene._gantt.tableNoFrameHeight, scene._gantt.drawHeight) - scene._gantt.getAllHeaderRowsHeight(),
13
+ this.group = new vtable_1.VRender.Group({
14
+ x: 0,
15
+ y: scene._gantt.getAllHeaderRowsHeight(),
16
+ width: scene._gantt.tableNoFrameWidth,
17
+ height: this.height,
18
+ pickable: !1,
19
+ clip: !0
20
+ }), this.group.name = "mark-line-container", scene.tableGroup.addChild(this.group),
21
+ this.markLIneContainer = new vtable_1.VRender.Group({
22
+ x: 0,
23
+ y: 0,
24
+ width: this._scene._gantt.getAllColsWidth(),
25
+ height: this.height,
26
+ pickable: !1,
27
+ clip: !0
28
+ }), this.group.appendChild(this.markLIneContainer), this.initMarkLines();
29
+ }
30
+ initMarkLines() {
31
+ this.markLine.forEach((line => {
32
+ const style = line.style, date = new Date(line.date), minDate = new Date(this._scene._gantt.parsedOptions.minDate), dateX = this._scene._gantt.parsedOptions.colWidthPerDay * Math.ceil(Math.abs(date.getTime() - minDate.getTime()) / 864e5), markLineGroup = new vtable_1.VRender.Group({
33
+ pickable: !1,
34
+ x: dateX - this.markLineContainerWidth / 2,
35
+ y: 0,
36
+ width: this.markLineContainerWidth,
37
+ height: this.height
38
+ });
39
+ markLineGroup.name = "mark-line", this.markLIneContainer.appendChild(markLineGroup);
40
+ const lineObj = vtable_1.VRender.createLine({
41
+ pickable: !1,
42
+ stroke: style.lineColor,
43
+ lineWidth: style.lineWidth,
44
+ lineDash: style.lineDash,
45
+ points: [ {
46
+ x: dateX,
47
+ y: 0
48
+ }, {
49
+ x: dateX,
50
+ y: this.height
51
+ } ]
52
+ });
53
+ markLineGroup.appendChild(lineObj);
54
+ }));
55
+ }
56
+ refresh() {
57
+ this.height = Math.min(this._scene._gantt.tableNoFrameHeight, this._scene._gantt.drawHeight) - this._scene._gantt.getAllHeaderRowsHeight(),
58
+ this.markLIneContainer.removeAllChild(), this.group.setAttribute("height", this.height),
59
+ this.markLIneContainer.setAttribute("height", this.height), this.initMarkLines();
60
+ }
61
+ setX(x) {
62
+ this.markLIneContainer.setAttribute("x", x);
63
+ }
64
+ }
65
+
66
+ exports.MarkLine = MarkLine;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/scenegraph/mark-line.ts"],"names":[],"mappings":";;;AAEA,6CAA2C;AAC3C,MAAa,QAAQ;IAOnB,YAAY,KAAiB;QAF7B,2BAAsB,GAAW,EAAE,CAAC;QAGlC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;QACpD,IAAI,CAAC,MAAM;YACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAC7G,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAO,CAAC,KAAK,CAAC;YAC7B,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,EAAE;YACxC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,iBAAiB;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,qBAAqB,CAAC;QACxC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAO,CAAC,KAAK,CAAC;YACzC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;YAC3C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IACD,aAAa;QACX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,KAAK,GACT,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc;gBAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAClF,MAAM,aAAa,GAAG,IAAI,gBAAO,CAAC,KAAK,CAAC;gBACtC,QAAQ,EAAE,KAAK;gBACf,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,sBAAsB,GAAG,CAAC;gBAC1C,CAAC,EAAE,CAAC;gBACJ,KAAK,EAAE,IAAI,CAAC,sBAAsB;gBAClC,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YACH,aAAa,CAAC,IAAI,GAAG,WAAW,CAAC;YACjC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAElD,MAAM,OAAO,GAAG,gBAAO,CAAC,UAAU,CAAC;gBACjC,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,KAAK,CAAC,SAAS;gBACvB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE;oBACN,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;oBAClB,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE;iBAC7B;aACF,CAAC,CAAC;YACH,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,OAAO;QACL,IAAI,CAAC,MAAM;YACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC9E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAC9C,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IACD,IAAI,CAAC,CAAS;QACZ,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;CACF;AA/ED,4BA+EC","file":"mark-line.js","sourcesContent":["import type { IMarkLine } from '../ts-types';\nimport type { Scenegraph } from './scenegraph';\nimport { VRender } from '@visactor/vtable';\nexport class MarkLine {\n _scene: Scenegraph;\n group: VRender.Group;\n markLine: IMarkLine[];\n markLIneContainer: VRender.Group;\n markLineContainerWidth: number = 20;\n height: number;\n constructor(scene: Scenegraph) {\n this._scene = scene;\n this.markLine = scene._gantt.parsedOptions.markLine;\n this.height =\n Math.min(scene._gantt.tableNoFrameHeight, scene._gantt.drawHeight) - scene._gantt.getAllHeaderRowsHeight();\n this.group = new VRender.Group({\n x: 0,\n y: scene._gantt.getAllHeaderRowsHeight(),\n width: scene._gantt.tableNoFrameWidth,\n height: this.height,\n pickable: false,\n clip: true\n });\n this.group.name = 'mark-line-container';\n scene.tableGroup.addChild(this.group);\n\n this.markLIneContainer = new VRender.Group({\n x: 0,\n y: 0,\n width: this._scene._gantt.getAllColsWidth(),\n height: this.height,\n pickable: false,\n clip: true\n });\n this.group.appendChild(this.markLIneContainer);\n this.initMarkLines();\n }\n initMarkLines() {\n this.markLine.forEach(line => {\n const style = line.style;\n const date = new Date(line.date);\n const minDate = new Date(this._scene._gantt.parsedOptions.minDate);\n const dateX =\n this._scene._gantt.parsedOptions.colWidthPerDay *\n Math.ceil(Math.abs(date.getTime() - minDate.getTime()) / (1000 * 60 * 60 * 24));\n const markLineGroup = new VRender.Group({\n pickable: false,\n x: dateX - this.markLineContainerWidth / 2,\n y: 0,\n width: this.markLineContainerWidth,\n height: this.height\n });\n markLineGroup.name = 'mark-line';\n this.markLIneContainer.appendChild(markLineGroup);\n // 创建整个任务条rect\n const lineObj = VRender.createLine({\n pickable: false,\n stroke: style.lineColor,\n lineWidth: style.lineWidth,\n lineDash: style.lineDash,\n points: [\n { x: dateX, y: 0 },\n { x: dateX, y: this.height }\n ]\n });\n markLineGroup.appendChild(lineObj);\n });\n }\n\n /** 重新场景场景树节点 */\n refresh() {\n this.height =\n Math.min(this._scene._gantt.tableNoFrameHeight, this._scene._gantt.drawHeight) -\n this._scene._gantt.getAllHeaderRowsHeight();\n this.markLIneContainer.removeAllChild();\n this.group.setAttribute('height', this.height);\n this.markLIneContainer.setAttribute('height', this.height);\n this.initMarkLines();\n }\n setX(x: number) {\n this.markLIneContainer.setAttribute('x', x);\n }\n}\n"]}
@@ -0,0 +1,41 @@
1
+ import { VRender } from '@visactor/vtable';
2
+ import { Grid } from './grid';
3
+ import type { Gantt } from '../Gantt';
4
+ import { ScrollBarComponent } from './scroll-bar';
5
+ import { TimelineHeader } from './timeline-header';
6
+ import { TaskBar } from './task-bar';
7
+ import { MarkLine } from './mark-line';
8
+ import { FrameBorder } from './frame-border';
9
+ export declare class Scenegraph {
10
+ dateStepWidth: number;
11
+ rowHeight: number;
12
+ _scales: {}[];
13
+ timelineHeader: TimelineHeader;
14
+ grid: Grid;
15
+ taskBar: TaskBar;
16
+ _gantt: Gantt;
17
+ tableGroup: VRender.Group;
18
+ scrollbarComponent: ScrollBarComponent;
19
+ markLine: MarkLine;
20
+ frameBorder: FrameBorder;
21
+ stage: VRender.Stage;
22
+ tableGroupWidth: number;
23
+ tableGroupHeight: number;
24
+ constructor(gantt: Gantt);
25
+ initSceneGraph(): void;
26
+ afterCreateSceneGraph(): void;
27
+ refreshTaskBars(): void;
28
+ refreshTaskBarsAndGrid(): void;
29
+ updateTableSize(): void;
30
+ renderSceneGraph(): void;
31
+ updateNextFrame(): void;
32
+ get width(): number;
33
+ get height(): number;
34
+ get x(): number;
35
+ get y(): number;
36
+ setX(x: number, isEnd?: boolean): void;
37
+ setY(y: number, isEnd?: boolean): void;
38
+ setPixelRatio(pixelRatio: number): void;
39
+ resize(): void;
40
+ release(): void;
41
+ }
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.Scenegraph = void 0;
6
+
7
+ const vtable_1 = require("@visactor/vtable"), grid_1 = require("./grid"), env_1 = require("../env"), scroll_bar_1 = require("./scroll-bar"), scroll_1 = require("../event/scroll"), timeline_header_1 = require("./timeline-header"), task_bar_1 = require("./task-bar"), mark_line_1 = require("./mark-line"), frame_border_1 = require("./frame-border");
8
+
9
+ class Scenegraph {
10
+ constructor(gantt) {
11
+ let width, height;
12
+ this._gantt = gantt, this.tableGroupWidth = gantt.tableNoFrameWidth, this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight),
13
+ "node" === env_1.Env.mode || (vtable_1.VRender.vglobal.setEnv("browser"), width = gantt.canvas.width,
14
+ height = gantt.canvas.height), this.stage = vtable_1.VRender.createStage({
15
+ canvas: gantt.canvas,
16
+ width: width,
17
+ height: height,
18
+ disableDirtyBounds: !1,
19
+ enableLayout: !0,
20
+ autoRender: !1
21
+ }), this.stage.defaultLayer.setTheme({
22
+ group: {
23
+ boundsPadding: 0,
24
+ strokeBoundsBuffer: 0,
25
+ lineJoin: "round"
26
+ },
27
+ text: {
28
+ ignoreBuf: !0
29
+ }
30
+ }), this.initSceneGraph();
31
+ }
32
+ initSceneGraph() {
33
+ this.tableGroup = new vtable_1.VRender.Group({
34
+ x: 0,
35
+ y: this._gantt.tableY,
36
+ width: this.tableGroupWidth,
37
+ height: this.tableGroupHeight,
38
+ clip: !0,
39
+ pickable: !1
40
+ }), this.stage.defaultLayer.add(this.tableGroup), this.tableGroup.name = "table",
41
+ this.timelineHeader = new timeline_header_1.TimelineHeader(this), this.grid = new grid_1.Grid(this),
42
+ this.taskBar = new task_bar_1.TaskBar(this), this.markLine = new mark_line_1.MarkLine(this),
43
+ this.frameBorder = new frame_border_1.FrameBorder(this), this.scrollbarComponent = new scroll_bar_1.ScrollBarComponent(this._gantt),
44
+ this.stage.defaultLayer.addChild(this.scrollbarComponent.hScrollBar), this.stage.defaultLayer.addChild(this.scrollbarComponent.vScrollBar);
45
+ }
46
+ afterCreateSceneGraph() {
47
+ this.scrollbarComponent.updateScrollBar(), (0, scroll_1.bindScrollBarListener)(this._gantt.eventManager);
48
+ }
49
+ refreshTaskBars() {
50
+ this.taskBar.refreshItems(), this.updateNextFrame();
51
+ }
52
+ refreshTaskBarsAndGrid() {
53
+ this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight),
54
+ this.tableGroup.setAttribute("height", this.tableGroupHeight), this.grid.refresh(),
55
+ this.taskBar.refreshItems(), this.markLine.refresh(), this.frameBorder.resize(),
56
+ this.scrollbarComponent.updateScrollBar(), this.updateNextFrame();
57
+ }
58
+ updateTableSize() {
59
+ this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight),
60
+ this.tableGroup.setAttributes({
61
+ x: 0,
62
+ y: this._gantt.tableY,
63
+ width: this._gantt.tableNoFrameWidth,
64
+ height: this.tableGroupHeight
65
+ }), this.grid.resize(), this.taskBar.resize(), this.frameBorder.resize();
66
+ }
67
+ renderSceneGraph() {
68
+ this.stage.render();
69
+ }
70
+ updateNextFrame() {
71
+ this.stage.renderNextFrame();
72
+ }
73
+ get width() {
74
+ var _a, _b;
75
+ return null !== (_b = null === (_a = this.tableGroup.attribute) || void 0 === _a ? void 0 : _a.width) && void 0 !== _b ? _b : 0;
76
+ }
77
+ get height() {
78
+ var _a, _b;
79
+ return null !== (_b = null === (_a = this.tableGroup.attribute) || void 0 === _a ? void 0 : _a.height) && void 0 !== _b ? _b : 0;
80
+ }
81
+ get x() {
82
+ var _a, _b;
83
+ return null !== (_b = null === (_a = this.tableGroup.attribute) || void 0 === _a ? void 0 : _a.x) && void 0 !== _b ? _b : 0;
84
+ }
85
+ get y() {
86
+ var _a, _b;
87
+ return null !== (_b = null === (_a = this.tableGroup.attribute) || void 0 === _a ? void 0 : _a.y) && void 0 !== _b ? _b : 0;
88
+ }
89
+ setX(x, isEnd = !1) {
90
+ this.timelineHeader.setX(x), this.grid.setX(x), this.taskBar.setX(x), this.markLine.setX(x),
91
+ this.updateNextFrame();
92
+ }
93
+ setY(y, isEnd = !1) {
94
+ this.grid.setY(y), this.taskBar.setY(y), this.updateNextFrame();
95
+ }
96
+ setPixelRatio(pixelRatio) {
97
+ this.stage.disableDirtyBounds(), this.stage.window.setDpr(pixelRatio), this.stage.render(),
98
+ this.stage.enableDirtyBounds();
99
+ }
100
+ resize() {
101
+ this.updateTableSize(), this.scrollbarComponent.updateScrollBar(), this.updateNextFrame();
102
+ }
103
+ release() {
104
+ this.stage.release();
105
+ }
106
+ }
107
+
108
+ exports.Scenegraph = Scenegraph;
109
+ //# sourceMappingURL=scenegraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/scenegraph/scenegraph.ts"],"names":[],"mappings":"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","file":"scenegraph.js","sourcesContent":["import { VRender } from '@visactor/vtable';\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';\n\nexport class Scenegraph {\n dateStepWidth: number;\n rowHeight: number;\n _scales: {}[];\n timelineHeader: TimelineHeader;\n grid: Grid;\n taskBar: TaskBar;\n _gantt: Gantt;\n tableGroup: VRender.Group;\n scrollbarComponent: ScrollBarComponent;\n markLine: MarkLine;\n frameBorder: FrameBorder;\n stage: VRender.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 // VRender.vglobal.setEnv('node', gantt.options.modeParams);\n // width = table.canvasWidth;\n // height = table.canvasHeight;\n } else {\n VRender.vglobal.setEnv('browser');\n width = gantt.canvas.width;\n height = gantt.canvas.height;\n }\n this.stage = VRender.createStage({\n canvas: gantt.canvas,\n width,\n height,\n disableDirtyBounds: false,\n // background: gantt.theme.underlayBackgroundColor,\n // dpr: gantt.internalProps.pixelRatio,\n enableLayout: true,\n autoRender: false\n // afterRender: () => {\n // this._gantt.fireListeners('after_render', null);\n // }\n });\n\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.tableGroup = new VRender.Group({\n x: 0,\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.tableGroup);\n scene.tableGroup.name = 'table';\n // 初始化顶部时间线表头部分\n scene.timelineHeader = new TimelineHeader(scene);\n\n // 初始化网格线组件\n scene.grid = new Grid(scene);\n\n // 初始化任务条线组件\n scene.taskBar = new TaskBar(scene);\n\n // 初始化标记线组件\n scene.markLine = new MarkLine(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 afterCreateSceneGraph() {\n this.scrollbarComponent.updateScrollBar();\n bindScrollBarListener(this._gantt.eventManager);\n }\n\n refreshTaskBars() {\n // this.timelineHeader.refresh();\n // this.grid.refresh();\n this.taskBar.refreshItems();\n // this.markLine.refresh();\n // this.frameBorder.refresh();\n // this.scrollbarComponent.refresh();\n this.updateNextFrame();\n }\n refreshTaskBarsAndGrid() {\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroup.setAttribute('height', this.tableGroupHeight);\n // this.timelineHeader.refresh();\n this.grid.refresh();\n this.taskBar.refreshItems();\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.tableGroup.setAttributes({\n x: 0,\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.frameBorder.resize();\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.tableGroup.attribute?.width ?? 0;\n }\n\n get height(): number {\n return this.tableGroup.attribute?.height ?? 0;\n }\n\n get x(): number {\n return this.tableGroup.attribute?.x ?? 0;\n }\n\n get y(): number {\n return this.tableGroup.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.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.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"]}
@@ -0,0 +1,19 @@
1
+ import { VRender } from '@visactor/vtable';
2
+ import type { Gantt } from '../Gantt';
3
+ export declare class ScrollBarComponent {
4
+ hScrollBar: VRender.ScrollBar;
5
+ vScrollBar: VRender.ScrollBar;
6
+ _gantt: Gantt;
7
+ _clearHorizontalScrollBar: any;
8
+ _clearVerticalScrollBar: any;
9
+ constructor(gantt: Gantt);
10
+ createScrollBar(tableWidth: number, tableHeight: number): void;
11
+ refresh(): void;
12
+ hideVerticalScrollBar(): void;
13
+ showVerticalScrollBar(autoHide?: boolean): void;
14
+ hideHorizontalScrollBar(): void;
15
+ showHorizontalScrollBar(autoHide?: boolean): void;
16
+ updateVerticalScrollBarPos(topRatio: number): void;
17
+ updateHorizontalScrollBarPos(leftRatio: number): void;
18
+ updateScrollBar(): void;
19
+ }