@visactor/vtable-gantt 1.13.2-alpha.0 → 1.13.2
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/Gantt.d.ts +5 -3
- package/cjs/Gantt.js +21 -3
- package/cjs/Gantt.js.map +1 -1
- package/cjs/data/DataSource.d.ts +0 -2
- package/cjs/data/DataSource.js +2 -5
- package/cjs/data/DataSource.js.map +1 -1
- package/cjs/event/event-manager.js +20 -5
- package/cjs/event/event-manager.js.map +1 -1
- package/cjs/gantt-helper.d.ts +2 -0
- package/cjs/gantt-helper.js +24 -2
- package/cjs/gantt-helper.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/scenegraph/grid.d.ts +2 -1
- package/cjs/scenegraph/grid.js +63 -20
- package/cjs/scenegraph/grid.js.map +1 -1
- package/cjs/scenegraph/scenegraph.d.ts +1 -0
- package/cjs/scenegraph/scenegraph.js +7 -0
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/scenegraph/task-bar.js +19 -4
- package/cjs/scenegraph/task-bar.js.map +1 -1
- package/cjs/tools/isx.d.ts +1 -1
- package/cjs/ts-types/gantt-engine.d.ts +21 -4
- package/cjs/ts-types/gantt-engine.js.map +1 -1
- package/dist/vtable-gantt.js +234 -52
- package/dist/vtable-gantt.min.js +2 -2
- package/es/Gantt.d.ts +5 -3
- package/es/Gantt.js +21 -4
- package/es/Gantt.js.map +1 -1
- package/es/data/DataSource.d.ts +0 -2
- package/es/data/DataSource.js +2 -4
- package/es/data/DataSource.js.map +1 -1
- package/es/event/event-manager.js +20 -5
- package/es/event/event-manager.js.map +1 -1
- package/es/gantt-helper.d.ts +2 -0
- package/es/gantt-helper.js +18 -0
- package/es/gantt-helper.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/scenegraph/grid.d.ts +2 -1
- package/es/scenegraph/grid.js +62 -20
- package/es/scenegraph/grid.js.map +1 -1
- package/es/scenegraph/scenegraph.d.ts +1 -0
- package/es/scenegraph/scenegraph.js +7 -0
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/scenegraph/task-bar.js +19 -4
- package/es/scenegraph/task-bar.js.map +1 -1
- package/es/tools/isx.d.ts +1 -1
- package/es/ts-types/gantt-engine.d.ts +21 -4
- package/es/ts-types/gantt-engine.js.map +1 -1
- package/package.json +6 -6
|
@@ -57,6 +57,13 @@ class Scenegraph {
|
|
|
57
57
|
this.scrollbarComponent = new scroll_bar_1.ScrollBarComponent(this._gantt), this.stage.defaultLayer.addChild(this.scrollbarComponent.hScrollBar),
|
|
58
58
|
this.stage.defaultLayer.addChild(this.scrollbarComponent.vScrollBar), this.dragOrderLine = new drag_order_line_1.DragOrderLine(this);
|
|
59
59
|
}
|
|
60
|
+
updateSceneGraph() {
|
|
61
|
+
const gantt = this._gantt;
|
|
62
|
+
let width, height;
|
|
63
|
+
this.tableGroupWidth = gantt.tableNoFrameWidth, this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight),
|
|
64
|
+
"node" === env_1.Env.mode || (vrender_1.vglobal.setEnv("browser"), width = gantt.canvas.width,
|
|
65
|
+
height = gantt.canvas.height), this.stage.resize(width, height), this.refreshAll();
|
|
66
|
+
}
|
|
60
67
|
afterCreateSceneGraph() {
|
|
61
68
|
this.scrollbarComponent.updateScrollBar(), (0, scroll_1.bindScrollBarListener)(this._gantt.eventManager);
|
|
62
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/scenegraph.ts"],"names":[],"mappings":"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","file":"scenegraph.js","sourcesContent":["import type { Stage } from '@visactor/vtable/es/vrender';\nimport { container, Group, vglobal, createStage } from '@visactor/vtable/es/vrender';\nimport { Grid } from './grid';\nimport type { Gantt } from '../Gantt';\nimport { Env } from '../env';\nimport { ScrollBarComponent } from './scroll-bar';\nimport { bindScrollBarListener } from '../event/scroll';\nimport { TimelineHeader } from './timeline-header';\nimport { TaskBar } from './task-bar';\nimport { MarkLine } from './mark-line';\nimport { FrameBorder } from './frame-border';\nimport { findRecordByTaskKey, getTaskIndexByY, getTaskIndexsByTaskY } from '../gantt-helper';\nimport graphicContribution from './graphic';\nimport { TaskCreationButton } from './task-creation-button';\nimport { DependencyLink, updateLinkLinePoints } from './dependency-link';\nimport { DragOrderLine } from './drag-order-line';\nimport type { GanttTaskBarNode } from './gantt-node';\nimport { TasksShowMode } from '../ts-types';\ncontainer.load(graphicContribution);\nexport class Scenegraph {\n dateStepWidth: number;\n rowHeight: number;\n _scales: {}[];\n timelineHeader: TimelineHeader;\n grid: Grid;\n dependencyLink: DependencyLink;\n taskBar: TaskBar;\n _gantt: Gantt;\n tableGroup: Group;\n scrollbarComponent: ScrollBarComponent;\n markLine: MarkLine;\n dragOrderLine: DragOrderLine;\n frameBorder: FrameBorder;\n taskCreationButton: TaskCreationButton;\n stage: Stage;\n tableGroupWidth: number;\n tableGroupHeight: number;\n constructor(gantt: Gantt) {\n this._gantt = gantt;\n this.tableGroupWidth = gantt.tableNoFrameWidth;\n this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight);\n let width;\n let height;\n if (Env.mode === 'node') {\n // vglobal.setEnv('node', gantt.options.modeParams);\n // width = table.canvasWidth;\n // height = table.canvasHeight;\n } else {\n vglobal.setEnv('browser');\n width = gantt.canvas.width;\n height = gantt.canvas.height;\n }\n this.stage = createStage({\n canvas: gantt.canvas,\n width,\n height,\n disableDirtyBounds: false,\n background: gantt.parsedOptions.underlayBackgroundColor,\n // dpr: gantt.internalProps.pixelRatio,\n enableLayout: true,\n autoRender: false,\n context: {\n appName: 'vtable'\n },\n pluginList: ['poptipForText']\n // afterRender: () => {\n // this._gantt.fireListeners('after_render', null);\n // }\n });\n (this.stage as any).gantt = this._gantt;\n (this.stage as any).table = this._gantt; // 为了使用bindDebugTool\n this.stage.defaultLayer.setTheme({\n group: {\n boundsPadding: 0,\n strokeBoundsBuffer: 0,\n lineJoin: 'round'\n },\n text: {\n ignoreBuf: true\n }\n });\n this.initSceneGraph();\n }\n\n initSceneGraph() {\n const scene = this;\n\n scene.tableGroup = new Group({\n x: scene._gantt.tableX,\n y: scene._gantt.tableY,\n width: this.tableGroupWidth,\n height: this.tableGroupHeight,\n clip: true,\n pickable: false\n });\n scene.stage.defaultLayer.add(scene.tableGroup);\n scene.tableGroup.name = 'table';\n // 初始化顶部时间线表头部分\n scene.timelineHeader = new TimelineHeader(scene);\n\n // 初始化网格线组件\n scene.grid = new Grid(scene);\n // 初始化任务条线组件\n scene.dependencyLink = new DependencyLink(scene);\n // 初始化任务条线组件\n scene.taskBar = new TaskBar(scene);\n\n // 初始化标记线组件\n scene.markLine = new MarkLine(scene);\n\n // 初始化边框\n scene.frameBorder = new FrameBorder(scene);\n\n // 初始化滚动条组件\n scene.scrollbarComponent = new ScrollBarComponent(scene._gantt);\n scene.stage.defaultLayer.addChild(scene.scrollbarComponent.hScrollBar);\n scene.stage.defaultLayer.addChild(scene.scrollbarComponent.vScrollBar);\n\n //初始化换位交互标记线\n scene.dragOrderLine = new DragOrderLine(scene);\n }\n\n afterCreateSceneGraph() {\n this.scrollbarComponent.updateScrollBar();\n bindScrollBarListener(this._gantt.eventManager);\n }\n\n refreshAll() {\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroupWidth = this._gantt.tableNoFrameWidth;\n this.tableGroup.setAttribute('height', this.tableGroupHeight);\n this.tableGroup.setAttribute('width', this.tableGroupWidth);\n this.timelineHeader.refresh();\n this.grid.refresh();\n this.taskBar.refresh();\n this.dependencyLink.refresh();\n this.markLine.refresh();\n this.dependencyLink.refresh();\n this.frameBorder.resize();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n\n refreshTaskBars() {\n // this.timelineHeader.refresh();\n // this.grid.refresh();\n this.dependencyLink.refresh();\n this.taskBar.refresh();\n // this.markLine.refresh();\n // this.frameBorder.refresh();\n // this.scrollbarComponent.refresh();\n this.updateNextFrame();\n }\n refreshTaskBarsAndGrid() {\n this._gantt.verticalSplitResizeLine.style.height = this._gantt.drawHeight + 'px'; //'100%';\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroup.setAttribute('height', this.tableGroupHeight);\n // this.timelineHeader.refresh();\n this.grid.refresh();\n this.taskBar.refresh();\n this.dependencyLink.refresh();\n this.markLine.refresh();\n this.frameBorder.resize();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n\n updateTableSize() {\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroupWidth = this._gantt.tableNoFrameWidth;\n this.tableGroup.setAttributes({\n x: this._gantt.tableX,\n y: this._gantt.tableY,\n width: this._gantt.tableNoFrameWidth,\n height: this.tableGroupHeight\n } as any);\n this.grid.resize();\n this.taskBar.resize();\n this.markLine.refresh();\n this.frameBorder.resize();\n }\n\n /**\n * @description: 绘制场景树\n * @param {any} element\n * @param {CellRange} visibleCoord\n * @return {*}\n */\n renderSceneGraph() {\n this.stage.render();\n }\n\n /**\n * @description: 触发下一帧渲染\n * @return {*}\n */\n updateNextFrame() {\n this.stage.renderNextFrame();\n }\n get width(): number {\n return this.tableGroup.attribute?.width ?? 0;\n }\n\n get height(): number {\n return this.tableGroup.attribute?.height ?? 0;\n }\n\n get x(): number {\n return this.tableGroup.attribute?.x ?? 0;\n }\n\n get y(): number {\n return this.tableGroup.attribute?.y ?? 0;\n }\n\n /**\n * @description: 设置表格的x位置,滚动中使用\n * @param {number} x\n * @return {*}\n */\n setX(x: number, isEnd = false) {\n this.timelineHeader.setX(x);\n this.grid.setX(x);\n this.taskBar.setX(x);\n this.dependencyLink.setX(x);\n this.markLine.setX(x);\n this.updateNextFrame();\n // this._gantt.scenegraph.proxy.setX(-x, isEnd);\n }\n\n /**\n * @description: 更新表格的y位置,滚动中使用\n * @param {number} y\n * @return {*}\n */\n setY(y: number, isEnd = false) {\n // this._gantt.scenegraph.proxy.setY(-y, isEnd);\n this.grid.setY(y);\n this.taskBar.setY(y);\n this.dependencyLink.setY(y);\n this.updateNextFrame();\n }\n\n setPixelRatio(pixelRatio: number) {\n // this.stage.setDpr(pixelRatio);\n // 这里因为本时刻部分节点有更新bounds标记,直接render回导致开启DirtyBounds,无法完整重绘画布;\n // 所以这里先关闭DirtyBounds,等待下一帧再开启\n this.stage.disableDirtyBounds();\n this.stage.window.setDpr(pixelRatio);\n this.stage.render();\n this.stage.enableDirtyBounds();\n }\n\n resize() {\n this.updateTableSize();\n // this.updateBorderSizeAndPosition();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n release() {\n this.stage.release();\n }\n\n showTaskCreationButton(x: number, y: number, dateIndex: number) {\n if (!this.taskCreationButton) {\n this.taskCreationButton = new TaskCreationButton(this._gantt.scenegraph);\n }\n this.taskCreationButton.show(x, y, this._gantt.getDateColWidth(dateIndex), this._gantt.parsedOptions.rowHeight);\n this.updateNextFrame();\n }\n\n hideTaskCreationButton() {\n if (this.taskCreationButton) {\n this.taskCreationButton.hide();\n this.updateNextFrame();\n }\n }\n refreshRecordLinkNodes(taskIndex: number, sub_task_index: number, target: GanttTaskBarNode, dy: number = 0) {\n const gantt: Gantt = this._gantt;\n const record = gantt.getRecordByIndex(taskIndex, sub_task_index);\n const vtable_gantt_linkedTo = record.vtable_gantt_linkedTo;\n const vtable_gantt_linkedFrom = record.vtable_gantt_linkedFrom;\n for (let i = 0; i < vtable_gantt_linkedTo?.length; i++) {\n const link = vtable_gantt_linkedTo[i];\n const linkLineNode = link.vtable_gantt_linkLineNode;\n const lineArrowNode = link.vtable_gantt_linkArrowNode;\n\n const { linkedToTaskKey, linkedFromTaskKey, type } = link;\n const { taskKeyField, minDate } = gantt.parsedOptions;\n const linkedFromTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedFromTaskKey);\n const linkedToTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedToTaskKey);\n // const { startDate: linkedToTaskStartDate, endDate: linkedToTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskIndex);\n // const taskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n // const { startDate: linkedFromTaskStartDate, endDate: linkedFromTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskShowIndex);\n\n let linkedToTaskStartDate;\n let linkedToTaskEndDate;\n let linkedToTaskTaskDays;\n // let linkedToTaskTaskRecord;\n let linkedFromTaskStartDate;\n let linkedFromTaskEndDate;\n let linkedFromTaskTaskDays;\n // let linkedFromTaskTaskRecord;\n\n let linkedToTaskShowIndex;\n let linkedFromTaskShowIndex;\n let diffY: number;\n if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n linkedFromTaskShowIndex = linkedFromTaskRecord.index[0];\n // linkedToTaskShowIndex = linkedToTaskRecord.index[0];\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex = beforeRowCountLinkedTo;\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n\n const taskbarHeight = gantt.parsedOptions.taskBarStyle.width;\n diffY = target.attribute.y + taskbarHeight / 2 - (linkedToTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else if (\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, linkedFromTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex =\n beforeRowCountLinkedFrom +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedFromTaskRecord.record.vtable_gantt_showIndex\n : linkedFromTaskRecord.index[1]);\n // const beforeRowCountLinkedTo =\n // gantt.getRowsHeightByIndex(0, linkedToTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n // linkedToTaskShowIndex = beforeRowCountLinkedTo + linkedToTaskRecord.index[1];\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex =\n beforeRowCountLinkedTo +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedToTaskRecord.record.vtable_gantt_showIndex\n : new_indexs.sub_task_index);\n\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n\n const taskbarHeight = gantt.parsedOptions.taskBarStyle.width;\n diffY = target.attribute.y + taskbarHeight / 2 - (linkedToTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else {\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n if (linkedFromTaskShowIndex === -1 || linkedToTaskShowIndex === -1) {\n continue;\n }\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex));\n }\n const { linePoints, arrowPoints } = updateLinkLinePoints(\n type,\n linkedFromTaskStartDate,\n linkedFromTaskEndDate,\n linkedFromTaskShowIndex,\n linkedFromTaskTaskDays,\n null,\n 0,\n linkedToTaskStartDate,\n linkedToTaskEndDate,\n linkedToTaskShowIndex,\n linkedToTaskTaskDays,\n target,\n diffY ?? 0,\n this._gantt\n );\n linkLineNode.setAttribute('points', linePoints);\n lineArrowNode.setAttribute('points', arrowPoints);\n }\n\n for (let i = 0; i < vtable_gantt_linkedFrom?.length; i++) {\n const link = vtable_gantt_linkedFrom[i];\n const linkLineNode = link.vtable_gantt_linkLineNode;\n const lineArrowNode = link.vtable_gantt_linkArrowNode;\n\n const { linkedToTaskKey, linkedFromTaskKey, type } = link;\n const { taskKeyField, minDate } = gantt.parsedOptions;\n const linkedToTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedToTaskKey);\n const linkedFromTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedFromTaskKey);\n // const { startDate: linkedFromTaskStartDate, endDate: linkedFromTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskIndex);\n // const taskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n // const { startDate: linkedToTaskStartDate, endDate: linkedToTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskShowIndex);\n\n let linkedToTaskStartDate;\n let linkedToTaskEndDate;\n let linkedToTaskTaskDays;\n let linkedFromTaskStartDate;\n let linkedFromTaskEndDate;\n let linkedFromTaskTaskDays;\n\n let linkedToTaskShowIndex;\n let linkedFromTaskShowIndex;\n let diffY: number;\n if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex = beforeRowCountLinkedFrom;\n\n // linkedFromTaskShowIndex = linkedFromTaskRecord.index[0];\n linkedToTaskShowIndex = linkedToTaskRecord.index[0];\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n const taskbarHeight = gantt.parsedOptions.taskBarStyle.width;\n diffY =\n target.attribute.y + taskbarHeight / 2 - (linkedFromTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else if (\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n // const beforeRowCountLinkedFrom =\n // gantt.getRowsHeightByIndex(0, linkedFromTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n // linkedFromTaskShowIndex = beforeRowCountLinkedFrom + linkedFromTaskRecord.index[1];\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex =\n beforeRowCountLinkedFrom +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedFromTaskRecord.record.vtable_gantt_showIndex\n : new_indexs.sub_task_index);\n\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, linkedToTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex =\n beforeRowCountLinkedTo +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedToTaskRecord.record.vtable_gantt_showIndex\n : linkedToTaskRecord.index[1]);\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n const taskbarHeight = gantt.parsedOptions.taskBarStyle.width;\n diffY =\n target.attribute.y + taskbarHeight / 2 - (linkedFromTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else {\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n if (linkedFromTaskShowIndex === -1 || linkedToTaskShowIndex === -1) {\n continue;\n }\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex));\n }\n const { linePoints, arrowPoints } = updateLinkLinePoints(\n type,\n linkedFromTaskStartDate,\n linkedFromTaskEndDate,\n linkedFromTaskShowIndex,\n linkedFromTaskTaskDays,\n\n target,\n diffY ?? 0,\n linkedToTaskStartDate,\n linkedToTaskEndDate,\n linkedToTaskShowIndex,\n linkedToTaskTaskDays,\n null,\n 0,\n this._gantt\n );\n\n linkLineNode.setAttribute('points', linePoints);\n lineArrowNode.setAttribute('points', arrowPoints);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/scenegraph.ts"],"names":[],"mappings":"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","file":"scenegraph.js","sourcesContent":["import type { Stage } from '@visactor/vtable/es/vrender';\nimport { container, Group, vglobal, createStage } from '@visactor/vtable/es/vrender';\nimport { Grid } from './grid';\nimport type { Gantt } from '../Gantt';\nimport { Env } from '../env';\nimport { ScrollBarComponent } from './scroll-bar';\nimport { bindScrollBarListener } from '../event/scroll';\nimport { TimelineHeader } from './timeline-header';\nimport { TaskBar } from './task-bar';\nimport { MarkLine } from './mark-line';\nimport { FrameBorder } from './frame-border';\nimport { findRecordByTaskKey, getTaskIndexByY, getTaskIndexsByTaskY } from '../gantt-helper';\nimport graphicContribution from './graphic';\nimport { TaskCreationButton } from './task-creation-button';\nimport { DependencyLink, updateLinkLinePoints } from './dependency-link';\nimport { DragOrderLine } from './drag-order-line';\nimport type { GanttTaskBarNode } from './gantt-node';\nimport { TasksShowMode } from '../ts-types';\ncontainer.load(graphicContribution);\nexport class Scenegraph {\n dateStepWidth: number;\n rowHeight: number;\n _scales: {}[];\n timelineHeader: TimelineHeader;\n grid: Grid;\n dependencyLink: DependencyLink;\n taskBar: TaskBar;\n _gantt: Gantt;\n tableGroup: Group;\n scrollbarComponent: ScrollBarComponent;\n markLine: MarkLine;\n dragOrderLine: DragOrderLine;\n frameBorder: FrameBorder;\n taskCreationButton: TaskCreationButton;\n stage: Stage;\n tableGroupWidth: number;\n tableGroupHeight: number;\n constructor(gantt: Gantt) {\n this._gantt = gantt;\n this.tableGroupWidth = gantt.tableNoFrameWidth;\n this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight);\n let width;\n let height;\n if (Env.mode === 'node') {\n // vglobal.setEnv('node', gantt.options.modeParams);\n // width = table.canvasWidth;\n // height = table.canvasHeight;\n } else {\n vglobal.setEnv('browser');\n width = gantt.canvas.width;\n height = gantt.canvas.height;\n }\n this.stage = createStage({\n canvas: gantt.canvas,\n width,\n height,\n disableDirtyBounds: false,\n background: gantt.parsedOptions.underlayBackgroundColor,\n // dpr: gantt.internalProps.pixelRatio,\n enableLayout: true,\n autoRender: false,\n context: {\n appName: 'vtable'\n },\n pluginList: ['poptipForText']\n // afterRender: () => {\n // this._gantt.fireListeners('after_render', null);\n // }\n });\n (this.stage as any).gantt = this._gantt;\n (this.stage as any).table = this._gantt; // 为了使用bindDebugTool\n this.stage.defaultLayer.setTheme({\n group: {\n boundsPadding: 0,\n strokeBoundsBuffer: 0,\n lineJoin: 'round'\n },\n text: {\n ignoreBuf: true\n }\n });\n this.initSceneGraph();\n }\n\n initSceneGraph() {\n const scene = this;\n\n scene.tableGroup = new Group({\n x: scene._gantt.tableX,\n y: scene._gantt.tableY,\n width: this.tableGroupWidth,\n height: this.tableGroupHeight,\n clip: true,\n pickable: false\n });\n scene.stage.defaultLayer.add(scene.tableGroup);\n scene.tableGroup.name = 'table';\n // 初始化顶部时间线表头部分\n scene.timelineHeader = new TimelineHeader(scene);\n\n // 初始化网格线组件\n scene.grid = new Grid(scene);\n // 初始化任务条线组件\n scene.dependencyLink = new DependencyLink(scene);\n // 初始化任务条线组件\n scene.taskBar = new TaskBar(scene);\n\n // 初始化标记线组件\n scene.markLine = new MarkLine(scene);\n\n // 初始化边框\n scene.frameBorder = new FrameBorder(scene);\n\n // 初始化滚动条组件\n scene.scrollbarComponent = new ScrollBarComponent(scene._gantt);\n scene.stage.defaultLayer.addChild(scene.scrollbarComponent.hScrollBar);\n scene.stage.defaultLayer.addChild(scene.scrollbarComponent.vScrollBar);\n\n //初始化换位交互标记线\n scene.dragOrderLine = new DragOrderLine(scene);\n }\n updateSceneGraph() {\n const gantt = this._gantt;\n this.tableGroupWidth = gantt.tableNoFrameWidth;\n this.tableGroupHeight = Math.min(gantt.tableNoFrameHeight, gantt.drawHeight);\n let width;\n let height;\n if (Env.mode === 'node') {\n } else {\n vglobal.setEnv('browser');\n width = gantt.canvas.width;\n height = gantt.canvas.height;\n }\n this.stage.resize(width, height);\n this.refreshAll();\n }\n\n afterCreateSceneGraph() {\n this.scrollbarComponent.updateScrollBar();\n bindScrollBarListener(this._gantt.eventManager);\n }\n\n refreshAll() {\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroupWidth = this._gantt.tableNoFrameWidth;\n this.tableGroup.setAttribute('height', this.tableGroupHeight);\n this.tableGroup.setAttribute('width', this.tableGroupWidth);\n this.timelineHeader.refresh();\n this.grid.refresh();\n this.taskBar.refresh();\n this.dependencyLink.refresh();\n this.markLine.refresh();\n this.dependencyLink.refresh();\n this.frameBorder.resize();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n\n refreshTaskBars() {\n // this.timelineHeader.refresh();\n // this.grid.refresh();\n this.dependencyLink.refresh();\n this.taskBar.refresh();\n // this.markLine.refresh();\n // this.frameBorder.refresh();\n // this.scrollbarComponent.refresh();\n this.updateNextFrame();\n }\n refreshTaskBarsAndGrid() {\n this._gantt.verticalSplitResizeLine.style.height = this._gantt.drawHeight + 'px'; //'100%';\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroup.setAttribute('height', this.tableGroupHeight);\n // this.timelineHeader.refresh();\n this.grid.refresh();\n this.taskBar.refresh();\n this.dependencyLink.refresh();\n this.markLine.refresh();\n this.frameBorder.resize();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n\n updateTableSize() {\n this.tableGroupHeight = Math.min(this._gantt.tableNoFrameHeight, this._gantt.drawHeight);\n this.tableGroupWidth = this._gantt.tableNoFrameWidth;\n this.tableGroup.setAttributes({\n x: this._gantt.tableX,\n y: this._gantt.tableY,\n width: this._gantt.tableNoFrameWidth,\n height: this.tableGroupHeight\n } as any);\n this.grid.resize();\n this.taskBar.resize();\n this.markLine.refresh();\n this.frameBorder.resize();\n }\n\n /**\n * @description: 绘制场景树\n * @param {any} element\n * @param {CellRange} visibleCoord\n * @return {*}\n */\n renderSceneGraph() {\n this.stage.render();\n }\n\n /**\n * @description: 触发下一帧渲染\n * @return {*}\n */\n updateNextFrame() {\n this.stage.renderNextFrame();\n }\n get width(): number {\n return this.tableGroup.attribute?.width ?? 0;\n }\n\n get height(): number {\n return this.tableGroup.attribute?.height ?? 0;\n }\n\n get x(): number {\n return this.tableGroup.attribute?.x ?? 0;\n }\n\n get y(): number {\n return this.tableGroup.attribute?.y ?? 0;\n }\n\n /**\n * @description: 设置表格的x位置,滚动中使用\n * @param {number} x\n * @return {*}\n */\n setX(x: number, isEnd = false) {\n this.timelineHeader.setX(x);\n this.grid.setX(x);\n this.taskBar.setX(x);\n this.dependencyLink.setX(x);\n this.markLine.setX(x);\n this.updateNextFrame();\n // this._gantt.scenegraph.proxy.setX(-x, isEnd);\n }\n\n /**\n * @description: 更新表格的y位置,滚动中使用\n * @param {number} y\n * @return {*}\n */\n setY(y: number, isEnd = false) {\n // this._gantt.scenegraph.proxy.setY(-y, isEnd);\n this.grid.setY(y);\n this.taskBar.setY(y);\n this.dependencyLink.setY(y);\n this.updateNextFrame();\n }\n\n setPixelRatio(pixelRatio: number) {\n // this.stage.setDpr(pixelRatio);\n // 这里因为本时刻部分节点有更新bounds标记,直接render回导致开启DirtyBounds,无法完整重绘画布;\n // 所以这里先关闭DirtyBounds,等待下一帧再开启\n this.stage.disableDirtyBounds();\n this.stage.window.setDpr(pixelRatio);\n this.stage.render();\n this.stage.enableDirtyBounds();\n }\n\n resize() {\n this.updateTableSize();\n // this.updateBorderSizeAndPosition();\n this.scrollbarComponent.updateScrollBar();\n this.updateNextFrame();\n }\n release() {\n this.stage.release();\n }\n\n showTaskCreationButton(x: number, y: number, dateIndex: number) {\n if (!this.taskCreationButton) {\n this.taskCreationButton = new TaskCreationButton(this._gantt.scenegraph);\n }\n this.taskCreationButton.show(x, y, this._gantt.getDateColWidth(dateIndex), this._gantt.parsedOptions.rowHeight);\n this.updateNextFrame();\n }\n\n hideTaskCreationButton() {\n if (this.taskCreationButton) {\n this.taskCreationButton.hide();\n this.updateNextFrame();\n }\n }\n refreshRecordLinkNodes(taskIndex: number, sub_task_index: number, target: GanttTaskBarNode, dy: number = 0) {\n const gantt: Gantt = this._gantt;\n const record = gantt.getRecordByIndex(taskIndex, sub_task_index);\n const vtable_gantt_linkedTo = record.vtable_gantt_linkedTo;\n const vtable_gantt_linkedFrom = record.vtable_gantt_linkedFrom;\n for (let i = 0; i < vtable_gantt_linkedTo?.length; i++) {\n const link = vtable_gantt_linkedTo[i];\n const linkLineNode = link.vtable_gantt_linkLineNode;\n const lineArrowNode = link.vtable_gantt_linkArrowNode;\n\n const { linkedToTaskKey, linkedFromTaskKey, type } = link;\n const { taskKeyField, minDate } = gantt.parsedOptions;\n const linkedFromTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedFromTaskKey);\n const linkedToTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedToTaskKey);\n // const { startDate: linkedToTaskStartDate, endDate: linkedToTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskIndex);\n // const taskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n // const { startDate: linkedFromTaskStartDate, endDate: linkedFromTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskShowIndex);\n\n let linkedToTaskStartDate;\n let linkedToTaskEndDate;\n let linkedToTaskTaskDays;\n // let linkedToTaskTaskRecord;\n let linkedFromTaskStartDate;\n let linkedFromTaskEndDate;\n let linkedFromTaskTaskDays;\n // let linkedFromTaskTaskRecord;\n\n let linkedToTaskShowIndex;\n let linkedFromTaskShowIndex;\n let diffY: number;\n if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n linkedFromTaskShowIndex = linkedFromTaskRecord.index[0];\n // linkedToTaskShowIndex = linkedToTaskRecord.index[0];\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex = beforeRowCountLinkedTo;\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n\n const taskbarHeight = gantt.parsedOptions.taskBarStyle.width;\n diffY = target.attribute.y + taskbarHeight / 2 - (linkedToTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else if (\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, linkedFromTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex =\n beforeRowCountLinkedFrom +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedFromTaskRecord.record.vtable_gantt_showIndex\n : linkedFromTaskRecord.index[1]);\n // const beforeRowCountLinkedTo =\n // gantt.getRowsHeightByIndex(0, linkedToTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n // linkedToTaskShowIndex = beforeRowCountLinkedTo + linkedToTaskRecord.index[1];\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex =\n beforeRowCountLinkedTo +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedToTaskRecord.record.vtable_gantt_showIndex\n : new_indexs.sub_task_index);\n\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n\n const taskbarHeight = gantt.parsedOptions.taskBarStyle.width;\n diffY = target.attribute.y + taskbarHeight / 2 - (linkedToTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else {\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n if (linkedFromTaskShowIndex === -1 || linkedToTaskShowIndex === -1) {\n continue;\n }\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex));\n }\n const { linePoints, arrowPoints } = updateLinkLinePoints(\n type,\n linkedFromTaskStartDate,\n linkedFromTaskEndDate,\n linkedFromTaskShowIndex,\n linkedFromTaskTaskDays,\n null,\n 0,\n linkedToTaskStartDate,\n linkedToTaskEndDate,\n linkedToTaskShowIndex,\n linkedToTaskTaskDays,\n target,\n diffY ?? 0,\n this._gantt\n );\n linkLineNode.setAttribute('points', linePoints);\n lineArrowNode.setAttribute('points', arrowPoints);\n }\n\n for (let i = 0; i < vtable_gantt_linkedFrom?.length; i++) {\n const link = vtable_gantt_linkedFrom[i];\n const linkLineNode = link.vtable_gantt_linkLineNode;\n const lineArrowNode = link.vtable_gantt_linkArrowNode;\n\n const { linkedToTaskKey, linkedFromTaskKey, type } = link;\n const { taskKeyField, minDate } = gantt.parsedOptions;\n const linkedToTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedToTaskKey);\n const linkedFromTaskRecord = findRecordByTaskKey(gantt.records, taskKeyField, linkedFromTaskKey);\n // const { startDate: linkedFromTaskStartDate, endDate: linkedFromTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskIndex);\n // const taskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n // const { startDate: linkedToTaskStartDate, endDate: linkedToTaskEndDate } =\n // gantt.getTaskInfoByTaskListIndex(taskShowIndex);\n\n let linkedToTaskStartDate;\n let linkedToTaskEndDate;\n let linkedToTaskTaskDays;\n let linkedFromTaskStartDate;\n let linkedFromTaskEndDate;\n let linkedFromTaskTaskDays;\n\n let linkedToTaskShowIndex;\n let linkedFromTaskShowIndex;\n let diffY: number;\n if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Inline) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex = beforeRowCountLinkedFrom;\n\n // linkedFromTaskShowIndex = linkedFromTaskRecord.index[0];\n linkedToTaskShowIndex = linkedToTaskRecord.index[0];\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n const taskbarHeight = gantt.parsedOptions.taskBarStyle.width;\n diffY =\n target.attribute.y + taskbarHeight / 2 - (linkedFromTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else if (\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ) {\n const new_indexs = getTaskIndexsByTaskY(target.attribute.y + dy, gantt);\n // const beforeRowCountLinkedFrom =\n // gantt.getRowsHeightByIndex(0, linkedFromTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n // linkedFromTaskShowIndex = beforeRowCountLinkedFrom + linkedFromTaskRecord.index[1];\n const beforeRowCountLinkedFrom =\n gantt.getRowsHeightByIndex(0, new_indexs.task_index - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedFromTaskShowIndex =\n beforeRowCountLinkedFrom +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedFromTaskRecord.record.vtable_gantt_showIndex\n : new_indexs.sub_task_index);\n\n const beforeRowCountLinkedTo =\n gantt.getRowsHeightByIndex(0, linkedToTaskRecord.index[0] - 1) / gantt.parsedOptions.rowHeight; // 耦合了listTableOption的customComputeRowHeight\n linkedToTaskShowIndex =\n beforeRowCountLinkedTo +\n (gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange ||\n gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? linkedToTaskRecord.record.vtable_gantt_showIndex\n : linkedToTaskRecord.index[1]);\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskRecord.index[0], linkedToTaskRecord.index[1]));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskRecord.index[0], linkedFromTaskRecord.index[1]));\n const taskbarHeight = gantt.parsedOptions.taskBarStyle.width;\n diffY =\n target.attribute.y + taskbarHeight / 2 - (linkedFromTaskShowIndex + 0.5) * gantt.parsedOptions.rowHeight;\n } else {\n linkedFromTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedFromTaskRecord.index);\n linkedToTaskShowIndex = gantt.getTaskShowIndexByRecordIndex(linkedToTaskRecord.index);\n if (linkedFromTaskShowIndex === -1 || linkedToTaskShowIndex === -1) {\n continue;\n }\n ({\n startDate: linkedToTaskStartDate,\n endDate: linkedToTaskEndDate,\n taskDays: linkedToTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedToTaskShowIndex));\n ({\n startDate: linkedFromTaskStartDate,\n endDate: linkedFromTaskEndDate,\n taskDays: linkedFromTaskTaskDays\n } = gantt.getTaskInfoByTaskListIndex(linkedFromTaskShowIndex));\n }\n const { linePoints, arrowPoints } = updateLinkLinePoints(\n type,\n linkedFromTaskStartDate,\n linkedFromTaskEndDate,\n linkedFromTaskShowIndex,\n linkedFromTaskTaskDays,\n\n target,\n diffY ?? 0,\n linkedToTaskStartDate,\n linkedToTaskEndDate,\n linkedToTaskShowIndex,\n linkedToTaskTaskDays,\n null,\n 0,\n this._gantt\n );\n\n linkLineNode.setAttribute('points', linePoints);\n lineArrowNode.setAttribute('points', arrowPoints);\n }\n }\n}\n"]}
|
|
@@ -151,7 +151,6 @@ class TaskBar {
|
|
|
151
151
|
width: 100,
|
|
152
152
|
height: 100,
|
|
153
153
|
clip: !0,
|
|
154
|
-
cursor: this._scene._gantt.parsedOptions.taskBarMoveable ? "grab" : "default",
|
|
155
154
|
pickable: !1,
|
|
156
155
|
cornerRadius: null !== (_b = null !== (_a = this._scene._gantt.parsedOptions.taskBarHoverStyle.cornerRadius) && void 0 !== _a ? _a : this._scene._gantt.parsedOptions.taskBarStyle.cornerRadius) && void 0 !== _b ? _b : 0,
|
|
157
156
|
fill: this._scene._gantt.parsedOptions.taskBarHoverStyle.barOverlayColor,
|
|
@@ -205,9 +204,25 @@ class TaskBar {
|
|
|
205
204
|
target && "task-bar" === target.name && target.appendChild(this.hoverBarGroup),
|
|
206
205
|
this.hoverBarGroup.setAttribute("x", 0), this.hoverBarGroup.setAttribute("y", 0),
|
|
207
206
|
this.hoverBarGroup.setAttribute("width", width), this.hoverBarGroup.setAttribute("height", height),
|
|
208
|
-
this.hoverBarGroup.setAttribute("visibleAll", !0), this.hoverBarLeftIcon
|
|
209
|
-
this.
|
|
210
|
-
|
|
207
|
+
this.hoverBarGroup.setAttribute("visibleAll", !0), this.hoverBarLeftIcon.setAttribute("visible", !1),
|
|
208
|
+
this.hoverBarRightIcon.setAttribute("visible", !1);
|
|
209
|
+
const {startDate: startDate, endDate: endDate, taskRecord: taskRecord} = this._scene._gantt.getTaskInfoByTaskListIndex(target.task_index, target.sub_task_index);
|
|
210
|
+
let leftResizable = !0, rightResizable = !0;
|
|
211
|
+
if ("function" == typeof this._scene._gantt.parsedOptions.taskBarResizable) {
|
|
212
|
+
const arg = {
|
|
213
|
+
index: target.task_index,
|
|
214
|
+
startDate: startDate,
|
|
215
|
+
endDate: endDate,
|
|
216
|
+
taskRecord: taskRecord,
|
|
217
|
+
ganttInstance: this._scene._gantt
|
|
218
|
+
}, resizableResult = this._scene._gantt.parsedOptions.taskBarResizable(arg);
|
|
219
|
+
Array.isArray(resizableResult) ? [leftResizable, rightResizable] = resizableResult : (leftResizable = resizableResult,
|
|
220
|
+
rightResizable = resizableResult);
|
|
221
|
+
} else Array.isArray(this._scene._gantt.parsedOptions.taskBarResizable) ? [leftResizable, rightResizable] = this._scene._gantt.parsedOptions.taskBarResizable : (leftResizable = this._scene._gantt.parsedOptions.taskBarResizable,
|
|
222
|
+
rightResizable = this._scene._gantt.parsedOptions.taskBarResizable);
|
|
223
|
+
leftResizable && this.hoverBarLeftIcon.setAttribute("visible", !0), rightResizable && this.hoverBarRightIcon.setAttribute("visible", !0),
|
|
224
|
+
this.hoverBarLeftIcon && (this.hoverBarLeftIcon.setAttribute("x", 0), this.hoverBarLeftIcon.setAttribute("y", Math.ceil(height / 10)),
|
|
225
|
+
this.hoverBarLeftIcon.setAttribute("width", exports.TASKBAR_HOVER_ICON_WIDTH), this.hoverBarLeftIcon.setAttribute("height", height - 2 * Math.ceil(height / 10)),
|
|
211
226
|
this.hoverBarRightIcon.setAttribute("x", width - exports.TASKBAR_HOVER_ICON_WIDTH),
|
|
212
227
|
this.hoverBarRightIcon.setAttribute("y", Math.ceil(height / 10)), this.hoverBarRightIcon.setAttribute("width", exports.TASKBAR_HOVER_ICON_WIDTH),
|
|
213
228
|
this.hoverBarRightIcon.setAttribute("height", height - 2 * Math.ceil(height / 10)));
|
|
@@ -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 {\n computeCountToTimeScale,\n createDateAtLastHour,\n createDateAtMidnight,\n parseStringTemplate,\n toBoxArray\n} 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.getAllDateColsWidth(),\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 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 { unit, step } = this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0];\n const taskBarSize =\n computeCountToTimeScale(endDate, startDate, unit, step, 1) * this._scene._gantt.parsedOptions.timelineColWidth;\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(this._scene._gantt, this._scene._gantt.records[index])\n : this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? computeRowsCountByRecordDateForCompact(this._scene._gantt, this._scene._gantt.records[index])\n : 1;\n const oneTaskHeigth = this._scene._gantt.getRowHeightByIndex(index) / subTaskShowRowCount;\n const x =\n computeCountToTimeScale(startDate, this._scene._gantt.parsedOptions.minDate, unit, step) *\n this._scene._gantt.parsedOptions.timelineColWidth;\n const barGroupBox = new GanttTaskBarNode({\n x,\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"]}
|
|
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 {\n computeCountToTimeScale,\n createDateAtLastHour,\n createDateAtMidnight,\n parseStringTemplate,\n toBoxArray\n} 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.getAllDateColsWidth(),\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 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 { unit, step } = this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0];\n const taskBarSize =\n computeCountToTimeScale(endDate, startDate, unit, step, 1) * this._scene._gantt.parsedOptions.timelineColWidth;\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(this._scene._gantt, this._scene._gantt.records[index])\n : this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact\n ? computeRowsCountByRecordDateForCompact(this._scene._gantt, this._scene._gantt.records[index])\n : 1;\n const oneTaskHeigth = this._scene._gantt.getRowHeightByIndex(index) / subTaskShowRowCount;\n const x =\n computeCountToTimeScale(startDate, this._scene._gantt.parsedOptions.minDate, unit, step) *\n this._scene._gantt.parsedOptions.timelineColWidth;\n const barGroupBox = new GanttTaskBarNode({\n x,\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 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 this.hoverBarLeftIcon.setAttribute('visible', false);\n this.hoverBarRightIcon.setAttribute('visible', false);\n\n const { startDate, endDate, taskRecord } = this._scene._gantt.getTaskInfoByTaskListIndex(\n target.task_index,\n target.sub_task_index\n );\n\n let leftResizable = true;\n let rightResizable = true;\n if (typeof this._scene._gantt.parsedOptions.taskBarResizable === 'function') {\n const arg = {\n index: target.task_index,\n startDate,\n endDate,\n taskRecord,\n ganttInstance: this._scene._gantt\n };\n const resizableResult = this._scene._gantt.parsedOptions.taskBarResizable(arg);\n if (Array.isArray(resizableResult)) {\n [leftResizable, rightResizable] = resizableResult;\n } else {\n leftResizable = resizableResult;\n rightResizable = resizableResult;\n }\n } else if (Array.isArray(this._scene._gantt.parsedOptions.taskBarResizable)) {\n [leftResizable, rightResizable] = this._scene._gantt.parsedOptions.taskBarResizable;\n } else {\n leftResizable = this._scene._gantt.parsedOptions.taskBarResizable;\n rightResizable = this._scene._gantt.parsedOptions.taskBarResizable;\n }\n if (leftResizable) {\n this.hoverBarLeftIcon.setAttribute('visible', true);\n }\n if (rightResizable) {\n this.hoverBarRightIcon.setAttribute('visible', true);\n }\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"]}
|
package/cjs/tools/isx.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const judgeType: (value: any) => "symbol" | "error" | "
|
|
1
|
+
export declare const judgeType: (value: any) => "symbol" | "error" | "function" | "undefined" | "object" | "array" | "string" | "number" | "regExp" | "boolean" | "date" | "null" | "document" | "global";
|
|
2
2
|
export declare const isIt: (v: any, type: string) => boolean;
|
|
3
3
|
export declare const isObject: (v: any) => boolean;
|
|
4
4
|
export declare const isFunction: (v: any) => boolean;
|
|
@@ -25,8 +25,8 @@ export interface ITimelineHeaderStyle {
|
|
|
25
25
|
}
|
|
26
26
|
export interface IGrid {
|
|
27
27
|
backgroundColor?: string;
|
|
28
|
-
verticalLine?: ILineStyle;
|
|
29
|
-
horizontalLine?: ILineStyle;
|
|
28
|
+
verticalLine?: ILineStyle | ((args: GridVerticalLineStyleArgumentType) => ILineStyle);
|
|
29
|
+
horizontalLine?: ILineStyle | ((args: GridHorizontalLineStyleArgumentType) => ILineStyle);
|
|
30
30
|
}
|
|
31
31
|
export interface GanttConstructorOptions {
|
|
32
32
|
records?: any[];
|
|
@@ -50,8 +50,8 @@ export interface GanttConstructorOptions {
|
|
|
50
50
|
labelTextStyle?: ITaskBarLabelTextStyle;
|
|
51
51
|
barStyle?: ITaskBarStyle;
|
|
52
52
|
customLayout?: ITaskBarCustomLayout;
|
|
53
|
-
resizable?: boolean;
|
|
54
|
-
moveable?: boolean;
|
|
53
|
+
resizable?: boolean | [boolean, boolean] | ((interactionArgs: TaskBarInteractionArgumentType) => boolean | [boolean, boolean]);
|
|
54
|
+
moveable?: boolean | ((interactionArgs: TaskBarInteractionArgumentType) => boolean);
|
|
55
55
|
dragOrder?: boolean;
|
|
56
56
|
hoverBarStyle?: ITaskBarHoverStyle;
|
|
57
57
|
selectedBarStyle?: ITaskBarSelectedStyle;
|
|
@@ -160,6 +160,13 @@ export type DateFormatArgumentType = {
|
|
|
160
160
|
startDate: Date;
|
|
161
161
|
endDate: Date;
|
|
162
162
|
};
|
|
163
|
+
export type TaskBarInteractionArgumentType = {
|
|
164
|
+
taskRecord: string;
|
|
165
|
+
index: number;
|
|
166
|
+
startDate: Date;
|
|
167
|
+
endDate: Date;
|
|
168
|
+
ganttInstance: Gantt;
|
|
169
|
+
};
|
|
163
170
|
export type TaskBarCustomLayoutArgumentType = {
|
|
164
171
|
width: number;
|
|
165
172
|
height: number;
|
|
@@ -194,6 +201,16 @@ export type IDateCustomLayoutObj = {
|
|
|
194
201
|
renderDefaultText?: boolean;
|
|
195
202
|
};
|
|
196
203
|
export type IDateCustomLayout = (args: DateCustomLayoutArgumentType) => IDateCustomLayoutObj;
|
|
204
|
+
export type GridVerticalLineStyleArgumentType = {
|
|
205
|
+
index: number;
|
|
206
|
+
dateIndex: number;
|
|
207
|
+
date?: Date;
|
|
208
|
+
ganttInstance: Gantt;
|
|
209
|
+
};
|
|
210
|
+
export type GridHorizontalLineStyleArgumentType = {
|
|
211
|
+
index: number;
|
|
212
|
+
ganttInstance: Gantt;
|
|
213
|
+
};
|
|
197
214
|
export type TaskCreationCustomLayoutArgumentType = {
|
|
198
215
|
width: number;
|
|
199
216
|
height: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ts-types/gantt-engine.ts"],"names":[],"mappings":";;;AA6UA,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,mDAAiC,CAAA;IACjC,iDAA+B,CAAA;IAC/B,qDAAmC,CAAA;IACnC,mDAAiC,CAAA;AACnC,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB;AACD,IAAY,aAWX;AAXD,WAAY,aAAa;IAEvB,kDAAiC,CAAA;IAEjC,sDAAqC,CAAA;IAErC,0DAAyC,CAAA;IAEzC,wDAAuC,CAAA;IAEvC,wDAAuC,CAAA;AACzC,CAAC,EAXW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAWxB","file":"gantt-engine.js","sourcesContent":["import type { ColumnsDefine, TYPES, ListTableConstructorOptions } from '@visactor/vtable';\nimport type { Group } from '@visactor/vtable/es/vrender';\nimport type { Gantt } from '../Gantt';\nexport type LayoutObjectId = number | string;\n\nexport interface ITimelineDateInfo {\n days: number;\n timeScaleCount: number;\n endDate: Date;\n startDate: Date;\n title: string;\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n unit: 'year' | 'month' | 'quarter' | 'week' | 'day' | 'hour' | 'minute' | 'second';\n step: number;\n}\n\nexport interface ITimelineHeaderStyle {\n padding?: number | number[];\n fontSize?: number;\n fontWeight?: string;\n color?: string;\n strokeColor?: string;\n // backgroundColor?: string;\n textAlign?: 'center' | 'end' | 'left' | 'right' | 'start'; // 设置单元格内文字的水平对齐方式\n textOverflow?: string;\n textBaseline?: 'alphabetic' | 'bottom' | 'middle' | 'top'; // 设置单元格内文字的垂直对齐方式\n textStick?: boolean;\n}\nexport interface IGrid {\n backgroundColor?: string;\n verticalLine?: ILineStyle;\n horizontalLine?: ILineStyle;\n}\n//#region gantt\nexport interface GanttConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n\n /** 左侧任务信息表格相关配置 */\n taskListTable?: {\n /** 左侧任务列表信息占用的宽度。如果设置为'auto'表示将所有列完全展示 */\n tableWidth?: 'auto' | number;\n /** 左侧任务列表 最小宽度 */\n minTableWidth?: number;\n /** 左侧任务列表 最大宽度 */\n maxTableWidth?: number;\n } & Omit<\n //ListTable表格可配置的属性\n ListTableConstructorOptions,\n | 'container'\n | 'records'\n | 'defaultHeaderRowHeight'\n | 'defaultRowHeight'\n | 'overscrollBehavior'\n | 'rowSeriesNumber'\n | 'scrollStyle'\n | 'pixelRatio'\n | 'title'\n >;\n /** 时间刻度 */\n timelineHeader: {\n backgroundColor?: string;\n colWidth?: number;\n /** 垂直间隔线样式 */\n verticalLine?: ILineStyle;\n /** 水平间隔线样式 */\n horizontalLine?: ILineStyle;\n scales: ITimelineScale[];\n };\n\n /** 任务条相关配置及样式 */\n taskBar?: {\n /** 任务开始日期对应的数据字段名 默认按'startDate' */\n startDateField?: string;\n /** 任务结束日期对应的数据字段名 默认按'endDate' */\n endDateField?: string;\n /** 任务进度对应的数据字段名 */\n progressField?: string;\n /** 任务条展示文字。可以配置固定文本 或者 字符串模版`${fieldName}` */\n labelText?: ITaskBarLabelText;\n /** 任务条文字样式 */\n labelTextStyle?: ITaskBarLabelTextStyle;\n /** 任务条样式 */\n barStyle?: ITaskBarStyle;\n /** 自定义布局渲染 */\n customLayout?: ITaskBarCustomLayout;\n /** 任务条是否可调整大小 */\n resizable?: boolean;\n /** 任务条是否可移动 */\n moveable?: boolean;\n /** 任务条是否可以被拖拽来改变顺序 */\n dragOrder?: boolean;\n /** 任务条hover时的样式 */\n hoverBarStyle?: ITaskBarHoverStyle;\n /** 任务条选择时的样式 TODO */\n selectedBarStyle?: ITaskBarSelectedStyle;\n /** 任务条是否可选择,默认为true */\n selectable?: boolean;\n /** 任务条右键菜单 */\n menu?: {\n /** 右键菜单。代替原来的option.contextmenu */\n contextMenuItems?:\n | TYPES.MenuListItem[]\n | ((\n record: string,\n index: number,\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number,\n startDate: Date,\n endDate: Date\n ) => TYPES.MenuListItem[]);\n };\n /** 数据没有排期时,可通过创建任务条排期。默认为true */\n scheduleCreatable?: boolean;\n /** 针对没有分配日期的任务,可以显示出创建按钮 */\n scheduleCreation?: {\n buttonStyle: ILineStyle & {\n cornerRadius?: number;\n backgroundColor?: string;\n };\n /** 任务条创建按钮的自定义渲染 */\n customLayout?: ITaskCreationCustomLayout;\n };\n };\n /** 数据条目可唯一标识的字段名,默认为'id' */\n taskKeyField?: string;\n /** 任务之间的依赖关系 */\n dependency?: {\n links: ITaskLink[];\n linkLineStyle?: ILineStyle;\n linkCreatable?: boolean;\n linkSelectable?: boolean;\n linkSelectedLineStyle?: ITaskLinkSelectedStyle;\n /** 创建关联线的操作点 */\n linkCreatePointStyle?: IPointStyle;\n /** 创建关联线的操作点响应状态效果 */\n linkCreatingPointStyle?: IPointStyle;\n /** 创建关联线的操作线样式 */\n linkCreatingLineStyle?: ILineStyle;\n };\n /** 网格线配置 */\n grid?: IGrid;\n\n /** 整个外边框及横纵分割线配置。 */\n frame?: {\n outerFrameStyle: IFrameStyle;\n verticalSplitLine?: ILineStyle;\n horizontalSplitLine?: ILineStyle;\n verticalSplitLineMoveable?: boolean;\n //列调整宽度的直线\n verticalSplitLineHighlight?: ILineStyle;\n };\n\n /** 标记线配置 如果配置为true 会自动给今天做标记 */\n markLine?: boolean | IMarkLine | IMarkLine[];\n\n /** 指定整个甘特图的最小日期 */\n minDate?: string;\n /** 指定整个甘特图的最大日期 不设置的话用默认规则*/\n maxDate?: string;\n\n /** 顶部表头部分默认行高。如果想按表头层级依次配置,请配置到timelineHeader.scale中 */\n headerRowHeight?: number;\n\n /** 数据默认行高 */\n rowHeight?: number;\n\n /** 行号配置 */\n rowSeriesNumber?: IRowSeriesNumber;\n\n /**\n * 'auto':和浏览器滚动行为一致 表格滚动到顶部/底部时 触发浏览器默认行为;\n * 设置为 'none' 时, 表格滚动到顶部/底部时, 不再触发父容器滚动\n * */\n overscrollBehavior?: 'auto' | 'none';\n\n scrollStyle?: IScrollStyle;\n\n pixelRatio?: number;\n dateFormat?:\n | 'yyyy-mm-dd'\n | 'dd-mm-yyyy'\n | 'mm/dd/yyyy'\n | 'yyyy/mm/dd'\n | 'dd/mm/yyyy'\n | 'yyyy.mm.dd'\n | 'dd.mm.yyyy'\n | 'mm.dd.yyyy';\n\n /** 表格绘制范围外的canvas上填充的颜色 */\n underlayBackgroundColor?: string;\n groupBy?: true | string | string[];\n /** 展示嵌套结构数据时的模式,默认为full。*/\n tasksShowMode?: TasksShowMode;\n}\n/**\n * IBarLabelText\n * 可以配置固定文本 或者 ${fieldName} 或者自定义函数\n */\nexport type ITaskBarLabelText = string; //| string[] | ((args: any) => string | string[]);\nexport interface ITimelineScale {\n rowHeight?: number;\n unit: 'day' | 'week' | 'month' | 'quarter' | 'year' | 'hour' | 'minute' | 'second';\n step: number;\n startOfWeek?: 'sunday' | 'monday';\n customLayout?: IDateCustomLayout;\n style?: ITimelineHeaderStyle;\n format?: (date: DateFormatArgumentType) => string;\n}\nexport interface ITaskBarLabelTextStyle {\n fontFamily?: string;\n fontSize?: number;\n color?: string;\n textAlign?: 'center' | 'end' | 'left' | 'right' | 'start'; // 设置单元格内文字的水平对齐方式\n textOverflow?: string;\n textBaseline?: 'alphabetic' | 'bottom' | 'middle' | 'top'; // 设置单元格内文字的垂直对齐方式\n padding?: number | number[];\n}\nexport interface ITaskBarStyle {\n /** 任务条的颜色 */\n barColor?: string;\n /** 已完成部分任务条的颜色 */\n completedBarColor?: string;\n /** 任务条的宽度 */\n width?: number;\n /** 任务条的圆角 */\n cornerRadius?: number;\n /** 任务条的边框 */\n borderWidth?: number;\n /** 边框颜色 */\n borderColor?: string;\n}\nexport type ILineStyle = {\n lineColor?: string;\n lineWidth?: number;\n lineDash?: number[];\n};\nexport type IPointStyle = {\n strokeColor?: string;\n strokeWidth?: number;\n fillColor?: string;\n radius?: number;\n};\nexport interface IMarkLine {\n date: string;\n style?: ILineStyle;\n /** 标记线显示在日期列下的位置 默认为'left' */\n position?: 'left' | 'right' | 'middle';\n /** 自动将日期范围内 包括改标记线 */\n scrollToMarkLine?: boolean;\n}\nexport type ITableColumnsDefine = ColumnsDefine;\nexport type IFrameStyle = {\n borderColor?: string;\n borderLineWidth?: number;\n borderLineDash?: number[];\n cornerRadius?: number;\n};\n\nexport type ITableStyle = TYPES.ThemeStyle;\nexport type IRowSeriesNumber = TYPES.IRowSeriesNumber;\nexport type IScrollStyle = TYPES.ScrollStyle;\nexport type DateFormatArgumentType = {\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n startDate: Date;\n endDate: Date;\n};\nexport type TaskBarCustomLayoutArgumentType = {\n width: number;\n height: number;\n index: number;\n startDate: Date;\n endDate: Date;\n taskDays: number;\n progress: number;\n taskRecord: any;\n ganttInstance: Gantt;\n};\nexport type ITaskBarCustomLayoutObj = {\n rootContainer: Group;\n renderDefaultBar?: boolean; // 默认false\n renderDefaultResizeIcon?: boolean; // 默认false\n renderDefaultText?: boolean; // 默认false\n};\nexport type ITaskBarCustomLayout = (args: TaskBarCustomLayoutArgumentType) => ITaskBarCustomLayoutObj; //CustomLayout\n\nexport type DateCustomLayoutArgumentType = {\n width: number;\n height: number;\n index: number;\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n title: string;\n startDate: Date;\n endDate: Date;\n days: number;\n ganttInstance: Gantt;\n};\nexport type IDateCustomLayoutObj = {\n rootContainer: Group;\n renderDefaultText?: boolean; // 默认false\n};\nexport type IDateCustomLayout = (args: DateCustomLayoutArgumentType) => IDateCustomLayoutObj;\n\nexport type TaskCreationCustomLayoutArgumentType = {\n width: number;\n height: number;\n // index: number;\n ganttInstance: Gantt;\n};\nexport type ITaskCreationCustomLayoutObj = {\n rootContainer: Group;\n};\nexport type ITaskCreationCustomLayout = (args: TaskCreationCustomLayoutArgumentType) => ITaskCreationCustomLayoutObj;\n\nexport type ITaskLink = {\n /** 依赖的类型 */\n type: DependencyType;\n /** 依赖线的起始任务唯一标识。如果是tree树形结构的数据 设置数组的话 查找性能会更高 */\n linkedFromTaskKey?: string | number | (string | number)[];\n /** 依赖的终止目标任务唯一标识。如果是tree树形结构的数据 设置数组的话 查找性能会更高 */\n linkedToTaskKey?: string | number | (string | number)[];\n};\n\nexport type ITaskLinkSelectedStyle = ILineStyle & {\n shadowBlur?: number; //阴影宽度\n shadowOffset?: number; //偏移\n shadowColor?: string; //阴影颜色\n};\nexport enum DependencyType {\n FinishToStart = 'finish_to_start',\n StartToStart = 'start_to_start',\n FinishToFinish = 'finish_to_finish',\n StartToFinish = 'start_to_finish'\n}\nexport enum TasksShowMode {\n /** 每一个任务节点用单独一行来展示,父任务占用一行,子任务分别占用一行。这是默认的显示效果 */\n Tasks_Separate = 'tasks_separate',\n /** 省去父任务节点不展示,并把所有子任务的节点都放到同一行来展示。 */\n Sub_Tasks_Inline = 'sub_tasks_inline',\n /** 省去父任务节点不展示,且所有子任务的节点分别用一行展示。*/\n Sub_Tasks_Separate = 'sub_tasks_separate',\n /** 省去父任务节点不展示,且所有子任务会维持records中的数据顺序布局,并保证节点不重叠展示 */\n Sub_Tasks_Arrange = 'sub_tasks_arrange',\n /** 省去父任务节点不展示,且所有子任务会按照日期早晚的属性来布局,并保证节点不重叠的紧凑型展示 */\n Sub_Tasks_Compact = 'sub_tasks_compact'\n}\nexport type ITaskBarSelectedStyle = {\n shadowBlur?: number; //阴影宽度\n shadowOffsetX?: number; //x方向偏移\n shadowOffsetY?: number; //Y方向偏移\n shadowColor?: string; //阴影颜色\n borderColor?: string; //边框颜色\n borderLineWidth?: number;\n};\nexport type ITaskBarHoverStyle = {\n /** 任务条的圆角 */\n cornerRadius?: number;\n barOverlayColor?: string;\n};\n//#endregion\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ts-types/gantt-engine.ts"],"names":[],"mappings":";;;AAwWA,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,mDAAiC,CAAA;IACjC,iDAA+B,CAAA;IAC/B,qDAAmC,CAAA;IACnC,mDAAiC,CAAA;AACnC,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB;AACD,IAAY,aAWX;AAXD,WAAY,aAAa;IAEvB,kDAAiC,CAAA;IAEjC,sDAAqC,CAAA;IAErC,0DAAyC,CAAA;IAEzC,wDAAuC,CAAA;IAEvC,wDAAuC,CAAA;AACzC,CAAC,EAXW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAWxB","file":"gantt-engine.js","sourcesContent":["import type { ColumnsDefine, TYPES, ListTableConstructorOptions } from '@visactor/vtable';\nimport type { Group } from '@visactor/vtable/es/vrender';\nimport type { Gantt } from '../Gantt';\nexport type LayoutObjectId = number | string;\n\nexport interface ITimelineDateInfo {\n days: number;\n timeScaleCount: number;\n endDate: Date;\n startDate: Date;\n title: string;\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n unit: 'year' | 'month' | 'quarter' | 'week' | 'day' | 'hour' | 'minute' | 'second';\n step: number;\n}\n\nexport interface ITimelineHeaderStyle {\n padding?: number | number[];\n fontSize?: number;\n fontWeight?: string;\n color?: string;\n strokeColor?: string;\n // backgroundColor?: string;\n textAlign?: 'center' | 'end' | 'left' | 'right' | 'start'; // 设置单元格内文字的水平对齐方式\n textOverflow?: string;\n textBaseline?: 'alphabetic' | 'bottom' | 'middle' | 'top'; // 设置单元格内文字的垂直对齐方式\n textStick?: boolean;\n}\nexport interface IGrid {\n backgroundColor?: string;\n verticalLine?: ILineStyle | ((args: GridVerticalLineStyleArgumentType) => ILineStyle);\n horizontalLine?: ILineStyle | ((args: GridHorizontalLineStyleArgumentType) => ILineStyle);\n}\n//#region gantt\nexport interface GanttConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n\n /** 左侧任务信息表格相关配置 */\n taskListTable?: {\n /** 左侧任务列表信息占用的宽度。如果设置为'auto'表示将所有列完全展示 */\n tableWidth?: 'auto' | number;\n /** 左侧任务列表 最小宽度 */\n minTableWidth?: number;\n /** 左侧任务列表 最大宽度 */\n maxTableWidth?: number;\n } & Omit<\n //ListTable表格可配置的属性\n ListTableConstructorOptions,\n | 'container'\n | 'records'\n | 'defaultHeaderRowHeight'\n | 'defaultRowHeight'\n | 'overscrollBehavior'\n | 'rowSeriesNumber'\n | 'scrollStyle'\n | 'pixelRatio'\n | 'title'\n >;\n /** 时间刻度 */\n timelineHeader: {\n backgroundColor?: string;\n colWidth?: number;\n /** 垂直间隔线样式 */\n verticalLine?: ILineStyle;\n /** 水平间隔线样式 */\n horizontalLine?: ILineStyle;\n scales: ITimelineScale[];\n };\n\n /** 任务条相关配置及样式 */\n taskBar?: {\n /** 任务开始日期对应的数据字段名 默认按'startDate' */\n startDateField?: string;\n /** 任务结束日期对应的数据字段名 默认按'endDate' */\n endDateField?: string;\n /** 任务进度对应的数据字段名 */\n progressField?: string;\n /** 任务条展示文字。可以配置固定文本 或者 字符串模版`${fieldName}` */\n labelText?: ITaskBarLabelText;\n /** 任务条文字样式 */\n labelTextStyle?: ITaskBarLabelTextStyle;\n /** 任务条样式 */\n barStyle?: ITaskBarStyle;\n /** 自定义布局渲染 */\n customLayout?: ITaskBarCustomLayout;\n /** 任务条是否可调整大小 */\n resizable?:\n | boolean\n | [boolean, boolean]\n | ((interactionArgs: TaskBarInteractionArgumentType) => boolean | [boolean, boolean]);\n /** 任务条是否可移动 */\n moveable?: boolean | ((interactionArgs: TaskBarInteractionArgumentType) => boolean);\n /** 任务条是否可以被拖拽来改变顺序 */\n dragOrder?: boolean;\n /** 任务条hover时的样式 */\n hoverBarStyle?: ITaskBarHoverStyle;\n /** 任务条选择时的样式 TODO */\n selectedBarStyle?: ITaskBarSelectedStyle;\n /** 任务条是否可选择,默认为true */\n selectable?: boolean;\n /** 任务条右键菜单 */\n menu?: {\n /** 右键菜单。代替原来的option.contextmenu */\n contextMenuItems?:\n | TYPES.MenuListItem[]\n | ((\n record: string,\n index: number,\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number,\n startDate: Date,\n endDate: Date\n ) => TYPES.MenuListItem[]);\n };\n /** 数据没有排期时,可通过创建任务条排期。默认为true */\n scheduleCreatable?: boolean;\n /** 针对没有分配日期的任务,可以显示出创建按钮 */\n scheduleCreation?: {\n buttonStyle: ILineStyle & {\n cornerRadius?: number;\n backgroundColor?: string;\n };\n /** 任务条创建按钮的自定义渲染 */\n customLayout?: ITaskCreationCustomLayout;\n };\n };\n /** 数据条目可唯一标识的字段名,默认为'id' */\n taskKeyField?: string;\n /** 任务之间的依赖关系 */\n dependency?: {\n links: ITaskLink[];\n linkLineStyle?: ILineStyle;\n linkCreatable?: boolean;\n linkSelectable?: boolean;\n linkSelectedLineStyle?: ITaskLinkSelectedStyle;\n /** 创建关联线的操作点 */\n linkCreatePointStyle?: IPointStyle;\n /** 创建关联线的操作点响应状态效果 */\n linkCreatingPointStyle?: IPointStyle;\n /** 创建关联线的操作线样式 */\n linkCreatingLineStyle?: ILineStyle;\n };\n /** 网格线配置 */\n grid?: IGrid;\n\n /** 整个外边框及横纵分割线配置。 */\n frame?: {\n outerFrameStyle: IFrameStyle;\n verticalSplitLine?: ILineStyle;\n horizontalSplitLine?: ILineStyle;\n verticalSplitLineMoveable?: boolean;\n //列调整宽度的直线\n verticalSplitLineHighlight?: ILineStyle;\n };\n\n /** 标记线配置 如果配置为true 会自动给今天做标记 */\n markLine?: boolean | IMarkLine | IMarkLine[];\n\n /** 指定整个甘特图的最小日期 */\n minDate?: string;\n /** 指定整个甘特图的最大日期 不设置的话用默认规则*/\n maxDate?: string;\n\n /** 顶部表头部分默认行高。如果想按表头层级依次配置,请配置到timelineHeader.scale中 */\n headerRowHeight?: number;\n\n /** 数据默认行高 */\n rowHeight?: number;\n\n /** 行号配置 */\n rowSeriesNumber?: IRowSeriesNumber;\n\n /**\n * 'auto':和浏览器滚动行为一致 表格滚动到顶部/底部时 触发浏览器默认行为;\n * 设置为 'none' 时, 表格滚动到顶部/底部时, 不再触发父容器滚动\n * */\n overscrollBehavior?: 'auto' | 'none';\n\n scrollStyle?: IScrollStyle;\n\n pixelRatio?: number;\n dateFormat?:\n | 'yyyy-mm-dd'\n | 'dd-mm-yyyy'\n | 'mm/dd/yyyy'\n | 'yyyy/mm/dd'\n | 'dd/mm/yyyy'\n | 'yyyy.mm.dd'\n | 'dd.mm.yyyy'\n | 'mm.dd.yyyy';\n\n /** 表格绘制范围外的canvas上填充的颜色 */\n underlayBackgroundColor?: string;\n groupBy?: true | string | string[];\n /** 展示嵌套结构数据时的模式,默认为full。*/\n tasksShowMode?: TasksShowMode;\n}\n/**\n * IBarLabelText\n * 可以配置固定文本 或者 ${fieldName} 或者自定义函数\n */\nexport type ITaskBarLabelText = string; //| string[] | ((args: any) => string | string[]);\nexport interface ITimelineScale {\n rowHeight?: number;\n unit: 'day' | 'week' | 'month' | 'quarter' | 'year' | 'hour' | 'minute' | 'second';\n step: number;\n startOfWeek?: 'sunday' | 'monday';\n customLayout?: IDateCustomLayout;\n style?: ITimelineHeaderStyle;\n format?: (date: DateFormatArgumentType) => string;\n}\nexport interface ITaskBarLabelTextStyle {\n fontFamily?: string;\n fontSize?: number;\n color?: string;\n textAlign?: 'center' | 'end' | 'left' | 'right' | 'start'; // 设置单元格内文字的水平对齐方式\n textOverflow?: string;\n textBaseline?: 'alphabetic' | 'bottom' | 'middle' | 'top'; // 设置单元格内文字的垂直对齐方式\n padding?: number | number[];\n}\nexport interface ITaskBarStyle {\n /** 任务条的颜色 */\n barColor?: string;\n /** 已完成部分任务条的颜色 */\n completedBarColor?: string;\n /** 任务条的宽度 */\n width?: number;\n /** 任务条的圆角 */\n cornerRadius?: number;\n /** 任务条的边框 */\n borderWidth?: number;\n /** 边框颜色 */\n borderColor?: string;\n}\nexport type ILineStyle = {\n lineColor?: string;\n lineWidth?: number;\n lineDash?: number[];\n};\nexport type IPointStyle = {\n strokeColor?: string;\n strokeWidth?: number;\n fillColor?: string;\n radius?: number;\n};\nexport interface IMarkLine {\n date: string;\n style?: ILineStyle;\n /** 标记线显示在日期列下的位置 默认为'left' */\n position?: 'left' | 'right' | 'middle';\n /** 自动将日期范围内 包括改标记线 */\n scrollToMarkLine?: boolean;\n}\nexport type ITableColumnsDefine = ColumnsDefine;\nexport type IFrameStyle = {\n borderColor?: string;\n borderLineWidth?: number;\n borderLineDash?: number[];\n cornerRadius?: number;\n};\n\nexport type ITableStyle = TYPES.ThemeStyle;\nexport type IRowSeriesNumber = TYPES.IRowSeriesNumber;\nexport type IScrollStyle = TYPES.ScrollStyle;\nexport type DateFormatArgumentType = {\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n startDate: Date;\n endDate: Date;\n};\nexport type TaskBarInteractionArgumentType = {\n taskRecord: string;\n index: number;\n startDate: Date;\n endDate: Date;\n ganttInstance: Gantt;\n};\n\nexport type TaskBarCustomLayoutArgumentType = {\n width: number;\n height: number;\n index: number;\n startDate: Date;\n endDate: Date;\n taskDays: number;\n progress: number;\n taskRecord: any;\n ganttInstance: Gantt;\n};\nexport type ITaskBarCustomLayoutObj = {\n rootContainer: Group;\n renderDefaultBar?: boolean; // 默认false\n renderDefaultResizeIcon?: boolean; // 默认false\n renderDefaultText?: boolean; // 默认false\n};\nexport type ITaskBarCustomLayout = (args: TaskBarCustomLayoutArgumentType) => ITaskBarCustomLayoutObj; //CustomLayout\n\nexport type DateCustomLayoutArgumentType = {\n width: number;\n height: number;\n index: number;\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n title: string;\n startDate: Date;\n endDate: Date;\n days: number;\n ganttInstance: Gantt;\n};\nexport type IDateCustomLayoutObj = {\n rootContainer: Group;\n renderDefaultText?: boolean; // 默认false\n};\nexport type IDateCustomLayout = (args: DateCustomLayoutArgumentType) => IDateCustomLayoutObj;\n\nexport type GridVerticalLineStyleArgumentType = {\n /** 竖线是第几条线*/\n index: number;\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n /** 如果是竖线,date代表分割线指向的具体时间点 */\n date?: Date;\n ganttInstance: Gantt;\n};\n\nexport type GridHorizontalLineStyleArgumentType = {\n /** 横线是第几条线 也代表了左侧表格的body行号 */\n index: number;\n ganttInstance: Gantt;\n};\n\nexport type TaskCreationCustomLayoutArgumentType = {\n width: number;\n height: number;\n // index: number;\n ganttInstance: Gantt;\n};\nexport type ITaskCreationCustomLayoutObj = {\n rootContainer: Group;\n};\nexport type ITaskCreationCustomLayout = (args: TaskCreationCustomLayoutArgumentType) => ITaskCreationCustomLayoutObj;\n\nexport type ITaskLink = {\n /** 依赖的类型 */\n type: DependencyType;\n /** 依赖线的起始任务唯一标识。如果是tree树形结构的数据 设置数组的话 查找性能会更高 */\n linkedFromTaskKey?: string | number | (string | number)[];\n /** 依赖的终止目标任务唯一标识。如果是tree树形结构的数据 设置数组的话 查找性能会更高 */\n linkedToTaskKey?: string | number | (string | number)[];\n};\n\nexport type ITaskLinkSelectedStyle = ILineStyle & {\n shadowBlur?: number; //阴影宽度\n shadowOffset?: number; //偏移\n shadowColor?: string; //阴影颜色\n};\nexport enum DependencyType {\n FinishToStart = 'finish_to_start',\n StartToStart = 'start_to_start',\n FinishToFinish = 'finish_to_finish',\n StartToFinish = 'start_to_finish'\n}\nexport enum TasksShowMode {\n /** 每一个任务节点用单独一行来展示,父任务占用一行,子任务分别占用一行。这是默认的显示效果 */\n Tasks_Separate = 'tasks_separate',\n /** 省去父任务节点不展示,并把所有子任务的节点都放到同一行来展示。 */\n Sub_Tasks_Inline = 'sub_tasks_inline',\n /** 省去父任务节点不展示,且所有子任务的节点分别用一行展示。*/\n Sub_Tasks_Separate = 'sub_tasks_separate',\n /** 省去父任务节点不展示,且所有子任务会维持records中的数据顺序布局,并保证节点不重叠展示 */\n Sub_Tasks_Arrange = 'sub_tasks_arrange',\n /** 省去父任务节点不展示,且所有子任务会按照日期早晚的属性来布局,并保证节点不重叠的紧凑型展示 */\n Sub_Tasks_Compact = 'sub_tasks_compact'\n}\nexport type ITaskBarSelectedStyle = {\n shadowBlur?: number; //阴影宽度\n shadowOffsetX?: number; //x方向偏移\n shadowOffsetY?: number; //Y方向偏移\n shadowColor?: string; //阴影颜色\n borderColor?: string; //边框颜色\n borderLineWidth?: number;\n};\nexport type ITaskBarHoverStyle = {\n /** 任务条的圆角 */\n cornerRadius?: number;\n barOverlayColor?: string;\n};\n//#endregion\n"]}
|