@visactor/vtable-gantt 1.12.1-alpha.1 → 1.13.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/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/scenegraph/task-bar.js +1 -1
- package/cjs/scenegraph/task-bar.js.map +1 -1
- package/cjs/state/state-manager.js +5 -2
- package/cjs/state/state-manager.js.map +1 -1
- package/dist/vtable-gantt.js +7028 -5284
- package/dist/vtable-gantt.min.js +2 -2
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/scenegraph/task-bar.js +1 -1
- package/es/scenegraph/task-bar.js.map +1 -1
- package/es/state/state-manager.js +5 -2
- package/es/state/state-manager.js.map +1 -1
- package/package.json +6 -6
package/cjs/index.d.ts
CHANGED
|
@@ -5,5 +5,5 @@ import { Gantt } from './Gantt';
|
|
|
5
5
|
import * as tools from './tools';
|
|
6
6
|
import * as VRender from './vrender';
|
|
7
7
|
import * as VTable from './vtable';
|
|
8
|
-
export declare const version = "1.
|
|
8
|
+
export declare const version = "1.13.0";
|
|
9
9
|
export { TYPES, GanttConstructorOptions, Gantt, ColumnsDefine, ColumnDefine, LinkColumnDefine, ChartColumnDefine, ImageColumnDefine, SparklineColumnDefine, ProgressbarColumnDefine, TextColumnDefine, GroupColumnDefine, TextAlignType, TextBaselineType, tools, VRender, VTable };
|
package/cjs/index.js
CHANGED
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAoC;AAuBlC,sBAAK;AATP,mCAAgC;AAW9B,sFAXO,aAAK,OAWP;AAVP,+CAAiC;AAsB/B,sBAAK;AArBP,mDAAqC;AAsBnC,0BAAO;AArBT,iDAAmC;AAsBjC,wBAAM;AArBK,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAoC;AAuBlC,sBAAK;AATP,mCAAgC;AAW9B,sFAXO,aAAK,OAWP;AAVP,+CAAiC;AAsB/B,sBAAK;AArBP,mDAAqC;AAsBnC,0BAAO;AArBT,iDAAmC;AAsBjC,wBAAM;AArBK,QAAA,OAAO,GAAG,QAAQ,CAAC","file":"index.js","sourcesContent":["import type { GanttConstructorOptions } from './ts-types';\nimport * as TYPES from './ts-types';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType\n} from '@visactor/vtable';\nimport { Gantt } from './Gantt';\nimport * as tools from './tools';\nimport * as VRender from './vrender';\nimport * as VTable from './vtable';\nexport const version = \"1.13.0\";\n/**\n * @namespace VTable\n */\nexport {\n TYPES,\n GanttConstructorOptions,\n Gantt,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n tools,\n VRender,\n VTable\n};\n"]}
|
|
@@ -69,7 +69,7 @@ class TaskBar {
|
|
|
69
69
|
clip: !0
|
|
70
70
|
});
|
|
71
71
|
let rootContainer;
|
|
72
|
-
barGroupBox.appendChild(barGroup), barGroupBox.clipGroupBox = barGroup;
|
|
72
|
+
barGroup.name = "task-bar-group", barGroupBox.appendChild(barGroup), barGroupBox.clipGroupBox = barGroup;
|
|
73
73
|
let renderDefaultBar = !0, renderDefaultText = !0;
|
|
74
74
|
if (taskBarCustomLayout) {
|
|
75
75
|
let customLayoutObj;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/task-bar.ts"],"names":[],"mappings":"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","file":"task-bar.js","sourcesContent":["import { Group, createText, createRect, Image, Circle, Line, Rect } from '@visactor/vtable/es/vrender';\nimport type { Scenegraph } from './scenegraph';\n// import { Icon } from './icon';\nimport { createDateAtMidnight, parseStringTemplate, toBoxArray } from '../tools/util';\nimport { isValid } from '@visactor/vutils';\nimport {\n computeRowsCountByRecordDate,\n computeRowsCountByRecordDateForCompact,\n getSubTaskRowIndexByRecordDate,\n getTextPos\n} from '../gantt-helper';\nimport { GanttTaskBarNode } from './gantt-node';\nimport { TasksShowMode } from '../ts-types';\n\nconst TASKBAR_HOVER_ICON = `<svg width=\"100\" height=\"200\" xmlns=\"http://www.w3.org/2000/svg\">\n <line x1=\"30\" y1=\"10\" x2=\"30\" y2=\"190\" stroke=\"black\" stroke-width=\"4\"/>\n <line x1=\"70\" y1=\"10\" x2=\"70\" y2=\"190\" stroke=\"black\" stroke-width=\"4\"/>\n</svg>`;\nexport const TASKBAR_HOVER_ICON_WIDTH = 10;\n\nexport class TaskBar {\n group: Group;\n barContainer: Group;\n hoverBarGroup: Group;\n creatingDependencyLine: Line;\n hoverBarLeftIcon: Image;\n hoverBarRightIcon: Image;\n _scene: Scenegraph;\n width: number;\n height: number;\n selectedBorders: Group[] = [];\n constructor(scene: Scenegraph) {\n this._scene = scene;\n // const height = Math.min(scene._gantt.tableNoFrameHeight, scene._gantt.drawHeight);\n this.width = scene._gantt.tableNoFrameWidth;\n this.height = scene._gantt.gridHeight;\n this.group = new Group({\n x: 0,\n y: scene._gantt.getAllHeaderRowsHeight(),\n width: this.width,\n height: this.height,\n pickable: false,\n clip: true\n });\n this.group.name = 'task-bar-container';\n scene.tableGroup.addChild(this.group);\n this.initBars();\n this.initHoverBarIcons();\n }\n\n initBars() {\n this.barContainer = new Group({\n x: 0,\n y: 0,\n width: this._scene._gantt._getAllColsWidth(),\n height: this._scene._gantt.getAllTaskBarsHeight(),\n pickable: false,\n clip: true\n });\n this.group.appendChild(this.barContainer);\n\n for (let i = 0; i < this._scene._gantt.itemCount; i++) {\n if (\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline ||\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const record = this._scene._gantt.getRecordByIndex(i);\n if (record.children?.length > 0) {\n for (let j = 0; j < record.children.length; j++) {\n const barGroup = this.initBar(i, j, record.children.length);\n if (barGroup) {\n this.barContainer.appendChild(barGroup);\n }\n }\n }\n continue;\n } else {\n const barGroup = this.initBar(i);\n if (barGroup) {\n this.barContainer.appendChild(barGroup);\n }\n }\n }\n }\n initBar(index: number, childIndex?: number, childrenLength?: number) {\n const taskBarCustomLayout = this._scene._gantt.parsedOptions.taskBarCustomLayout;\n\n const { startDate, endDate, taskDays, progress, taskRecord } = this._scene._gantt.getTaskInfoByTaskListIndex(\n index,\n childIndex\n );\n\n if (taskDays <= 0 || !startDate || !endDate || startDate.getTime() > endDate.getTime()) {\n return null;\n }\n const taskBarSize = this._scene._gantt.parsedOptions.colWidthPerDay * taskDays;\n const taskbarHeight = this._scene._gantt.parsedOptions.taskBarStyle.width;\n const minDate = createDateAtMidnight(this._scene._gantt.parsedOptions.minDate);\n\n const subTaskShowRowCount =\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate\n ? childrenLength\n : this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange\n ? computeRowsCountByRecordDate(\n this._scene._gantt.records[index],\n this._scene._gantt.parsedOptions.startDateField,\n this._scene._gantt.parsedOptions.endDateField\n )\n : this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? computeRowsCountByRecordDateForCompact(\n this._scene._gantt.records[index],\n this._scene._gantt.parsedOptions.startDateField,\n this._scene._gantt.parsedOptions.endDateField\n )\n : 1;\n const oneTaskHeigth = this._scene._gantt.getRowHeightByIndex(index) / subTaskShowRowCount;\n const barGroupBox = new GanttTaskBarNode({\n x:\n this._scene._gantt.parsedOptions.colWidthPerDay *\n Math.ceil(Math.abs(startDate.getTime() - minDate.getTime()) / (1000 * 60 * 60 * 24)),\n // y: this._scene._gantt.parsedOptions.rowHeight * i,\n y:\n this._scene._gantt.getRowsHeightByIndex(0, index - 1) +\n (this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate\n ? childIndex * oneTaskHeigth\n : this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? taskRecord.vtable_gantt_showIndex * oneTaskHeigth\n : 0) +\n (oneTaskHeigth - taskbarHeight) / 2,\n width: taskBarSize,\n // height: this._scene._gantt.parsedOptions.rowHeight,\n height: taskbarHeight,\n cornerRadius: this._scene._gantt.parsedOptions.taskBarStyle.cornerRadius,\n lineWidth: this._scene._gantt.parsedOptions.taskBarStyle.borderWidth * 2,\n stroke: this._scene._gantt.parsedOptions.taskBarStyle.borderColor\n // clip: true\n });\n barGroupBox.name = 'task-bar';\n barGroupBox.task_index = index;\n barGroupBox.sub_task_index = childIndex;\n barGroupBox.record = taskRecord;\n\n const barGroup = new Group({\n x: 0,\n y: 0,\n width: taskBarSize,\n height: taskbarHeight,\n cornerRadius: this._scene._gantt.parsedOptions.taskBarStyle.cornerRadius,\n clip: true\n });\n barGroupBox.appendChild(barGroup);\n barGroupBox.clipGroupBox = barGroup;\n let rootContainer;\n let renderDefaultBar = true;\n let renderDefaultText = true;\n\n if (taskBarCustomLayout) {\n let customLayoutObj;\n if (typeof taskBarCustomLayout === 'function') {\n const arg = {\n width: taskBarSize,\n height: taskbarHeight,\n index,\n startDate,\n endDate,\n taskDays,\n progress,\n taskRecord,\n ganttInstance: this._scene._gantt\n };\n customLayoutObj = taskBarCustomLayout(arg);\n } else {\n customLayoutObj = taskBarCustomLayout;\n }\n if (customLayoutObj) {\n // if (customLayoutObj.rootContainer) {\n // customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer);\n // }\n rootContainer = customLayoutObj.rootContainer;\n renderDefaultBar = customLayoutObj.renderDefaultBar ?? false;\n renderDefaultText = customLayoutObj.renderDefaultText ?? false;\n rootContainer.name = 'task-bar-custom-render';\n }\n }\n\n if (renderDefaultBar) {\n // 创建整个任务条rect\n const rect = createRect({\n x: 0,\n y: 0, //this._scene._gantt.parsedOptions.rowHeight - taskbarHeight) / 2,\n width: taskBarSize,\n height: taskbarHeight,\n fill: this._scene._gantt.parsedOptions.taskBarStyle.barColor,\n pickable: false\n });\n rect.name = 'task-bar-rect';\n barGroup.appendChild(rect);\n barGroupBox.barRect = rect;\n // 创建已完成部分任务条rect\n const progress_rect = createRect({\n x: 0,\n y: 0, //(this._scene._gantt.parsedOptions.rowHeight - taskbarHeight) / 2,\n width: (taskBarSize * progress) / 100,\n height: taskbarHeight,\n fill: this._scene._gantt.parsedOptions.taskBarStyle.completedBarColor,\n pickable: false\n });\n progress_rect.name = 'task-bar-progress-rect';\n barGroup.appendChild(progress_rect);\n barGroupBox.progressRect = progress_rect;\n }\n\n rootContainer && barGroup.appendChild(rootContainer);\n if (renderDefaultText) {\n const { textAlign, textBaseline, fontSize, fontFamily, textOverflow, color, padding } =\n this._scene._gantt.parsedOptions.taskBarLabelStyle;\n const position = getTextPos(toBoxArray(padding), textAlign, textBaseline, taskBarSize, taskbarHeight);\n //创建label 文字\n const label = createText({\n // visible: false,\n // pickable: false,\n x: position.x, //extAlign === 'center' ? taskBarSize / 2 : textAlign === 'left' ? 10 : taskBarSize - 10,\n y: position.y, //fontSize / 2,\n fontSize: fontSize, // 10\n fill: color,\n fontFamily: fontFamily,\n text: parseStringTemplate(this._scene._gantt.parsedOptions.taskBarLabelText as string, taskRecord),\n maxLineWidth: taskBarSize - TASKBAR_HOVER_ICON_WIDTH,\n textBaseline,\n textAlign,\n ellipsis:\n textOverflow === 'clip'\n ? ''\n : textOverflow === 'ellipsis'\n ? '...'\n : isValid(textOverflow)\n ? textOverflow\n : undefined,\n poptip: {\n position: 'bottom',\n dx: (taskBarSize - TASKBAR_HOVER_ICON_WIDTH) / 4\n }\n // dx: 12 + 4,\n // dy: this._scene._gantt.barLabelStyle.fontSize / 2\n });\n barGroup.appendChild(label);\n barGroupBox.textLabel = label;\n }\n return barGroupBox;\n }\n updateTaskBarNode(index: number) {\n const taskbarGroup = this.getTaskBarNodeByIndex(index);\n if (taskbarGroup) {\n this.barContainer.removeChild(taskbarGroup);\n }\n const barGroup = this.initBar(index);\n if (barGroup) {\n this.barContainer.insertInto(barGroup, index); //TODO\n }\n }\n initHoverBarIcons() {\n const hoverBarGroup = new Group({\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n clip: true,\n cursor: this._scene._gantt.parsedOptions.taskBarMoveable ? 'grab' : 'default',\n pickable: false,\n cornerRadius:\n this._scene._gantt.parsedOptions.taskBarHoverStyle.cornerRadius ??\n this._scene._gantt.parsedOptions.taskBarStyle.cornerRadius ??\n 0,\n fill: this._scene._gantt.parsedOptions.taskBarHoverStyle.barOverlayColor,\n visibleAll: false\n });\n this.hoverBarGroup = hoverBarGroup;\n hoverBarGroup.name = 'task-bar-hover-shadow';\n // this.barContainer.appendChild(hoverBarGroup);\n // 创建左侧的icon\n if (this._scene._gantt.parsedOptions.taskBarResizable) {\n const icon = new Image({\n x: 0,\n y: 0, //this._scene._gantt.parsedOptions.rowHeight - taskbarHeight) / 2,\n width: TASKBAR_HOVER_ICON_WIDTH,\n height: 20,\n image: TASKBAR_HOVER_ICON,\n pickable: true,\n cursor: 'col-resize'\n });\n icon.name = 'task-bar-hover-shadow-left-icon';\n this.hoverBarLeftIcon = icon;\n hoverBarGroup.appendChild(icon);\n\n // 创建右侧的icon\n const rightIcon = new Image({\n x: 0,\n y: 0, //this._scene._gantt.parsedOptions.rowHeight - taskbarHeight) / 2,\n width: TASKBAR_HOVER_ICON_WIDTH,\n height: 20,\n image: TASKBAR_HOVER_ICON,\n pickable: true,\n cursor: 'col-resize'\n });\n rightIcon.name = 'task-bar-hover-shadow-right-icon';\n this.hoverBarRightIcon = rightIcon;\n hoverBarGroup.appendChild(rightIcon);\n }\n }\n\n setX(x: number) {\n this.barContainer.setAttribute('x', x);\n }\n setY(y: number) {\n this.barContainer.setAttribute('y', y);\n }\n /** 重新创建任务条节点 */\n refresh() {\n this.width = this._scene._gantt.tableNoFrameWidth;\n this.height = this._scene._gantt.gridHeight;\n this.group.setAttributes({\n height: this.height,\n width: this.width,\n y: this._scene._gantt.getAllHeaderRowsHeight()\n });\n this.barContainer.removeAllChild();\n this.group.removeChild(this.barContainer);\n this.initBars();\n }\n resize() {\n this.width = this._scene._gantt.tableNoFrameWidth;\n this.height = this._scene._gantt.gridHeight;\n this.group.setAttribute('width', this.width);\n this.group.setAttribute('height', this.height);\n }\n\n showHoverBar(x: number, y: number, width: number, height: number, target?: Group) {\n if (target && target.name === 'task-bar') {\n // this.hoverBarGroup.releatedTaskBar = target;\n target.appendChild(this.hoverBarGroup);\n }\n this.hoverBarGroup.setAttribute('x', 0);\n this.hoverBarGroup.setAttribute('y', 0);\n this.hoverBarGroup.setAttribute('width', width);\n this.hoverBarGroup.setAttribute('height', height);\n this.hoverBarGroup.setAttribute('visibleAll', true);\n if (this.hoverBarLeftIcon) {\n this.hoverBarLeftIcon.setAttribute('x', 0);\n this.hoverBarLeftIcon.setAttribute('y', Math.ceil(height / 10));\n this.hoverBarLeftIcon.setAttribute('width', TASKBAR_HOVER_ICON_WIDTH);\n this.hoverBarLeftIcon.setAttribute('height', height - 2 * Math.ceil(height / 10));\n this.hoverBarRightIcon.setAttribute('x', width - TASKBAR_HOVER_ICON_WIDTH);\n this.hoverBarRightIcon.setAttribute('y', Math.ceil(height / 10));\n this.hoverBarRightIcon.setAttribute('width', TASKBAR_HOVER_ICON_WIDTH);\n this.hoverBarRightIcon.setAttribute('height', height - 2 * Math.ceil(height / 10));\n }\n }\n hideHoverBar() {\n this.hoverBarGroup.setAttribute('visibleAll', false);\n }\n\n createSelectedBorder(\n x: number,\n y: number,\n width: number,\n height: number,\n attachedToTaskBarNode: GanttTaskBarNode,\n showLinkPoint: boolean = false\n ) {\n const selectedBorder = new Group({\n x,\n y,\n width,\n height,\n lineWidth: this._scene._gantt.parsedOptions.taskBarSelectedStyle.borderLineWidth,\n pickable: false,\n cornerRadius: this._scene._gantt.parsedOptions.taskBarStyle.cornerRadius ?? 0,\n fill: false,\n stroke: this._scene._gantt.parsedOptions.taskBarSelectedStyle.borderColor,\n shadowColor: this._scene._gantt.parsedOptions.taskBarSelectedStyle.shadowColor,\n shadowOffsetX: this._scene._gantt.parsedOptions.taskBarSelectedStyle.shadowOffsetX,\n shadowOffsetY: this._scene._gantt.parsedOptions.taskBarSelectedStyle.shadowOffsetY,\n shadowBlur: this._scene._gantt.parsedOptions.taskBarSelectedStyle.shadowBlur,\n attachedToTaskBarNode: attachedToTaskBarNode,\n zIndex: 10000\n });\n selectedBorder.name = 'task-bar-select-border';\n this.barContainer.appendChild(selectedBorder);\n this.selectedBorders.push(selectedBorder);\n\n if (showLinkPoint) {\n const linkPointContainer = new Group({\n x: -10,\n y: 0,\n width: 10,\n height: height,\n pickable: true\n });\n const linkPoint = new Circle({\n x: 5,\n y: height / 2,\n radius: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.radius,\n fill: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.fillColor,\n stroke: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeColor,\n lineWidth: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeWidth,\n pickable: false\n });\n linkPointContainer.appendChild(linkPoint);\n linkPointContainer.name = 'task-bar-link-point-left';\n selectedBorder.appendChild(linkPointContainer);\n\n const linkPointContainer1 = new Group({\n x: width,\n y: 0,\n width: 10,\n height: height,\n pickable: true\n });\n const linkPoint1 = new Circle({\n x: 5,\n y: height / 2,\n radius: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.radius,\n fill: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.fillColor,\n stroke: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeColor,\n lineWidth: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeWidth,\n pickable: false,\n pickStrokeBuffer: 10\n });\n linkPointContainer1.appendChild(linkPoint1);\n linkPointContainer1.name = 'task-bar-link-point-right';\n selectedBorder.appendChild(linkPointContainer1);\n }\n }\n removeSelectedBorder() {\n this.selectedBorders.forEach(border => {\n border.delete();\n });\n this.selectedBorders = [];\n }\n removeSecondSelectedBorder() {\n if (this.selectedBorders.length === 2) {\n const secondBorder = this.selectedBorders.pop();\n secondBorder.delete();\n }\n }\n updateCreatingDependencyLine(x1: number, y1: number, x2: number, y2: number) {\n if (this.creatingDependencyLine) {\n this.creatingDependencyLine.delete();\n this.creatingDependencyLine = undefined;\n }\n const line = new Line({\n points: [\n { x: x1, y: y1 },\n { x: x2, y: y2 }\n ],\n stroke: this._scene._gantt.parsedOptions.dependencyLinkLineCreatingStyle.lineColor,\n lineWidth: this._scene._gantt.parsedOptions.dependencyLinkLineCreatingStyle.lineWidth,\n lineDash: this._scene._gantt.parsedOptions.dependencyLinkLineCreatingStyle.lineDash,\n pickable: false\n });\n this.creatingDependencyLine = line;\n this.selectedBorders[0].appendChild(line);\n }\n\n getTaskBarNodeByIndex(index: number, sub_task_index?: number) {\n let c = this.barContainer.firstChild as Group;\n if (!c) {\n return null;\n }\n for (let i = 0; i < this.barContainer.childrenCount; i++) {\n if (\n c.task_index === index &&\n (!isValid(sub_task_index) || (isValid(sub_task_index) && c.sub_task_index === sub_task_index))\n ) {\n return c;\n }\n c = c._next as Group;\n }\n return null;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/task-bar.ts"],"names":[],"mappings":"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","file":"task-bar.js","sourcesContent":["import { Group, createText, createRect, Image, Circle, Line, Rect } from '@visactor/vtable/es/vrender';\nimport type { Scenegraph } from './scenegraph';\n// import { Icon } from './icon';\nimport { createDateAtMidnight, parseStringTemplate, toBoxArray } from '../tools/util';\nimport { isValid } from '@visactor/vutils';\nimport {\n computeRowsCountByRecordDate,\n computeRowsCountByRecordDateForCompact,\n getSubTaskRowIndexByRecordDate,\n getTextPos\n} from '../gantt-helper';\nimport { GanttTaskBarNode } from './gantt-node';\nimport { TasksShowMode } from '../ts-types';\n\nconst TASKBAR_HOVER_ICON = `<svg width=\"100\" height=\"200\" xmlns=\"http://www.w3.org/2000/svg\">\n <line x1=\"30\" y1=\"10\" x2=\"30\" y2=\"190\" stroke=\"black\" stroke-width=\"4\"/>\n <line x1=\"70\" y1=\"10\" x2=\"70\" y2=\"190\" stroke=\"black\" stroke-width=\"4\"/>\n</svg>`;\nexport const TASKBAR_HOVER_ICON_WIDTH = 10;\n\nexport class TaskBar {\n group: Group;\n barContainer: Group;\n hoverBarGroup: Group;\n creatingDependencyLine: Line;\n hoverBarLeftIcon: Image;\n hoverBarRightIcon: Image;\n _scene: Scenegraph;\n width: number;\n height: number;\n selectedBorders: Group[] = [];\n constructor(scene: Scenegraph) {\n this._scene = scene;\n // const height = Math.min(scene._gantt.tableNoFrameHeight, scene._gantt.drawHeight);\n this.width = scene._gantt.tableNoFrameWidth;\n this.height = scene._gantt.gridHeight;\n this.group = new Group({\n x: 0,\n y: scene._gantt.getAllHeaderRowsHeight(),\n width: this.width,\n height: this.height,\n pickable: false,\n clip: true\n });\n this.group.name = 'task-bar-container';\n scene.tableGroup.addChild(this.group);\n this.initBars();\n this.initHoverBarIcons();\n }\n\n initBars() {\n this.barContainer = new Group({\n x: 0,\n y: 0,\n width: this._scene._gantt._getAllColsWidth(),\n height: this._scene._gantt.getAllTaskBarsHeight(),\n pickable: false,\n clip: true\n });\n this.group.appendChild(this.barContainer);\n\n for (let i = 0; i < this._scene._gantt.itemCount; i++) {\n if (\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline ||\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const record = this._scene._gantt.getRecordByIndex(i);\n if (record.children?.length > 0) {\n for (let j = 0; j < record.children.length; j++) {\n const barGroup = this.initBar(i, j, record.children.length);\n if (barGroup) {\n this.barContainer.appendChild(barGroup);\n }\n }\n }\n continue;\n } else {\n const barGroup = this.initBar(i);\n if (barGroup) {\n this.barContainer.appendChild(barGroup);\n }\n }\n }\n }\n initBar(index: number, childIndex?: number, childrenLength?: number) {\n const taskBarCustomLayout = this._scene._gantt.parsedOptions.taskBarCustomLayout;\n\n const { startDate, endDate, taskDays, progress, taskRecord } = this._scene._gantt.getTaskInfoByTaskListIndex(\n index,\n childIndex\n );\n\n if (taskDays <= 0 || !startDate || !endDate || startDate.getTime() > endDate.getTime()) {\n return null;\n }\n const taskBarSize = this._scene._gantt.parsedOptions.colWidthPerDay * taskDays;\n const taskbarHeight = this._scene._gantt.parsedOptions.taskBarStyle.width;\n const minDate = createDateAtMidnight(this._scene._gantt.parsedOptions.minDate);\n\n const subTaskShowRowCount =\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate\n ? childrenLength\n : this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange\n ? computeRowsCountByRecordDate(\n this._scene._gantt.records[index],\n this._scene._gantt.parsedOptions.startDateField,\n this._scene._gantt.parsedOptions.endDateField\n )\n : this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? computeRowsCountByRecordDateForCompact(\n this._scene._gantt.records[index],\n this._scene._gantt.parsedOptions.startDateField,\n this._scene._gantt.parsedOptions.endDateField\n )\n : 1;\n const oneTaskHeigth = this._scene._gantt.getRowHeightByIndex(index) / subTaskShowRowCount;\n const barGroupBox = new GanttTaskBarNode({\n x:\n this._scene._gantt.parsedOptions.colWidthPerDay *\n Math.ceil(Math.abs(startDate.getTime() - minDate.getTime()) / (1000 * 60 * 60 * 24)),\n // y: this._scene._gantt.parsedOptions.rowHeight * i,\n y:\n this._scene._gantt.getRowsHeightByIndex(0, index - 1) +\n (this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate\n ? childIndex * oneTaskHeigth\n : this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? taskRecord.vtable_gantt_showIndex * oneTaskHeigth\n : 0) +\n (oneTaskHeigth - taskbarHeight) / 2,\n width: taskBarSize,\n // height: this._scene._gantt.parsedOptions.rowHeight,\n height: taskbarHeight,\n cornerRadius: this._scene._gantt.parsedOptions.taskBarStyle.cornerRadius,\n lineWidth: this._scene._gantt.parsedOptions.taskBarStyle.borderWidth * 2,\n stroke: this._scene._gantt.parsedOptions.taskBarStyle.borderColor\n // clip: true\n });\n barGroupBox.name = 'task-bar';\n barGroupBox.task_index = index;\n barGroupBox.sub_task_index = childIndex;\n barGroupBox.record = taskRecord;\n\n const barGroup = new Group({\n x: 0,\n y: 0,\n width: taskBarSize,\n height: taskbarHeight,\n cornerRadius: this._scene._gantt.parsedOptions.taskBarStyle.cornerRadius,\n clip: true\n });\n barGroup.name = 'task-bar-group';\n barGroupBox.appendChild(barGroup);\n barGroupBox.clipGroupBox = barGroup;\n let rootContainer;\n let renderDefaultBar = true;\n let renderDefaultText = true;\n\n if (taskBarCustomLayout) {\n let customLayoutObj;\n if (typeof taskBarCustomLayout === 'function') {\n const arg = {\n width: taskBarSize,\n height: taskbarHeight,\n index,\n startDate,\n endDate,\n taskDays,\n progress,\n taskRecord,\n ganttInstance: this._scene._gantt\n };\n customLayoutObj = taskBarCustomLayout(arg);\n } else {\n customLayoutObj = taskBarCustomLayout;\n }\n if (customLayoutObj) {\n // if (customLayoutObj.rootContainer) {\n // customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer);\n // }\n rootContainer = customLayoutObj.rootContainer;\n renderDefaultBar = customLayoutObj.renderDefaultBar ?? false;\n renderDefaultText = customLayoutObj.renderDefaultText ?? false;\n rootContainer.name = 'task-bar-custom-render';\n }\n }\n\n if (renderDefaultBar) {\n // 创建整个任务条rect\n const rect = createRect({\n x: 0,\n y: 0, //this._scene._gantt.parsedOptions.rowHeight - taskbarHeight) / 2,\n width: taskBarSize,\n height: taskbarHeight,\n fill: this._scene._gantt.parsedOptions.taskBarStyle.barColor,\n pickable: false\n });\n rect.name = 'task-bar-rect';\n barGroup.appendChild(rect);\n barGroupBox.barRect = rect;\n // 创建已完成部分任务条rect\n const progress_rect = createRect({\n x: 0,\n y: 0, //(this._scene._gantt.parsedOptions.rowHeight - taskbarHeight) / 2,\n width: (taskBarSize * progress) / 100,\n height: taskbarHeight,\n fill: this._scene._gantt.parsedOptions.taskBarStyle.completedBarColor,\n pickable: false\n });\n progress_rect.name = 'task-bar-progress-rect';\n barGroup.appendChild(progress_rect);\n barGroupBox.progressRect = progress_rect;\n }\n\n rootContainer && barGroup.appendChild(rootContainer);\n if (renderDefaultText) {\n const { textAlign, textBaseline, fontSize, fontFamily, textOverflow, color, padding } =\n this._scene._gantt.parsedOptions.taskBarLabelStyle;\n const position = getTextPos(toBoxArray(padding), textAlign, textBaseline, taskBarSize, taskbarHeight);\n //创建label 文字\n const label = createText({\n // visible: false,\n // pickable: false,\n x: position.x, //extAlign === 'center' ? taskBarSize / 2 : textAlign === 'left' ? 10 : taskBarSize - 10,\n y: position.y, //fontSize / 2,\n fontSize: fontSize, // 10\n fill: color,\n fontFamily: fontFamily,\n text: parseStringTemplate(this._scene._gantt.parsedOptions.taskBarLabelText as string, taskRecord),\n maxLineWidth: taskBarSize - TASKBAR_HOVER_ICON_WIDTH,\n textBaseline,\n textAlign,\n ellipsis:\n textOverflow === 'clip'\n ? ''\n : textOverflow === 'ellipsis'\n ? '...'\n : isValid(textOverflow)\n ? textOverflow\n : undefined,\n poptip: {\n position: 'bottom',\n dx: (taskBarSize - TASKBAR_HOVER_ICON_WIDTH) / 4\n }\n // dx: 12 + 4,\n // dy: this._scene._gantt.barLabelStyle.fontSize / 2\n });\n barGroup.appendChild(label);\n barGroupBox.textLabel = label;\n }\n return barGroupBox;\n }\n updateTaskBarNode(index: number) {\n const taskbarGroup = this.getTaskBarNodeByIndex(index);\n if (taskbarGroup) {\n this.barContainer.removeChild(taskbarGroup);\n }\n const barGroup = this.initBar(index);\n if (barGroup) {\n this.barContainer.insertInto(barGroup, index); //TODO\n }\n }\n initHoverBarIcons() {\n const hoverBarGroup = new Group({\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n clip: true,\n cursor: this._scene._gantt.parsedOptions.taskBarMoveable ? 'grab' : 'default',\n pickable: false,\n cornerRadius:\n this._scene._gantt.parsedOptions.taskBarHoverStyle.cornerRadius ??\n this._scene._gantt.parsedOptions.taskBarStyle.cornerRadius ??\n 0,\n fill: this._scene._gantt.parsedOptions.taskBarHoverStyle.barOverlayColor,\n visibleAll: false\n });\n this.hoverBarGroup = hoverBarGroup;\n hoverBarGroup.name = 'task-bar-hover-shadow';\n // this.barContainer.appendChild(hoverBarGroup);\n // 创建左侧的icon\n if (this._scene._gantt.parsedOptions.taskBarResizable) {\n const icon = new Image({\n x: 0,\n y: 0, //this._scene._gantt.parsedOptions.rowHeight - taskbarHeight) / 2,\n width: TASKBAR_HOVER_ICON_WIDTH,\n height: 20,\n image: TASKBAR_HOVER_ICON,\n pickable: true,\n cursor: 'col-resize'\n });\n icon.name = 'task-bar-hover-shadow-left-icon';\n this.hoverBarLeftIcon = icon;\n hoverBarGroup.appendChild(icon);\n\n // 创建右侧的icon\n const rightIcon = new Image({\n x: 0,\n y: 0, //this._scene._gantt.parsedOptions.rowHeight - taskbarHeight) / 2,\n width: TASKBAR_HOVER_ICON_WIDTH,\n height: 20,\n image: TASKBAR_HOVER_ICON,\n pickable: true,\n cursor: 'col-resize'\n });\n rightIcon.name = 'task-bar-hover-shadow-right-icon';\n this.hoverBarRightIcon = rightIcon;\n hoverBarGroup.appendChild(rightIcon);\n }\n }\n\n setX(x: number) {\n this.barContainer.setAttribute('x', x);\n }\n setY(y: number) {\n this.barContainer.setAttribute('y', y);\n }\n /** 重新创建任务条节点 */\n refresh() {\n this.width = this._scene._gantt.tableNoFrameWidth;\n this.height = this._scene._gantt.gridHeight;\n this.group.setAttributes({\n height: this.height,\n width: this.width,\n y: this._scene._gantt.getAllHeaderRowsHeight()\n });\n this.barContainer.removeAllChild();\n this.group.removeChild(this.barContainer);\n this.initBars();\n }\n resize() {\n this.width = this._scene._gantt.tableNoFrameWidth;\n this.height = this._scene._gantt.gridHeight;\n this.group.setAttribute('width', this.width);\n this.group.setAttribute('height', this.height);\n }\n\n showHoverBar(x: number, y: number, width: number, height: number, target?: Group) {\n if (target && target.name === 'task-bar') {\n // this.hoverBarGroup.releatedTaskBar = target;\n target.appendChild(this.hoverBarGroup);\n }\n this.hoverBarGroup.setAttribute('x', 0);\n this.hoverBarGroup.setAttribute('y', 0);\n this.hoverBarGroup.setAttribute('width', width);\n this.hoverBarGroup.setAttribute('height', height);\n this.hoverBarGroup.setAttribute('visibleAll', true);\n if (this.hoverBarLeftIcon) {\n this.hoverBarLeftIcon.setAttribute('x', 0);\n this.hoverBarLeftIcon.setAttribute('y', Math.ceil(height / 10));\n this.hoverBarLeftIcon.setAttribute('width', TASKBAR_HOVER_ICON_WIDTH);\n this.hoverBarLeftIcon.setAttribute('height', height - 2 * Math.ceil(height / 10));\n this.hoverBarRightIcon.setAttribute('x', width - TASKBAR_HOVER_ICON_WIDTH);\n this.hoverBarRightIcon.setAttribute('y', Math.ceil(height / 10));\n this.hoverBarRightIcon.setAttribute('width', TASKBAR_HOVER_ICON_WIDTH);\n this.hoverBarRightIcon.setAttribute('height', height - 2 * Math.ceil(height / 10));\n }\n }\n hideHoverBar() {\n this.hoverBarGroup.setAttribute('visibleAll', false);\n }\n\n createSelectedBorder(\n x: number,\n y: number,\n width: number,\n height: number,\n attachedToTaskBarNode: GanttTaskBarNode,\n showLinkPoint: boolean = false\n ) {\n const selectedBorder = new Group({\n x,\n y,\n width,\n height,\n lineWidth: this._scene._gantt.parsedOptions.taskBarSelectedStyle.borderLineWidth,\n pickable: false,\n cornerRadius: this._scene._gantt.parsedOptions.taskBarStyle.cornerRadius ?? 0,\n fill: false,\n stroke: this._scene._gantt.parsedOptions.taskBarSelectedStyle.borderColor,\n shadowColor: this._scene._gantt.parsedOptions.taskBarSelectedStyle.shadowColor,\n shadowOffsetX: this._scene._gantt.parsedOptions.taskBarSelectedStyle.shadowOffsetX,\n shadowOffsetY: this._scene._gantt.parsedOptions.taskBarSelectedStyle.shadowOffsetY,\n shadowBlur: this._scene._gantt.parsedOptions.taskBarSelectedStyle.shadowBlur,\n attachedToTaskBarNode: attachedToTaskBarNode,\n zIndex: 10000\n });\n selectedBorder.name = 'task-bar-select-border';\n this.barContainer.appendChild(selectedBorder);\n this.selectedBorders.push(selectedBorder);\n\n if (showLinkPoint) {\n const linkPointContainer = new Group({\n x: -10,\n y: 0,\n width: 10,\n height: height,\n pickable: true\n });\n const linkPoint = new Circle({\n x: 5,\n y: height / 2,\n radius: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.radius,\n fill: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.fillColor,\n stroke: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeColor,\n lineWidth: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeWidth,\n pickable: false\n });\n linkPointContainer.appendChild(linkPoint);\n linkPointContainer.name = 'task-bar-link-point-left';\n selectedBorder.appendChild(linkPointContainer);\n\n const linkPointContainer1 = new Group({\n x: width,\n y: 0,\n width: 10,\n height: height,\n pickable: true\n });\n const linkPoint1 = new Circle({\n x: 5,\n y: height / 2,\n radius: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.radius,\n fill: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.fillColor,\n stroke: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeColor,\n lineWidth: this._scene._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeWidth,\n pickable: false,\n pickStrokeBuffer: 10\n });\n linkPointContainer1.appendChild(linkPoint1);\n linkPointContainer1.name = 'task-bar-link-point-right';\n selectedBorder.appendChild(linkPointContainer1);\n }\n }\n removeSelectedBorder() {\n this.selectedBorders.forEach(border => {\n border.delete();\n });\n this.selectedBorders = [];\n }\n removeSecondSelectedBorder() {\n if (this.selectedBorders.length === 2) {\n const secondBorder = this.selectedBorders.pop();\n secondBorder.delete();\n }\n }\n updateCreatingDependencyLine(x1: number, y1: number, x2: number, y2: number) {\n if (this.creatingDependencyLine) {\n this.creatingDependencyLine.delete();\n this.creatingDependencyLine = undefined;\n }\n const line = new Line({\n points: [\n { x: x1, y: y1 },\n { x: x2, y: y2 }\n ],\n stroke: this._scene._gantt.parsedOptions.dependencyLinkLineCreatingStyle.lineColor,\n lineWidth: this._scene._gantt.parsedOptions.dependencyLinkLineCreatingStyle.lineWidth,\n lineDash: this._scene._gantt.parsedOptions.dependencyLinkLineCreatingStyle.lineDash,\n pickable: false\n });\n this.creatingDependencyLine = line;\n this.selectedBorders[0].appendChild(line);\n }\n\n getTaskBarNodeByIndex(index: number, sub_task_index?: number) {\n let c = this.barContainer.firstChild as Group;\n if (!c) {\n return null;\n }\n for (let i = 0; i < this.barContainer.childrenCount; i++) {\n if (\n c.task_index === index &&\n (!isValid(sub_task_index) || (isValid(sub_task_index) && c.sub_task_index === sub_task_index))\n ) {\n return c;\n }\n c = c._next as Group;\n }\n return null;\n }\n}\n"]}
|
|
@@ -395,8 +395,11 @@ function reCreateCustomNode(gantt, taskBarGroup, taskIndex, sub_task_index) {
|
|
|
395
395
|
if (customLayoutObj) {
|
|
396
396
|
const rootContainer = customLayoutObj.rootContainer;
|
|
397
397
|
rootContainer.name = "task-bar-custom-render";
|
|
398
|
-
const
|
|
399
|
-
|
|
398
|
+
const barGroup = taskBarGroup.children.find((node => "task-bar-group" === node.name));
|
|
399
|
+
if (barGroup) {
|
|
400
|
+
const oldCustomIndex = barGroup.children.findIndex((node => "task-bar-custom-render" === node.name)), oldCustomNode = barGroup.children[oldCustomIndex];
|
|
401
|
+
oldCustomNode && (barGroup.removeChild(oldCustomNode), barGroup.insertInto(rootContainer, oldCustomIndex));
|
|
402
|
+
}
|
|
400
403
|
}
|
|
401
404
|
}
|
|
402
405
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/state-manager.ts"],"names":[],"mappings":"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","file":"state-manager.js","sourcesContent":["import { clone, cloneDeep, isValid } from '@visactor/vutils';\nimport type { Gantt } from '../Gantt';\nimport type { ITaskLink } from '../ts-types';\nimport { InteractionState, GANTT_EVENT_TYPE, DependencyType, TasksShowMode } from '../ts-types';\nimport type { Group, FederatedPointerEvent, Polygon, Line, Circle } from '@visactor/vtable/es/vrender';\nimport {\n syncEditCellFromTable,\n syncScrollStateFromTable,\n syncScrollStateToTable,\n syncDragOrderFromTable,\n syncTreeChangeFromTable,\n syncSortFromTable\n} from './gantt-table-sync';\nimport {\n clearRecordShowIndex,\n findRecordByTaskKey,\n getSubTaskRowIndexByRecordDate,\n getTaskIndexsByTaskY\n} from '../gantt-helper';\nimport { debounce } from '../tools/debounce';\nimport type { GanttTaskBarNode } from '../scenegraph/gantt-node';\nimport { TASKBAR_HOVER_ICON_WIDTH } from '../scenegraph/task-bar';\nimport { Inertia } from '../tools/inertia';\nimport { updateLinkLinePoints } from '../scenegraph/dependency-link';\nexport class StateManager {\n _gantt: Gantt;\n\n scroll: {\n horizontalBarPos: number;\n verticalBarPos: number;\n };\n fastScrolling: boolean;\n /**\n * Default 默认展示\n * grabing 拖拽中\n * -Resize column 改变列宽\n * -column move 调整列顺序\n * -drag select 拖拽多选\n * Scrolling 滚动中\n */\n interactionState: InteractionState = InteractionState.default;\n\n moveTaskBar: {\n /** x坐标是相对table内坐标 */\n startX: number;\n startY: number;\n deltaX: number;\n deltaY: number;\n targetStartX: number;\n targetStartY: number;\n startOffsetY: number;\n moving: boolean;\n target: GanttTaskBarNode;\n moveTaskBarXSpeed: number;\n moveTaskBarXInertia: Inertia;\n };\n\n hoverTaskBar: {\n /** x坐标是相对table内坐标 */\n startX: number;\n targetStartX: number;\n target: GanttTaskBarNode;\n };\n resizeTaskBar: {\n /** x坐标是相对table内坐标 */\n startX: number;\n startY: number;\n /** 刚开始时 任务条节点的offsetX */\n startOffsetY: number;\n targetStartX: number;\n target: GanttTaskBarNode;\n resizing: boolean;\n onIconName: string;\n };\n selectedTaskBar: {\n target: GanttTaskBarNode;\n };\n resizeTableWidth: {\n /** x坐标是相对table内坐标 */\n lastX: number;\n resizing: boolean;\n };\n\n selectedDenpendencyLink: {\n link: ITaskLink & { vtable_gantt_linkArrowNode: Polygon; vtable_gantt_linkLineNode: Line };\n };\n creatingDenpendencyLink: {\n /** x坐标是相对table内坐标 */\n startX: number;\n startY: number;\n startOffsetY: number;\n targetStartX: number;\n startClickedPoint: Group;\n creating: boolean;\n firstTaskBarPosition: 'left' | 'right';\n secondTaskBarPosition: 'left' | 'right';\n secondTaskBarNode: GanttTaskBarNode;\n lastHighLightLinkPoint: Group;\n };\n // 供滚动重置为default使用\n resetInteractionState = debounce(() => {\n this.updateInteractionState(InteractionState.default);\n }, 100);\n constructor(gantt: Gantt) {\n this._gantt = gantt;\n this.scroll = {\n horizontalBarPos: 0,\n verticalBarPos: 0\n };\n this.moveTaskBar = {\n targetStartX: null,\n targetStartY: null,\n deltaX: 0,\n deltaY: 0,\n startOffsetY: null,\n startX: null,\n startY: null,\n moving: false,\n target: null,\n moveTaskBarXSpeed: 0,\n moveTaskBarXInertia: new Inertia()\n };\n\n this.hoverTaskBar = {\n targetStartX: null,\n startX: null,\n target: null\n };\n\n this.selectedTaskBar = {\n target: null\n };\n this.resizeTaskBar = {\n startOffsetY: null,\n targetStartX: null,\n startX: null,\n startY: null,\n target: null,\n resizing: false,\n onIconName: ''\n };\n this.resizeTableWidth = {\n lastX: null,\n resizing: false\n };\n this.selectedDenpendencyLink = {\n link: null\n };\n this.creatingDenpendencyLink = {\n startClickedPoint: null,\n startX: null,\n startY: null,\n startOffsetY: null,\n targetStartX: null,\n creating: false,\n secondTaskBarNode: null\n };\n\n this.updateVerticalScrollBar = this.updateVerticalScrollBar.bind(this);\n this.updateHorizontalScrollBar = this.updateHorizontalScrollBar.bind(this);\n\n syncScrollStateFromTable(this._gantt);\n syncEditCellFromTable(this._gantt);\n syncDragOrderFromTable(this._gantt);\n syncTreeChangeFromTable(this._gantt);\n syncSortFromTable(this._gantt);\n }\n\n setScrollTop(top: number, triggerEvent: boolean = true) {\n // 矫正top值范围\n const totalHeight = this._gantt.getAllRowsHeight();\n top = Math.max(0, Math.min(top, totalHeight - this._gantt.scenegraph.height));\n top = Math.ceil(top);\n const oldVerticalBarPos = this.scroll.verticalBarPos;\n // this._gantt.stateManager.updateSelectPos(-1, -1);\n this.scroll.verticalBarPos = top;\n if (!isValid(this.scroll.verticalBarPos) || isNaN(this.scroll.verticalBarPos)) {\n this.scroll.verticalBarPos = 0;\n }\n // 设置scenegraph坐标\n this._gantt.scenegraph.setY(-top);\n\n // 更新scrollbar位置\n const yRatio = top / (totalHeight - this._gantt.scenegraph.height);\n this._gantt.scenegraph.scrollbarComponent.updateVerticalScrollBarPos(yRatio);\n\n if (oldVerticalBarPos !== top && triggerEvent) {\n syncScrollStateToTable(this._gantt);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this._gantt.theme.scrollStyle?.width,\n // scrollWidth: this._gantt.theme.scrollStyle?.width,\n // viewHeight: this._gantt.tableNoFrameHeight,\n // viewWidth: this._gantt.tableNoFrameWidth,\n scrollDirection: 'vertical',\n scrollRatioY: yRatio\n });\n }\n }\n get scrollLeft() {\n return this.scroll.horizontalBarPos;\n }\n get scrollTop() {\n return this.scroll.verticalBarPos;\n }\n setScrollLeft(left: number, triggerEvent: boolean = true) {\n // 矫正left值范围\n const totalWidth = this._gantt._getAllColsWidth();\n\n left = Math.max(0, Math.min(left, totalWidth - this._gantt.scenegraph.width));\n left = Math.ceil(left);\n // 滚动期间清空选中清空\n // if (left !== this.scroll.horizontalBarPos) {\n // this.updateHoverPos(-1, -1);\n // }\n // this._gantt.stateManager.updateSelectPos(-1, -1);\n const oldHorizontalBarPos = this.scroll.horizontalBarPos;\n this.scroll.horizontalBarPos = left;\n if (!isValid(this.scroll.horizontalBarPos) || isNaN(this.scroll.horizontalBarPos)) {\n this.scroll.horizontalBarPos = 0;\n }\n\n // 设置scenegraph坐标\n this._gantt.scenegraph.setX(-left);\n\n // 更新scrollbar位置\n const xRatio = left / (totalWidth - this._gantt.scenegraph.width);\n this._gantt.scenegraph.scrollbarComponent.updateHorizontalScrollBarPos(xRatio);\n\n if (oldHorizontalBarPos !== left && triggerEvent) {\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this._gantt.theme.scrollStyle?.width,\n // scrollWidth: this._gantt.theme.scrollStyle?.width,\n // viewHeight: this._gantt.tableNoFrameHeight,\n // viewWidth: this._gantt.tableNoFrameWidth,\n scrollDirection: 'horizontal',\n scrollRatioX: xRatio\n });\n }\n }\n\n updateInteractionState(mode: InteractionState) {\n if (this.interactionState === mode) {\n return;\n }\n const oldState = this.interactionState;\n this.interactionState = mode;\n // 处理mode 更新后逻辑\n if (oldState === InteractionState.scrolling && mode === InteractionState.default) {\n // this.table.scenegraph.stage.disableDirtyBounds();\n // this.table.scenegraph.stage.render();\n // this.table.scenegraph.stage.enableDirtyBounds();\n }\n }\n\n updateVerticalScrollBar(yRatio: number) {\n const totalHeight = this._gantt.getAllRowsHeight();\n const oldVerticalBarPos = this.scroll.verticalBarPos;\n this.scroll.verticalBarPos = Math.ceil(yRatio * (totalHeight - this._gantt.scenegraph.height));\n if (!isValid(this.scroll.verticalBarPos) || isNaN(this.scroll.verticalBarPos)) {\n this.scroll.verticalBarPos = 0;\n }\n this._gantt.scenegraph.setY(-this.scroll.verticalBarPos, yRatio === 1);\n syncScrollStateToTable(this._gantt);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this.table.theme.scrollStyle?.width,\n // scrollWidth: this.table.theme.scrollStyle?.width,\n // viewHeight: this.table.tableNoFrameHeight,\n // viewWidth: this.table.tableNoFrameWidth,\n scrollDirection: 'vertical',\n scrollRatioY: yRatio\n });\n }\n updateHorizontalScrollBar(xRatio: number) {\n const totalWidth = this._gantt._getAllColsWidth();\n const oldHorizontalBarPos = this.scroll.horizontalBarPos;\n this.scroll.horizontalBarPos = Math.ceil(xRatio * (totalWidth - this._gantt.scenegraph.width));\n if (!isValid(this.scroll.horizontalBarPos) || isNaN(this.scroll.horizontalBarPos)) {\n this.scroll.horizontalBarPos = 0;\n }\n this._gantt.scenegraph.setX(-this.scroll.horizontalBarPos, xRatio === 1);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this.table.theme.scrollStyle?.width,\n // scrollWidth: this.table.theme.scrollStyle?.width,\n // viewHeight: this.table.tableNoFrameHeight,\n // viewWidth: this.table.tableNoFrameWidth,\n scrollDirection: 'horizontal',\n scrollRatioY: xRatio\n });\n // this.scroll.horizontalBarPos -= this._gantt.scenegraph.proxy.deltaX;\n // this._gantt.scenegraph.proxy.deltaX = 0;\n\n // this._gantt.fireListeners(TABLE_EVENT_TYPE.SCROLL, {\n // scrollTop: this.scroll.verticalBarPos,\n // scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this._gantt.theme.scrollStyle?.width,\n // scrollWidth: this._gantt.theme.scrollStyle?.width,\n // viewHeight: this._gantt.tableNoFrameHeight,\n // viewWidth: this._gantt.tableNoFrameWidth,\n // scrollDirection: 'horizontal',\n // scrollRatioX: xRatio\n // });\n\n // if (oldHorizontalBarPos !== this.scroll.horizontalBarPos) {\n // this.checkHorizontalScrollBarEnd();\n // }\n }\n\n startMoveTaskBar(target: GanttTaskBarNode, x: number, y: number, offsetY: number) {\n if (target.name === 'task-bar-hover-shadow') {\n target = target.parent;\n }\n this.moveTaskBar.moving = true;\n this.moveTaskBar.target = target;\n this.moveTaskBar.targetStartX = target.attribute.x;\n this.moveTaskBar.targetStartY = target.attribute.y;\n this.moveTaskBar.startX = x;\n this.moveTaskBar.startY = y;\n this.moveTaskBar.startOffsetY = offsetY;\n target.setAttribute('zIndex', 10000);\n }\n\n isMoveingTaskBar() {\n return this.moveTaskBar.moving;\n }\n endMoveTaskBar() {\n if (this.moveTaskBar.moveTaskBarXInertia.isInertiaScrolling()) {\n this.moveTaskBar.moveTaskBarXInertia.endInertia();\n }\n\n const deltaX = this.moveTaskBar.deltaX;\n const deltaY = this.moveTaskBar.deltaY;\n const target = this.moveTaskBar.target;\n if (Math.abs(deltaX) >= 1 || Math.abs(deltaY) >= 1) {\n const days = Math.round(deltaX / this._gantt.parsedOptions.colWidthPerDay);\n\n const correctX = days * this._gantt.parsedOptions.colWidthPerDay;\n const targetEndX = this.moveTaskBar.targetStartX + correctX;\n const targetEndY =\n this.moveTaskBar.targetStartY +\n this._gantt.parsedOptions.rowHeight * Math.round(deltaY / this._gantt.parsedOptions.rowHeight);\n // 判断横向拖动 更新数据的date\n if (Math.abs(days) >= 1) {\n const taskIndex = target.task_index;\n const sub_task_index = target.sub_task_index;\n const oldRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);\n const oldStartDate = oldRecord[this._gantt.parsedOptions.startDateField];\n const oldEndDate = oldRecord[this._gantt.parsedOptions.endDateField];\n this._gantt._updateDateToTaskRecord('move', days, taskIndex, sub_task_index);\n const newRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);\n if (this._gantt.hasListeners(GANTT_EVENT_TYPE.CHANGE_DATE_RANGE)) {\n this._gantt.fireListeners(GANTT_EVENT_TYPE.CHANGE_DATE_RANGE, {\n startDate: newRecord[this._gantt.parsedOptions.startDateField],\n endDate: newRecord[this._gantt.parsedOptions.endDateField],\n oldStartDate,\n oldEndDate,\n index: taskIndex,\n record: newRecord\n });\n }\n }\n if (\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const indexs = getTaskIndexsByTaskY(targetEndY, this._gantt);\n this._gantt._dragOrderTaskRecord(\n target.task_index,\n target.sub_task_index,\n indexs.task_index,\n indexs.sub_task_index\n );\n clearRecordShowIndex(this._gantt.records);\n this._gantt.taskListTableInstance.renderWithRecreateCells();\n this._gantt._syncPropsFromTable();\n this._gantt.scenegraph.refreshTaskBarsAndGrid();\n } else {\n // 判断纵向拖动 处理数据的位置\n if (\n this._gantt.parsedOptions.tasksShowMode !== TasksShowMode.Tasks_Separate &&\n Math.abs(Math.round(deltaY / this._gantt.parsedOptions.rowHeight)) >= 1\n ) {\n const indexs = getTaskIndexsByTaskY(targetEndY, this._gantt);\n this._gantt._dragOrderTaskRecord(\n target.task_index,\n target.sub_task_index,\n indexs.task_index,\n indexs.sub_task_index\n );\n if (this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate) {\n this._gantt.taskListTableInstance.renderWithRecreateCells();\n this._gantt.scenegraph.refreshTaskBarsAndGrid();\n } else {\n this._gantt.scenegraph.taskBar.refresh();\n this._gantt.scenegraph.dependencyLink.refresh();\n }\n // target = this._gantt.scenegraph.taskBar.getTaskBarNodeByIndex(indexs.task_index, indexs.sub_task_index);\n } else {\n resizeOrMoveTaskBar(\n target,\n targetEndX - (target as Group).attribute.x,\n targetEndY - (target as Group).attribute.y,\n null,\n this\n );\n\n // 为了确保拖拽后 保持startDate日期晚的显示在上层不被盖住 这里需要重新排序一下\n if (days > 0) {\n let insertAfterNode = target;\n while (\n (insertAfterNode as Group).nextSibling &&\n (insertAfterNode as Group).nextSibling.attribute.y === (target as Group).attribute.y &&\n (insertAfterNode as Group).nextSibling.record[this._gantt.parsedOptions.startDateField] <=\n target.record[this._gantt.parsedOptions.startDateField]\n ) {\n insertAfterNode = (insertAfterNode as Group).nextSibling;\n }\n if (insertAfterNode !== target) {\n (insertAfterNode as Group).parent.insertAfter(target, insertAfterNode);\n }\n } else if (days < 0) {\n let insertBeforeNode = target;\n while (\n (insertBeforeNode as Group).previousSibling &&\n (insertBeforeNode as Group).previousSibling.attribute.y === (target as Group).attribute.y &&\n (insertBeforeNode as Group).previousSibling.record[this._gantt.parsedOptions.startDateField] >=\n target.record[this._gantt.parsedOptions.startDateField]\n ) {\n insertBeforeNode = (insertBeforeNode as Group).previousSibling;\n }\n if (insertBeforeNode !== target) {\n (insertBeforeNode as Group).parent.insertBefore(target, insertBeforeNode);\n }\n }\n }\n }\n this._gantt.scenegraph.updateNextFrame();\n }\n this.moveTaskBar.moving = false;\n if (this.selectedTaskBar.target !== target) {\n target.setAttribute('zIndex', 0);\n }\n this.moveTaskBar.target = null;\n this.moveTaskBar.deltaX = 0;\n this.moveTaskBar.deltaY = 0;\n this.moveTaskBar.moveTaskBarXSpeed = 0;\n }\n dealTaskBarMove(e: FederatedPointerEvent) {\n const target = this.moveTaskBar.target;\n target.setAttribute('zIndex', 10000);\n // const taskIndex = getTaskIndexByY(this.moveTaskBar.startOffsetY, this._gantt);\n const x1 = this._gantt.eventManager.lastDragPointerXYOnWindow.x;\n const x2 = e.x;\n const dx = x2 - x1;\n const y1 = this._gantt.eventManager.lastDragPointerXYOnWindow.y;\n const y2 = e.y;\n const dy = y2 - y1;\n\n this.moveTaskBar.deltaX += dx;\n this.moveTaskBar.deltaY += dy;\n // target.setAttribute('x', target.attribute.x + dx);\n resizeOrMoveTaskBar(target, dx, dy, null, this);\n\n // 处理向左拖拽任务条时,整体向左滚动\n if (target.attribute.x <= this._gantt.stateManager.scrollLeft && dx < 0) {\n this.moveTaskBar.moveTaskBarXSpeed = -this._gantt.parsedOptions.colWidthPerDay / 100;\n\n this.moveTaskBar.moveTaskBarXInertia.startInertia(this.moveTaskBar.moveTaskBarXSpeed, 0, 1);\n this.moveTaskBar.moveTaskBarXInertia.setScrollHandle((dx: number, dy: number) => {\n this.moveTaskBar.deltaX += dx;\n this.moveTaskBar.deltaY += dy;\n resizeOrMoveTaskBar(target, dx, dy, null, this);\n\n this._gantt.stateManager.setScrollLeft(target.attribute.x);\n if (this._gantt.stateManager.scrollLeft === 0) {\n this.moveTaskBar.moveTaskBarXInertia.endInertia();\n }\n });\n } else if (\n target.attribute.x + target.attribute.width >=\n this._gantt.stateManager.scrollLeft + this._gantt.tableNoFrameWidth &&\n dx > 0\n ) {\n // 处理向右拖拽任务条时,整体向右滚动\n this.moveTaskBar.moveTaskBarXSpeed = this._gantt.parsedOptions.colWidthPerDay / 100;\n\n this.moveTaskBar.moveTaskBarXInertia.startInertia(this.moveTaskBar.moveTaskBarXSpeed, 0, 1);\n this.moveTaskBar.moveTaskBarXInertia.setScrollHandle((dx: number, dy: number) => {\n this.moveTaskBar.deltaX += dx;\n this.moveTaskBar.deltaY += dy;\n resizeOrMoveTaskBar(target, dx, dy, null, this);\n\n this._gantt.stateManager.setScrollLeft(\n target.attribute.x + target.attribute.width - this._gantt.tableNoFrameWidth\n );\n if (this._gantt.stateManager.scrollLeft === this._gantt._getAllColsWidth() - this._gantt.tableNoFrameWidth) {\n this.moveTaskBar.moveTaskBarXInertia.endInertia();\n }\n });\n } else if (this.moveTaskBar.moveTaskBarXInertia.isInertiaScrolling()) {\n this.moveTaskBar.moveTaskBarXInertia.endInertia();\n } else {\n this.moveTaskBar.moveTaskBarXSpeed = 0;\n }\n\n this._gantt.scenegraph.updateNextFrame();\n\n //\n }\n //#region 调整拖拽任务条的大小\n startResizeTaskBar(target: Group, x: number, y: number, startOffsetY: number, onIconName: string) {\n // if (target.name === 'task-bar-hover-shadow') {\n // target = target.parent.parent;\n // }\n this.resizeTaskBar.onIconName = onIconName;\n this.resizeTaskBar.resizing = true;\n this.resizeTaskBar.target = target;\n this.resizeTaskBar.targetStartX = target.attribute.x;\n this.resizeTaskBar.startX = x;\n this.resizeTaskBar.startY = y;\n this.resizeTaskBar.startOffsetY = startOffsetY;\n }\n isResizingTaskBar() {\n return this.resizeTaskBar.resizing;\n }\n endResizeTaskBar(x: number) {\n const direction = this._gantt.stateManager.resizeTaskBar.onIconName;\n const deltaX = x - this.resizeTaskBar.startX;\n if (Math.abs(deltaX) >= 1) {\n let diff_days = Math.round(deltaX / this._gantt.parsedOptions.colWidthPerDay);\n diff_days = direction === 'left' ? -diff_days : diff_days;\n\n const taskBarGroup = this.resizeTaskBar.target;\n const clipGroupBox = taskBarGroup.clipGroupBox;\n const rect = this.resizeTaskBar.target.barRect;\n const progressRect = this.resizeTaskBar.target.progressRect;\n // const taskIndex = getTaskIndexByY(this.resizeTaskBar.startOffsetY, this._gantt);\n const taskIndex = this.resizeTaskBar.target.task_index;\n const sub_task_index = this.resizeTaskBar.target.sub_task_index;\n const oldRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);\n const oldStartDate = oldRecord[this._gantt.parsedOptions.startDateField];\n const oldEndDate = oldRecord[this._gantt.parsedOptions.endDateField];\n const { taskDays, progress } = this._gantt.getTaskInfoByTaskListIndex(taskIndex, sub_task_index);\n if (diff_days < 0 && taskDays + diff_days <= 0) {\n diff_days = 1 - taskDays;\n }\n this._gantt._updateDateToTaskRecord(\n direction === 'left' ? 'start-move' : 'end-move',\n direction === 'left' ? -diff_days : diff_days,\n taskIndex,\n sub_task_index\n );\n if (\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n this._gantt.taskListTableInstance.renderWithRecreateCells();\n this._gantt._syncPropsFromTable();\n this._gantt.scenegraph.refreshTaskBarsAndGrid();\n } else {\n const correctX = (direction === 'left' ? -diff_days : diff_days) * this._gantt.parsedOptions.colWidthPerDay;\n const targetEndX = this.resizeTaskBar.targetStartX + correctX;\n\n const taskBarSize = this._gantt.parsedOptions.colWidthPerDay * (taskDays + diff_days);\n if (direction === 'left') {\n resizeOrMoveTaskBar(taskBarGroup, targetEndX - taskBarGroup.attribute.x, 0, taskBarSize, this);\n clipGroupBox.setAttribute('width', taskBarGroup.attribute.width);\n rect?.setAttribute('width', taskBarGroup.attribute.width);\n progressRect?.setAttribute('width', (progress / 100) * taskBarGroup.attribute.width);\n } else if (direction === 'right') {\n resizeOrMoveTaskBar(taskBarGroup, 0, 0, taskBarSize, this);\n clipGroupBox.setAttribute('width', taskBarGroup.attribute.width);\n rect?.setAttribute('width', taskBarGroup.attribute.width);\n progressRect?.setAttribute('width', (progress / 100) * taskBarGroup.attribute.width);\n }\n this.showTaskBarHover();\n reCreateCustomNode(this._gantt, taskBarGroup, taskIndex, sub_task_index);\n\n taskBarGroup.setAttribute('zIndex', 0);\n }\n this.resizeTaskBar.resizing = false;\n this.resizeTaskBar.target = null;\n\n if (Math.abs(diff_days) >= 1 && this._gantt.hasListeners(GANTT_EVENT_TYPE.CHANGE_DATE_RANGE)) {\n const newRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.CHANGE_DATE_RANGE, {\n startDate: newRecord[this._gantt.parsedOptions.startDateField],\n endDate: newRecord[this._gantt.parsedOptions.endDateField],\n oldStartDate,\n oldEndDate,\n index: taskIndex,\n record: newRecord\n });\n }\n this._gantt.scenegraph.updateNextFrame();\n }\n }\n dealTaskBarResize(e: FederatedPointerEvent) {\n const x1 = this._gantt.eventManager.lastDragPointerXYOnWindow.x;\n const x2 = e.x;\n const dx = x2 - x1;\n // debugger;\n const taskBarGroup = this._gantt.stateManager.resizeTaskBar.target;\n taskBarGroup.setAttribute('zIndex', 10000);\n const clipGroupBox = taskBarGroup.clipGroupBox;\n const rect = taskBarGroup.barRect;\n const progressRect = taskBarGroup.progressRect;\n const textLabel = taskBarGroup.textLabel;\n\n const progressField = this._gantt.parsedOptions.progressField;\n // const taskIndex = getTaskIndexByY(this.resizeTaskBar.startOffsetY, this._gantt);\n const taskIndex = taskBarGroup.task_index;\n const sub_task_index = taskBarGroup.sub_task_index;\n const taskRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);\n const progress = taskRecord[progressField];\n\n let diffWidth = this._gantt.stateManager.resizeTaskBar.onIconName === 'left' ? -dx : dx;\n let taskBarSize = taskBarGroup.attribute.width + diffWidth;\n if (diffWidth < 0 && taskBarSize <= this._gantt.parsedOptions.colWidthPerDay) {\n diffWidth = this._gantt.parsedOptions.colWidthPerDay - taskBarGroup.attribute.width;\n taskBarSize += diffWidth;\n }\n\n // taskBarGroup.setAttribute('width', taskBarSize);\n // if (this._gantt.stateManager.resizeTaskBar.onIconName === 'left') {\n // taskBarGroup.setAttribute('x', taskBarGroup.attribute.x - diffWidth);\n // }\n resizeOrMoveTaskBar(\n taskBarGroup,\n this._gantt.stateManager.resizeTaskBar.onIconName === 'left' ? -diffWidth : 0,\n 0,\n taskBarSize,\n this\n );\n clipGroupBox.setAttribute('width', taskBarGroup.attribute.width);\n rect?.setAttribute('width', taskBarGroup.attribute.width);\n progressRect?.setAttribute('width', (progress / 100) * taskBarGroup.attribute.width);\n\n textLabel?.setAttribute('maxLineWidth', taskBarSize - TASKBAR_HOVER_ICON_WIDTH * 2);\n\n this.showTaskBarHover();\n\n reCreateCustomNode(this._gantt, taskBarGroup, taskIndex, sub_task_index);\n this._gantt.scenegraph.updateNextFrame();\n //\n }\n //#endregion\n //#region 生成关联线的交互处理\n startCreateDependencyLine(target: Group, x: number, y: number, startOffsetY: number, position: 'left' | 'right') {\n // if (target.name === 'task-bar-hover-shadow') {\n // target = target.parent.parent;\n // }\n this.creatingDenpendencyLink.creating = true;\n this.creatingDenpendencyLink.startClickedPoint = target;\n this.creatingDenpendencyLink.startX = x;\n this.creatingDenpendencyLink.startY = y;\n this.creatingDenpendencyLink.startOffsetY = startOffsetY;\n this.creatingDenpendencyLink.firstTaskBarPosition = position;\n this.highlightLinkPointNode(target);\n }\n isCreatingDependencyLine() {\n return this.creatingDenpendencyLink.creating;\n }\n endCreateDependencyLine(offsetY: number) {\n const taskKeyField = this._gantt.parsedOptions.taskKeyField;\n // const fromTaskIndex = getTaskIndexByY(this.creatingDenpendencyLink.startOffsetY, this._gantt);\n const fromTaskIndex = this.selectedTaskBar.target.task_index;\n const from_sub_task_id = this.selectedTaskBar.target.sub_task_index;\n // const toTaskIndex = getTaskIndexByY(offsetY, this._gantt);\n const toTaskIndex = this.creatingDenpendencyLink.secondTaskBarNode.task_index;\n const to_sub_task_id = this.creatingDenpendencyLink.secondTaskBarNode.sub_task_index;\n const fromRecord = this._gantt.getRecordByIndex(fromTaskIndex, from_sub_task_id);\n const linkedFromTaskKey = fromRecord[taskKeyField];\n const toRecord = this._gantt.getRecordByIndex(toTaskIndex, to_sub_task_id);\n const linkedToTaskKey = toRecord[taskKeyField];\n const link = {\n linkedFromTaskKey,\n linkedToTaskKey,\n type:\n this.creatingDenpendencyLink.firstTaskBarPosition === 'left' &&\n this.creatingDenpendencyLink.secondTaskBarPosition === 'left'\n ? DependencyType.StartToStart\n : this.creatingDenpendencyLink.firstTaskBarPosition === 'right' &&\n this.creatingDenpendencyLink.secondTaskBarPosition === 'left'\n ? DependencyType.FinishToStart\n : this.creatingDenpendencyLink.firstTaskBarPosition === 'right' &&\n this.creatingDenpendencyLink.secondTaskBarPosition === 'right'\n ? DependencyType.FinishToFinish\n : DependencyType.StartToFinish\n };\n this._gantt.addLink(link);\n // const oldRecord = this._gantt.getRecordByIndex(fromTaskIndex);\n this.hideTaskBarSelectedBorder();\n this._gantt.scenegraph.updateNextFrame();\n this.creatingDenpendencyLink.creating = false;\n return link;\n }\n dealCreateDependencyLine(e: FederatedPointerEvent) {\n const x1 = this.creatingDenpendencyLink.startX;\n const y1 = this.creatingDenpendencyLink.startY;\n const x2 = e.x;\n const y2 = e.y;\n const dx = x2 - x1;\n const dy = y2 - y1;\n // debugger;\n const startClickedPoint = this.creatingDenpendencyLink.startClickedPoint;\n const x = startClickedPoint.attribute.x + startClickedPoint.attribute.width / 2;\n const y = startClickedPoint.attribute.y + startClickedPoint.attribute.height / 2;\n this._gantt.scenegraph.taskBar.updateCreatingDependencyLine(x, y, x + dx, y + dy);\n this._gantt.scenegraph.updateNextFrame();\n //\n }\n //#endregion\n //#region 调整左侧任务列表表格整体的宽度\n startResizeTableWidth(e: MouseEvent) {\n this.resizeTableWidth.resizing = true;\n this.resizeTableWidth.lastX = e.pageX;\n //this.resizeTableWidth.startWidth = this._gantt.tableNoFrameWidth;\n }\n isResizingTableWidth() {\n return this.resizeTableWidth.resizing;\n }\n endResizeTableWidth() {\n this.resizeTableWidth.resizing = false;\n }\n\n dealResizeTableWidth(e: MouseEvent) {\n if (!this.resizeTableWidth.resizing) {\n return;\n }\n const deltaX = e.pageX - this.resizeTableWidth.lastX;\n if (Math.abs(deltaX) >= 1) {\n const startWidth = this._gantt.taskTableWidth;\n let width = startWidth + deltaX;\n const maxWidth = Math.min(\n this._gantt.taskListTableInstance.getAllColsWidth() + this._gantt.parsedOptions.outerFrameStyle.borderLineWidth,\n this._gantt.options.taskListTable.maxTableWidth ?? 100000\n );\n const minWidth = Math.max(\n this._gantt.parsedOptions.outerFrameStyle.borderLineWidth,\n this._gantt.options.taskListTable.minTableWidth ?? 0\n );\n if (deltaX > 0 && width > maxWidth) {\n width = maxWidth;\n }\n if (deltaX < 0 && width < minWidth) {\n width = minWidth;\n }\n this._gantt.taskTableWidth = width;\n this._gantt.element.style.left = this._gantt.taskTableWidth ? `${this._gantt.taskTableWidth}px` : '0px';\n this._gantt.verticalSplitResizeLine.style.left = this._gantt.taskTableWidth\n ? `${this._gantt.taskTableWidth - 7}px`\n : '0px';\n this._gantt._resize();\n this.resizeTableWidth.lastX = e.pageX;\n }\n }\n //#endregion\n\n showTaskBarHover() {\n const target = this._gantt.stateManager.hoverTaskBar.target;\n if (target) {\n const x = target.attribute.x;\n const y = target.attribute.y;\n const width = target.attribute.width;\n const height = target.attribute.height;\n this._gantt.scenegraph.taskBar.showHoverBar(x, y, width, height, target);\n this._gantt.scenegraph.updateNextFrame();\n }\n }\n hideTaskBarHover(e: FederatedPointerEvent) {\n this._gantt.stateManager.hoverTaskBar.target = null;\n this._gantt.scenegraph.taskBar.hideHoverBar();\n this._gantt.scenegraph.updateNextFrame();\n }\n\n showTaskBarSelectedBorder(target: GanttTaskBarNode) {\n this._gantt.stateManager.selectedTaskBar.target?.setAttribute('zIndex', 0);\n this._gantt.stateManager.selectedTaskBar.target = target as any as GanttTaskBarNode;\n const linkCreatable = this._gantt.parsedOptions.dependencyLinkCreatable;\n target.setAttribute('zIndex', 10000);\n const x = target.attribute.x;\n const y = target.attribute.y;\n const width = target.attribute.width;\n const height = target.attribute.height;\n this._gantt.scenegraph.taskBar.createSelectedBorder(x, y, width, height, target, linkCreatable);\n this._gantt.scenegraph.updateNextFrame();\n }\n\n hideTaskBarSelectedBorder() {\n this._gantt.stateManager.selectedTaskBar.target?.setAttribute('zIndex', 0);\n this._gantt.stateManager.selectedTaskBar.target = null;\n this._gantt.scenegraph.taskBar.removeSelectedBorder();\n this._gantt.scenegraph.updateNextFrame();\n }\n showSecondTaskBarSelectedBorder() {\n const target = this._gantt.stateManager.creatingDenpendencyLink.secondTaskBarNode;\n const x = target.attribute.x;\n const y = target.attribute.y;\n const width = target.attribute.width;\n const height = target.attribute.height;\n this._gantt.scenegraph.taskBar.createSelectedBorder(x, y, width, height, target, true);\n this._gantt.scenegraph.updateNextFrame();\n }\n hideSecondTaskBarSelectedBorder() {\n this._gantt.stateManager.creatingDenpendencyLink.secondTaskBarNode = null;\n this._gantt.scenegraph.taskBar.removeSecondSelectedBorder();\n this._gantt.scenegraph.updateNextFrame();\n }\n showDependencyLinkSelectedLine() {\n const link = this._gantt.stateManager.selectedDenpendencyLink.link;\n this._gantt.scenegraph.dependencyLink.createSelectedLinkLine(link);\n\n const { taskKeyField, dependencyLinks } = this._gantt.parsedOptions;\n const { linkedToTaskKey, linkedFromTaskKey, type } = link;\n let linkFrom_index;\n let linkFrom_sub_task_index;\n let linkTo_index;\n let linkTo_sub_task_index;\n const linkedToTaskRecord = findRecordByTaskKey(this._gantt.records, taskKeyField, linkedToTaskKey);\n const linkedFromTaskRecord = findRecordByTaskKey(this._gantt.records, taskKeyField, linkedFromTaskKey);\n if (\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline ||\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n linkFrom_index = linkedFromTaskRecord.index[0];\n linkFrom_sub_task_index = linkedFromTaskRecord.index[1];\n linkTo_index = linkedToTaskRecord.index[0];\n linkTo_sub_task_index = linkedToTaskRecord.index[1];\n } else {\n linkFrom_index = this._gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n linkTo_index = this._gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n }\n const fromTaskNode = this._gantt.scenegraph.taskBar.getTaskBarNodeByIndex(\n linkFrom_index,\n linkFrom_sub_task_index\n ) as GanttTaskBarNode;\n this._gantt.scenegraph.taskBar.createSelectedBorder(\n fromTaskNode.attribute.x,\n fromTaskNode.attribute.y,\n fromTaskNode.attribute.width,\n fromTaskNode.attribute.height,\n fromTaskNode,\n false\n );\n const toTaskNode = this._gantt.scenegraph.taskBar.getTaskBarNodeByIndex(\n linkTo_index,\n linkTo_sub_task_index\n ) as GanttTaskBarNode;\n this._gantt.scenegraph.taskBar.createSelectedBorder(\n toTaskNode.attribute.x,\n toTaskNode.attribute.y,\n toTaskNode.attribute.width,\n toTaskNode.attribute.height,\n toTaskNode,\n false\n );\n\n this._gantt.scenegraph.updateNextFrame();\n }\n hideDependencyLinkSelectedLine() {\n this._gantt.stateManager.selectedDenpendencyLink.link = null;\n this._gantt.scenegraph.dependencyLink.removeSelectedLinkLine();\n this._gantt.scenegraph.taskBar.removeSelectedBorder();\n this._gantt.scenegraph.updateNextFrame();\n }\n highlightLinkPointNode(linkPointGroup: Group) {\n if (linkPointGroup?.children.length > 0) {\n const circle = linkPointGroup.children[0];\n circle.setAttribute('fill', this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.fillColor);\n circle.setAttribute('stroke', this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.strokeColor);\n circle.setAttribute('radius', this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.radius);\n circle.setAttribute('lineWidth', this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.strokeWidth);\n this._gantt.scenegraph.updateNextFrame();\n }\n }\n unhighlightLinkPointNode(linkPointGroup: Group) {\n if (linkPointGroup?.children.length > 0) {\n const circle = linkPointGroup.children[0];\n circle.setAttribute('fill', this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.fillColor);\n circle.setAttribute('stroke', this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeColor);\n circle.setAttribute('radius', this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.radius);\n circle.setAttribute('lineWidth', this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeWidth);\n this._gantt.scenegraph.updateNextFrame();\n }\n }\n}\n\nfunction reCreateCustomNode(gantt: Gantt, taskBarGroup: Group, taskIndex: number, sub_task_index?: number) {\n const taskBarCustomLayout = gantt.parsedOptions.taskBarCustomLayout;\n if (taskBarCustomLayout) {\n let customLayoutObj;\n if (typeof taskBarCustomLayout === 'function') {\n const { startDate, endDate, taskDays, progress, taskRecord } = gantt.getTaskInfoByTaskListIndex(\n taskIndex,\n sub_task_index\n );\n const arg = {\n width: taskBarGroup.attribute.width,\n height: taskBarGroup.attribute.height,\n index: taskIndex,\n startDate,\n endDate,\n taskDays,\n progress,\n taskRecord,\n ganttInstance: gantt\n };\n customLayoutObj = taskBarCustomLayout(arg);\n } else {\n customLayoutObj = taskBarCustomLayout;\n }\n if (customLayoutObj) {\n const rootContainer = customLayoutObj.rootContainer;\n rootContainer.name = 'task-bar-custom-render';\n const oldCustomIndex = taskBarGroup.children.findIndex((node: any) => {\n return node.name === 'task-bar-custom-render';\n });\n const oldCustomNode = taskBarGroup.children[oldCustomIndex] as Group;\n taskBarGroup.removeChild(oldCustomNode);\n taskBarGroup.insertInto(rootContainer, oldCustomIndex);\n }\n }\n}\n\nfunction resizeOrMoveTaskBar(target: GanttTaskBarNode, dx: number, dy: number, newWidth: number, state: StateManager) {\n // const taskIndex = getTaskIndexByY(state.moveTaskBar.startOffsetY, state._gantt);\n const taskIndex = target.task_index;\n const sub_task_index = target.sub_task_index;\n if (dx) {\n target.setAttribute('x', target.attribute.x + dx);\n }\n if (state._gantt.parsedOptions.tasksShowMode !== TasksShowMode.Tasks_Separate) {\n if (dy) {\n target.setAttribute('y', target.attribute.y + dy);\n }\n } else {\n dy = 0;\n }\n if (newWidth) {\n target.setAttribute('width', newWidth);\n }\n\n state._gantt.scenegraph.refreshRecordLinkNodes(taskIndex, sub_task_index, target, dy);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/state/state-manager.ts"],"names":[],"mappings":"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","file":"state-manager.js","sourcesContent":["import { clone, cloneDeep, isValid } from '@visactor/vutils';\nimport type { Gantt } from '../Gantt';\nimport type { ITaskLink } from '../ts-types';\nimport { InteractionState, GANTT_EVENT_TYPE, DependencyType, TasksShowMode } from '../ts-types';\nimport type { Group, FederatedPointerEvent, Polygon, Line, Circle } from '@visactor/vtable/es/vrender';\nimport {\n syncEditCellFromTable,\n syncScrollStateFromTable,\n syncScrollStateToTable,\n syncDragOrderFromTable,\n syncTreeChangeFromTable,\n syncSortFromTable\n} from './gantt-table-sync';\nimport {\n clearRecordShowIndex,\n findRecordByTaskKey,\n getSubTaskRowIndexByRecordDate,\n getTaskIndexsByTaskY\n} from '../gantt-helper';\nimport { debounce } from '../tools/debounce';\nimport type { GanttTaskBarNode } from '../scenegraph/gantt-node';\nimport { TASKBAR_HOVER_ICON_WIDTH } from '../scenegraph/task-bar';\nimport { Inertia } from '../tools/inertia';\nimport { updateLinkLinePoints } from '../scenegraph/dependency-link';\nexport class StateManager {\n _gantt: Gantt;\n\n scroll: {\n horizontalBarPos: number;\n verticalBarPos: number;\n };\n fastScrolling: boolean;\n /**\n * Default 默认展示\n * grabing 拖拽中\n * -Resize column 改变列宽\n * -column move 调整列顺序\n * -drag select 拖拽多选\n * Scrolling 滚动中\n */\n interactionState: InteractionState = InteractionState.default;\n\n moveTaskBar: {\n /** x坐标是相对table内坐标 */\n startX: number;\n startY: number;\n deltaX: number;\n deltaY: number;\n targetStartX: number;\n targetStartY: number;\n startOffsetY: number;\n moving: boolean;\n target: GanttTaskBarNode;\n moveTaskBarXSpeed: number;\n moveTaskBarXInertia: Inertia;\n };\n\n hoverTaskBar: {\n /** x坐标是相对table内坐标 */\n startX: number;\n targetStartX: number;\n target: GanttTaskBarNode;\n };\n resizeTaskBar: {\n /** x坐标是相对table内坐标 */\n startX: number;\n startY: number;\n /** 刚开始时 任务条节点的offsetX */\n startOffsetY: number;\n targetStartX: number;\n target: GanttTaskBarNode;\n resizing: boolean;\n onIconName: string;\n };\n selectedTaskBar: {\n target: GanttTaskBarNode;\n };\n resizeTableWidth: {\n /** x坐标是相对table内坐标 */\n lastX: number;\n resizing: boolean;\n };\n\n selectedDenpendencyLink: {\n link: ITaskLink & { vtable_gantt_linkArrowNode: Polygon; vtable_gantt_linkLineNode: Line };\n };\n creatingDenpendencyLink: {\n /** x坐标是相对table内坐标 */\n startX: number;\n startY: number;\n startOffsetY: number;\n targetStartX: number;\n startClickedPoint: Group;\n creating: boolean;\n firstTaskBarPosition: 'left' | 'right';\n secondTaskBarPosition: 'left' | 'right';\n secondTaskBarNode: GanttTaskBarNode;\n lastHighLightLinkPoint: Group;\n };\n // 供滚动重置为default使用\n resetInteractionState = debounce(() => {\n this.updateInteractionState(InteractionState.default);\n }, 100);\n constructor(gantt: Gantt) {\n this._gantt = gantt;\n this.scroll = {\n horizontalBarPos: 0,\n verticalBarPos: 0\n };\n this.moveTaskBar = {\n targetStartX: null,\n targetStartY: null,\n deltaX: 0,\n deltaY: 0,\n startOffsetY: null,\n startX: null,\n startY: null,\n moving: false,\n target: null,\n moveTaskBarXSpeed: 0,\n moveTaskBarXInertia: new Inertia()\n };\n\n this.hoverTaskBar = {\n targetStartX: null,\n startX: null,\n target: null\n };\n\n this.selectedTaskBar = {\n target: null\n };\n this.resizeTaskBar = {\n startOffsetY: null,\n targetStartX: null,\n startX: null,\n startY: null,\n target: null,\n resizing: false,\n onIconName: ''\n };\n this.resizeTableWidth = {\n lastX: null,\n resizing: false\n };\n this.selectedDenpendencyLink = {\n link: null\n };\n this.creatingDenpendencyLink = {\n startClickedPoint: null,\n startX: null,\n startY: null,\n startOffsetY: null,\n targetStartX: null,\n creating: false,\n secondTaskBarNode: null\n };\n\n this.updateVerticalScrollBar = this.updateVerticalScrollBar.bind(this);\n this.updateHorizontalScrollBar = this.updateHorizontalScrollBar.bind(this);\n\n syncScrollStateFromTable(this._gantt);\n syncEditCellFromTable(this._gantt);\n syncDragOrderFromTable(this._gantt);\n syncTreeChangeFromTable(this._gantt);\n syncSortFromTable(this._gantt);\n }\n\n setScrollTop(top: number, triggerEvent: boolean = true) {\n // 矫正top值范围\n const totalHeight = this._gantt.getAllRowsHeight();\n top = Math.max(0, Math.min(top, totalHeight - this._gantt.scenegraph.height));\n top = Math.ceil(top);\n const oldVerticalBarPos = this.scroll.verticalBarPos;\n // this._gantt.stateManager.updateSelectPos(-1, -1);\n this.scroll.verticalBarPos = top;\n if (!isValid(this.scroll.verticalBarPos) || isNaN(this.scroll.verticalBarPos)) {\n this.scroll.verticalBarPos = 0;\n }\n // 设置scenegraph坐标\n this._gantt.scenegraph.setY(-top);\n\n // 更新scrollbar位置\n const yRatio = top / (totalHeight - this._gantt.scenegraph.height);\n this._gantt.scenegraph.scrollbarComponent.updateVerticalScrollBarPos(yRatio);\n\n if (oldVerticalBarPos !== top && triggerEvent) {\n syncScrollStateToTable(this._gantt);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this._gantt.theme.scrollStyle?.width,\n // scrollWidth: this._gantt.theme.scrollStyle?.width,\n // viewHeight: this._gantt.tableNoFrameHeight,\n // viewWidth: this._gantt.tableNoFrameWidth,\n scrollDirection: 'vertical',\n scrollRatioY: yRatio\n });\n }\n }\n get scrollLeft() {\n return this.scroll.horizontalBarPos;\n }\n get scrollTop() {\n return this.scroll.verticalBarPos;\n }\n setScrollLeft(left: number, triggerEvent: boolean = true) {\n // 矫正left值范围\n const totalWidth = this._gantt._getAllColsWidth();\n\n left = Math.max(0, Math.min(left, totalWidth - this._gantt.scenegraph.width));\n left = Math.ceil(left);\n // 滚动期间清空选中清空\n // if (left !== this.scroll.horizontalBarPos) {\n // this.updateHoverPos(-1, -1);\n // }\n // this._gantt.stateManager.updateSelectPos(-1, -1);\n const oldHorizontalBarPos = this.scroll.horizontalBarPos;\n this.scroll.horizontalBarPos = left;\n if (!isValid(this.scroll.horizontalBarPos) || isNaN(this.scroll.horizontalBarPos)) {\n this.scroll.horizontalBarPos = 0;\n }\n\n // 设置scenegraph坐标\n this._gantt.scenegraph.setX(-left);\n\n // 更新scrollbar位置\n const xRatio = left / (totalWidth - this._gantt.scenegraph.width);\n this._gantt.scenegraph.scrollbarComponent.updateHorizontalScrollBarPos(xRatio);\n\n if (oldHorizontalBarPos !== left && triggerEvent) {\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this._gantt.theme.scrollStyle?.width,\n // scrollWidth: this._gantt.theme.scrollStyle?.width,\n // viewHeight: this._gantt.tableNoFrameHeight,\n // viewWidth: this._gantt.tableNoFrameWidth,\n scrollDirection: 'horizontal',\n scrollRatioX: xRatio\n });\n }\n }\n\n updateInteractionState(mode: InteractionState) {\n if (this.interactionState === mode) {\n return;\n }\n const oldState = this.interactionState;\n this.interactionState = mode;\n // 处理mode 更新后逻辑\n if (oldState === InteractionState.scrolling && mode === InteractionState.default) {\n // this.table.scenegraph.stage.disableDirtyBounds();\n // this.table.scenegraph.stage.render();\n // this.table.scenegraph.stage.enableDirtyBounds();\n }\n }\n\n updateVerticalScrollBar(yRatio: number) {\n const totalHeight = this._gantt.getAllRowsHeight();\n const oldVerticalBarPos = this.scroll.verticalBarPos;\n this.scroll.verticalBarPos = Math.ceil(yRatio * (totalHeight - this._gantt.scenegraph.height));\n if (!isValid(this.scroll.verticalBarPos) || isNaN(this.scroll.verticalBarPos)) {\n this.scroll.verticalBarPos = 0;\n }\n this._gantt.scenegraph.setY(-this.scroll.verticalBarPos, yRatio === 1);\n syncScrollStateToTable(this._gantt);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this.table.theme.scrollStyle?.width,\n // scrollWidth: this.table.theme.scrollStyle?.width,\n // viewHeight: this.table.tableNoFrameHeight,\n // viewWidth: this.table.tableNoFrameWidth,\n scrollDirection: 'vertical',\n scrollRatioY: yRatio\n });\n }\n updateHorizontalScrollBar(xRatio: number) {\n const totalWidth = this._gantt._getAllColsWidth();\n const oldHorizontalBarPos = this.scroll.horizontalBarPos;\n this.scroll.horizontalBarPos = Math.ceil(xRatio * (totalWidth - this._gantt.scenegraph.width));\n if (!isValid(this.scroll.horizontalBarPos) || isNaN(this.scroll.horizontalBarPos)) {\n this.scroll.horizontalBarPos = 0;\n }\n this._gantt.scenegraph.setX(-this.scroll.horizontalBarPos, xRatio === 1);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this.table.theme.scrollStyle?.width,\n // scrollWidth: this.table.theme.scrollStyle?.width,\n // viewHeight: this.table.tableNoFrameHeight,\n // viewWidth: this.table.tableNoFrameWidth,\n scrollDirection: 'horizontal',\n scrollRatioY: xRatio\n });\n // this.scroll.horizontalBarPos -= this._gantt.scenegraph.proxy.deltaX;\n // this._gantt.scenegraph.proxy.deltaX = 0;\n\n // this._gantt.fireListeners(TABLE_EVENT_TYPE.SCROLL, {\n // scrollTop: this.scroll.verticalBarPos,\n // scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this._gantt.theme.scrollStyle?.width,\n // scrollWidth: this._gantt.theme.scrollStyle?.width,\n // viewHeight: this._gantt.tableNoFrameHeight,\n // viewWidth: this._gantt.tableNoFrameWidth,\n // scrollDirection: 'horizontal',\n // scrollRatioX: xRatio\n // });\n\n // if (oldHorizontalBarPos !== this.scroll.horizontalBarPos) {\n // this.checkHorizontalScrollBarEnd();\n // }\n }\n\n startMoveTaskBar(target: GanttTaskBarNode, x: number, y: number, offsetY: number) {\n if (target.name === 'task-bar-hover-shadow') {\n target = target.parent;\n }\n this.moveTaskBar.moving = true;\n this.moveTaskBar.target = target;\n this.moveTaskBar.targetStartX = target.attribute.x;\n this.moveTaskBar.targetStartY = target.attribute.y;\n this.moveTaskBar.startX = x;\n this.moveTaskBar.startY = y;\n this.moveTaskBar.startOffsetY = offsetY;\n target.setAttribute('zIndex', 10000);\n }\n\n isMoveingTaskBar() {\n return this.moveTaskBar.moving;\n }\n endMoveTaskBar() {\n if (this.moveTaskBar.moveTaskBarXInertia.isInertiaScrolling()) {\n this.moveTaskBar.moveTaskBarXInertia.endInertia();\n }\n\n const deltaX = this.moveTaskBar.deltaX;\n const deltaY = this.moveTaskBar.deltaY;\n const target = this.moveTaskBar.target;\n if (Math.abs(deltaX) >= 1 || Math.abs(deltaY) >= 1) {\n const days = Math.round(deltaX / this._gantt.parsedOptions.colWidthPerDay);\n\n const correctX = days * this._gantt.parsedOptions.colWidthPerDay;\n const targetEndX = this.moveTaskBar.targetStartX + correctX;\n const targetEndY =\n this.moveTaskBar.targetStartY +\n this._gantt.parsedOptions.rowHeight * Math.round(deltaY / this._gantt.parsedOptions.rowHeight);\n // 判断横向拖动 更新数据的date\n if (Math.abs(days) >= 1) {\n const taskIndex = target.task_index;\n const sub_task_index = target.sub_task_index;\n const oldRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);\n const oldStartDate = oldRecord[this._gantt.parsedOptions.startDateField];\n const oldEndDate = oldRecord[this._gantt.parsedOptions.endDateField];\n this._gantt._updateDateToTaskRecord('move', days, taskIndex, sub_task_index);\n const newRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);\n if (this._gantt.hasListeners(GANTT_EVENT_TYPE.CHANGE_DATE_RANGE)) {\n this._gantt.fireListeners(GANTT_EVENT_TYPE.CHANGE_DATE_RANGE, {\n startDate: newRecord[this._gantt.parsedOptions.startDateField],\n endDate: newRecord[this._gantt.parsedOptions.endDateField],\n oldStartDate,\n oldEndDate,\n index: taskIndex,\n record: newRecord\n });\n }\n }\n if (\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const indexs = getTaskIndexsByTaskY(targetEndY, this._gantt);\n this._gantt._dragOrderTaskRecord(\n target.task_index,\n target.sub_task_index,\n indexs.task_index,\n indexs.sub_task_index\n );\n clearRecordShowIndex(this._gantt.records);\n this._gantt.taskListTableInstance.renderWithRecreateCells();\n this._gantt._syncPropsFromTable();\n this._gantt.scenegraph.refreshTaskBarsAndGrid();\n } else {\n // 判断纵向拖动 处理数据的位置\n if (\n this._gantt.parsedOptions.tasksShowMode !== TasksShowMode.Tasks_Separate &&\n Math.abs(Math.round(deltaY / this._gantt.parsedOptions.rowHeight)) >= 1\n ) {\n const indexs = getTaskIndexsByTaskY(targetEndY, this._gantt);\n this._gantt._dragOrderTaskRecord(\n target.task_index,\n target.sub_task_index,\n indexs.task_index,\n indexs.sub_task_index\n );\n if (this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate) {\n this._gantt.taskListTableInstance.renderWithRecreateCells();\n this._gantt.scenegraph.refreshTaskBarsAndGrid();\n } else {\n this._gantt.scenegraph.taskBar.refresh();\n this._gantt.scenegraph.dependencyLink.refresh();\n }\n // target = this._gantt.scenegraph.taskBar.getTaskBarNodeByIndex(indexs.task_index, indexs.sub_task_index);\n } else {\n resizeOrMoveTaskBar(\n target,\n targetEndX - (target as Group).attribute.x,\n targetEndY - (target as Group).attribute.y,\n null,\n this\n );\n\n // 为了确保拖拽后 保持startDate日期晚的显示在上层不被盖住 这里需要重新排序一下\n if (days > 0) {\n let insertAfterNode = target;\n while (\n (insertAfterNode as Group).nextSibling &&\n (insertAfterNode as Group).nextSibling.attribute.y === (target as Group).attribute.y &&\n (insertAfterNode as Group).nextSibling.record[this._gantt.parsedOptions.startDateField] <=\n target.record[this._gantt.parsedOptions.startDateField]\n ) {\n insertAfterNode = (insertAfterNode as Group).nextSibling;\n }\n if (insertAfterNode !== target) {\n (insertAfterNode as Group).parent.insertAfter(target, insertAfterNode);\n }\n } else if (days < 0) {\n let insertBeforeNode = target;\n while (\n (insertBeforeNode as Group).previousSibling &&\n (insertBeforeNode as Group).previousSibling.attribute.y === (target as Group).attribute.y &&\n (insertBeforeNode as Group).previousSibling.record[this._gantt.parsedOptions.startDateField] >=\n target.record[this._gantt.parsedOptions.startDateField]\n ) {\n insertBeforeNode = (insertBeforeNode as Group).previousSibling;\n }\n if (insertBeforeNode !== target) {\n (insertBeforeNode as Group).parent.insertBefore(target, insertBeforeNode);\n }\n }\n }\n }\n this._gantt.scenegraph.updateNextFrame();\n }\n this.moveTaskBar.moving = false;\n if (this.selectedTaskBar.target !== target) {\n target.setAttribute('zIndex', 0);\n }\n this.moveTaskBar.target = null;\n this.moveTaskBar.deltaX = 0;\n this.moveTaskBar.deltaY = 0;\n this.moveTaskBar.moveTaskBarXSpeed = 0;\n }\n dealTaskBarMove(e: FederatedPointerEvent) {\n const target = this.moveTaskBar.target;\n target.setAttribute('zIndex', 10000);\n // const taskIndex = getTaskIndexByY(this.moveTaskBar.startOffsetY, this._gantt);\n const x1 = this._gantt.eventManager.lastDragPointerXYOnWindow.x;\n const x2 = e.x;\n const dx = x2 - x1;\n const y1 = this._gantt.eventManager.lastDragPointerXYOnWindow.y;\n const y2 = e.y;\n const dy = y2 - y1;\n\n this.moveTaskBar.deltaX += dx;\n this.moveTaskBar.deltaY += dy;\n // target.setAttribute('x', target.attribute.x + dx);\n resizeOrMoveTaskBar(target, dx, dy, null, this);\n\n // 处理向左拖拽任务条时,整体向左滚动\n if (target.attribute.x <= this._gantt.stateManager.scrollLeft && dx < 0) {\n this.moveTaskBar.moveTaskBarXSpeed = -this._gantt.parsedOptions.colWidthPerDay / 100;\n\n this.moveTaskBar.moveTaskBarXInertia.startInertia(this.moveTaskBar.moveTaskBarXSpeed, 0, 1);\n this.moveTaskBar.moveTaskBarXInertia.setScrollHandle((dx: number, dy: number) => {\n this.moveTaskBar.deltaX += dx;\n this.moveTaskBar.deltaY += dy;\n resizeOrMoveTaskBar(target, dx, dy, null, this);\n\n this._gantt.stateManager.setScrollLeft(target.attribute.x);\n if (this._gantt.stateManager.scrollLeft === 0) {\n this.moveTaskBar.moveTaskBarXInertia.endInertia();\n }\n });\n } else if (\n target.attribute.x + target.attribute.width >=\n this._gantt.stateManager.scrollLeft + this._gantt.tableNoFrameWidth &&\n dx > 0\n ) {\n // 处理向右拖拽任务条时,整体向右滚动\n this.moveTaskBar.moveTaskBarXSpeed = this._gantt.parsedOptions.colWidthPerDay / 100;\n\n this.moveTaskBar.moveTaskBarXInertia.startInertia(this.moveTaskBar.moveTaskBarXSpeed, 0, 1);\n this.moveTaskBar.moveTaskBarXInertia.setScrollHandle((dx: number, dy: number) => {\n this.moveTaskBar.deltaX += dx;\n this.moveTaskBar.deltaY += dy;\n resizeOrMoveTaskBar(target, dx, dy, null, this);\n\n this._gantt.stateManager.setScrollLeft(\n target.attribute.x + target.attribute.width - this._gantt.tableNoFrameWidth\n );\n if (this._gantt.stateManager.scrollLeft === this._gantt._getAllColsWidth() - this._gantt.tableNoFrameWidth) {\n this.moveTaskBar.moveTaskBarXInertia.endInertia();\n }\n });\n } else if (this.moveTaskBar.moveTaskBarXInertia.isInertiaScrolling()) {\n this.moveTaskBar.moveTaskBarXInertia.endInertia();\n } else {\n this.moveTaskBar.moveTaskBarXSpeed = 0;\n }\n\n this._gantt.scenegraph.updateNextFrame();\n\n //\n }\n //#region 调整拖拽任务条的大小\n startResizeTaskBar(target: Group, x: number, y: number, startOffsetY: number, onIconName: string) {\n // if (target.name === 'task-bar-hover-shadow') {\n // target = target.parent.parent;\n // }\n this.resizeTaskBar.onIconName = onIconName;\n this.resizeTaskBar.resizing = true;\n this.resizeTaskBar.target = target;\n this.resizeTaskBar.targetStartX = target.attribute.x;\n this.resizeTaskBar.startX = x;\n this.resizeTaskBar.startY = y;\n this.resizeTaskBar.startOffsetY = startOffsetY;\n }\n isResizingTaskBar() {\n return this.resizeTaskBar.resizing;\n }\n endResizeTaskBar(x: number) {\n const direction = this._gantt.stateManager.resizeTaskBar.onIconName;\n const deltaX = x - this.resizeTaskBar.startX;\n if (Math.abs(deltaX) >= 1) {\n let diff_days = Math.round(deltaX / this._gantt.parsedOptions.colWidthPerDay);\n diff_days = direction === 'left' ? -diff_days : diff_days;\n\n const taskBarGroup = this.resizeTaskBar.target;\n const clipGroupBox = taskBarGroup.clipGroupBox;\n const rect = this.resizeTaskBar.target.barRect;\n const progressRect = this.resizeTaskBar.target.progressRect;\n // const taskIndex = getTaskIndexByY(this.resizeTaskBar.startOffsetY, this._gantt);\n const taskIndex = this.resizeTaskBar.target.task_index;\n const sub_task_index = this.resizeTaskBar.target.sub_task_index;\n const oldRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);\n const oldStartDate = oldRecord[this._gantt.parsedOptions.startDateField];\n const oldEndDate = oldRecord[this._gantt.parsedOptions.endDateField];\n const { taskDays, progress } = this._gantt.getTaskInfoByTaskListIndex(taskIndex, sub_task_index);\n if (diff_days < 0 && taskDays + diff_days <= 0) {\n diff_days = 1 - taskDays;\n }\n this._gantt._updateDateToTaskRecord(\n direction === 'left' ? 'start-move' : 'end-move',\n direction === 'left' ? -diff_days : diff_days,\n taskIndex,\n sub_task_index\n );\n if (\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n this._gantt.taskListTableInstance.renderWithRecreateCells();\n this._gantt._syncPropsFromTable();\n this._gantt.scenegraph.refreshTaskBarsAndGrid();\n } else {\n const correctX = (direction === 'left' ? -diff_days : diff_days) * this._gantt.parsedOptions.colWidthPerDay;\n const targetEndX = this.resizeTaskBar.targetStartX + correctX;\n\n const taskBarSize = this._gantt.parsedOptions.colWidthPerDay * (taskDays + diff_days);\n if (direction === 'left') {\n resizeOrMoveTaskBar(taskBarGroup, targetEndX - taskBarGroup.attribute.x, 0, taskBarSize, this);\n clipGroupBox.setAttribute('width', taskBarGroup.attribute.width);\n rect?.setAttribute('width', taskBarGroup.attribute.width);\n progressRect?.setAttribute('width', (progress / 100) * taskBarGroup.attribute.width);\n } else if (direction === 'right') {\n resizeOrMoveTaskBar(taskBarGroup, 0, 0, taskBarSize, this);\n clipGroupBox.setAttribute('width', taskBarGroup.attribute.width);\n rect?.setAttribute('width', taskBarGroup.attribute.width);\n progressRect?.setAttribute('width', (progress / 100) * taskBarGroup.attribute.width);\n }\n this.showTaskBarHover();\n reCreateCustomNode(this._gantt, taskBarGroup, taskIndex, sub_task_index);\n\n taskBarGroup.setAttribute('zIndex', 0);\n }\n this.resizeTaskBar.resizing = false;\n this.resizeTaskBar.target = null;\n\n if (Math.abs(diff_days) >= 1 && this._gantt.hasListeners(GANTT_EVENT_TYPE.CHANGE_DATE_RANGE)) {\n const newRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.CHANGE_DATE_RANGE, {\n startDate: newRecord[this._gantt.parsedOptions.startDateField],\n endDate: newRecord[this._gantt.parsedOptions.endDateField],\n oldStartDate,\n oldEndDate,\n index: taskIndex,\n record: newRecord\n });\n }\n this._gantt.scenegraph.updateNextFrame();\n }\n }\n dealTaskBarResize(e: FederatedPointerEvent) {\n const x1 = this._gantt.eventManager.lastDragPointerXYOnWindow.x;\n const x2 = e.x;\n const dx = x2 - x1;\n // debugger;\n const taskBarGroup = this._gantt.stateManager.resizeTaskBar.target;\n taskBarGroup.setAttribute('zIndex', 10000);\n const clipGroupBox = taskBarGroup.clipGroupBox;\n const rect = taskBarGroup.barRect;\n const progressRect = taskBarGroup.progressRect;\n const textLabel = taskBarGroup.textLabel;\n\n const progressField = this._gantt.parsedOptions.progressField;\n // const taskIndex = getTaskIndexByY(this.resizeTaskBar.startOffsetY, this._gantt);\n const taskIndex = taskBarGroup.task_index;\n const sub_task_index = taskBarGroup.sub_task_index;\n const taskRecord = this._gantt.getRecordByIndex(taskIndex, sub_task_index);\n const progress = taskRecord[progressField];\n\n let diffWidth = this._gantt.stateManager.resizeTaskBar.onIconName === 'left' ? -dx : dx;\n let taskBarSize = taskBarGroup.attribute.width + diffWidth;\n if (diffWidth < 0 && taskBarSize <= this._gantt.parsedOptions.colWidthPerDay) {\n diffWidth = this._gantt.parsedOptions.colWidthPerDay - taskBarGroup.attribute.width;\n taskBarSize += diffWidth;\n }\n\n // taskBarGroup.setAttribute('width', taskBarSize);\n // if (this._gantt.stateManager.resizeTaskBar.onIconName === 'left') {\n // taskBarGroup.setAttribute('x', taskBarGroup.attribute.x - diffWidth);\n // }\n resizeOrMoveTaskBar(\n taskBarGroup,\n this._gantt.stateManager.resizeTaskBar.onIconName === 'left' ? -diffWidth : 0,\n 0,\n taskBarSize,\n this\n );\n clipGroupBox.setAttribute('width', taskBarGroup.attribute.width);\n rect?.setAttribute('width', taskBarGroup.attribute.width);\n progressRect?.setAttribute('width', (progress / 100) * taskBarGroup.attribute.width);\n\n textLabel?.setAttribute('maxLineWidth', taskBarSize - TASKBAR_HOVER_ICON_WIDTH * 2);\n\n this.showTaskBarHover();\n\n reCreateCustomNode(this._gantt, taskBarGroup, taskIndex, sub_task_index);\n this._gantt.scenegraph.updateNextFrame();\n //\n }\n //#endregion\n //#region 生成关联线的交互处理\n startCreateDependencyLine(target: Group, x: number, y: number, startOffsetY: number, position: 'left' | 'right') {\n // if (target.name === 'task-bar-hover-shadow') {\n // target = target.parent.parent;\n // }\n this.creatingDenpendencyLink.creating = true;\n this.creatingDenpendencyLink.startClickedPoint = target;\n this.creatingDenpendencyLink.startX = x;\n this.creatingDenpendencyLink.startY = y;\n this.creatingDenpendencyLink.startOffsetY = startOffsetY;\n this.creatingDenpendencyLink.firstTaskBarPosition = position;\n this.highlightLinkPointNode(target);\n }\n isCreatingDependencyLine() {\n return this.creatingDenpendencyLink.creating;\n }\n endCreateDependencyLine(offsetY: number) {\n const taskKeyField = this._gantt.parsedOptions.taskKeyField;\n // const fromTaskIndex = getTaskIndexByY(this.creatingDenpendencyLink.startOffsetY, this._gantt);\n const fromTaskIndex = this.selectedTaskBar.target.task_index;\n const from_sub_task_id = this.selectedTaskBar.target.sub_task_index;\n // const toTaskIndex = getTaskIndexByY(offsetY, this._gantt);\n const toTaskIndex = this.creatingDenpendencyLink.secondTaskBarNode.task_index;\n const to_sub_task_id = this.creatingDenpendencyLink.secondTaskBarNode.sub_task_index;\n const fromRecord = this._gantt.getRecordByIndex(fromTaskIndex, from_sub_task_id);\n const linkedFromTaskKey = fromRecord[taskKeyField];\n const toRecord = this._gantt.getRecordByIndex(toTaskIndex, to_sub_task_id);\n const linkedToTaskKey = toRecord[taskKeyField];\n const link = {\n linkedFromTaskKey,\n linkedToTaskKey,\n type:\n this.creatingDenpendencyLink.firstTaskBarPosition === 'left' &&\n this.creatingDenpendencyLink.secondTaskBarPosition === 'left'\n ? DependencyType.StartToStart\n : this.creatingDenpendencyLink.firstTaskBarPosition === 'right' &&\n this.creatingDenpendencyLink.secondTaskBarPosition === 'left'\n ? DependencyType.FinishToStart\n : this.creatingDenpendencyLink.firstTaskBarPosition === 'right' &&\n this.creatingDenpendencyLink.secondTaskBarPosition === 'right'\n ? DependencyType.FinishToFinish\n : DependencyType.StartToFinish\n };\n this._gantt.addLink(link);\n // const oldRecord = this._gantt.getRecordByIndex(fromTaskIndex);\n this.hideTaskBarSelectedBorder();\n this._gantt.scenegraph.updateNextFrame();\n this.creatingDenpendencyLink.creating = false;\n return link;\n }\n dealCreateDependencyLine(e: FederatedPointerEvent) {\n const x1 = this.creatingDenpendencyLink.startX;\n const y1 = this.creatingDenpendencyLink.startY;\n const x2 = e.x;\n const y2 = e.y;\n const dx = x2 - x1;\n const dy = y2 - y1;\n // debugger;\n const startClickedPoint = this.creatingDenpendencyLink.startClickedPoint;\n const x = startClickedPoint.attribute.x + startClickedPoint.attribute.width / 2;\n const y = startClickedPoint.attribute.y + startClickedPoint.attribute.height / 2;\n this._gantt.scenegraph.taskBar.updateCreatingDependencyLine(x, y, x + dx, y + dy);\n this._gantt.scenegraph.updateNextFrame();\n //\n }\n //#endregion\n //#region 调整左侧任务列表表格整体的宽度\n startResizeTableWidth(e: MouseEvent) {\n this.resizeTableWidth.resizing = true;\n this.resizeTableWidth.lastX = e.pageX;\n //this.resizeTableWidth.startWidth = this._gantt.tableNoFrameWidth;\n }\n isResizingTableWidth() {\n return this.resizeTableWidth.resizing;\n }\n endResizeTableWidth() {\n this.resizeTableWidth.resizing = false;\n }\n\n dealResizeTableWidth(e: MouseEvent) {\n if (!this.resizeTableWidth.resizing) {\n return;\n }\n const deltaX = e.pageX - this.resizeTableWidth.lastX;\n if (Math.abs(deltaX) >= 1) {\n const startWidth = this._gantt.taskTableWidth;\n let width = startWidth + deltaX;\n const maxWidth = Math.min(\n this._gantt.taskListTableInstance.getAllColsWidth() + this._gantt.parsedOptions.outerFrameStyle.borderLineWidth,\n this._gantt.options.taskListTable.maxTableWidth ?? 100000\n );\n const minWidth = Math.max(\n this._gantt.parsedOptions.outerFrameStyle.borderLineWidth,\n this._gantt.options.taskListTable.minTableWidth ?? 0\n );\n if (deltaX > 0 && width > maxWidth) {\n width = maxWidth;\n }\n if (deltaX < 0 && width < minWidth) {\n width = minWidth;\n }\n this._gantt.taskTableWidth = width;\n this._gantt.element.style.left = this._gantt.taskTableWidth ? `${this._gantt.taskTableWidth}px` : '0px';\n this._gantt.verticalSplitResizeLine.style.left = this._gantt.taskTableWidth\n ? `${this._gantt.taskTableWidth - 7}px`\n : '0px';\n this._gantt._resize();\n this.resizeTableWidth.lastX = e.pageX;\n }\n }\n //#endregion\n\n showTaskBarHover() {\n const target = this._gantt.stateManager.hoverTaskBar.target;\n if (target) {\n const x = target.attribute.x;\n const y = target.attribute.y;\n const width = target.attribute.width;\n const height = target.attribute.height;\n this._gantt.scenegraph.taskBar.showHoverBar(x, y, width, height, target);\n this._gantt.scenegraph.updateNextFrame();\n }\n }\n hideTaskBarHover(e: FederatedPointerEvent) {\n this._gantt.stateManager.hoverTaskBar.target = null;\n this._gantt.scenegraph.taskBar.hideHoverBar();\n this._gantt.scenegraph.updateNextFrame();\n }\n\n showTaskBarSelectedBorder(target: GanttTaskBarNode) {\n this._gantt.stateManager.selectedTaskBar.target?.setAttribute('zIndex', 0);\n this._gantt.stateManager.selectedTaskBar.target = target as any as GanttTaskBarNode;\n const linkCreatable = this._gantt.parsedOptions.dependencyLinkCreatable;\n target.setAttribute('zIndex', 10000);\n const x = target.attribute.x;\n const y = target.attribute.y;\n const width = target.attribute.width;\n const height = target.attribute.height;\n this._gantt.scenegraph.taskBar.createSelectedBorder(x, y, width, height, target, linkCreatable);\n this._gantt.scenegraph.updateNextFrame();\n }\n\n hideTaskBarSelectedBorder() {\n this._gantt.stateManager.selectedTaskBar.target?.setAttribute('zIndex', 0);\n this._gantt.stateManager.selectedTaskBar.target = null;\n this._gantt.scenegraph.taskBar.removeSelectedBorder();\n this._gantt.scenegraph.updateNextFrame();\n }\n showSecondTaskBarSelectedBorder() {\n const target = this._gantt.stateManager.creatingDenpendencyLink.secondTaskBarNode;\n const x = target.attribute.x;\n const y = target.attribute.y;\n const width = target.attribute.width;\n const height = target.attribute.height;\n this._gantt.scenegraph.taskBar.createSelectedBorder(x, y, width, height, target, true);\n this._gantt.scenegraph.updateNextFrame();\n }\n hideSecondTaskBarSelectedBorder() {\n this._gantt.stateManager.creatingDenpendencyLink.secondTaskBarNode = null;\n this._gantt.scenegraph.taskBar.removeSecondSelectedBorder();\n this._gantt.scenegraph.updateNextFrame();\n }\n showDependencyLinkSelectedLine() {\n const link = this._gantt.stateManager.selectedDenpendencyLink.link;\n this._gantt.scenegraph.dependencyLink.createSelectedLinkLine(link);\n\n const { taskKeyField, dependencyLinks } = this._gantt.parsedOptions;\n const { linkedToTaskKey, linkedFromTaskKey, type } = link;\n let linkFrom_index;\n let linkFrom_sub_task_index;\n let linkTo_index;\n let linkTo_sub_task_index;\n const linkedToTaskRecord = findRecordByTaskKey(this._gantt.records, taskKeyField, linkedToTaskKey);\n const linkedFromTaskRecord = findRecordByTaskKey(this._gantt.records, taskKeyField, linkedFromTaskKey);\n if (\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline ||\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n this._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n linkFrom_index = linkedFromTaskRecord.index[0];\n linkFrom_sub_task_index = linkedFromTaskRecord.index[1];\n linkTo_index = linkedToTaskRecord.index[0];\n linkTo_sub_task_index = linkedToTaskRecord.index[1];\n } else {\n linkFrom_index = this._gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n linkTo_index = this._gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n }\n const fromTaskNode = this._gantt.scenegraph.taskBar.getTaskBarNodeByIndex(\n linkFrom_index,\n linkFrom_sub_task_index\n ) as GanttTaskBarNode;\n this._gantt.scenegraph.taskBar.createSelectedBorder(\n fromTaskNode.attribute.x,\n fromTaskNode.attribute.y,\n fromTaskNode.attribute.width,\n fromTaskNode.attribute.height,\n fromTaskNode,\n false\n );\n const toTaskNode = this._gantt.scenegraph.taskBar.getTaskBarNodeByIndex(\n linkTo_index,\n linkTo_sub_task_index\n ) as GanttTaskBarNode;\n this._gantt.scenegraph.taskBar.createSelectedBorder(\n toTaskNode.attribute.x,\n toTaskNode.attribute.y,\n toTaskNode.attribute.width,\n toTaskNode.attribute.height,\n toTaskNode,\n false\n );\n\n this._gantt.scenegraph.updateNextFrame();\n }\n hideDependencyLinkSelectedLine() {\n this._gantt.stateManager.selectedDenpendencyLink.link = null;\n this._gantt.scenegraph.dependencyLink.removeSelectedLinkLine();\n this._gantt.scenegraph.taskBar.removeSelectedBorder();\n this._gantt.scenegraph.updateNextFrame();\n }\n highlightLinkPointNode(linkPointGroup: Group) {\n if (linkPointGroup?.children.length > 0) {\n const circle = linkPointGroup.children[0];\n circle.setAttribute('fill', this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.fillColor);\n circle.setAttribute('stroke', this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.strokeColor);\n circle.setAttribute('radius', this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.radius);\n circle.setAttribute('lineWidth', this._gantt.parsedOptions.dependencyLinkLineCreatingPointStyle.strokeWidth);\n this._gantt.scenegraph.updateNextFrame();\n }\n }\n unhighlightLinkPointNode(linkPointGroup: Group) {\n if (linkPointGroup?.children.length > 0) {\n const circle = linkPointGroup.children[0];\n circle.setAttribute('fill', this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.fillColor);\n circle.setAttribute('stroke', this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeColor);\n circle.setAttribute('radius', this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.radius);\n circle.setAttribute('lineWidth', this._gantt.parsedOptions.dependencyLinkLineCreatePointStyle.strokeWidth);\n this._gantt.scenegraph.updateNextFrame();\n }\n }\n}\n\nfunction reCreateCustomNode(gantt: Gantt, taskBarGroup: Group, taskIndex: number, sub_task_index?: number) {\n const taskBarCustomLayout = gantt.parsedOptions.taskBarCustomLayout;\n if (taskBarCustomLayout) {\n let customLayoutObj;\n if (typeof taskBarCustomLayout === 'function') {\n const { startDate, endDate, taskDays, progress, taskRecord } = gantt.getTaskInfoByTaskListIndex(\n taskIndex,\n sub_task_index\n );\n const arg = {\n width: taskBarGroup.attribute.width,\n height: taskBarGroup.attribute.height,\n index: taskIndex,\n startDate,\n endDate,\n taskDays,\n progress,\n taskRecord,\n ganttInstance: gantt\n };\n customLayoutObj = taskBarCustomLayout(arg);\n } else {\n customLayoutObj = taskBarCustomLayout;\n }\n if (customLayoutObj) {\n const rootContainer = customLayoutObj.rootContainer;\n rootContainer.name = 'task-bar-custom-render';\n const barGroup = taskBarGroup.children.find((node: any) => node.name === 'task-bar-group');\n if (barGroup) {\n const oldCustomIndex = barGroup.children.findIndex((node: any) => {\n return node.name === 'task-bar-custom-render';\n });\n const oldCustomNode = barGroup.children[oldCustomIndex] as Group;\n if (oldCustomNode) {\n barGroup.removeChild(oldCustomNode);\n barGroup.insertInto(rootContainer, oldCustomIndex);\n }\n }\n }\n }\n}\n\nfunction resizeOrMoveTaskBar(target: GanttTaskBarNode, dx: number, dy: number, newWidth: number, state: StateManager) {\n // const taskIndex = getTaskIndexByY(state.moveTaskBar.startOffsetY, state._gantt);\n const taskIndex = target.task_index;\n const sub_task_index = target.sub_task_index;\n if (dx) {\n target.setAttribute('x', target.attribute.x + dx);\n }\n if (state._gantt.parsedOptions.tasksShowMode !== TasksShowMode.Tasks_Separate) {\n if (dy) {\n target.setAttribute('y', target.attribute.y + dy);\n }\n } else {\n dy = 0;\n }\n if (newWidth) {\n target.setAttribute('width', newWidth);\n }\n\n state._gantt.scenegraph.refreshRecordLinkNodes(taskIndex, sub_task_index, target, dy);\n}\n"]}
|