@wimi/vtable-gantt 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +213 -0
- package/README.zh-CN.md +215 -0
- package/cjs/Gantt.d.ts +200 -0
- package/cjs/Gantt.js +582 -0
- package/cjs/Gantt.js.map +1 -0
- package/cjs/components/Menu.d.ts +1 -0
- package/cjs/components/Menu.js +1 -0
- package/cjs/components/Menu.js.map +1 -0
- package/cjs/components/MenuElementStyle.d.ts +1 -0
- package/cjs/components/MenuElementStyle.js +12 -0
- package/cjs/components/MenuElementStyle.js.map +1 -0
- package/cjs/data/DataSource.d.ts +9 -0
- package/cjs/data/DataSource.js +76 -0
- package/cjs/data/DataSource.js.map +1 -0
- package/cjs/env.d.ts +19 -0
- package/cjs/env.js +48 -0
- package/cjs/env.js.map +1 -0
- package/cjs/event/EventHandler.d.ts +47 -0
- package/cjs/event/EventHandler.js +128 -0
- package/cjs/event/EventHandler.js.map +1 -0
- package/cjs/event/EventTarget.d.ts +12 -0
- package/cjs/event/EventTarget.js +67 -0
- package/cjs/event/EventTarget.js.map +1 -0
- package/cjs/event/event-manager.d.ts +34 -0
- package/cjs/event/event-manager.js +369 -0
- package/cjs/event/event-manager.js.map +1 -0
- package/cjs/event/scroll.d.ts +8 -0
- package/cjs/event/scroll.js +112 -0
- package/cjs/event/scroll.js.map +1 -0
- package/cjs/event/touch.d.ts +2 -0
- package/cjs/event/touch.js +86 -0
- package/cjs/event/touch.js.map +1 -0
- package/cjs/gantt-helper.d.ts +63 -0
- package/cjs/gantt-helper.js +712 -0
- package/cjs/gantt-helper.js.map +1 -0
- package/cjs/index.d.ts +10 -0
- package/cjs/index.js +60 -0
- package/cjs/index.js.map +1 -0
- package/cjs/plugins/index.d.ts +2 -0
- package/cjs/plugins/index.js +15 -0
- package/cjs/plugins/index.js.map +1 -0
- package/cjs/plugins/interface.d.ts +10 -0
- package/cjs/plugins/interface.js +6 -0
- package/cjs/plugins/interface.js.map +1 -0
- package/cjs/plugins/plugin-manager.d.ts +16 -0
- package/cjs/plugins/plugin-manager.js +63 -0
- package/cjs/plugins/plugin-manager.js.map +1 -0
- package/cjs/register.d.ts +1 -0
- package/cjs/register.js +1 -0
- package/cjs/register.js.map +1 -0
- package/cjs/scenegraph/dependency-link.d.ts +48 -0
- package/cjs/scenegraph/dependency-link.js +480 -0
- package/cjs/scenegraph/dependency-link.js.map +1 -0
- package/cjs/scenegraph/drag-order-line.d.ts +12 -0
- package/cjs/scenegraph/drag-order-line.js +49 -0
- package/cjs/scenegraph/drag-order-line.js.map +1 -0
- package/cjs/scenegraph/frame-border.d.ts +10 -0
- package/cjs/scenegraph/frame-border.js +58 -0
- package/cjs/scenegraph/frame-border.js.map +1 -0
- package/cjs/scenegraph/gantt-node.d.ts +22 -0
- package/cjs/scenegraph/gantt-node.js +66 -0
- package/cjs/scenegraph/gantt-node.js.map +1 -0
- package/cjs/scenegraph/graphic/group-contribution-render.d.ts +12 -0
- package/cjs/scenegraph/graphic/group-contribution-render.js +37 -0
- package/cjs/scenegraph/graphic/group-contribution-render.js.map +1 -0
- package/cjs/scenegraph/graphic/index.d.ts +3 -0
- package/cjs/scenegraph/graphic/index.js +13 -0
- package/cjs/scenegraph/graphic/index.js.map +1 -0
- package/cjs/scenegraph/grid.d.ts +34 -0
- package/cjs/scenegraph/grid.js +316 -0
- package/cjs/scenegraph/grid.js.map +1 -0
- package/cjs/scenegraph/mark-line.d.ts +13 -0
- package/cjs/scenegraph/mark-line.js +109 -0
- package/cjs/scenegraph/mark-line.js.map +1 -0
- package/cjs/scenegraph/scenegraph.d.ts +59 -0
- package/cjs/scenegraph/scenegraph.js +240 -0
- package/cjs/scenegraph/scenegraph.js.map +1 -0
- package/cjs/scenegraph/scroll-bar.d.ts +19 -0
- package/cjs/scenegraph/scroll-bar.js +150 -0
- package/cjs/scenegraph/scroll-bar.js.map +1 -0
- package/cjs/scenegraph/task-bar.d.ts +40 -0
- package/cjs/scenegraph/task-bar.js +476 -0
- package/cjs/scenegraph/task-bar.js.map +1 -0
- package/cjs/scenegraph/task-creation-button.d.ts +13 -0
- package/cjs/scenegraph/task-creation-button.js +86 -0
- package/cjs/scenegraph/task-creation-button.js.map +1 -0
- package/cjs/scenegraph/timeline-header.d.ts +14 -0
- package/cjs/scenegraph/timeline-header.js +190 -0
- package/cjs/scenegraph/timeline-header.js.map +1 -0
- package/cjs/scenegraph/tooltip.d.ts +9 -0
- package/cjs/scenegraph/tooltip.js +59 -0
- package/cjs/scenegraph/tooltip.js.map +1 -0
- package/cjs/state/gantt-table-sync.d.ts +8 -0
- package/cjs/state/gantt-table-sync.js +96 -0
- package/cjs/state/gantt-table-sync.js.map +1 -0
- package/cjs/state/state-manager.d.ts +127 -0
- package/cjs/state/state-manager.js +634 -0
- package/cjs/state/state-manager.js.map +1 -0
- package/cjs/sub-tasks-inline-helper.d.ts +1 -0
- package/cjs/sub-tasks-inline-helper.js +1 -0
- package/cjs/sub-tasks-inline-helper.js.map +1 -0
- package/cjs/themes.d.ts +1 -0
- package/cjs/themes.js +1 -0
- package/cjs/themes.js.map +1 -0
- package/cjs/tools/debounce.d.ts +1 -0
- package/cjs/tools/debounce.js +51 -0
- package/cjs/tools/debounce.js.map +1 -0
- package/cjs/tools/dom.d.ts +1 -0
- package/cjs/tools/dom.js +11 -0
- package/cjs/tools/dom.js.map +1 -0
- package/cjs/tools/index.d.ts +2 -0
- package/cjs/tools/index.js +30 -0
- package/cjs/tools/index.js.map +1 -0
- package/cjs/tools/inertia.d.ts +15 -0
- package/cjs/tools/inertia.js +40 -0
- package/cjs/tools/inertia.js.map +1 -0
- package/cjs/tools/isx.d.ts +16 -0
- package/cjs/tools/isx.js +117 -0
- package/cjs/tools/isx.js.map +1 -0
- package/cjs/tools/pixel-ratio.d.ts +2 -0
- package/cjs/tools/pixel-ratio.js +16 -0
- package/cjs/tools/pixel-ratio.js.map +1 -0
- package/cjs/tools/util.d.ts +19 -0
- package/cjs/tools/util.js +404 -0
- package/cjs/tools/util.js.map +1 -0
- package/cjs/ts-types/EVENT_TYPE.d.ts +19 -0
- package/cjs/ts-types/EVENT_TYPE.js +22 -0
- package/cjs/ts-types/EVENT_TYPE.js.map +1 -0
- package/cjs/ts-types/common.d.ts +11 -0
- package/cjs/ts-types/common.js +10 -0
- package/cjs/ts-types/common.js.map +1 -0
- package/cjs/ts-types/events.d.ts +132 -0
- package/cjs/ts-types/events.js +6 -0
- package/cjs/ts-types/events.js.map +1 -0
- package/cjs/ts-types/gantt-engine.d.ts +344 -0
- package/cjs/ts-types/gantt-engine.js +18 -0
- package/cjs/ts-types/gantt-engine.js.map +1 -0
- package/cjs/ts-types/index.d.ts +5 -0
- package/cjs/ts-types/index.js +23 -0
- package/cjs/ts-types/index.js.map +1 -0
- package/cjs/ts-types/zoom-scale.d.ts +32 -0
- package/cjs/ts-types/zoom-scale.js +6 -0
- package/cjs/ts-types/zoom-scale.js.map +1 -0
- package/cjs/vrender.d.ts +1 -0
- package/cjs/vrender.js +60 -0
- package/cjs/vrender.js.map +1 -0
- package/cjs/vtable.d.ts +1 -0
- package/cjs/vtable.js +35 -0
- package/cjs/vtable.js.map +1 -0
- package/cjs/zoom-scale/DataZoomIntegration.d.ts +50 -0
- package/cjs/zoom-scale/DataZoomIntegration.js +261 -0
- package/cjs/zoom-scale/DataZoomIntegration.js.map +1 -0
- package/cjs/zoom-scale/ZoomScaleManager.d.ts +55 -0
- package/cjs/zoom-scale/ZoomScaleManager.js +328 -0
- package/cjs/zoom-scale/ZoomScaleManager.js.map +1 -0
- package/cjs/zoom-scale/index.d.ts +4 -0
- package/cjs/zoom-scale/index.js +24 -0
- package/cjs/zoom-scale/index.js.map +1 -0
- package/dist/vtable-gantt.js +76328 -0
- package/dist/vtable-gantt.min.js +15 -0
- package/es/Gantt.d.ts +200 -0
- package/es/Gantt.js +584 -0
- package/es/Gantt.js.map +1 -0
- package/es/components/Menu.d.ts +1 -0
- package/es/components/Menu.js +1 -0
- package/es/components/Menu.js.map +1 -0
- package/es/components/MenuElementStyle.d.ts +1 -0
- package/es/components/MenuElementStyle.js +6 -0
- package/es/components/MenuElementStyle.js.map +1 -0
- package/es/data/DataSource.d.ts +9 -0
- package/es/data/DataSource.js +63 -0
- package/es/data/DataSource.js.map +1 -0
- package/es/env.d.ts +19 -0
- package/es/env.js +42 -0
- package/es/env.js.map +1 -0
- package/es/event/EventHandler.d.ts +47 -0
- package/es/event/EventHandler.js +119 -0
- package/es/event/EventHandler.js.map +1 -0
- package/es/event/EventTarget.d.ts +12 -0
- package/es/event/EventTarget.js +58 -0
- package/es/event/EventTarget.js.map +1 -0
- package/es/event/event-manager.d.ts +34 -0
- package/es/event/event-manager.js +376 -0
- package/es/event/event-manager.js.map +1 -0
- package/es/event/scroll.d.ts +8 -0
- package/es/event/scroll.js +104 -0
- package/es/event/scroll.js.map +1 -0
- package/es/event/touch.d.ts +2 -0
- package/es/event/touch.js +78 -0
- package/es/event/touch.js.map +1 -0
- package/es/gantt-helper.d.ts +63 -0
- package/es/gantt-helper.js +683 -0
- package/es/gantt-helper.js.map +1 -0
- package/es/index.d.ts +10 -0
- package/es/index.js +16 -0
- package/es/index.js.map +1 -0
- package/es/plugins/index.d.ts +2 -0
- package/es/plugins/index.js +2 -0
- package/es/plugins/index.js.map +1 -0
- package/es/plugins/interface.d.ts +10 -0
- package/es/plugins/interface.js +2 -0
- package/es/plugins/interface.js.map +1 -0
- package/es/plugins/plugin-manager.d.ts +16 -0
- package/es/plugins/plugin-manager.js +55 -0
- package/es/plugins/plugin-manager.js.map +1 -0
- package/es/register.d.ts +1 -0
- package/es/register.js +1 -0
- package/es/register.js.map +1 -0
- package/es/scenegraph/dependency-link.d.ts +48 -0
- package/es/scenegraph/dependency-link.js +462 -0
- package/es/scenegraph/dependency-link.js.map +1 -0
- package/es/scenegraph/drag-order-line.d.ts +12 -0
- package/es/scenegraph/drag-order-line.js +40 -0
- package/es/scenegraph/drag-order-line.js.map +1 -0
- package/es/scenegraph/frame-border.d.ts +10 -0
- package/es/scenegraph/frame-border.js +51 -0
- package/es/scenegraph/frame-border.js.map +1 -0
- package/es/scenegraph/gantt-node.d.ts +22 -0
- package/es/scenegraph/gantt-node.js +64 -0
- package/es/scenegraph/gantt-node.js.map +1 -0
- package/es/scenegraph/graphic/group-contribution-render.d.ts +12 -0
- package/es/scenegraph/graphic/group-contribution-render.js +32 -0
- package/es/scenegraph/graphic/group-contribution-render.js.map +1 -0
- package/es/scenegraph/graphic/index.d.ts +3 -0
- package/es/scenegraph/graphic/index.js +8 -0
- package/es/scenegraph/graphic/index.js.map +1 -0
- package/es/scenegraph/grid.d.ts +34 -0
- package/es/scenegraph/grid.js +306 -0
- package/es/scenegraph/grid.js.map +1 -0
- package/es/scenegraph/mark-line.d.ts +13 -0
- package/es/scenegraph/mark-line.js +101 -0
- package/es/scenegraph/mark-line.js.map +1 -0
- package/es/scenegraph/scenegraph.d.ts +59 -0
- package/es/scenegraph/scenegraph.js +250 -0
- package/es/scenegraph/scenegraph.js.map +1 -0
- package/es/scenegraph/scroll-bar.d.ts +19 -0
- package/es/scenegraph/scroll-bar.js +144 -0
- package/es/scenegraph/scroll-bar.js.map +1 -0
- package/es/scenegraph/task-bar.d.ts +40 -0
- package/es/scenegraph/task-bar.js +475 -0
- package/es/scenegraph/task-bar.js.map +1 -0
- package/es/scenegraph/task-creation-button.d.ts +13 -0
- package/es/scenegraph/task-creation-button.js +78 -0
- package/es/scenegraph/task-creation-button.js.map +1 -0
- package/es/scenegraph/timeline-header.d.ts +14 -0
- package/es/scenegraph/timeline-header.js +186 -0
- package/es/scenegraph/timeline-header.js.map +1 -0
- package/es/scenegraph/tooltip.d.ts +9 -0
- package/es/scenegraph/tooltip.js +51 -0
- package/es/scenegraph/tooltip.js.map +1 -0
- package/es/state/gantt-table-sync.d.ts +8 -0
- package/es/state/gantt-table-sync.js +87 -0
- package/es/state/gantt-table-sync.js.map +1 -0
- package/es/state/state-manager.d.ts +127 -0
- package/es/state/state-manager.js +631 -0
- package/es/state/state-manager.js.map +1 -0
- package/es/sub-tasks-inline-helper.d.ts +1 -0
- package/es/sub-tasks-inline-helper.js +1 -0
- package/es/sub-tasks-inline-helper.js.map +1 -0
- package/es/themes.d.ts +1 -0
- package/es/themes.js +1 -0
- package/es/themes.js.map +1 -0
- package/es/tools/debounce.d.ts +1 -0
- package/es/tools/debounce.js +45 -0
- package/es/tools/debounce.js.map +1 -0
- package/es/tools/dom.d.ts +1 -0
- package/es/tools/dom.js +5 -0
- package/es/tools/dom.js.map +1 -0
- package/es/tools/index.d.ts +2 -0
- package/es/tools/index.js +4 -0
- package/es/tools/index.js.map +1 -0
- package/es/tools/inertia.d.ts +15 -0
- package/es/tools/inertia.js +31 -0
- package/es/tools/inertia.js.map +1 -0
- package/es/tools/isx.d.ts +16 -0
- package/es/tools/isx.js +80 -0
- package/es/tools/isx.js.map +1 -0
- package/es/tools/pixel-ratio.d.ts +2 -0
- package/es/tools/pixel-ratio.js +12 -0
- package/es/tools/pixel-ratio.js.map +1 -0
- package/es/tools/util.d.ts +19 -0
- package/es/tools/util.js +390 -0
- package/es/tools/util.js.map +1 -0
- package/es/ts-types/EVENT_TYPE.d.ts +19 -0
- package/es/ts-types/EVENT_TYPE.js +18 -0
- package/es/ts-types/EVENT_TYPE.js.map +1 -0
- package/es/ts-types/common.d.ts +11 -0
- package/es/ts-types/common.js +6 -0
- package/es/ts-types/common.js.map +1 -0
- package/es/ts-types/events.d.ts +132 -0
- package/es/ts-types/events.js +2 -0
- package/es/ts-types/events.js.map +1 -0
- package/es/ts-types/gantt-engine.d.ts +344 -0
- package/es/ts-types/gantt-engine.js +21 -0
- package/es/ts-types/gantt-engine.js.map +1 -0
- package/es/ts-types/index.d.ts +5 -0
- package/es/ts-types/index.js +10 -0
- package/es/ts-types/index.js.map +1 -0
- package/es/ts-types/zoom-scale.d.ts +32 -0
- package/es/ts-types/zoom-scale.js +2 -0
- package/es/ts-types/zoom-scale.js.map +1 -0
- package/es/vrender.d.ts +1 -0
- package/es/vrender.js +2 -0
- package/es/vrender.js.map +1 -0
- package/es/vtable.d.ts +1 -0
- package/es/vtable.js +2 -0
- package/es/vtable.js.map +1 -0
- package/es/zoom-scale/DataZoomIntegration.d.ts +50 -0
- package/es/zoom-scale/DataZoomIntegration.js +253 -0
- package/es/zoom-scale/DataZoomIntegration.js.map +1 -0
- package/es/zoom-scale/ZoomScaleManager.d.ts +55 -0
- package/es/zoom-scale/ZoomScaleManager.js +322 -0
- package/es/zoom-scale/ZoomScaleManager.js.map +1 -0
- package/es/zoom-scale/index.d.ts +4 -0
- package/es/zoom-scale/index.js +4 -0
- package/es/zoom-scale/index.js.map +1 -0
- package/package.json +124 -0
|
@@ -0,0 +1,634 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.StateManager = void 0;
|
|
6
|
+
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), ts_types_1 = require("../ts-types"), gantt_table_sync_1 = require("./gantt-table-sync"), gantt_helper_1 = require("../gantt-helper"), debounce_1 = require("../tools/debounce"), task_bar_1 = require("../scenegraph/task-bar"), inertia_1 = require("../tools/inertia"), util_1 = require("../tools/util");
|
|
8
|
+
|
|
9
|
+
class StateManager {
|
|
10
|
+
constructor(gantt) {
|
|
11
|
+
var _a;
|
|
12
|
+
this.interactionState = ts_types_1.InteractionState.default, this.resetInteractionState = (0,
|
|
13
|
+
debounce_1.debounce)((() => {
|
|
14
|
+
this.updateInteractionState(ts_types_1.InteractionState.default);
|
|
15
|
+
}), 100), this._gantt = gantt, this.scroll = {
|
|
16
|
+
horizontalBarPos: 0,
|
|
17
|
+
verticalBarPos: 0
|
|
18
|
+
}, this.moveTaskBar = {
|
|
19
|
+
targetStartX: null,
|
|
20
|
+
targetStartY: null,
|
|
21
|
+
deltaX: 0,
|
|
22
|
+
deltaY: 0,
|
|
23
|
+
startOffsetY: null,
|
|
24
|
+
startX: null,
|
|
25
|
+
startY: null,
|
|
26
|
+
moving: !1,
|
|
27
|
+
target: null,
|
|
28
|
+
moveTaskBarXSpeed: 0,
|
|
29
|
+
moveTaskBarXInertia: new inertia_1.Inertia
|
|
30
|
+
}, this.hoverTaskBar = {
|
|
31
|
+
targetStartX: null,
|
|
32
|
+
startX: null,
|
|
33
|
+
target: null
|
|
34
|
+
}, this.marklineIcon = {
|
|
35
|
+
target: null
|
|
36
|
+
}, this.selectedTaskBar = {
|
|
37
|
+
target: null
|
|
38
|
+
}, this.resizeTaskBar = {
|
|
39
|
+
startOffsetY: null,
|
|
40
|
+
targetStartX: null,
|
|
41
|
+
targetEndX: null,
|
|
42
|
+
startX: null,
|
|
43
|
+
startY: null,
|
|
44
|
+
target: null,
|
|
45
|
+
resizing: !1,
|
|
46
|
+
onIconName: ""
|
|
47
|
+
}, this.adjustProgressBar = {
|
|
48
|
+
startX: null,
|
|
49
|
+
startY: null,
|
|
50
|
+
target: null,
|
|
51
|
+
adjusting: !1,
|
|
52
|
+
originalProgress: 0
|
|
53
|
+
}, this.resizeTableWidth = {
|
|
54
|
+
lastX: null,
|
|
55
|
+
resizing: !1
|
|
56
|
+
}, this.selectedDenpendencyLink = {
|
|
57
|
+
link: null
|
|
58
|
+
}, this.creatingDenpendencyLink = {
|
|
59
|
+
startClickedPoint: null,
|
|
60
|
+
startX: null,
|
|
61
|
+
startY: null,
|
|
62
|
+
startOffsetY: null,
|
|
63
|
+
targetStartX: null,
|
|
64
|
+
creating: !1,
|
|
65
|
+
firstTaskBarPosition: "left",
|
|
66
|
+
secondTaskBarPosition: "left",
|
|
67
|
+
secondTaskBarNode: null,
|
|
68
|
+
lastHighLightLinkPoint: null
|
|
69
|
+
}, this.updateVerticalScrollBar = this.updateVerticalScrollBar.bind(this), this.updateHorizontalScrollBar = this.updateHorizontalScrollBar.bind(this),
|
|
70
|
+
(0, gantt_table_sync_1.syncScrollStateFromTable)(this._gantt), (0, gantt_table_sync_1.syncEditCellFromTable)(this._gantt),
|
|
71
|
+
(0, gantt_table_sync_1.syncDragOrderFromTable)(this._gantt), (0, gantt_table_sync_1.syncTreeChangeFromTable)(this._gantt),
|
|
72
|
+
(0, gantt_table_sync_1.syncSortFromTable)(this._gantt), "auto" !== (null === (_a = this._gantt.options.taskListTable) || void 0 === _a ? void 0 : _a.tableWidth) && -1 !== this._gantt.taskTableWidth || (0,
|
|
73
|
+
gantt_table_sync_1.syncTableWidthFromTable)(this._gantt);
|
|
74
|
+
}
|
|
75
|
+
setScrollTop(top, triggerEvent = !0) {
|
|
76
|
+
const totalHeight = this._gantt.getAllRowsHeight();
|
|
77
|
+
top = Math.max(0, Math.min(top, totalHeight - this._gantt.scenegraph.height)), top = Math.ceil(top);
|
|
78
|
+
const oldVerticalBarPos = this.scroll.verticalBarPos;
|
|
79
|
+
this.scroll.verticalBarPos = top, (0, vutils_1.isValid)(this.scroll.verticalBarPos) && !isNaN(this.scroll.verticalBarPos) || (this.scroll.verticalBarPos = 0),
|
|
80
|
+
this._gantt.scenegraph.setY(-top);
|
|
81
|
+
const yRatio = top / (totalHeight - this._gantt.scenegraph.height);
|
|
82
|
+
this._gantt.scenegraph.scrollbarComponent.updateVerticalScrollBarPos(yRatio), oldVerticalBarPos !== top && triggerEvent && ((0,
|
|
83
|
+
gantt_table_sync_1.syncScrollStateToTable)(this._gantt), this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.SCROLL, {
|
|
84
|
+
scrollTop: this.scroll.verticalBarPos,
|
|
85
|
+
scrollLeft: this.scroll.horizontalBarPos,
|
|
86
|
+
scrollDirection: "vertical",
|
|
87
|
+
scrollRatioY: yRatio
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
get scrollLeft() {
|
|
91
|
+
return this.scroll.horizontalBarPos;
|
|
92
|
+
}
|
|
93
|
+
get scrollTop() {
|
|
94
|
+
return this.scroll.verticalBarPos;
|
|
95
|
+
}
|
|
96
|
+
setScrollLeft(left, triggerEvent = !0) {
|
|
97
|
+
const totalWidth = this._gantt.getAllDateColsWidth();
|
|
98
|
+
left = Math.max(0, Math.min(left, totalWidth - this._gantt.scenegraph.width)), left = Math.ceil(left);
|
|
99
|
+
const oldHorizontalBarPos = this.scroll.horizontalBarPos;
|
|
100
|
+
this.scroll.horizontalBarPos = left, (0, vutils_1.isValid)(this.scroll.horizontalBarPos) && !isNaN(this.scroll.horizontalBarPos) || (this.scroll.horizontalBarPos = 0),
|
|
101
|
+
this._gantt.scenegraph.setX(-left);
|
|
102
|
+
const xRatio = left / (totalWidth - this._gantt.scenegraph.width);
|
|
103
|
+
this._gantt.scenegraph.scrollbarComponent.updateHorizontalScrollBarPos(xRatio),
|
|
104
|
+
oldHorizontalBarPos !== left && triggerEvent && this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.SCROLL, {
|
|
105
|
+
scrollTop: this.scroll.verticalBarPos,
|
|
106
|
+
scrollLeft: this.scroll.horizontalBarPos,
|
|
107
|
+
scrollDirection: "horizontal",
|
|
108
|
+
scrollRatioX: xRatio
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
updateInteractionState(mode) {
|
|
112
|
+
if (this.interactionState === mode) return;
|
|
113
|
+
const oldState = this.interactionState;
|
|
114
|
+
this.interactionState = mode, oldState === ts_types_1.InteractionState.scrolling && ts_types_1.InteractionState.default;
|
|
115
|
+
}
|
|
116
|
+
updateVerticalScrollBar(yRatio) {
|
|
117
|
+
const totalHeight = this._gantt.getAllRowsHeight();
|
|
118
|
+
this.scroll.verticalBarPos;
|
|
119
|
+
this.scroll.verticalBarPos = Math.ceil(yRatio * (totalHeight - this._gantt.scenegraph.height)),
|
|
120
|
+
(0, vutils_1.isValid)(this.scroll.verticalBarPos) && !isNaN(this.scroll.verticalBarPos) || (this.scroll.verticalBarPos = 0),
|
|
121
|
+
this._gantt.scenegraph.setY(-this.scroll.verticalBarPos, 1 === yRatio), (0, gantt_table_sync_1.syncScrollStateToTable)(this._gantt),
|
|
122
|
+
this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.SCROLL, {
|
|
123
|
+
scrollTop: this.scroll.verticalBarPos,
|
|
124
|
+
scrollLeft: this.scroll.horizontalBarPos,
|
|
125
|
+
scrollDirection: "vertical",
|
|
126
|
+
scrollRatioY: yRatio
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
updateHorizontalScrollBar(xRatio) {
|
|
130
|
+
const totalWidth = this._gantt.getAllDateColsWidth();
|
|
131
|
+
this.scroll.horizontalBarPos;
|
|
132
|
+
this.scroll.horizontalBarPos = Math.ceil(xRatio * (totalWidth - this._gantt.scenegraph.width)),
|
|
133
|
+
(0, vutils_1.isValid)(this.scroll.horizontalBarPos) && !isNaN(this.scroll.horizontalBarPos) || (this.scroll.horizontalBarPos = 0),
|
|
134
|
+
this._gantt.scenegraph.setX(-this.scroll.horizontalBarPos, 1 === xRatio), this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.SCROLL, {
|
|
135
|
+
scrollTop: this.scroll.verticalBarPos,
|
|
136
|
+
scrollLeft: this.scroll.horizontalBarPos,
|
|
137
|
+
scrollDirection: "horizontal",
|
|
138
|
+
scrollRatioY: xRatio
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
startMoveTaskBar(target, x, y, offsetY) {
|
|
142
|
+
"task-bar-hover-shadow" === target.name && (target = target.parent), this.moveTaskBar.moving = !0,
|
|
143
|
+
this.moveTaskBar.target = target, this.moveTaskBar.targetStartX = target.attribute.x,
|
|
144
|
+
this.moveTaskBar.targetStartY = target.attribute.y, this.moveTaskBar.startX = x,
|
|
145
|
+
this.moveTaskBar.startY = y, this.moveTaskBar.startOffsetY = offsetY, target.setAttribute("zIndex", 1e4);
|
|
146
|
+
}
|
|
147
|
+
isMoveingTaskBar() {
|
|
148
|
+
return this.moveTaskBar.moving;
|
|
149
|
+
}
|
|
150
|
+
endMoveTaskBar() {
|
|
151
|
+
this.moveTaskBar.moveTaskBarXInertia.isInertiaScrolling() && this.moveTaskBar.moveTaskBarXInertia.endInertia();
|
|
152
|
+
const deltaX = this.moveTaskBar.deltaX, deltaY = this.moveTaskBar.deltaY, target = this.moveTaskBar.target;
|
|
153
|
+
if (Math.abs(deltaX) >= 1 || Math.abs(deltaY) >= 1) {
|
|
154
|
+
const oldRowIndex = target.task_index, taskIndex = target.task_index, sub_task_index = target.sub_task_index, {startDate: oldStartDate, endDate: oldEndDate} = this._gantt.getTaskInfoByTaskListIndex(taskIndex, sub_task_index), targetEndY = this.moveTaskBar.targetStartY + this._gantt.parsedOptions.rowHeight * Math.round(deltaY / this._gantt.parsedOptions.rowHeight), milestoneTaskbarHeight = this._gantt.parsedOptions.taskBarMilestoneStyle.width, testDateX = this.moveTaskBar.target.attribute.x + (target.record.type === ts_types_1.TaskType.MILESTONE ? milestoneTaskbarHeight / 2 : 0), startDateColIndex = (0,
|
|
155
|
+
gantt_helper_1.getDateIndexByX)(testDateX - this._gantt.stateManager.scroll.horizontalBarPos, this._gantt), timelineStartDate = this._gantt.parsedOptions.reverseSortedTimelineScales[0].timelineDates[startDateColIndex];
|
|
156
|
+
if (!timelineStartDate) return;
|
|
157
|
+
const newStartDate = timelineStartDate.startDate, newEndDate = new Date(newStartDate.getTime() + ((0,
|
|
158
|
+
util_1.createDateAtMidnight)(oldEndDate).getTime() - (0, util_1.createDateAtMidnight)(oldStartDate).getTime()));
|
|
159
|
+
let dateChanged;
|
|
160
|
+
if ((0, util_1.createDateAtMidnight)(oldStartDate).getTime() !== newStartDate.getTime()) {
|
|
161
|
+
dateChanged = (0, util_1.createDateAtMidnight)(oldStartDate).getTime() > newStartDate.getTime() ? "left" : "right",
|
|
162
|
+
this._gantt._updateStartEndDateToTaskRecord(newStartDate, newEndDate, taskIndex, sub_task_index);
|
|
163
|
+
const newRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);
|
|
164
|
+
this._gantt.hasListeners(ts_types_1.GANTT_EVENT_TYPE.CHANGE_DATE_RANGE) && this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.CHANGE_DATE_RANGE, {
|
|
165
|
+
startDate: newRecord[this._gantt.parsedOptions.startDateField],
|
|
166
|
+
endDate: newRecord[this._gantt.parsedOptions.endDateField],
|
|
167
|
+
oldStartDate: oldStartDate,
|
|
168
|
+
oldEndDate: oldEndDate,
|
|
169
|
+
index: taskIndex,
|
|
170
|
+
record: newRecord
|
|
171
|
+
});
|
|
172
|
+
const newRowIndex = (0, gantt_helper_1.getTaskIndexsByTaskY)(targetEndY, this._gantt).task_index;
|
|
173
|
+
this._gantt.hasListeners(ts_types_1.GANTT_EVENT_TYPE.MOVE_END_TASK_BAR) && this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.MOVE_END_TASK_BAR, {
|
|
174
|
+
startDate: newRecord[this._gantt.parsedOptions.startDateField],
|
|
175
|
+
endDate: newRecord[this._gantt.parsedOptions.endDateField],
|
|
176
|
+
oldStartDate: oldStartDate,
|
|
177
|
+
oldEndDate: oldEndDate,
|
|
178
|
+
oldRowIndex: oldRowIndex,
|
|
179
|
+
newRowIndex: newRowIndex,
|
|
180
|
+
index: taskIndex,
|
|
181
|
+
record: newRecord
|
|
182
|
+
});
|
|
183
|
+
} else {
|
|
184
|
+
const newRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index), newRowIndex = (0,
|
|
185
|
+
gantt_helper_1.getTaskIndexsByTaskY)(targetEndY, this._gantt).task_index;
|
|
186
|
+
this._gantt.hasListeners(ts_types_1.GANTT_EVENT_TYPE.MOVE_END_TASK_BAR) && this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.MOVE_END_TASK_BAR, {
|
|
187
|
+
startDate: newRecord[this._gantt.parsedOptions.startDateField],
|
|
188
|
+
endDate: newRecord[this._gantt.parsedOptions.endDateField],
|
|
189
|
+
oldStartDate: oldStartDate,
|
|
190
|
+
oldEndDate: oldEndDate,
|
|
191
|
+
oldRowIndex: oldRowIndex,
|
|
192
|
+
newRowIndex: newRowIndex,
|
|
193
|
+
index: newRowIndex,
|
|
194
|
+
record: newRecord
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
if (this._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Arrange || this._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Compact) {
|
|
198
|
+
const indexs = (0, gantt_helper_1.getTaskIndexsByTaskY)(targetEndY, this._gantt);
|
|
199
|
+
this._gantt._dragOrderTaskRecord(target.task_index, target.sub_task_index, indexs.task_index, indexs.sub_task_index),
|
|
200
|
+
(0, gantt_helper_1.clearRecordShowIndex)(this._gantt.records), this._gantt.taskListTableInstance.renderWithRecreateCells(),
|
|
201
|
+
this._gantt._syncPropsFromTable(), this._gantt.scenegraph.refreshTaskBarsAndGrid();
|
|
202
|
+
} else if (this._gantt.parsedOptions.tasksShowMode !== ts_types_1.TasksShowMode.Tasks_Separate && Math.abs(Math.round(deltaY / this._gantt.parsedOptions.rowHeight)) >= 1) {
|
|
203
|
+
const indexs = (0, gantt_helper_1.getTaskIndexsByTaskY)(targetEndY, this._gantt);
|
|
204
|
+
this._gantt._dragOrderTaskRecord(target.task_index, target.sub_task_index, indexs.task_index, indexs.sub_task_index),
|
|
205
|
+
this._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Separate ? (this._gantt.taskListTableInstance.renderWithRecreateCells(),
|
|
206
|
+
this._gantt.scenegraph.refreshTaskBarsAndGrid()) : (this._gantt.scenegraph.taskBar.refresh(),
|
|
207
|
+
this._gantt.scenegraph.dependencyLink.refresh());
|
|
208
|
+
} else {
|
|
209
|
+
let newX = startDateColIndex >= 1 ? this._gantt.getDateColsWidth(0, startDateColIndex - 1) : 0;
|
|
210
|
+
if (target.record.type === ts_types_1.TaskType.MILESTONE) {
|
|
211
|
+
newX -= this._gantt.parsedOptions.taskBarMilestoneStyle.width / 2;
|
|
212
|
+
}
|
|
213
|
+
if (moveTaskBar(target, newX - target.attribute.x, targetEndY - target.attribute.y, this),
|
|
214
|
+
"right" === dateChanged) {
|
|
215
|
+
let insertAfterNode = target;
|
|
216
|
+
for (;insertAfterNode.nextSibling && insertAfterNode.nextSibling.attribute.y === target.attribute.y && insertAfterNode.nextSibling.record[this._gantt.parsedOptions.startDateField] <= target.record[this._gantt.parsedOptions.startDateField]; ) insertAfterNode = insertAfterNode.nextSibling;
|
|
217
|
+
insertAfterNode !== target && insertAfterNode.parent.insertAfter(target, insertAfterNode);
|
|
218
|
+
} else if ("left" === dateChanged) {
|
|
219
|
+
let insertBeforeNode = target;
|
|
220
|
+
for (;insertBeforeNode.previousSibling && insertBeforeNode.previousSibling.attribute.y === target.attribute.y && insertBeforeNode.previousSibling.record[this._gantt.parsedOptions.startDateField] >= target.record[this._gantt.parsedOptions.startDateField]; ) insertBeforeNode = insertBeforeNode.previousSibling;
|
|
221
|
+
insertBeforeNode !== target && insertBeforeNode.parent.insertBefore(target, insertBeforeNode);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
225
|
+
}
|
|
226
|
+
this.moveTaskBar.moving = !1, this.selectedTaskBar.target !== target && target.setAttribute("zIndex", 0),
|
|
227
|
+
target.updateTextPosition(), this.moveTaskBar.target = null, this.moveTaskBar.deltaX = 0,
|
|
228
|
+
this.moveTaskBar.deltaY = 0, this.moveTaskBar.moveTaskBarXSpeed = 0;
|
|
229
|
+
}
|
|
230
|
+
dealTaskBarMove(e) {
|
|
231
|
+
var _a, _b, _c, _d, _e, _f;
|
|
232
|
+
const gantt = this._gantt;
|
|
233
|
+
let target = this.moveTaskBar.target;
|
|
234
|
+
target.setAttribute("zIndex", 1e4);
|
|
235
|
+
const x1 = gantt.eventManager.lastDragPointerXYOnWindow.x, dx = e.x - x1, y1 = gantt.eventManager.lastDragPointerXYOnWindow.y, dy = e.y - y1;
|
|
236
|
+
if (this.moveTaskBar.deltaX += dx, this.moveTaskBar.deltaY += dy, moveTaskBar(target, dx, dy, this),
|
|
237
|
+
target.attribute.x <= gantt.stateManager.scrollLeft && dx < 0) if (gantt.parsedOptions.moveTaskBarToExtendDateRange && 0 === gantt.stateManager.scrollLeft) {
|
|
238
|
+
null === (_a = this.moveTaskBar.moveTaskBarXInertia) || void 0 === _a || _a.endInertia();
|
|
239
|
+
const timeDiff = gantt.parsedOptions.reverseSortedTimelineScales[0].timelineDates[1].startDate.getTime() - gantt.parsedOptions.reverseSortedTimelineScales[0].timelineDates[0].startDate.getTime(), {unit: minTimeUnit, startOfWeek: startOfWeek} = gantt.parsedOptions.reverseSortedTimelineScales[0];
|
|
240
|
+
gantt.parsedOptions.minDate = (0, util_1.getStartDateByTimeUnit)(new Date(gantt.parsedOptions.reverseSortedTimelineScales[0].timelineDates[0].startDate.getTime() - timeDiff / 2), minTimeUnit, startOfWeek),
|
|
241
|
+
gantt.parsedOptions._minDateTime = null === (_b = gantt.parsedOptions.minDate) || void 0 === _b ? void 0 : _b.getTime(),
|
|
242
|
+
gantt._generateTimeLineDateMap(), gantt._updateSize(), gantt.scenegraph.refreshAll(),
|
|
243
|
+
target = this.moveTaskBar.target = gantt.scenegraph.taskBar.getTaskBarNodeByIndex(this.moveTaskBar.target.task_index, this.moveTaskBar.target.sub_task_index),
|
|
244
|
+
gantt.scrollLeft = gantt.parsedOptions.timelineColWidth - 1, gantt.eventManager.lastDragPointerXYOnWindow.x = e.x,
|
|
245
|
+
"milestone" === (null === (_c = target.record) || void 0 === _c ? void 0 : _c.type) ? moveTaskBar(target, gantt.scrollLeft - target.attribute.x, 0, this) : target.setAttribute("x", gantt.scrollLeft);
|
|
246
|
+
} else this.moveTaskBar.moveTaskBarXSpeed = -gantt.parsedOptions.timelineColWidth / 100,
|
|
247
|
+
this.moveTaskBar.moveTaskBarXInertia.startInertia(this.moveTaskBar.moveTaskBarXSpeed, 0, 1),
|
|
248
|
+
this.moveTaskBar.moveTaskBarXInertia.setScrollHandle(((dx, dy) => {
|
|
249
|
+
this.moveTaskBar.deltaX += dx, this.moveTaskBar.deltaY += dy, moveTaskBar(target, dx, dy, this),
|
|
250
|
+
gantt.stateManager.setScrollLeft(target.attribute.x), 0 === gantt.stateManager.scrollLeft && this.moveTaskBar.moveTaskBarXInertia.endInertia();
|
|
251
|
+
})); else if (target.attribute.x + target.attribute.width >= gantt.stateManager.scrollLeft + gantt.tableNoFrameWidth && dx > 0) if (gantt.parsedOptions.moveTaskBarToExtendDateRange && gantt.stateManager.scrollLeft + gantt.tableNoFrameWidth === gantt.getAllDateColsWidth()) {
|
|
252
|
+
null === (_d = this.moveTaskBar.moveTaskBarXInertia) || void 0 === _d || _d.endInertia();
|
|
253
|
+
const timelineDates = gantt.parsedOptions.reverseSortedTimelineScales[0].timelineDates, timeDiff = timelineDates[1].startDate.getTime() - timelineDates[0].startDate.getTime(), {unit: minTimeUnit, startOfWeek: startOfWeek, step: step} = gantt.parsedOptions.reverseSortedTimelineScales[0];
|
|
254
|
+
if (gantt.parsedOptions.maxDate = (0, util_1.getEndDateByTimeUnit)(gantt.parsedOptions.minDate, new Date(timelineDates[timelineDates.length - 1].endDate.getTime() + timeDiff / 2), minTimeUnit, step),
|
|
255
|
+
gantt.parsedOptions._maxDateTime = null === (_e = gantt.parsedOptions.maxDate) || void 0 === _e ? void 0 : _e.getTime(),
|
|
256
|
+
gantt._generateTimeLineDateMap(), gantt._updateSize(), gantt.scenegraph.refreshAll(),
|
|
257
|
+
target = this.moveTaskBar.target = gantt.scenegraph.taskBar.getTaskBarNodeByIndex(this.moveTaskBar.target.task_index, this.moveTaskBar.target.sub_task_index),
|
|
258
|
+
gantt.scrollLeft += 1, gantt.eventManager.lastDragPointerXYOnWindow.x = e.x, "milestone" === (null === (_f = target.record) || void 0 === _f ? void 0 : _f.type)) {
|
|
259
|
+
const newX = gantt.scrollLeft + gantt.tableNoFrameWidth - target.attribute.width;
|
|
260
|
+
moveTaskBar(target, newX - target.attribute.x, 0, this);
|
|
261
|
+
} else target.setAttribute("x", gantt.scrollLeft + gantt.tableNoFrameWidth - target.attribute.width);
|
|
262
|
+
} else this.moveTaskBar.moveTaskBarXSpeed = gantt.parsedOptions.timelineColWidth / 100,
|
|
263
|
+
this.moveTaskBar.moveTaskBarXInertia.startInertia(this.moveTaskBar.moveTaskBarXSpeed, 0, 1),
|
|
264
|
+
this.moveTaskBar.moveTaskBarXInertia.setScrollHandle(((dx, dy) => {
|
|
265
|
+
this.moveTaskBar.deltaX += dx, this.moveTaskBar.deltaY += dy, moveTaskBar(target, dx, dy, this),
|
|
266
|
+
gantt.stateManager.setScrollLeft(target.attribute.x + target.attribute.width - gantt.tableNoFrameWidth),
|
|
267
|
+
gantt.stateManager.scrollLeft === gantt.getAllDateColsWidth() - gantt.tableNoFrameWidth && this.moveTaskBar.moveTaskBarXInertia.endInertia();
|
|
268
|
+
})); else this.moveTaskBar.moveTaskBarXInertia.isInertiaScrolling() ? this.moveTaskBar.moveTaskBarXInertia.endInertia() : this.moveTaskBar.moveTaskBarXSpeed = 0;
|
|
269
|
+
gantt.scenegraph.updateNextFrame();
|
|
270
|
+
}
|
|
271
|
+
startResizeTaskBar(target, x, y, startOffsetY, onIconName) {
|
|
272
|
+
this.resizeTaskBar.onIconName = onIconName, this.resizeTaskBar.resizing = !0, this.resizeTaskBar.target = target,
|
|
273
|
+
this.resizeTaskBar.targetStartX = target.attribute.x, this.resizeTaskBar.targetEndX = target.attribute.x + target.attribute.width,
|
|
274
|
+
this.resizeTaskBar.startX = x, this.resizeTaskBar.startY = y, this.resizeTaskBar.startOffsetY = startOffsetY;
|
|
275
|
+
}
|
|
276
|
+
isResizingTaskBar() {
|
|
277
|
+
return this.resizeTaskBar.resizing;
|
|
278
|
+
}
|
|
279
|
+
endResizeTaskBar(x) {
|
|
280
|
+
const direction = this._gantt.stateManager.resizeTaskBar.onIconName, deltaX = x - this.resizeTaskBar.startX;
|
|
281
|
+
if (Math.abs(deltaX) >= 1) {
|
|
282
|
+
const colIndex = (0, gantt_helper_1.getDateIndexByX)(("left" === direction ? this.resizeTaskBar.target.attribute.x : this.resizeTaskBar.target.attribute.x + this.resizeTaskBar.target.attribute.width) - this._gantt.stateManager.scroll.horizontalBarPos, this._gantt), timelineDate = this._gantt.parsedOptions.reverseSortedTimelineScales[0].timelineDates[colIndex];
|
|
283
|
+
if (!timelineDate) return;
|
|
284
|
+
const targetDate = "left" === direction ? timelineDate.startDate : timelineDate.endDate, taskBarGroup = this.resizeTaskBar.target, clipGroupBox = taskBarGroup.clipGroupBox, rect = taskBarGroup.barRect, progressRect = taskBarGroup.progressRect, textLabel = taskBarGroup.textLabel, taskIndex = taskBarGroup.task_index, sub_task_index = taskBarGroup.sub_task_index, {taskDays: taskDays, progress: progress, startDate: oldStartDate, endDate: oldEndDate} = this._gantt.getTaskInfoByTaskListIndex(taskIndex, sub_task_index);
|
|
285
|
+
let dateChanged = !1;
|
|
286
|
+
if ("left" === direction ? (this._gantt._updateStartDateToTaskRecord(targetDate, taskIndex, sub_task_index),
|
|
287
|
+
targetDate.getTime() !== new Date(oldStartDate).getTime() && (dateChanged = !0)) : (this._gantt._updateEndDateToTaskRecord(targetDate, taskIndex, sub_task_index),
|
|
288
|
+
targetDate.getTime() !== new Date(oldEndDate).getTime() && (dateChanged = !0)),
|
|
289
|
+
this._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Arrange || this._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Compact) this._gantt.taskListTableInstance.renderWithRecreateCells(),
|
|
290
|
+
this._gantt._syncPropsFromTable(), this._gantt.scenegraph.refreshTaskBarsAndGrid(); else {
|
|
291
|
+
if ("left" === direction) {
|
|
292
|
+
const newX = colIndex >= 1 ? this._gantt.getDateColsWidth(0, colIndex - 1) : 0;
|
|
293
|
+
taskBarGroup.setAttribute("x", newX), taskBarGroup.setAttribute("width", this.resizeTaskBar.targetEndX - newX);
|
|
294
|
+
} else if ("right" === direction) {
|
|
295
|
+
const newEndX = this._gantt.getDateColsWidth(0, colIndex);
|
|
296
|
+
taskBarGroup.setAttribute("width", newEndX - this.resizeTaskBar.targetStartX);
|
|
297
|
+
}
|
|
298
|
+
if (clipGroupBox.setAttribute("width", taskBarGroup.attribute.width), null == rect || rect.setAttribute("width", taskBarGroup.attribute.width),
|
|
299
|
+
null == progressRect || progressRect.setAttribute("width", progress / 100 * taskBarGroup.attribute.width),
|
|
300
|
+
textLabel) {
|
|
301
|
+
const {textAlign: textAlign, textBaseline: textBaseline, padding: padding} = this._gantt.parsedOptions.taskBarLabelStyle, position = (0,
|
|
302
|
+
gantt_helper_1.getTextPos)((0, util_1.toBoxArray)(padding), textAlign, textBaseline, taskBarGroup.attribute.width, taskBarGroup.attribute.height);
|
|
303
|
+
textLabel.setAttribute("maxLineWidth", taskBarGroup.attribute.width - 2 * task_bar_1.TASKBAR_HOVER_ICON_WIDTH),
|
|
304
|
+
textLabel.setAttribute("x", position.x);
|
|
305
|
+
}
|
|
306
|
+
this._gantt.scenegraph.refreshRecordLinkNodes(taskIndex, sub_task_index, taskBarGroup, 0),
|
|
307
|
+
this.showTaskBarHover(), reCreateCustomNode(this._gantt, taskBarGroup, taskIndex, sub_task_index),
|
|
308
|
+
taskBarGroup.setAttribute("zIndex", 0);
|
|
309
|
+
}
|
|
310
|
+
if (taskBarGroup.updateTextPosition(), this.resizeTaskBar.resizing = !1, this.resizeTaskBar.target = null,
|
|
311
|
+
dateChanged && this._gantt.hasListeners(ts_types_1.GANTT_EVENT_TYPE.CHANGE_DATE_RANGE)) {
|
|
312
|
+
const newRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);
|
|
313
|
+
this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.CHANGE_DATE_RANGE, {
|
|
314
|
+
startDate: newRecord[this._gantt.parsedOptions.startDateField],
|
|
315
|
+
endDate: newRecord[this._gantt.parsedOptions.endDateField],
|
|
316
|
+
oldStartDate: oldStartDate,
|
|
317
|
+
oldEndDate: oldEndDate,
|
|
318
|
+
index: taskIndex,
|
|
319
|
+
record: newRecord
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
dealTaskBarResize(e) {
|
|
326
|
+
const x1 = this._gantt.eventManager.lastDragPointerXYOnWindow.x, dx = e.x - x1, taskBarGroup = this._gantt.stateManager.resizeTaskBar.target;
|
|
327
|
+
let diffWidth = "left" === this._gantt.stateManager.resizeTaskBar.onIconName ? -dx : dx;
|
|
328
|
+
const taskBarSize = Math.max(1, taskBarGroup.attribute.width + diffWidth);
|
|
329
|
+
diffWidth = taskBarSize - taskBarGroup.attribute.width, resizeTaskBar(taskBarGroup, "left" === this._gantt.stateManager.resizeTaskBar.onIconName ? -diffWidth : 0, taskBarSize, this),
|
|
330
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
331
|
+
}
|
|
332
|
+
startAdjustProgressBar(target, x, y) {
|
|
333
|
+
if (!target || !target.record) return;
|
|
334
|
+
const progressField = this._gantt.parsedOptions.progressField;
|
|
335
|
+
if (!progressField || void 0 === target.record[progressField] || null === target.record[progressField]) return;
|
|
336
|
+
const {progress: progress} = this._gantt.getTaskInfoByTaskListIndex(target.task_index, target.sub_task_index);
|
|
337
|
+
this.adjustProgressBar.target = target, this.adjustProgressBar.adjusting = !0, this.adjustProgressBar.startX = x,
|
|
338
|
+
this.adjustProgressBar.startY = y, this.adjustProgressBar.originalProgress = progress;
|
|
339
|
+
}
|
|
340
|
+
isAdjustingProgressBar() {
|
|
341
|
+
return this.adjustProgressBar.adjusting;
|
|
342
|
+
}
|
|
343
|
+
endAdjustProgressBar(x) {
|
|
344
|
+
const target = this.adjustProgressBar.target;
|
|
345
|
+
if (!target) return;
|
|
346
|
+
const taskBarWidth = target.attribute.width, deltaX = x - this.adjustProgressBar.startX, newProgress = Math.max(0, Math.min(100, this.adjustProgressBar.originalProgress + deltaX / taskBarWidth * 100));
|
|
347
|
+
if (Math.abs(newProgress - this.adjustProgressBar.originalProgress) >= .1) {
|
|
348
|
+
const taskIndex = target.task_index, subTaskIndex = target.sub_task_index, progressField = this._gantt.parsedOptions.progressField;
|
|
349
|
+
progressField && target.record && (target.record[progressField] = Math.round(10 * newProgress) / 10),
|
|
350
|
+
this.shouldSyncProgressToTable(taskIndex, subTaskIndex) && this._gantt._updateProgressToTaskRecord(Math.round(10 * newProgress) / 10, taskIndex, subTaskIndex),
|
|
351
|
+
this._gantt.scenegraph.taskBar.updateTaskBarNode(taskIndex, subTaskIndex);
|
|
352
|
+
const newRecord = this._gantt.getRecordByIndex(taskIndex, subTaskIndex);
|
|
353
|
+
this._gantt.hasListeners(ts_types_1.GANTT_EVENT_TYPE.PROGRESS_UPDATE) && this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.PROGRESS_UPDATE, {
|
|
354
|
+
federatedEvent: null,
|
|
355
|
+
event: null,
|
|
356
|
+
index: taskIndex,
|
|
357
|
+
sub_task_index: subTaskIndex,
|
|
358
|
+
progress: Math.round(10 * newProgress) / 10,
|
|
359
|
+
oldProgress: Math.round(10 * this.adjustProgressBar.originalProgress) / 10,
|
|
360
|
+
record: newRecord
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
this.adjustProgressBar.adjusting = !1, this.adjustProgressBar.target = null, this.adjustProgressBar.startX = null,
|
|
364
|
+
this.adjustProgressBar.startY = null, this.adjustProgressBar.originalProgress = 0;
|
|
365
|
+
}
|
|
366
|
+
shouldSyncProgressToTable(taskIndex, subTaskIndex) {
|
|
367
|
+
const tasksShowMode = this._gantt.parsedOptions.tasksShowMode;
|
|
368
|
+
if (tasksShowMode === ts_types_1.TasksShowMode.Tasks_Separate) return !0;
|
|
369
|
+
if (!(0, vutils_1.isValid)(subTaskIndex)) return !0;
|
|
370
|
+
switch (tasksShowMode) {
|
|
371
|
+
case ts_types_1.TasksShowMode.Sub_Tasks_Inline:
|
|
372
|
+
case ts_types_1.TasksShowMode.Sub_Tasks_Arrange:
|
|
373
|
+
case ts_types_1.TasksShowMode.Sub_Tasks_Compact:
|
|
374
|
+
return !1;
|
|
375
|
+
|
|
376
|
+
case ts_types_1.TasksShowMode.Sub_Tasks_Separate:
|
|
377
|
+
return !0;
|
|
378
|
+
|
|
379
|
+
case ts_types_1.TasksShowMode.Project_Sub_Tasks_Inline:
|
|
380
|
+
const parentRecord = this._gantt.getRecordByIndex(taskIndex);
|
|
381
|
+
return !(!parentRecord || parentRecord.type !== ts_types_1.TaskType.PROJECT) && "expand" === parentRecord.hierarchyState;
|
|
382
|
+
|
|
383
|
+
default:
|
|
384
|
+
return !1;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
dealAdjustProgressBar(e) {
|
|
388
|
+
const target = this.adjustProgressBar.target;
|
|
389
|
+
if (!target || !this.adjustProgressBar.adjusting) return;
|
|
390
|
+
const taskBarWidth = target.attribute.width;
|
|
391
|
+
if (!taskBarWidth || taskBarWidth <= 0) return;
|
|
392
|
+
const deltaX = e.x - this.adjustProgressBar.startX, newProgress = Math.max(0, Math.min(100, this.adjustProgressBar.originalProgress + deltaX / taskBarWidth * 100));
|
|
393
|
+
if (target.progressRect && target.progressRect.setAttribute("width", taskBarWidth * newProgress / 100),
|
|
394
|
+
this._gantt.scenegraph.taskBar.hoverBarProgressHandle && this._gantt.scenegraph.taskBar.hoverBarProgressHandle.attribute.visibleAll && this._gantt.scenegraph.taskBar.hoverBarProgressHandle.setAttribute("x", taskBarWidth * newProgress / 100 - 6),
|
|
395
|
+
target.textLabel && target.record && this._gantt.parsedOptions.taskBarLabelText) {
|
|
396
|
+
const progressField = this._gantt.parsedOptions.progressField, tempRecord = Object.assign(Object.assign({}, target.record), {
|
|
397
|
+
[progressField]: Math.round(10 * newProgress) / 10
|
|
398
|
+
}), newText = (0, util_1.parseStringTemplate)(this._gantt.parsedOptions.taskBarLabelText, tempRecord);
|
|
399
|
+
target.textLabel.setAttribute("text", newText);
|
|
400
|
+
}
|
|
401
|
+
this._gantt.scenegraph && this._gantt.scenegraph.stage && this._gantt.scenegraph.stage.renderNextFrame();
|
|
402
|
+
}
|
|
403
|
+
startCreateDependencyLine(target, x, y, startOffsetY, position) {
|
|
404
|
+
this.resizeTaskBar.resizing = !1, this.creatingDenpendencyLink.creating = !0, this.creatingDenpendencyLink.startClickedPoint = target,
|
|
405
|
+
this.creatingDenpendencyLink.startX = x, this.creatingDenpendencyLink.startY = y,
|
|
406
|
+
this.creatingDenpendencyLink.startOffsetY = startOffsetY, this.creatingDenpendencyLink.firstTaskBarPosition = position,
|
|
407
|
+
this.highlightLinkPointNode(target);
|
|
408
|
+
}
|
|
409
|
+
isCreatingDependencyLine() {
|
|
410
|
+
return this.creatingDenpendencyLink.creating;
|
|
411
|
+
}
|
|
412
|
+
endCreateDependencyLine(offsetY) {
|
|
413
|
+
const taskKeyField = this._gantt.parsedOptions.taskKeyField, fromTaskIndex = this.selectedTaskBar.target.task_index, from_sub_task_id = this.selectedTaskBar.target.sub_task_index, toTaskIndex = this.creatingDenpendencyLink.secondTaskBarNode.task_index, to_sub_task_id = this.creatingDenpendencyLink.secondTaskBarNode.sub_task_index, link = {
|
|
414
|
+
linkedFromTaskKey: this._gantt.getRecordByIndex(fromTaskIndex, from_sub_task_id)[taskKeyField],
|
|
415
|
+
linkedToTaskKey: this._gantt.getRecordByIndex(toTaskIndex, to_sub_task_id)[taskKeyField],
|
|
416
|
+
type: "left" === this.creatingDenpendencyLink.firstTaskBarPosition && "left" === this.creatingDenpendencyLink.secondTaskBarPosition ? ts_types_1.DependencyType.StartToStart : "right" === this.creatingDenpendencyLink.firstTaskBarPosition && "left" === this.creatingDenpendencyLink.secondTaskBarPosition ? ts_types_1.DependencyType.FinishToStart : "right" === this.creatingDenpendencyLink.firstTaskBarPosition && "right" === this.creatingDenpendencyLink.secondTaskBarPosition ? ts_types_1.DependencyType.FinishToFinish : ts_types_1.DependencyType.StartToFinish
|
|
417
|
+
};
|
|
418
|
+
return this._gantt.addLink(link), this.hideTaskBarSelectedBorder(), this._gantt.scenegraph.updateNextFrame(),
|
|
419
|
+
this.creatingDenpendencyLink.creating = !1, link;
|
|
420
|
+
}
|
|
421
|
+
dealCreateDependencyLine(e) {
|
|
422
|
+
const x1 = this.creatingDenpendencyLink.startX, y1 = this.creatingDenpendencyLink.startY, dx = e.x - x1, dy = e.y - y1, startClickedPoint = this.creatingDenpendencyLink.startClickedPoint, x = startClickedPoint.attribute.x + startClickedPoint.attribute.width / 2, y = startClickedPoint.attribute.y + startClickedPoint.attribute.height / 2;
|
|
423
|
+
this._gantt.scenegraph.taskBar.updateCreatingDependencyLine(x, y, x + dx, y + dy),
|
|
424
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
425
|
+
}
|
|
426
|
+
startResizeTableWidth(e) {
|
|
427
|
+
this.resizeTableWidth.resizing = !0, this.resizeTableWidth.lastX = e.pageX;
|
|
428
|
+
}
|
|
429
|
+
isResizingTableWidth() {
|
|
430
|
+
return this.resizeTableWidth.resizing;
|
|
431
|
+
}
|
|
432
|
+
endResizeTableWidth() {
|
|
433
|
+
this.resizeTableWidth.resizing = !1, this._gantt.zoomScaleManager && this._gantt.zoomScaleManager.handleTableWidthChange();
|
|
434
|
+
}
|
|
435
|
+
dealResizeTableWidth(e) {
|
|
436
|
+
var _a, _b;
|
|
437
|
+
if (!this.resizeTableWidth.resizing) return;
|
|
438
|
+
const deltaX = e.pageX - this.resizeTableWidth.lastX;
|
|
439
|
+
if (Math.abs(deltaX) >= 1) {
|
|
440
|
+
let width = this._gantt.taskTableWidth + deltaX;
|
|
441
|
+
const maxWidth = Math.min(this._gantt.taskListTableInstance.getAllColsWidth() + this._gantt.parsedOptions.outerFrameStyle.borderLineWidth, null !== (_a = this._gantt.options.taskListTable.maxTableWidth) && void 0 !== _a ? _a : 1e5), minWidth = Math.max(this._gantt.parsedOptions.outerFrameStyle.borderLineWidth, null !== (_b = this._gantt.options.taskListTable.minTableWidth) && void 0 !== _b ? _b : 0);
|
|
442
|
+
deltaX > 0 && width > maxWidth && (width = maxWidth), deltaX < 0 && width < minWidth && (width = minWidth),
|
|
443
|
+
this._gantt.taskTableWidth = width, this._gantt.element.style.left = this._gantt.taskTableWidth ? `${this._gantt.taskTableWidth}px` : "0px",
|
|
444
|
+
this._gantt.verticalSplitResizeLine.style.left = this._gantt.taskTableWidth ? this._gantt.taskTableWidth - 7 + "px" : "0px",
|
|
445
|
+
this._gantt._resize(), this.resizeTableWidth.lastX = e.pageX, this._gantt.zoomScaleManager && !this.resizeTableWidth.updateTimeout && (this.resizeTableWidth.updateTimeout = setTimeout((() => {
|
|
446
|
+
this._gantt.zoomScaleManager && this._gantt.zoomScaleManager.handleTableWidthChange(),
|
|
447
|
+
this.resizeTableWidth.updateTimeout = null;
|
|
448
|
+
}), 50));
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
showTaskBarHover() {
|
|
452
|
+
const target = this._gantt.stateManager.hoverTaskBar.target;
|
|
453
|
+
if (target) {
|
|
454
|
+
const x = target.attribute.x, y = target.attribute.y, width = target.attribute.width, height = target.attribute.height;
|
|
455
|
+
this._gantt.scenegraph.taskBar.showHoverBar(x, y, width, height, target), this._gantt.scenegraph.updateNextFrame();
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
hideTaskBarHover(e) {
|
|
459
|
+
this._gantt.stateManager.hoverTaskBar.target = null, this._gantt.scenegraph.taskBar.hideHoverBar(),
|
|
460
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
461
|
+
}
|
|
462
|
+
showTaskBarSelectedBorder(target) {
|
|
463
|
+
var _a;
|
|
464
|
+
null === (_a = this._gantt.stateManager.selectedTaskBar.target) || void 0 === _a || _a.setAttribute("zIndex", 0),
|
|
465
|
+
this._gantt.stateManager.selectedTaskBar.target = target;
|
|
466
|
+
const linkCreatable = this._gantt.parsedOptions.dependencyLinkCreatable;
|
|
467
|
+
target.setAttribute("zIndex", 1e4);
|
|
468
|
+
const x = target.attribute.x, y = target.attribute.y, width = target.attribute.width, height = target.attribute.height;
|
|
469
|
+
this._gantt.scenegraph.taskBar.createSelectedBorder(x, y, width, height, target, linkCreatable),
|
|
470
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
471
|
+
}
|
|
472
|
+
hideTaskBarSelectedBorder() {
|
|
473
|
+
var _a;
|
|
474
|
+
null === (_a = this._gantt.stateManager.selectedTaskBar.target) || void 0 === _a || _a.setAttribute("zIndex", 0),
|
|
475
|
+
this._gantt.stateManager.selectedTaskBar.target = null, this._gantt.scenegraph.taskBar.removeSelectedBorder(),
|
|
476
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
477
|
+
}
|
|
478
|
+
showSecondTaskBarSelectedBorder() {
|
|
479
|
+
const target = this._gantt.stateManager.creatingDenpendencyLink.secondTaskBarNode, x = target.attribute.x, y = target.attribute.y, width = target.attribute.width, height = target.attribute.height;
|
|
480
|
+
this._gantt.scenegraph.taskBar.createSelectedBorder(x, y, width, height, target, !0),
|
|
481
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
482
|
+
}
|
|
483
|
+
hideSecondTaskBarSelectedBorder() {
|
|
484
|
+
this._gantt.stateManager.creatingDenpendencyLink.secondTaskBarNode = null, this._gantt.scenegraph.taskBar.removeSecondSelectedBorder(),
|
|
485
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
486
|
+
}
|
|
487
|
+
showDependencyLinkSelectedLine() {
|
|
488
|
+
const link = this._gantt.stateManager.selectedDenpendencyLink.link;
|
|
489
|
+
this._gantt.scenegraph.dependencyLink.createSelectedLinkLine(link);
|
|
490
|
+
const {taskKeyField: taskKeyField, dependencyLinks: dependencyLinks} = this._gantt.parsedOptions, {linkedToTaskKey: linkedToTaskKey, linkedFromTaskKey: linkedFromTaskKey, type: type} = link;
|
|
491
|
+
let linkFrom_index, linkFrom_sub_task_index, linkTo_index, linkTo_sub_task_index;
|
|
492
|
+
const linkedToTaskRecord = (0, gantt_helper_1.findRecordByTaskKey)(this._gantt.records, taskKeyField, linkedToTaskKey), linkedFromTaskRecord = (0,
|
|
493
|
+
gantt_helper_1.findRecordByTaskKey)(this._gantt.records, taskKeyField, linkedFromTaskKey);
|
|
494
|
+
this._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Inline || this._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Separate || this._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Arrange || this._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Compact ? (linkFrom_index = linkedFromTaskRecord.index[0],
|
|
495
|
+
linkFrom_sub_task_index = linkedFromTaskRecord.index[1], linkTo_index = linkedToTaskRecord.index[0],
|
|
496
|
+
linkTo_sub_task_index = linkedToTaskRecord.index[1]) : (linkFrom_index = this._gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index),
|
|
497
|
+
linkTo_index = this._gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index));
|
|
498
|
+
const fromTaskNode = this._gantt.scenegraph.taskBar.getTaskBarNodeByIndex(linkFrom_index, linkFrom_sub_task_index);
|
|
499
|
+
this._gantt.scenegraph.taskBar.createSelectedBorder(fromTaskNode.attribute.x, fromTaskNode.attribute.y, fromTaskNode.attribute.width, fromTaskNode.attribute.height, fromTaskNode, !1);
|
|
500
|
+
const toTaskNode = this._gantt.scenegraph.taskBar.getTaskBarNodeByIndex(linkTo_index, linkTo_sub_task_index);
|
|
501
|
+
this._gantt.scenegraph.taskBar.createSelectedBorder(toTaskNode.attribute.x, toTaskNode.attribute.y, toTaskNode.attribute.width, toTaskNode.attribute.height, toTaskNode, !1),
|
|
502
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
503
|
+
}
|
|
504
|
+
hideDependencyLinkSelectedLine() {
|
|
505
|
+
this._gantt.stateManager.selectedDenpendencyLink.link = null, this._gantt.scenegraph.dependencyLink.removeSelectedLinkLine(),
|
|
506
|
+
this._gantt.scenegraph.taskBar.removeSelectedBorder(), this._gantt.scenegraph.updateNextFrame();
|
|
507
|
+
}
|
|
508
|
+
highlightLinkPointNode(linkPointGroup) {
|
|
509
|
+
if ((null == linkPointGroup ? void 0 : linkPointGroup.children.length) > 0) {
|
|
510
|
+
const circle = linkPointGroup.children[0];
|
|
511
|
+
circle.setAttribute("fill", this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.fillColor),
|
|
512
|
+
circle.setAttribute("stroke", this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.strokeColor),
|
|
513
|
+
circle.setAttribute("radius", this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.radius),
|
|
514
|
+
circle.setAttribute("lineWidth", this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.strokeWidth),
|
|
515
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
unhighlightLinkPointNode(linkPointGroup) {
|
|
519
|
+
if ((null == linkPointGroup ? void 0 : linkPointGroup.children.length) > 0) {
|
|
520
|
+
const circle = linkPointGroup.children[0];
|
|
521
|
+
circle.setAttribute("fill", this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.fillColor),
|
|
522
|
+
circle.setAttribute("stroke", this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeColor),
|
|
523
|
+
circle.setAttribute("radius", this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.radius),
|
|
524
|
+
circle.setAttribute("lineWidth", this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeWidth),
|
|
525
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
showMarklineIconHover() {
|
|
529
|
+
var _a, _b;
|
|
530
|
+
const target = this._gantt.stateManager.marklineIcon.target;
|
|
531
|
+
if (target) {
|
|
532
|
+
const marklineGroup = this._gantt.scenegraph.timelineHeader.showMarklineIcon(target.parent);
|
|
533
|
+
marklineGroup && (null === (_b = null === (_a = this._gantt.parsedOptions.markLineCreateOptions) || void 0 === _a ? void 0 : _a.markLineCreationHoverToolTip) || void 0 === _b ? void 0 : _b.tipContent) && this._gantt.scenegraph.showToolTip(marklineGroup),
|
|
534
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
hideMarklineIconHover() {
|
|
538
|
+
this._gantt.scenegraph.timelineHeader.hideMarklineIconHover(this._gantt.stateManager.marklineIcon.target.parent),
|
|
539
|
+
this._gantt.scenegraph.hideToolTip(), this._gantt.stateManager.marklineIcon.target = null,
|
|
540
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
541
|
+
}
|
|
542
|
+
updateProjectTaskTimes(taskPath) {
|
|
543
|
+
var _a, _b;
|
|
544
|
+
if (!taskPath || 0 === taskPath.length || !this._gantt || !this._gantt.records) return;
|
|
545
|
+
const startDateField = this._gantt.parsedOptions.startDateField, endDateField = this._gantt.parsedOptions.endDateField, pathCopy = [ ...taskPath ];
|
|
546
|
+
for (;pathCopy.length > 0; ) {
|
|
547
|
+
const parentPath = [ ...pathCopy ], childIndex = parentPath.pop();
|
|
548
|
+
let parentRecord = this._gantt.records;
|
|
549
|
+
const currentPath = [];
|
|
550
|
+
for (const index of parentPath) {
|
|
551
|
+
if (currentPath.push(index), !parentRecord[index] || !parentRecord[index].children) return;
|
|
552
|
+
parentRecord = parentRecord[index].children;
|
|
553
|
+
}
|
|
554
|
+
const parent = 0 === parentPath.length ? this._gantt.records[childIndex] : parentRecord[childIndex];
|
|
555
|
+
if (parent && parent.type === ts_types_1.TaskType.PROJECT && parent.children && parent.children.length > 0) {
|
|
556
|
+
let earliestStart = null, latestEnd = null;
|
|
557
|
+
for (const child of parent.children) if (child[startDateField] && child[endDateField]) {
|
|
558
|
+
const childStartDate = new Date(child[startDateField]), childEndDate = new Date(child[endDateField]);
|
|
559
|
+
(!earliestStart || childStartDate < earliestStart) && (earliestStart = childStartDate),
|
|
560
|
+
(!latestEnd || childEndDate > latestEnd) && (latestEnd = childEndDate);
|
|
561
|
+
}
|
|
562
|
+
if (earliestStart && latestEnd) {
|
|
563
|
+
const currentStartDate = parent[startDateField] ? new Date(parent[startDateField]) : null, currentEndDate = parent[endDateField] ? new Date(parent[endDateField]) : null;
|
|
564
|
+
if (!currentStartDate || !currentEndDate || earliestStart.getTime() !== currentStartDate.getTime() || latestEnd.getTime() !== currentEndDate.getTime()) {
|
|
565
|
+
const dateFormat = null !== (_a = this._gantt.parsedOptions.dateFormat) && void 0 !== _a ? _a : this._gantt.parseTimeFormat(parent[startDateField] || parent.children[0][startDateField]), formatDateValue = date => this._gantt.formatDate ? this._gantt.formatDate(date, dateFormat) : date.toISOString().split("T")[0];
|
|
566
|
+
parent[startDateField] = formatDateValue(earliestStart), parent[endDateField] = formatDateValue(latestEnd);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
pathCopy.pop();
|
|
571
|
+
}
|
|
572
|
+
null === (_b = this._gantt.scenegraph) || void 0 === _b || _b.refreshAll();
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
function reCreateCustomNode(gantt, taskBarGroup, taskIndex, sub_task_index) {
|
|
577
|
+
const taskBarCustomLayout = gantt.parsedOptions.taskBarCustomLayout;
|
|
578
|
+
if (taskBarCustomLayout) {
|
|
579
|
+
let customLayoutObj;
|
|
580
|
+
if ("function" == typeof taskBarCustomLayout) {
|
|
581
|
+
const {startDate: startDate, endDate: endDate, taskDays: taskDays, progress: progress, taskRecord: taskRecord} = gantt.getTaskInfoByTaskListIndex(taskIndex, sub_task_index);
|
|
582
|
+
customLayoutObj = taskBarCustomLayout({
|
|
583
|
+
width: taskBarGroup.attribute.width,
|
|
584
|
+
height: taskBarGroup.attribute.height,
|
|
585
|
+
index: taskIndex,
|
|
586
|
+
startDate: startDate,
|
|
587
|
+
endDate: endDate,
|
|
588
|
+
taskDays: taskDays,
|
|
589
|
+
progress: progress,
|
|
590
|
+
taskRecord: taskRecord,
|
|
591
|
+
ganttInstance: gantt
|
|
592
|
+
});
|
|
593
|
+
} else customLayoutObj = taskBarCustomLayout;
|
|
594
|
+
if (customLayoutObj) {
|
|
595
|
+
const rootContainer = customLayoutObj.rootContainer;
|
|
596
|
+
rootContainer.name = "task-bar-custom-render";
|
|
597
|
+
const barGroup = taskBarGroup.children.find((node => "task-bar-group" === node.name));
|
|
598
|
+
if (barGroup) {
|
|
599
|
+
const oldCustomIndex = barGroup.children.findIndex((node => "task-bar-custom-render" === node.name)), oldCustomNode = barGroup.children[oldCustomIndex];
|
|
600
|
+
oldCustomNode && (barGroup.removeChild(oldCustomNode), barGroup.insertInto(rootContainer, oldCustomIndex));
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
function moveTaskBar(target, dx, dy, state) {
|
|
607
|
+
const taskIndex = target.task_index, sub_task_index = target.sub_task_index, isMilestone = target.record.type === ts_types_1.TaskType.MILESTONE, oldX = target.attribute.x, oldY = target.attribute.y;
|
|
608
|
+
if (dx && target.setAttribute("x", Math.max(0, target.attribute.x + dx)), state._gantt.parsedOptions.tasksShowMode !== ts_types_1.TasksShowMode.Tasks_Separate && state._gantt.parsedOptions.tasksShowMode !== ts_types_1.TasksShowMode.Project_Sub_Tasks_Inline ? dy && target.setAttribute("y", target.attribute.y + dy) : dy = 0,
|
|
609
|
+
isMilestone && (target.setAttribute("anchor", [ target.attribute.x + target.attribute.width / 2, target.attribute.y + target.attribute.height / 2 ]),
|
|
610
|
+
target.milestoneTextContainer)) {
|
|
611
|
+
const deltaX = target.attribute.x - oldX, deltaY = target.attribute.y - oldY, currentX = target.milestoneTextContainer.attribute.x, currentY = target.milestoneTextContainer.attribute.y;
|
|
612
|
+
target.milestoneTextContainer.setAttribute("x", currentX + deltaX), target.milestoneTextContainer.setAttribute("y", currentY + deltaY);
|
|
613
|
+
}
|
|
614
|
+
target.updateTextPosition(), state._gantt.scenegraph.refreshRecordLinkNodes(taskIndex, sub_task_index, target, dy);
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
function resizeTaskBar(target, dx, newWidth, state) {
|
|
618
|
+
const progressField = state._gantt.parsedOptions.progressField, clipGroupBox = target.clipGroupBox, rect = target.barRect, progressRect = target.progressRect, textLabel = target.textLabel, taskIndex = target.task_index, sub_task_index = target.sub_task_index, record = target.record, progress = record[progressField], isMilestone = record.type === ts_types_1.TaskType.MILESTONE;
|
|
619
|
+
if (target.setAttribute("zIndex", 1e4), dx && target.setAttribute("x", target.attribute.x + dx),
|
|
620
|
+
isMilestone && target.setAttribute("anchor", [ target.attribute.x + target.attribute.width / 2, target.attribute.y + target.attribute.height / 2 ]),
|
|
621
|
+
newWidth && target.setAttribute("width", newWidth), clipGroupBox.setAttribute("width", target.attribute.width),
|
|
622
|
+
null == rect || rect.setAttribute("width", target.attribute.width), null == progressRect || progressRect.setAttribute("width", progress / 100 * target.attribute.width),
|
|
623
|
+
textLabel) {
|
|
624
|
+
const {textAlign: textAlign, textBaseline: textBaseline, padding: padding} = state._gantt.parsedOptions.taskBarLabelStyle, position = (0,
|
|
625
|
+
gantt_helper_1.getTextPos)((0, util_1.toBoxArray)(padding), textAlign, textBaseline, newWidth, target.attribute.height);
|
|
626
|
+
textLabel.setAttribute("maxLineWidth", newWidth - 2 * task_bar_1.TASKBAR_HOVER_ICON_WIDTH),
|
|
627
|
+
textLabel.setAttribute("x", position.x);
|
|
628
|
+
}
|
|
629
|
+
target.updateTextPosition(), state.showTaskBarHover(), reCreateCustomNode(state._gantt, target, taskIndex, sub_task_index),
|
|
630
|
+
state._gantt.scenegraph.refreshRecordLinkNodes(taskIndex, sub_task_index, target, 0);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
//# sourceMappingURL=state-manager.js.map
|
|
634
|
+
exports.StateManager = StateManager;
|