@visactor/vtable-gantt 1.23.3 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/cjs/Gantt.d.ts +8 -0
  2. package/cjs/Gantt.js +91 -9
  3. package/cjs/Gantt.js.map +1 -1
  4. package/cjs/gantt-helper.js +1 -2
  5. package/cjs/gantt-helper.js.map +1 -1
  6. package/cjs/index.d.ts +1 -1
  7. package/cjs/index.js +1 -1
  8. package/cjs/index.js.map +1 -1
  9. package/cjs/plugins/index.js.map +1 -1
  10. package/cjs/scenegraph/dependency-link.js +28 -38
  11. package/cjs/scenegraph/dependency-link.js.map +1 -1
  12. package/cjs/scenegraph/grid.js +8 -7
  13. package/cjs/scenegraph/grid.js.map +1 -1
  14. package/cjs/scenegraph/mark-line.js +10 -12
  15. package/cjs/scenegraph/mark-line.js.map +1 -1
  16. package/cjs/scenegraph/task-bar.js +3 -7
  17. package/cjs/scenegraph/task-bar.js.map +1 -1
  18. package/cjs/scenegraph/timeline-header.js +1 -4
  19. package/cjs/scenegraph/timeline-header.js.map +1 -1
  20. package/cjs/state/state-manager.js +22 -18
  21. package/cjs/state/state-manager.js.map +1 -1
  22. package/cjs/tools/isx.d.ts +1 -1
  23. package/cjs/ts-types/gantt-engine.d.ts +2 -0
  24. package/cjs/ts-types/gantt-engine.js.map +1 -1
  25. package/dist/vtable-gantt.js +1256 -801
  26. package/dist/vtable-gantt.min.js +2 -2
  27. package/es/Gantt.d.ts +8 -0
  28. package/es/Gantt.js +92 -8
  29. package/es/Gantt.js.map +1 -1
  30. package/es/gantt-helper.js +1 -2
  31. package/es/gantt-helper.js.map +1 -1
  32. package/es/index.d.ts +1 -1
  33. package/es/index.js +1 -1
  34. package/es/index.js.map +1 -1
  35. package/es/plugins/index.js.map +1 -1
  36. package/es/scenegraph/dependency-link.js +29 -27
  37. package/es/scenegraph/dependency-link.js.map +1 -1
  38. package/es/scenegraph/grid.js +6 -8
  39. package/es/scenegraph/grid.js.map +1 -1
  40. package/es/scenegraph/mark-line.js +10 -11
  41. package/es/scenegraph/mark-line.js.map +1 -1
  42. package/es/scenegraph/task-bar.js +4 -5
  43. package/es/scenegraph/task-bar.js.map +1 -1
  44. package/es/scenegraph/timeline-header.js +2 -3
  45. package/es/scenegraph/timeline-header.js.map +1 -1
  46. package/es/state/state-manager.js +22 -18
  47. package/es/state/state-manager.js.map +1 -1
  48. package/es/tools/isx.d.ts +1 -1
  49. package/es/ts-types/gantt-engine.d.ts +2 -0
  50. package/es/ts-types/gantt-engine.js.map +1 -1
  51. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/grid.ts"],"names":[],"mappings":"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","file":"grid.js","sourcesContent":["import { Group, createLine, createRect } from '@visactor/vtable/es/vrender';\n\nimport type { Scenegraph } from './scenegraph';\nimport type { IGrid } from '../ts-types';\nimport { computeCountToTimeScale } from '../tools/util';\nexport class Grid {\n // verticalLineSpace: number;\n // horizontalLineSpace: number;\n gridStyle: IGrid;\n scrollLeft: number;\n scrollTop: number;\n x: number;\n y: number;\n width: number;\n height: number;\n rowHeight: number;\n rowCount: number;\n group: Group;\n verticalLineGroup: Group;\n horizontalLineGroup: Group;\n verticalBackgroundRectsGroup: Group;\n horizontalBackgroundRectsGroup: Group;\n allGridHeight: number;\n allGridWidth: number;\n _scene: Scenegraph;\n constructor(scene: Scenegraph) {\n this._scene = scene;\n\n this.scrollLeft = 0;\n this.scrollTop = 0;\n this.x = 0;\n this.y = scene._gantt.getAllHeaderRowsHeight();\n this.width = scene.ganttGroup.attribute.width;\n this.height = scene.ganttGroup.attribute.height - scene.timelineHeader.group.attribute.height;\n this.rowHeight = scene._gantt.parsedOptions.rowHeight;\n this.rowCount = scene._gantt.itemCount;\n this.allGridWidth = scene._gantt.getAllDateColsWidth();\n this.allGridHeight = scene._gantt.getAllTaskBarsHeight();\n this.group = new Group({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height,\n clip: true,\n fill: scene._gantt.parsedOptions.grid?.backgroundColor\n });\n this.group.name = 'grid-container';\n scene.ganttGroup.addChild(this.group);\n this.createVerticalBackgroundRects();\n this.createHorizontalBackgroundRects();\n this.createVerticalLines();\n this.createHorizontalLines();\n this.createTimeLineHeaderBottomLine();\n }\n\n createTimeLineHeaderBottomLine() {\n const options = this._scene._gantt.parsedOptions;\n //补充timelineHeader中不好绘制的底部的边线\n const horizontalSplitLineWidth =\n options.horizontalSplitLine?.lineWidth ?? options.timelineHeaderHorizontalLineStyle?.lineWidth;\n const bottomLineY = (horizontalSplitLineWidth & 1 ? -0.5 : 0) + horizontalSplitLineWidth / 2; // 原来是(horizontalSplitLineWidth & 1 ? 0.5 : 0) 这里改成-0.5为了和左侧表格的水平分割线对齐\n const line = createLine({\n pickable: false,\n stroke: options.horizontalSplitLine?.lineColor ?? options.timelineHeaderHorizontalLineStyle?.lineColor,\n lineWidth: horizontalSplitLineWidth + (horizontalSplitLineWidth & 1 ? 1 : 0), // 加上后面这个1是为了和左侧表格的水平分割线对齐\n lineDash: options.horizontalSplitLine?.lineDash ?? options.timelineHeaderHorizontalLineStyle?.lineDash,\n points: [\n { x: 0, y: bottomLineY },\n {\n x: this._scene._gantt.getAllDateColsWidth(),\n y: bottomLineY\n }\n ]\n });\n line.name = 'timeLine-header-bottom-line';\n this.group.addChild(line);\n }\n\n createVerticalLines() {\n const gridStyle = this._scene._gantt.parsedOptions.grid;\n const verticalLineDependenceOnTimeScale =\n gridStyle.verticalLineDependenceOnTimeScale ??\n this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0].unit;\n\n if (gridStyle.verticalLine) {\n this.verticalLineGroup = new Group({\n x: 0,\n y: 0,\n width: this.allGridWidth,\n height: this.allGridHeight\n });\n this.verticalLineGroup.name = 'grid-vertical';\n this.group.appendChild(this.verticalLineGroup);\n\n const dependenceOnTimeScale =\n this._scene._gantt.parsedOptions.reverseSortedTimelineScales.find(\n scale => scale.unit === verticalLineDependenceOnTimeScale\n ) ?? this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0];\n const { unit: minUnit, step } = this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0];\n const { timelineDates } = dependenceOnTimeScale;\n const timelineColWidth = this._scene._gantt.parsedOptions.timelineColWidth;\n\n if (typeof gridStyle.verticalLine === 'function') {\n for (let i = 0; i < timelineDates?.length - 1; i++) {\n const { endDate } = timelineDates[i];\n const verticalLine_style = gridStyle.verticalLine({\n index: i,\n dateIndex: timelineDates[i].dateIndex,\n date: timelineDates[i].endDate,\n ganttInstance: this._scene._gantt\n });\n const x =\n Math.ceil(\n computeCountToTimeScale(endDate, this._scene._gantt.parsedOptions.minDate, minUnit, step, 1) *\n timelineColWidth\n ) + (verticalLine_style.lineWidth & 1 ? 0.5 : 0);\n // const x = Math.ceil(timelineColWidth * (i + 1)) + (verticalLine_style.lineWidth & 1 ? 0.5 : 0);\n const line = createLine({\n pickable: false,\n stroke: verticalLine_style.lineColor,\n lineWidth: verticalLine_style.lineWidth,\n lineDash: verticalLine_style.lineDash,\n points: [\n { x, y: 0 },\n { x, y: this.allGridHeight }\n ]\n });\n this.verticalLineGroup.appendChild(line);\n }\n } else {\n const verticalLine_style = gridStyle.verticalLine;\n for (let i = 0; i < timelineDates?.length - 1; i++) {\n const { endDate } = timelineDates[i];\n const x =\n Math.ceil(\n computeCountToTimeScale(endDate, this._scene._gantt.parsedOptions.minDate, minUnit, step, 1) *\n timelineColWidth\n ) + (verticalLine_style.lineWidth & 1 ? 0.5 : 0);\n // const x = Math.ceil(timelineColWidth * (i + 1)) + (verticalLine_style.lineWidth & 1 ? 0.5 : 0);\n const line = createLine({\n pickable: false,\n stroke: verticalLine_style.lineColor,\n lineWidth: verticalLine_style.lineWidth,\n lineDash: verticalLine_style.lineDash,\n points: [\n { x, y: 0 },\n { x, y: this.allGridHeight }\n ]\n });\n this.verticalLineGroup.appendChild(line);\n }\n }\n }\n }\n createHorizontalLines() {\n const gridStyle = this._scene._gantt.parsedOptions.grid;\n if (gridStyle.horizontalLine) {\n this.horizontalLineGroup = new Group({\n x: 0,\n y: 0,\n width: this.allGridWidth,\n height: this.allGridHeight\n });\n this.horizontalLineGroup.name = 'grid-horizontal';\n this.group.appendChild(this.horizontalLineGroup);\n if (typeof gridStyle.horizontalLine === 'function') {\n let y = 0.5; //确保大多数情况 LineWidth为1时是准确的\n for (let i = 0; i < this.rowCount - 1; i++) {\n const horizontalLine_style = gridStyle.horizontalLine({\n index: i,\n ganttInstance: this._scene._gantt\n });\n y = y + this._scene._gantt.getRowHeightByIndex(i); // Math.floor(this.rowHeight);\n const line = createLine({\n pickable: false,\n stroke: horizontalLine_style.lineColor,\n lineWidth: horizontalLine_style.lineWidth,\n lineDash: horizontalLine_style.lineDash,\n points: [\n { x: 0, y },\n { x: this.allGridWidth, y }\n ]\n });\n this.horizontalLineGroup.appendChild(line);\n }\n } else {\n const horizontalLine_style = gridStyle.horizontalLine;\n let y = 0;\n if (horizontalLine_style.lineWidth & 1) {\n y += 0.5;\n }\n for (let i = 0; i < this.rowCount - 1; i++) {\n y = y + this._scene._gantt.getRowHeightByIndex(i); // Math.floor(this.rowHeight);\n const line = createLine({\n pickable: false,\n stroke: horizontalLine_style.lineColor,\n lineWidth: horizontalLine_style.lineWidth,\n lineDash: horizontalLine_style.lineDash,\n points: [\n { x: 0, y },\n { x: this.allGridWidth, y }\n ]\n });\n this.horizontalLineGroup.appendChild(line);\n }\n }\n }\n }\n\n createVerticalBackgroundRects() {\n const verticalBackgroundColor = this._scene._gantt.parsedOptions.grid.verticalBackgroundColor;\n const weekendBackgroundColor = this._scene._gantt.parsedOptions.grid.weekendBackgroundColor;\n if (verticalBackgroundColor || weekendBackgroundColor) {\n this.verticalBackgroundRectsGroup = new Group({\n x: 0,\n y: 0,\n width: this.allGridWidth,\n height: this.allGridHeight\n });\n this.verticalBackgroundRectsGroup.name = 'grid-vertical-background';\n this.group.appendChild(this.verticalBackgroundRectsGroup);\n\n const { timelineDates, unit, step } = this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0];\n const timelineColWidth = this._scene._gantt.parsedOptions.timelineColWidth;\n\n if (verticalBackgroundColor || weekendBackgroundColor) {\n for (let i = 0; i <= timelineDates?.length - 1; i++) {\n let backgroundColor;\n if (\n weekendBackgroundColor &&\n unit === 'day' &&\n step === 1 &&\n (timelineDates[i].startDate.getDay() === 0 || timelineDates[i].startDate.getDay() === 6)\n ) {\n backgroundColor = weekendBackgroundColor;\n } else if (typeof verticalBackgroundColor === 'function') {\n backgroundColor = verticalBackgroundColor({\n index: i,\n dateIndex: timelineDates[i].dateIndex,\n date: timelineDates[i].endDate,\n ganttInstance: this._scene._gantt\n });\n } else if (verticalBackgroundColor) {\n backgroundColor = verticalBackgroundColor[i % verticalBackgroundColor.length];\n }\n if (backgroundColor) {\n const x = Math.ceil(timelineColWidth * i);\n const rect = createRect({\n pickable: false,\n fill: backgroundColor,\n x,\n y: 0,\n width: timelineColWidth,\n height: this.allGridHeight\n });\n this.verticalBackgroundRectsGroup.appendChild(rect);\n }\n }\n }\n }\n }\n createHorizontalBackgroundRects() {\n const horizontalBackgroundColor = this._scene._gantt.parsedOptions.grid.horizontalBackgroundColor;\n if (horizontalBackgroundColor) {\n this.horizontalBackgroundRectsGroup = new Group({\n x: 0,\n y: 0,\n width: this.allGridWidth,\n height: this.allGridHeight\n });\n this.horizontalBackgroundRectsGroup.name = 'grid-horizontal-background';\n this.group.appendChild(this.horizontalBackgroundRectsGroup);\n\n let y = 0;\n for (let i = 0; i <= this.rowCount - 1; i++) {\n let backgroundColor;\n if (typeof horizontalBackgroundColor === 'function') {\n backgroundColor = horizontalBackgroundColor({\n index: i,\n ganttInstance: this._scene._gantt\n });\n } else {\n backgroundColor = horizontalBackgroundColor[i % horizontalBackgroundColor.length];\n }\n\n const rect = createRect({\n pickable: false,\n fill: backgroundColor,\n x: 0,\n y,\n width: this.allGridWidth,\n height: this._scene._gantt.getRowHeightByIndex(i)\n });\n this.horizontalBackgroundRectsGroup.appendChild(rect);\n y += this._scene._gantt.getRowHeightByIndex(i);\n }\n }\n }\n /** 重新创建网格线场景树结点 */\n refresh() {\n this.width = this._scene.ganttGroup.attribute.width;\n this.height = this._scene.ganttGroup.attribute.height - this._scene.timelineHeader.group.attribute.height;\n this.group.setAttributes({\n width: this.width,\n height: this.height,\n y: this._scene._gantt.getAllHeaderRowsHeight()\n });\n this.rowCount = this._scene._gantt.itemCount;\n this.allGridWidth = this._scene._gantt.getAllDateColsWidth();\n this.allGridHeight = this._scene._gantt.getAllTaskBarsHeight();\n this.group.removeAllChild();\n // this.verticalLineGroup?.parent.removeChild(this.verticalLineGroup);\n // this.horizontalLineGroup?.parent.removeChild(this.horizontalLineGroup);\n // this.verticalBackgroundRectsGroup?.parent.removeChild(this.verticalBackgroundRectsGroup);\n // this.horizontalBackgroundRectsGroup?.parent.removeChild(this.horizontalBackgroundRectsGroup);\n this.createVerticalBackgroundRects();\n this.createHorizontalBackgroundRects();\n this.createVerticalLines();\n this.createHorizontalLines();\n this.createTimeLineHeaderBottomLine();\n }\n setX(x: number) {\n this.verticalLineGroup?.setAttribute('x', x);\n this.horizontalLineGroup?.setAttribute('x', x);\n this.verticalBackgroundRectsGroup?.setAttribute('x', x);\n this.horizontalBackgroundRectsGroup?.setAttribute('x', x);\n }\n setY(y: number) {\n this.verticalLineGroup?.setAttribute('y', y);\n this.horizontalLineGroup?.setAttribute('y', y);\n this.verticalBackgroundRectsGroup?.setAttribute('y', y);\n this.horizontalBackgroundRectsGroup?.setAttribute('y', y);\n }\n resize() {\n this.width = this._scene.ganttGroup.attribute.width;\n this.height = this._scene.ganttGroup.attribute.height - this._scene.timelineHeader.group.attribute.height;\n this.group.setAttribute('width', this.width);\n this.group.setAttribute('height', this.height);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/grid.ts"],"names":[],"mappings":"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","file":"grid.js","sourcesContent":["import { Group, createLine, createRect } from '@visactor/vtable/es/vrender';\n\nimport type { Scenegraph } from './scenegraph';\nimport type { IGrid } from '../ts-types';\nexport class Grid {\n // verticalLineSpace: number;\n // horizontalLineSpace: number;\n gridStyle: IGrid;\n scrollLeft: number;\n scrollTop: number;\n x: number;\n y: number;\n width: number;\n height: number;\n rowHeight: number;\n rowCount: number;\n group: Group;\n verticalLineGroup: Group;\n horizontalLineGroup: Group;\n verticalBackgroundRectsGroup: Group;\n horizontalBackgroundRectsGroup: Group;\n allGridHeight: number;\n allGridWidth: number;\n _scene: Scenegraph;\n constructor(scene: Scenegraph) {\n this._scene = scene;\n\n this.scrollLeft = 0;\n this.scrollTop = 0;\n this.x = 0;\n this.y = scene._gantt.getAllHeaderRowsHeight();\n this.width = scene.ganttGroup.attribute.width;\n this.height = scene.ganttGroup.attribute.height - scene.timelineHeader.group.attribute.height;\n this.rowHeight = scene._gantt.parsedOptions.rowHeight;\n this.rowCount = scene._gantt.itemCount;\n this.allGridWidth = scene._gantt.getAllDateColsWidth();\n this.allGridHeight = scene._gantt.getAllTaskBarsHeight();\n this.group = new Group({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height,\n clip: true,\n fill: scene._gantt.parsedOptions.grid?.backgroundColor\n });\n this.group.name = 'grid-container';\n scene.ganttGroup.addChild(this.group);\n this.createVerticalBackgroundRects();\n this.createHorizontalBackgroundRects();\n this.createVerticalLines();\n this.createHorizontalLines();\n this.createTimeLineHeaderBottomLine();\n }\n\n createTimeLineHeaderBottomLine() {\n const options = this._scene._gantt.parsedOptions;\n //补充timelineHeader中不好绘制的底部的边线\n const horizontalSplitLineWidth =\n options.horizontalSplitLine?.lineWidth ?? options.timelineHeaderHorizontalLineStyle?.lineWidth;\n const bottomLineY = (horizontalSplitLineWidth & 1 ? -0.5 : 0) + horizontalSplitLineWidth / 2; // 原来是(horizontalSplitLineWidth & 1 ? 0.5 : 0) 这里改成-0.5为了和左侧表格的水平分割线对齐\n const line = createLine({\n pickable: false,\n stroke: options.horizontalSplitLine?.lineColor ?? options.timelineHeaderHorizontalLineStyle?.lineColor,\n lineWidth: horizontalSplitLineWidth + (horizontalSplitLineWidth & 1 ? 1 : 0), // 加上后面这个1是为了和左侧表格的水平分割线对齐\n lineDash: options.horizontalSplitLine?.lineDash ?? options.timelineHeaderHorizontalLineStyle?.lineDash,\n points: [\n { x: 0, y: bottomLineY },\n {\n x: this._scene._gantt.getAllDateColsWidth(),\n y: bottomLineY\n }\n ]\n });\n line.name = 'timeLine-header-bottom-line';\n this.group.addChild(line);\n }\n\n createVerticalLines() {\n const gridStyle = this._scene._gantt.parsedOptions.grid;\n const verticalLineDependenceOnTimeScale =\n gridStyle.verticalLineDependenceOnTimeScale ??\n this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0].unit;\n\n if (gridStyle.verticalLine) {\n this.verticalLineGroup = new Group({\n x: 0,\n y: 0,\n width: this.allGridWidth,\n height: this.allGridHeight\n });\n this.verticalLineGroup.name = 'grid-vertical';\n this.group.appendChild(this.verticalLineGroup);\n\n const dependenceOnTimeScale =\n this._scene._gantt.parsedOptions.reverseSortedTimelineScales.find(\n scale => scale.unit === verticalLineDependenceOnTimeScale\n ) ?? this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0];\n const { timelineDates } = dependenceOnTimeScale;\n\n if (typeof gridStyle.verticalLine === 'function') {\n for (let i = 0; i < timelineDates?.length - 1; i++) {\n const { endDate } = timelineDates[i];\n const verticalLine_style = gridStyle.verticalLine({\n index: i,\n dateIndex: timelineDates[i].dateIndex,\n date: timelineDates[i].endDate,\n ganttInstance: this._scene._gantt\n });\n const x =\n Math.ceil(this._scene._gantt.getXByTime(endDate.getTime() + 1)) +\n (verticalLine_style.lineWidth & 1 ? 0.5 : 0);\n // const x = Math.ceil(timelineColWidth * (i + 1)) + (verticalLine_style.lineWidth & 1 ? 0.5 : 0);\n const line = createLine({\n pickable: false,\n stroke: verticalLine_style.lineColor,\n lineWidth: verticalLine_style.lineWidth,\n lineDash: verticalLine_style.lineDash,\n points: [\n { x, y: 0 },\n { x, y: this.allGridHeight }\n ]\n });\n this.verticalLineGroup.appendChild(line);\n }\n } else {\n const verticalLine_style = gridStyle.verticalLine;\n for (let i = 0; i < timelineDates?.length - 1; i++) {\n const { endDate } = timelineDates[i];\n const x =\n Math.ceil(this._scene._gantt.getXByTime(endDate.getTime() + 1)) +\n (verticalLine_style.lineWidth & 1 ? 0.5 : 0);\n // const x = Math.ceil(timelineColWidth * (i + 1)) + (verticalLine_style.lineWidth & 1 ? 0.5 : 0);\n const line = createLine({\n pickable: false,\n stroke: verticalLine_style.lineColor,\n lineWidth: verticalLine_style.lineWidth,\n lineDash: verticalLine_style.lineDash,\n points: [\n { x, y: 0 },\n { x, y: this.allGridHeight }\n ]\n });\n this.verticalLineGroup.appendChild(line);\n }\n }\n }\n }\n createHorizontalLines() {\n const gridStyle = this._scene._gantt.parsedOptions.grid;\n if (gridStyle.horizontalLine) {\n this.horizontalLineGroup = new Group({\n x: 0,\n y: 0,\n width: this.allGridWidth,\n height: this.allGridHeight\n });\n this.horizontalLineGroup.name = 'grid-horizontal';\n this.group.appendChild(this.horizontalLineGroup);\n if (typeof gridStyle.horizontalLine === 'function') {\n let y = 0.5; //确保大多数情况 LineWidth为1时是准确的\n for (let i = 0; i < this.rowCount - 1; i++) {\n const horizontalLine_style = gridStyle.horizontalLine({\n index: i,\n ganttInstance: this._scene._gantt\n });\n y = y + this._scene._gantt.getRowHeightByIndex(i); // Math.floor(this.rowHeight);\n const line = createLine({\n pickable: false,\n stroke: horizontalLine_style.lineColor,\n lineWidth: horizontalLine_style.lineWidth,\n lineDash: horizontalLine_style.lineDash,\n points: [\n { x: 0, y },\n { x: this.allGridWidth, y }\n ]\n });\n this.horizontalLineGroup.appendChild(line);\n }\n } else {\n const horizontalLine_style = gridStyle.horizontalLine;\n let y = 0;\n if (horizontalLine_style.lineWidth & 1) {\n y += 0.5;\n }\n for (let i = 0; i < this.rowCount - 1; i++) {\n y = y + this._scene._gantt.getRowHeightByIndex(i); // Math.floor(this.rowHeight);\n const line = createLine({\n pickable: false,\n stroke: horizontalLine_style.lineColor,\n lineWidth: horizontalLine_style.lineWidth,\n lineDash: horizontalLine_style.lineDash,\n points: [\n { x: 0, y },\n { x: this.allGridWidth, y }\n ]\n });\n this.horizontalLineGroup.appendChild(line);\n }\n }\n }\n }\n\n createVerticalBackgroundRects() {\n const verticalBackgroundColor = this._scene._gantt.parsedOptions.grid.verticalBackgroundColor;\n const weekendBackgroundColor = this._scene._gantt.parsedOptions.grid.weekendBackgroundColor;\n if (verticalBackgroundColor || weekendBackgroundColor) {\n this.verticalBackgroundRectsGroup = new Group({\n x: 0,\n y: 0,\n width: this.allGridWidth,\n height: this.allGridHeight\n });\n this.verticalBackgroundRectsGroup.name = 'grid-vertical-background';\n this.group.appendChild(this.verticalBackgroundRectsGroup);\n\n const { timelineDates, unit, step } = this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0];\n\n if (verticalBackgroundColor || weekendBackgroundColor) {\n for (let i = 0; i <= timelineDates?.length - 1; i++) {\n let backgroundColor;\n if (\n weekendBackgroundColor &&\n unit === 'day' &&\n step === 1 &&\n (timelineDates[i].startDate.getDay() === 0 || timelineDates[i].startDate.getDay() === 6)\n ) {\n backgroundColor = weekendBackgroundColor;\n } else if (typeof verticalBackgroundColor === 'function') {\n backgroundColor = verticalBackgroundColor({\n index: i,\n dateIndex: timelineDates[i].dateIndex,\n date: timelineDates[i].endDate,\n ganttInstance: this._scene._gantt\n });\n } else if (verticalBackgroundColor) {\n backgroundColor = verticalBackgroundColor[i % verticalBackgroundColor.length];\n }\n if (backgroundColor) {\n const x = i >= 1 ? Math.ceil(this._scene._gantt.getDateColsWidth(0, i - 1)) : 0;\n const width = this._scene._gantt.getDateColWidth(i);\n const rect = createRect({\n pickable: false,\n fill: backgroundColor,\n x,\n y: 0,\n width,\n height: this.allGridHeight\n });\n this.verticalBackgroundRectsGroup.appendChild(rect);\n }\n }\n }\n }\n }\n createHorizontalBackgroundRects() {\n const horizontalBackgroundColor = this._scene._gantt.parsedOptions.grid.horizontalBackgroundColor;\n if (horizontalBackgroundColor) {\n this.horizontalBackgroundRectsGroup = new Group({\n x: 0,\n y: 0,\n width: this.allGridWidth,\n height: this.allGridHeight\n });\n this.horizontalBackgroundRectsGroup.name = 'grid-horizontal-background';\n this.group.appendChild(this.horizontalBackgroundRectsGroup);\n\n let y = 0;\n for (let i = 0; i <= this.rowCount - 1; i++) {\n let backgroundColor;\n if (typeof horizontalBackgroundColor === 'function') {\n backgroundColor = horizontalBackgroundColor({\n index: i,\n ganttInstance: this._scene._gantt\n });\n } else {\n backgroundColor = horizontalBackgroundColor[i % horizontalBackgroundColor.length];\n }\n\n const rect = createRect({\n pickable: false,\n fill: backgroundColor,\n x: 0,\n y,\n width: this.allGridWidth,\n height: this._scene._gantt.getRowHeightByIndex(i)\n });\n this.horizontalBackgroundRectsGroup.appendChild(rect);\n y += this._scene._gantt.getRowHeightByIndex(i);\n }\n }\n }\n /** 重新创建网格线场景树结点 */\n refresh() {\n this.width = this._scene.ganttGroup.attribute.width;\n this.height = this._scene.ganttGroup.attribute.height - this._scene.timelineHeader.group.attribute.height;\n this.group.setAttributes({\n width: this.width,\n height: this.height,\n y: this._scene._gantt.getAllHeaderRowsHeight()\n });\n this.rowCount = this._scene._gantt.itemCount;\n this.allGridWidth = this._scene._gantt.getAllDateColsWidth();\n this.allGridHeight = this._scene._gantt.getAllTaskBarsHeight();\n this.group.removeAllChild();\n // this.verticalLineGroup?.parent.removeChild(this.verticalLineGroup);\n // this.horizontalLineGroup?.parent.removeChild(this.horizontalLineGroup);\n // this.verticalBackgroundRectsGroup?.parent.removeChild(this.verticalBackgroundRectsGroup);\n // this.horizontalBackgroundRectsGroup?.parent.removeChild(this.horizontalBackgroundRectsGroup);\n this.createVerticalBackgroundRects();\n this.createHorizontalBackgroundRects();\n this.createVerticalLines();\n this.createHorizontalLines();\n this.createTimeLineHeaderBottomLine();\n }\n setX(x: number) {\n this.verticalLineGroup?.setAttribute('x', x);\n this.horizontalLineGroup?.setAttribute('x', x);\n this.verticalBackgroundRectsGroup?.setAttribute('x', x);\n this.horizontalBackgroundRectsGroup?.setAttribute('x', x);\n }\n setY(y: number) {\n this.verticalLineGroup?.setAttribute('y', y);\n this.horizontalLineGroup?.setAttribute('y', y);\n this.verticalBackgroundRectsGroup?.setAttribute('y', y);\n this.horizontalBackgroundRectsGroup?.setAttribute('y', y);\n }\n resize() {\n this.width = this._scene.ganttGroup.attribute.width;\n this.height = this._scene.ganttGroup.attribute.height - this._scene.timelineHeader.group.attribute.height;\n this.group.setAttribute('width', this.width);\n this.group.setAttribute('height', this.height);\n }\n}\n"]}
@@ -34,17 +34,15 @@ class MarkLine {
34
34
  height: height
35
35
  }), this.markLIneContainer.setAttribute("width", this._scene._gantt.getAllDateColsWidth()),
36
36
  this.markLIneContainer.setAttribute("height", height);
37
- const markLine = this._scene._gantt.parsedOptions.markLine, minDate = this._scene._gantt.parsedOptions.minDate;
38
- minDate && markLine.forEach((line => {
39
- const style = line.style, contentStyle = line.contentStyle || {}, date = this._scene._gantt.parsedOptions.timeScaleIncludeHour ? (0,
40
- util_1.createDateAtMidnight)(line.date) : (0, util_1.createDateAtMidnight)(line.date, !0), {unit: unit, step: step} = this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0], unitCount = (0,
41
- util_1.computeCountToTimeScale)(date, minDate, unit, step);
42
- let positionOffset = 0;
43
- if ("right" === line.position) positionOffset = 1; else if ("middle" === line.position) positionOffset = .5; else if ("date" === line.position) {
44
- const date = (0, util_1.createDateAtMidnight)(line.date), unitCount = (0, util_1.computeCountToTimeScale)(date, minDate, unit, step);
45
- positionOffset = unitCount - Math.floor(unitCount);
46
- }
47
- const dateX = this._scene._gantt.parsedOptions.timelineColWidth * (Math.floor(unitCount) + positionOffset), markLineGroup = new vrender_1.Group({
37
+ const markLine = this._scene._gantt.parsedOptions.markLine;
38
+ this._scene._gantt.parsedOptions.minDate && markLine.forEach((line => {
39
+ const style = line.style, contentStyle = line.contentStyle || {}, dateTime = (this._scene._gantt.parsedOptions.timeScaleIncludeHour ? (0,
40
+ util_1.createDateAtMidnight)(line.date) : (0, util_1.createDateAtMidnight)(line.date, !0)).getTime();
41
+ if (dateTime < this._scene._gantt.parsedOptions._minDateTime || dateTime > this._scene._gantt.parsedOptions._maxDateTime) return;
42
+ const cellIndex = this._scene._gantt.getDateIndexByTime(dateTime), cellStartX = cellIndex >= 1 ? this._scene._gantt.getDateColsWidth(0, cellIndex - 1) : 0, cellWidth = this._scene._gantt.getDateColWidth(cellIndex);
43
+ let dateX = cellStartX;
44
+ "date" === line.position ? dateX = this._scene._gantt.getXByTime(dateTime) : "right" === line.position ? dateX = cellStartX + cellWidth : "middle" === line.position && (dateX = cellStartX + cellWidth / 2);
45
+ const markLineGroup = new vrender_1.Group({
48
46
  pickable: !1,
49
47
  x: dateX - this.markLineContainerWidth / 2,
50
48
  y: 0,
@@ -66,7 +64,7 @@ class MarkLine {
66
64
  } ]
67
65
  });
68
66
  if (markLineGroup.appendChild(lineObj), line.content) {
69
- const textMaxLineWidth = this._scene._gantt.parsedOptions.timelineColWidth, textContainerHeight = contentStyle.lineHeight || 18, textGroup = new vrender_1.Group({
67
+ const textMaxLineWidth = Math.max(this._scene._gantt.getDateColWidth(cellIndex), 1), textContainerHeight = contentStyle.lineHeight || 18, textGroup = new vrender_1.Group({
70
68
  x: this.markLineContainerWidth / 2,
71
69
  y: 0,
72
70
  cursor: "pointer",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/mark-line.ts"],"names":[],"mappings":"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","file":"mark-line.js","sourcesContent":["import { computeCountToTimeScale, createDateAtMidnight } from '../tools/util';\nimport { DayTimes } from '../gantt-helper';\n//import type { IMarkLine } from '../ts-types';\nimport type { Scenegraph } from './scenegraph';\nimport { Group, createLine, Text } from '@visactor/vtable/es/vrender';\n\nexport class MarkLine {\n _scene: Scenegraph;\n group: Group;\n markLIneContainer: Group;\n markLineContainerWidth: number = 20;\n height: number;\n constructor(scene: Scenegraph) {\n this._scene = scene;\n this.height =\n Math.min(scene._gantt.tableNoFrameHeight, scene._gantt.drawHeight) - scene._gantt.getAllHeaderRowsHeight();\n this.group = new Group({\n x: 0,\n y: scene._gantt.getAllHeaderRowsHeight(),\n width: scene._gantt.tableNoFrameWidth,\n height: this.height,\n pickable: false,\n clip: true\n });\n this.group.name = 'mark-line-container';\n scene.ganttGroup.addChild(this.group);\n\n this.markLIneContainer = new Group({\n x: 0,\n y: 0,\n width: this._scene._gantt.getAllDateColsWidth(),\n height: this.height,\n pickable: false,\n clip: true\n });\n this.group.appendChild(this.markLIneContainer);\n this.initMarkLines();\n }\n initMarkLines() {\n //#region 重置markLine容器大小\n const height =\n Math.min(this._scene._gantt.tableNoFrameHeight, this._scene._gantt.drawHeight) -\n this._scene._gantt.getAllHeaderRowsHeight();\n this.group.setAttributes({\n y: this._scene._gantt.getAllHeaderRowsHeight(),\n width: this._scene._gantt.tableNoFrameWidth,\n height: height\n });\n this.markLIneContainer.setAttribute('width', this._scene._gantt.getAllDateColsWidth());\n this.markLIneContainer.setAttribute('height', height);\n //#endregion\n const markLine = this._scene._gantt.parsedOptions.markLine;\n const minDate = this._scene._gantt.parsedOptions.minDate;\n minDate &&\n markLine.forEach(line => {\n const style = line.style;\n const contentStyle = line.contentStyle || {};\n const date = this._scene._gantt.parsedOptions.timeScaleIncludeHour\n ? createDateAtMidnight(line.date)\n : createDateAtMidnight(line.date, true);\n const { unit, step } = this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0];\n const unitCount = computeCountToTimeScale(date, minDate, unit, step);\n let positionOffset = 0;\n if (line.position === 'right') {\n positionOffset = 1;\n } else if (line.position === 'middle') {\n positionOffset = 0.5;\n } else if (line.position === 'date') {\n const date = createDateAtMidnight(line.date);\n const unitCount = computeCountToTimeScale(date, minDate, unit, step);\n const cellIndex = Math.floor(unitCount);\n positionOffset = unitCount - cellIndex;\n }\n const dateX = this._scene._gantt.parsedOptions.timelineColWidth * (Math.floor(unitCount) + positionOffset);\n const markLineGroup = new Group({\n pickable: false,\n x: dateX - this.markLineContainerWidth / 2,\n y: 0,\n width: this.markLineContainerWidth,\n height: this.height\n });\n markLineGroup.name = 'mark-line';\n this.markLIneContainer.appendChild(markLineGroup);\n // 创建整个任务条rect\n const lineObj = createLine({\n pickable: false,\n stroke: style.lineColor,\n lineWidth: style.lineWidth,\n lineDash: style.lineDash,\n points: [\n { x: this.markLineContainerWidth / 2, y: 0 },\n { x: this.markLineContainerWidth / 2, y: this.height }\n ]\n });\n markLineGroup.appendChild(lineObj);\n if (line.content) {\n const textMaxLineWidth = this._scene._gantt.parsedOptions.timelineColWidth;\n const textContainerHeight = contentStyle.lineHeight || 18;\n // 创建内容区\n const textGroup = new Group({\n x: this.markLineContainerWidth / 2,\n y: 0,\n cursor: 'pointer',\n height: textContainerHeight,\n clip: false,\n fill: contentStyle.backgroundColor || style.lineColor,\n display: 'flex',\n cornerRadius: contentStyle.cornerRadius || [0, 2, 2, 0]\n });\n textGroup.name = 'mark-line-content';\n (textGroup as any).data = line;\n markLineGroup.appendChild(textGroup);\n // 创建内容\n const text = new Text({\n maxLineWidth: textMaxLineWidth,\n text: line.content,\n cursor: 'pointer',\n lineHeight: textContainerHeight,\n fontWeight: contentStyle.fontWeight || 'normal',\n fill: contentStyle.color || style.lineColor,\n fontSize: contentStyle.fontSize || 12,\n poptip: {\n position: 'top',\n dx: textMaxLineWidth / 4,\n dy: -textContainerHeight / 4\n }\n } as any);\n textGroup.appendChild(text);\n }\n });\n }\n\n /** 重新场景场景树节点 */\n refresh() {\n this.height =\n Math.min(this._scene._gantt.tableNoFrameHeight, this._scene._gantt.drawHeight) -\n this._scene._gantt.getAllHeaderRowsHeight();\n this.markLIneContainer.removeAllChild();\n this.group.setAttribute('height', this.height);\n this.markLIneContainer.setAttribute('height', this.height);\n this.initMarkLines();\n }\n setX(x: number) {\n this.markLIneContainer.setAttribute('x', x);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/mark-line.ts"],"names":[],"mappings":"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","file":"mark-line.js","sourcesContent":["import { createDateAtMidnight } from '../tools/util';\nimport { DayTimes } from '../gantt-helper';\n//import type { IMarkLine } from '../ts-types';\nimport type { Scenegraph } from './scenegraph';\nimport { Group, createLine, Text } from '@visactor/vtable/es/vrender';\n\nexport class MarkLine {\n _scene: Scenegraph;\n group: Group;\n markLIneContainer: Group;\n markLineContainerWidth: number = 20;\n height: number;\n constructor(scene: Scenegraph) {\n this._scene = scene;\n this.height =\n Math.min(scene._gantt.tableNoFrameHeight, scene._gantt.drawHeight) - scene._gantt.getAllHeaderRowsHeight();\n this.group = new Group({\n x: 0,\n y: scene._gantt.getAllHeaderRowsHeight(),\n width: scene._gantt.tableNoFrameWidth,\n height: this.height,\n pickable: false,\n clip: true\n });\n this.group.name = 'mark-line-container';\n scene.ganttGroup.addChild(this.group);\n\n this.markLIneContainer = new Group({\n x: 0,\n y: 0,\n width: this._scene._gantt.getAllDateColsWidth(),\n height: this.height,\n pickable: false,\n clip: true\n });\n this.group.appendChild(this.markLIneContainer);\n this.initMarkLines();\n }\n initMarkLines() {\n //#region 重置markLine容器大小\n const height =\n Math.min(this._scene._gantt.tableNoFrameHeight, this._scene._gantt.drawHeight) -\n this._scene._gantt.getAllHeaderRowsHeight();\n this.group.setAttributes({\n y: this._scene._gantt.getAllHeaderRowsHeight(),\n width: this._scene._gantt.tableNoFrameWidth,\n height: height\n });\n this.markLIneContainer.setAttribute('width', this._scene._gantt.getAllDateColsWidth());\n this.markLIneContainer.setAttribute('height', height);\n //#endregion\n const markLine = this._scene._gantt.parsedOptions.markLine;\n const minDate = this._scene._gantt.parsedOptions.minDate;\n minDate &&\n markLine.forEach(line => {\n const style = line.style;\n const contentStyle = line.contentStyle || {};\n const date = this._scene._gantt.parsedOptions.timeScaleIncludeHour\n ? createDateAtMidnight(line.date)\n : createDateAtMidnight(line.date, true);\n const dateTime = date.getTime();\n if (\n dateTime < this._scene._gantt.parsedOptions._minDateTime ||\n dateTime > this._scene._gantt.parsedOptions._maxDateTime\n ) {\n return;\n }\n const cellIndex = this._scene._gantt.getDateIndexByTime(dateTime);\n const cellStartX = cellIndex >= 1 ? this._scene._gantt.getDateColsWidth(0, cellIndex - 1) : 0;\n const cellWidth = this._scene._gantt.getDateColWidth(cellIndex);\n let dateX = cellStartX;\n if (line.position === 'date') {\n dateX = this._scene._gantt.getXByTime(dateTime);\n } else if (line.position === 'right') {\n dateX = cellStartX + cellWidth;\n } else if (line.position === 'middle') {\n dateX = cellStartX + cellWidth / 2;\n }\n const markLineGroup = new Group({\n pickable: false,\n x: dateX - this.markLineContainerWidth / 2,\n y: 0,\n width: this.markLineContainerWidth,\n height: this.height\n });\n markLineGroup.name = 'mark-line';\n this.markLIneContainer.appendChild(markLineGroup);\n // 创建整个任务条rect\n const lineObj = createLine({\n pickable: false,\n stroke: style.lineColor,\n lineWidth: style.lineWidth,\n lineDash: style.lineDash,\n points: [\n { x: this.markLineContainerWidth / 2, y: 0 },\n { x: this.markLineContainerWidth / 2, y: this.height }\n ]\n });\n markLineGroup.appendChild(lineObj);\n if (line.content) {\n const textMaxLineWidth = Math.max(this._scene._gantt.getDateColWidth(cellIndex), 1);\n const textContainerHeight = contentStyle.lineHeight || 18;\n // 创建内容区\n const textGroup = new Group({\n x: this.markLineContainerWidth / 2,\n y: 0,\n cursor: 'pointer',\n height: textContainerHeight,\n clip: false,\n fill: contentStyle.backgroundColor || style.lineColor,\n display: 'flex',\n cornerRadius: contentStyle.cornerRadius || [0, 2, 2, 0]\n });\n textGroup.name = 'mark-line-content';\n (textGroup as any).data = line;\n markLineGroup.appendChild(textGroup);\n // 创建内容\n const text = new Text({\n maxLineWidth: textMaxLineWidth,\n text: line.content,\n cursor: 'pointer',\n lineHeight: textContainerHeight,\n fontWeight: contentStyle.fontWeight || 'normal',\n fill: contentStyle.color || style.lineColor,\n fontSize: contentStyle.fontSize || 12,\n poptip: {\n position: 'top',\n dx: textMaxLineWidth / 4,\n dy: -textContainerHeight / 4\n }\n } as any);\n textGroup.appendChild(text);\n }\n });\n }\n\n /** 重新场景场景树节点 */\n refresh() {\n this.height =\n Math.min(this._scene._gantt.tableNoFrameHeight, this._scene._gantt.drawHeight) -\n this._scene._gantt.getAllHeaderRowsHeight();\n this.markLIneContainer.removeAllChild();\n this.group.setAttribute('height', this.height);\n this.markLIneContainer.setAttribute('height', this.height);\n this.initMarkLines();\n }\n setX(x: number) {\n this.markLIneContainer.setAttribute('x', x);\n }\n}\n"]}
@@ -107,19 +107,15 @@ class TaskBar {
107
107
  barGroupBox: null,
108
108
  baselineBar: null
109
109
  };
110
- const {unit: unit, step: step} = this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0];
111
- let taskBarSize = (0, util_1.computeCountToTimeScale)(endDate, startDate, unit, step, 1) * this._scene._gantt.parsedOptions.timelineColWidth;
110
+ let taskBarSize = this._scene._gantt.getXByTime(endDate.getTime() + 1) - this._scene._gantt.getXByTime(startDate.getTime());
112
111
  const taskBarStyle = this._scene._gantt.getTaskBarStyle(index, childIndex), taskbarHeight = taskBarStyle.width;
113
112
  (0, vutils_1.isValid)(taskBarStyle.minSize) && (taskBarSize = Math.max(taskBarSize, taskBarStyle.minSize));
114
- const oneTaskHeigth = this._scene._gantt.parsedOptions.rowHeight, milestoneTaskBarHeight = this._scene._gantt.parsedOptions.taskBarMilestoneStyle.width, x = (0,
115
- util_1.computeCountToTimeScale)(startDate, this._scene._gantt.parsedOptions.minDate, unit, step) * this._scene._gantt.parsedOptions.timelineColWidth - (isMilestone ? milestoneTaskBarHeight / 2 : 0);
113
+ const oneTaskHeigth = this._scene._gantt.parsedOptions.rowHeight, milestoneTaskBarHeight = this._scene._gantt.parsedOptions.taskBarMilestoneStyle.width, x = this._scene._gantt.getXByTime(startDate.getTime()) - (isMilestone ? milestoneTaskBarHeight / 2 : 0);
116
114
  let y = this._scene._gantt.getRowsHeightByIndex(0, index - 1) + (this._scene._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Separate ? (null !== (_a = childIndex) && void 0 !== _a ? _a : 0) * oneTaskHeigth : this._scene._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Arrange || this._scene._gantt.parsedOptions.tasksShowMode === ts_types_1.TasksShowMode.Sub_Tasks_Compact ? taskRecord.vtable_gantt_showIndex * oneTaskHeigth : 0);
117
115
  const baselineInfo = this._scene._gantt.getBaselineInfoByTaskListIndex(index, childIndex), hasBaseline = baselineInfo.baselineStartDate && baselineInfo.baselineEndDate && baselineInfo.baselineDays > 0, baselinePosition = this._scene._gantt.parsedOptions.baselinePosition;
118
116
  let baselineBar = null, taskBarYOffset = 0;
119
117
  if (hasBaseline && !isMilestone) {
120
- const baselineStyle = this._scene._gantt.getBaselineStyle(index, childIndex), baselineX = (0,
121
- util_1.computeCountToTimeScale)(baselineInfo.baselineStartDate, this._scene._gantt.parsedOptions.minDate, unit, step) * this._scene._gantt.parsedOptions.timelineColWidth, baselineWidth = (0,
122
- util_1.computeCountToTimeScale)(baselineInfo.baselineEndDate, baselineInfo.baselineStartDate, unit, step, 1) * this._scene._gantt.parsedOptions.timelineColWidth;
118
+ const baselineStyle = this._scene._gantt.getBaselineStyle(index, childIndex), baselineX = this._scene._gantt.getXByTime(baselineInfo.baselineStartDate.getTime()), baselineWidth = this._scene._gantt.getXByTime(baselineInfo.baselineEndDate.getTime() + 1) - this._scene._gantt.getXByTime(baselineInfo.baselineStartDate.getTime());
123
119
  let baselineY;
124
120
  const taskBarPaddingTop = null !== (_b = taskBarStyle.paddingTop) && void 0 !== _b ? _b : void 0, baselinePaddingTop = null !== (_c = baselineStyle.paddingTop) && void 0 !== _c ? _c : void 0;
125
121
  if ("overlap" === baselinePosition) baselineY = void 0 !== taskBarPaddingTop ? y + taskBarPaddingTop : y + (oneTaskHeigth - baselineStyle.width) / 2; else if ("top" === baselinePosition) {
@@ -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, Polygon } from '@visactor/vtable/es/vrender';\nimport type { Scenegraph } from './scenegraph';\n// import { Icon } from './icon';\nimport { computeCountToTimeScale, parseStringTemplate, toBoxArray } from '../tools/util';\nimport { isValid } from '@visactor/vutils';\nimport { defaultTaskBarStyle, getTextPos } from '../gantt-helper';\nimport { GanttTaskBarNode } from './gantt-node';\nimport { TasksShowMode, TaskType } 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 formatMilestoneText(text: string, record: any): string {\n if (!text) {\n return '';\n }\n const fieldPattern = /{([^}]+)}/g;\n const matches = text.match(fieldPattern);\n\n if (matches) {\n matches.forEach(match => {\n const fieldName = match.substring(1, match.length - 1);\n const fieldValue = record[fieldName];\n if (fieldValue !== undefined) {\n text = text.replace(match, String(fieldValue));\n }\n });\n }\n return text;\n }\n\n calculateMilestoneTextPosition(\n position: string,\n milestoneWidth: number,\n padding: number | number[] = 4\n ): {\n textX: number;\n textY: number;\n textAlignValue: CanvasTextAlign;\n textBaselineValue: CanvasTextBaseline;\n } {\n const paddingVal = typeof padding === 'number' ? padding : 4;\n let textX = 0;\n let textY = 0;\n let textAlignValue: CanvasTextAlign = 'left';\n let textBaselineValue: CanvasTextBaseline = 'middle';\n\n // 将文本位置改为以中心点为基准\n const center = milestoneWidth / 2;\n\n switch (position) {\n case 'left':\n textX = -paddingVal;\n textY = center;\n textAlignValue = 'end';\n textBaselineValue = 'middle';\n break;\n case 'right':\n textX = milestoneWidth + paddingVal;\n textY = center;\n textAlignValue = 'start';\n textBaselineValue = 'middle';\n break;\n case 'top':\n textX = center;\n textY = -paddingVal;\n textAlignValue = 'center';\n textBaselineValue = 'bottom';\n break;\n case 'bottom':\n textX = center;\n textY = milestoneWidth + paddingVal;\n textAlignValue = 'center';\n textBaselineValue = 'top';\n break;\n default:\n textX = milestoneWidth + paddingVal;\n textY = center;\n textAlignValue = 'start';\n textBaselineValue = 'middle';\n }\n\n return {\n textX,\n textY,\n textAlignValue,\n textBaselineValue\n };\n }\n group: Group;\n barContainer: Group;\n hoverBarGroup: Group;\n creatingDependencyLine: Line;\n hoverBarLeftIcon: Image;\n hoverBarRightIcon: Image;\n hoverBarProgressHandle: Group;\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.ganttGroup.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 { barGroupBox, baselineBar } = this.initBar(i, j, record.children.length);\n if (baselineBar) {\n this.barContainer.appendChild(baselineBar);\n }\n if (barGroupBox) {\n this.barContainer.appendChild(barGroupBox);\n }\n }\n } else {\n const { barGroupBox, baselineBar } = this.initBar(i);\n if (baselineBar) {\n this.barContainer.appendChild(baselineBar);\n }\n if (barGroupBox) {\n this.barContainer.appendChild(barGroupBox);\n }\n }\n continue;\n } else if (this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Project_Sub_Tasks_Inline) {\n const record = this._scene._gantt.getRecordByIndex(i);\n const isExpanded = record.hierarchyState === 'expand';\n // For project type records, we want to show all children in one line when collapsed\n if (record.type === TaskType.PROJECT && record.children?.length > 0 && !isExpanded) {\n const recordIndex = this._scene._gantt.getRecordIndexByTaskShowIndex(i);\n const sub_task_indexs: number[] = Array.isArray(recordIndex) ? [...recordIndex] : [recordIndex];\n\n const callInitBar = (record: any, sub_task_indexs: number[]) => {\n if (record.children?.length > 0) {\n for (let j = 0; j < record.children?.length; j++) {\n const child_record = record.children[j];\n if (child_record.type !== TaskType.PROJECT) {\n const { barGroupBox, baselineBar } = this.initBar(i, [...sub_task_indexs, j], record.children.length);\n if (baselineBar) {\n this.barContainer.appendChild(baselineBar);\n }\n if (barGroupBox) {\n this.barContainer.appendChild(barGroupBox);\n }\n } else {\n //如果是project类型的子任务,需要递归调用 只将类型不是project的子任务添加到barContainer中\n callInitBar(child_record, [...sub_task_indexs, j]);\n }\n }\n }\n };\n callInitBar(record, sub_task_indexs);\n } else {\n // For non-project tasks, use the default Tasks_Separate mode\n const { barGroupBox, baselineBar } = this.initBar(i);\n if (baselineBar) {\n this.barContainer.appendChild(baselineBar);\n }\n if (barGroupBox) {\n this.barContainer.appendChild(barGroupBox);\n }\n }\n continue;\n } else {\n const { barGroupBox, baselineBar } = this.initBar(i);\n if (baselineBar) {\n this.barContainer.appendChild(baselineBar);\n }\n if (barGroupBox) {\n this.barContainer.appendChild(barGroupBox);\n }\n }\n }\n }\n\n /**\n * @param index 任务显示的index,从0开始\n * @param childIndex 子任务的index, 当taskShowMode是sub_tasks_*模式时,会传入sub_task_index。如果是tasks_separate模式,sub_task_index传入undefined。\n * 如果模式Project_Sub_Tasks_Inline时,传入的sub_task_index是一个数组,数组的第一个元素是父任务的index,第二个元素是子任务的index,依次类推算是各层子任务的path。\n */\n initBar(index: number, childIndex?: number | 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 const isMilestone = taskRecord.type === TaskType.MILESTONE;\n if (\n (isMilestone && !startDate) ||\n (!isMilestone && (taskDays <= 0 || !startDate || !endDate || startDate.getTime() > endDate.getTime()))\n ) {\n return { barGroupBox: null, baselineBar: null };\n }\n const { unit, step } = this._scene._gantt.parsedOptions.reverseSortedTimelineScales[0];\n let taskBarSize =\n computeCountToTimeScale(endDate, startDate, unit, step, 1) * this._scene._gantt.parsedOptions.timelineColWidth;\n\n const taskBarStyle = this._scene._gantt.getTaskBarStyle(index, childIndex);\n const taskbarHeight = taskBarStyle.width;\n if (isValid(taskBarStyle.minSize)) {\n taskBarSize = Math.max(taskBarSize, taskBarStyle.minSize);\n }\n\n const oneTaskHeigth = this._scene._gantt.parsedOptions.rowHeight;\n const milestoneTaskBarHeight = this._scene._gantt.parsedOptions.taskBarMilestoneStyle.width;\n const x =\n computeCountToTimeScale(startDate, this._scene._gantt.parsedOptions.minDate, unit, step) *\n this._scene._gantt.parsedOptions.timelineColWidth -\n (isMilestone ? milestoneTaskBarHeight / 2 : 0);\n let y =\n this._scene._gantt.getRowsHeightByIndex(0, index - 1) +\n (this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate\n ? ((childIndex as number) ?? 0) * 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\n const baselineInfo = this._scene._gantt.getBaselineInfoByTaskListIndex(index, childIndex);\n const hasBaseline = baselineInfo.baselineStartDate && baselineInfo.baselineEndDate && baselineInfo.baselineDays > 0;\n const baselinePosition = this._scene._gantt.parsedOptions.baselinePosition;\n\n let baselineBar: any = null;\n let taskBarYOffset = 0;\n\n if (hasBaseline && !isMilestone) {\n const baselineStyle = this._scene._gantt.getBaselineStyle(index, childIndex);\n const baselineX =\n computeCountToTimeScale(baselineInfo.baselineStartDate, this._scene._gantt.parsedOptions.minDate, unit, step) *\n this._scene._gantt.parsedOptions.timelineColWidth;\n const baselineWidth =\n computeCountToTimeScale(baselineInfo.baselineEndDate, baselineInfo.baselineStartDate, unit, step, 1) *\n this._scene._gantt.parsedOptions.timelineColWidth;\n\n let baselineY: number;\n const taskBarPaddingTop = taskBarStyle.paddingTop ?? undefined;\n const baselinePaddingTop = baselineStyle.paddingTop ?? undefined;\n\n if (baselinePosition === 'overlap') {\n if (taskBarPaddingTop !== undefined) {\n baselineY = y + taskBarPaddingTop;\n } else {\n baselineY = y + (oneTaskHeigth - baselineStyle.width) / 2;\n }\n } else if (baselinePosition === 'top') {\n const gap = 4;\n if (baselinePaddingTop !== undefined && taskBarPaddingTop !== undefined) {\n baselineY = y + baselinePaddingTop;\n taskBarYOffset = taskBarPaddingTop;\n } else if (baselinePaddingTop !== undefined) {\n baselineY = y + baselinePaddingTop;\n taskBarYOffset = baselinePaddingTop + baselineStyle.width + gap;\n } else if (taskBarPaddingTop !== undefined) {\n const totalHeight = baselineStyle.width + gap + taskbarHeight;\n const startY = (oneTaskHeigth - totalHeight) / 2;\n baselineY = y + startY;\n taskBarYOffset = taskBarPaddingTop;\n } else {\n const totalHeight = baselineStyle.width + gap + taskbarHeight;\n const startY = (oneTaskHeigth - totalHeight) / 2;\n baselineY = y + startY;\n taskBarYOffset = startY + baselineStyle.width + gap;\n }\n } else {\n const gap = 4;\n if (taskBarPaddingTop !== undefined && baselinePaddingTop !== undefined) {\n taskBarYOffset = taskBarPaddingTop;\n baselineY = y + baselinePaddingTop;\n } else if (taskBarPaddingTop !== undefined) {\n taskBarYOffset = taskBarPaddingTop;\n baselineY = y + taskBarPaddingTop + taskbarHeight + gap;\n } else if (baselinePaddingTop !== undefined) {\n const totalHeight = taskbarHeight + gap + baselineStyle.width;\n const startY = (oneTaskHeigth - totalHeight) / 2;\n taskBarYOffset = startY;\n baselineY = y + baselinePaddingTop;\n } else {\n const totalHeight = taskbarHeight + gap + baselineStyle.width;\n const startY = (oneTaskHeigth - totalHeight) / 2;\n taskBarYOffset = startY;\n baselineY = y + startY + taskbarHeight + gap;\n }\n }\n\n baselineBar = createRect({\n x: baselineX,\n y: baselineY,\n width: Math.max(baselineWidth, baselineStyle.minSize || 0),\n height: baselineStyle.width,\n fill: baselineStyle.barColor,\n cornerRadius: baselineStyle.cornerRadius,\n lineWidth: (baselineStyle.borderLineWidth ?? baselineStyle.borderWidth) * 2,\n stroke: baselineStyle.borderColor,\n pickable: false\n });\n baselineBar.name = 'baseline-bar';\n }\n\n const taskBarPaddingTop = taskBarStyle.paddingTop ?? undefined;\n if (hasBaseline && !isMilestone && baselinePosition !== 'overlap') {\n y = y + taskBarYOffset;\n } else if (taskBarPaddingTop !== undefined) {\n y = y + taskBarPaddingTop;\n } else {\n y += (oneTaskHeigth - (isMilestone ? milestoneTaskBarHeight : taskbarHeight)) / 2 + taskBarYOffset;\n }\n\n const barGroupBox = new GanttTaskBarNode({\n x,\n y,\n width: isMilestone ? milestoneTaskBarHeight : taskBarSize,\n height: isMilestone ? milestoneTaskBarHeight : taskbarHeight,\n cornerRadius: isMilestone\n ? this._scene._gantt.parsedOptions.taskBarMilestoneStyle.cornerRadius\n : taskBarStyle.cornerRadius,\n lineWidth: isMilestone\n ? this._scene._gantt.parsedOptions.taskBarMilestoneStyle.borderLineWidth * 2\n : (taskBarStyle.borderLineWidth ?? taskBarStyle.borderWidth) * 2,\n stroke: isMilestone\n ? this._scene._gantt.parsedOptions.taskBarMilestoneStyle.borderColor\n : taskBarStyle.borderColor,\n angle: isMilestone ? (45 / 180) * Math.PI : 0,\n anchor: isMilestone ? [x + milestoneTaskBarHeight / 2, y + milestoneTaskBarHeight / 2] : undefined\n });\n barGroupBox.name = 'task-bar';\n barGroupBox.task_index = index;\n barGroupBox.sub_task_index = childIndex as any;\n barGroupBox.record = taskRecord;\n\n const barGroup = new Group({\n x: 0,\n y: 0,\n width: barGroupBox.attribute.width,\n height: barGroupBox.attribute.height,\n cornerRadius: isMilestone\n ? this._scene._gantt.parsedOptions.taskBarMilestoneStyle.cornerRadius\n : taskBarStyle.cornerRadius,\n clip: this._scene._gantt.parsedOptions.taskBarClip\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 rootContainer = customLayoutObj.rootContainer;\n renderDefaultBar = customLayoutObj.renderDefaultBar ?? false;\n renderDefaultText = customLayoutObj.renderDefaultText ?? false;\n rootContainer && (rootContainer.name = 'task-bar-custom-render');\n }\n }\n\n if (renderDefaultBar) {\n const rect = createRect({\n x: 0,\n y: 0,\n width: barGroupBox.attribute.width,\n height: barGroupBox.attribute.height,\n fill: isMilestone ? this._scene._gantt.parsedOptions.taskBarMilestoneStyle.fillColor : taskBarStyle.barColor,\n pickable: false\n });\n rect.name = 'task-bar-rect';\n barGroup.appendChild(rect);\n barGroupBox.barRect = rect;\n if (taskRecord.type !== TaskType.MILESTONE) {\n const progress_rect = createRect({\n x: 0,\n y: 0,\n width: (taskBarSize * progress) / 100,\n height: taskbarHeight,\n fill: 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\n rootContainer && barGroup.appendChild(rootContainer);\n if (renderDefaultText && taskRecord.type !== TaskType.MILESTONE) {\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 } as any);\n\n barGroup.appendChild(label);\n barGroupBox.textLabel = label;\n\n barGroupBox.labelStyle = this._scene._gantt.parsedOptions.taskBarLabelStyle;\n\n barGroupBox.updateTextPosition();\n }\n if (\n renderDefaultText &&\n taskRecord.type === 'milestone' &&\n this._scene._gantt.parsedOptions.taskBarMilestoneStyle.labelText\n ) {\n const milestoneStyle = this._scene._gantt.parsedOptions.taskBarMilestoneStyle;\n const textStyle = milestoneStyle.labelTextStyle || {};\n const pos = this.calculateMilestoneTextPosition(\n milestoneStyle.textOrient || 'right',\n milestoneStyle.width,\n textStyle.padding ?? 4\n );\n\n const textContainer = new Group({\n x,\n y,\n width: milestoneStyle.width,\n height: milestoneStyle.width,\n angle: 0,\n pickable: false\n });\n\n const milestoneLabel = createText({\n x: pos.textX,\n y: pos.textY,\n fontSize: textStyle.fontSize || 16,\n fontFamily: textStyle.fontFamily || 'Arial',\n fill: textStyle.color || '#ff0000',\n textBaseline: (textStyle.textBaseline || pos.textBaselineValue) as any,\n textAlign: textStyle.textAlign || pos.textAlignValue,\n text: this.formatMilestoneText(milestoneStyle.labelText, taskRecord),\n pickable: false\n });\n\n textContainer.appendChild(milestoneLabel);\n this.barContainer.appendChild(textContainer);\n\n barGroupBox.milestoneTextLabel = milestoneLabel;\n barGroupBox.milestoneTextContainer = textContainer;\n }\n return { barGroupBox, baselineBar };\n }\n updateTaskBarNode(index: number, sub_task_index?: number) {\n const taskbarGroup = this.getTaskBarNodeByIndex(index, sub_task_index);\n if (taskbarGroup) {\n this.barContainer.removeChild(taskbarGroup);\n }\n const { barGroupBox, baselineBar } = this.initBar(index, sub_task_index);\n if (barGroupBox) {\n this.barContainer.insertInto(barGroupBox, index); //TODO\n barGroupBox.updateTextPosition();\n }\n if (baselineBar) {\n this.barContainer.insertBefore(baselineBar, barGroupBox);\n }\n }\n initHoverBarIcons() {\n const hoverBarGroup = new Group({\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n clip: false, // 关闭裁剪以允许进度手柄显示在任务条外部\n pickable: false,\n cornerRadius:\n this._scene._gantt.parsedOptions.taskBarHoverStyle.cornerRadius ?? defaultTaskBarStyle.cornerRadius ?? 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 const progressHandle = new Group({\n x: 0,\n y: 0,\n width: 12,\n height: 12,\n pickable: true,\n cursor: 'ew-resize',\n visible: false\n });\n\n // 创建三角形手柄\n const triangleHandle = new Polygon({\n points: [\n { x: 6, y: 0 }, // 顶部中心点\n { x: 0, y: 6 }, // 左下角\n { x: 12, y: 6 } // 右下角\n ],\n fill: '#0064ff',\n stroke: '#ffffff',\n lineWidth: 1,\n pickable: false\n });\n progressHandle.appendChild(triangleHandle);\n\n progressHandle.name = 'task-bar-progress-handle';\n this.hoverBarProgressHandle = progressHandle;\n hoverBarGroup.appendChild(progressHandle);\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 const x = this.barContainer.attribute.x;\n const y = this.barContainer.attribute.y;\n this.barContainer.removeAllChild();\n this.group.removeChild(this.barContainer);\n this.initBars();\n this.setX(x);\n this.setY(y);\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?: GanttTaskBarNode) {\n const { startDate, endDate, taskRecord } = this._scene._gantt.getTaskInfoByTaskListIndex(\n target.task_index,\n target.sub_task_index\n );\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 const taskBarStyle = this._scene._gantt.getTaskBarStyle(target.task_index, target.sub_task_index);\n if (taskRecord.type === TaskType.MILESTONE) {\n this.hoverBarGroup.setAttribute('cornerRadius', target.attribute.cornerRadius);\n } else {\n const cornerRadius =\n this._scene._gantt.parsedOptions.taskBarHoverStyle.cornerRadius ?? taskBarStyle.cornerRadius ?? 0;\n this.hoverBarGroup.setAttribute('cornerRadius', cornerRadius);\n }\n this.hoverBarLeftIcon?.setAttribute('visible', false);\n this.hoverBarRightIcon?.setAttribute('visible', false);\n this.hoverBarProgressHandle?.setAttribute('visibleAll', false);\n\n let leftResizable = true;\n let rightResizable = true;\n let progressAdjustable = true;\n\n const progressField = this._scene._gantt.parsedOptions.progressField;\n const hasProgressField =\n progressField && taskRecord[progressField] !== undefined && taskRecord[progressField] !== null;\n\n if (!hasProgressField) {\n progressAdjustable = false;\n } else if (typeof this._scene._gantt.parsedOptions.taskBarProgressAdjustable === 'function') {\n const arg = {\n index: target.task_index,\n startDate,\n endDate,\n taskRecord,\n ganttInstance: this._scene._gantt\n };\n progressAdjustable = this._scene._gantt.parsedOptions.taskBarProgressAdjustable(arg);\n } else {\n progressAdjustable = this._scene._gantt.parsedOptions.taskBarProgressAdjustable;\n }\n\n if (taskRecord.type === TaskType.MILESTONE) {\n leftResizable = false;\n rightResizable = false;\n progressAdjustable = false;\n } else 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 (progressAdjustable) {\n this.hoverBarProgressHandle.setAttribute('visibleAll', 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 if (this.hoverBarProgressHandle) {\n const { progress } = this._scene._gantt.getTaskInfoByTaskListIndex(target.task_index, target.sub_task_index);\n const progressX = (width * progress) / 100 - 6;\n this.hoverBarProgressHandle.setAttribute('x', progressX);\n this.hoverBarProgressHandle.setAttribute('y', height - 3); // 让三角形有一半在进度条内\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 record = attachedToTaskBarNode.record;\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: attachedToTaskBarNode.attribute.cornerRadius,\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 // angle: attachedToTaskBarNode.attribute.angle,\n // anchor: attachedToTaskBarNode.attribute.anchor\n } as any);\n selectedBorder.name = 'task-bar-select-border';\n this.barContainer.appendChild(selectedBorder);\n this.selectedBorders.push(selectedBorder);\n\n const selectRectBorder = new Group({\n x: 0,\n y: 0,\n width,\n height,\n lineWidth: this._scene._gantt.parsedOptions.taskBarSelectedStyle.borderLineWidth,\n pickable: false,\n cornerRadius: attachedToTaskBarNode.attribute.cornerRadius,\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 angle: attachedToTaskBarNode.attribute.angle,\n anchor: [width / 2, height / 2]\n });\n // selectRectBorder.name = 'task-bar-select-border';\n selectedBorder.appendChild(selectRectBorder);\n\n if (showLinkPoint) {\n const isMilestone = record.type === TaskType.MILESTONE;\n const linePointPadding = isMilestone ? 15 : 10;\n const linkPointContainer = new Group({\n x: -linePointPadding,\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 + (linePointPadding - 10),\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): GanttTaskBarNode {\n let c = this.barContainer.firstChild as GanttTaskBarNode;\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 GanttTaskBarNode;\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, Polygon } from '@visactor/vtable/es/vrender';\nimport type { Scenegraph } from './scenegraph';\n// import { Icon } from './icon';\nimport { parseStringTemplate, toBoxArray } from '../tools/util';\nimport { isValid } from '@visactor/vutils';\nimport { defaultTaskBarStyle, getTextPos } from '../gantt-helper';\nimport { GanttTaskBarNode } from './gantt-node';\nimport { TasksShowMode, TaskType } 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 formatMilestoneText(text: string, record: any): string {\n if (!text) {\n return '';\n }\n const fieldPattern = /{([^}]+)}/g;\n const matches = text.match(fieldPattern);\n\n if (matches) {\n matches.forEach(match => {\n const fieldName = match.substring(1, match.length - 1);\n const fieldValue = record[fieldName];\n if (fieldValue !== undefined) {\n text = text.replace(match, String(fieldValue));\n }\n });\n }\n return text;\n }\n\n calculateMilestoneTextPosition(\n position: string,\n milestoneWidth: number,\n padding: number | number[] = 4\n ): {\n textX: number;\n textY: number;\n textAlignValue: CanvasTextAlign;\n textBaselineValue: CanvasTextBaseline;\n } {\n const paddingVal = typeof padding === 'number' ? padding : 4;\n let textX = 0;\n let textY = 0;\n let textAlignValue: CanvasTextAlign = 'left';\n let textBaselineValue: CanvasTextBaseline = 'middle';\n\n // 将文本位置改为以中心点为基准\n const center = milestoneWidth / 2;\n\n switch (position) {\n case 'left':\n textX = -paddingVal;\n textY = center;\n textAlignValue = 'end';\n textBaselineValue = 'middle';\n break;\n case 'right':\n textX = milestoneWidth + paddingVal;\n textY = center;\n textAlignValue = 'start';\n textBaselineValue = 'middle';\n break;\n case 'top':\n textX = center;\n textY = -paddingVal;\n textAlignValue = 'center';\n textBaselineValue = 'bottom';\n break;\n case 'bottom':\n textX = center;\n textY = milestoneWidth + paddingVal;\n textAlignValue = 'center';\n textBaselineValue = 'top';\n break;\n default:\n textX = milestoneWidth + paddingVal;\n textY = center;\n textAlignValue = 'start';\n textBaselineValue = 'middle';\n }\n\n return {\n textX,\n textY,\n textAlignValue,\n textBaselineValue\n };\n }\n group: Group;\n barContainer: Group;\n hoverBarGroup: Group;\n creatingDependencyLine: Line;\n hoverBarLeftIcon: Image;\n hoverBarRightIcon: Image;\n hoverBarProgressHandle: Group;\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.ganttGroup.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 { barGroupBox, baselineBar } = this.initBar(i, j, record.children.length);\n if (baselineBar) {\n this.barContainer.appendChild(baselineBar);\n }\n if (barGroupBox) {\n this.barContainer.appendChild(barGroupBox);\n }\n }\n } else {\n const { barGroupBox, baselineBar } = this.initBar(i);\n if (baselineBar) {\n this.barContainer.appendChild(baselineBar);\n }\n if (barGroupBox) {\n this.barContainer.appendChild(barGroupBox);\n }\n }\n continue;\n } else if (this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Project_Sub_Tasks_Inline) {\n const record = this._scene._gantt.getRecordByIndex(i);\n const isExpanded = record.hierarchyState === 'expand';\n // For project type records, we want to show all children in one line when collapsed\n if (record.type === TaskType.PROJECT && record.children?.length > 0 && !isExpanded) {\n const recordIndex = this._scene._gantt.getRecordIndexByTaskShowIndex(i);\n const sub_task_indexs: number[] = Array.isArray(recordIndex) ? [...recordIndex] : [recordIndex];\n\n const callInitBar = (record: any, sub_task_indexs: number[]) => {\n if (record.children?.length > 0) {\n for (let j = 0; j < record.children?.length; j++) {\n const child_record = record.children[j];\n if (child_record.type !== TaskType.PROJECT) {\n const { barGroupBox, baselineBar } = this.initBar(i, [...sub_task_indexs, j], record.children.length);\n if (baselineBar) {\n this.barContainer.appendChild(baselineBar);\n }\n if (barGroupBox) {\n this.barContainer.appendChild(barGroupBox);\n }\n } else {\n //如果是project类型的子任务,需要递归调用 只将类型不是project的子任务添加到barContainer中\n callInitBar(child_record, [...sub_task_indexs, j]);\n }\n }\n }\n };\n callInitBar(record, sub_task_indexs);\n } else {\n // For non-project tasks, use the default Tasks_Separate mode\n const { barGroupBox, baselineBar } = this.initBar(i);\n if (baselineBar) {\n this.barContainer.appendChild(baselineBar);\n }\n if (barGroupBox) {\n this.barContainer.appendChild(barGroupBox);\n }\n }\n continue;\n } else {\n const { barGroupBox, baselineBar } = this.initBar(i);\n if (baselineBar) {\n this.barContainer.appendChild(baselineBar);\n }\n if (barGroupBox) {\n this.barContainer.appendChild(barGroupBox);\n }\n }\n }\n }\n\n /**\n * @param index 任务显示的index,从0开始\n * @param childIndex 子任务的index, 当taskShowMode是sub_tasks_*模式时,会传入sub_task_index。如果是tasks_separate模式,sub_task_index传入undefined。\n * 如果模式Project_Sub_Tasks_Inline时,传入的sub_task_index是一个数组,数组的第一个元素是父任务的index,第二个元素是子任务的index,依次类推算是各层子任务的path。\n */\n initBar(index: number, childIndex?: number | 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 const isMilestone = taskRecord.type === TaskType.MILESTONE;\n if (\n (isMilestone && !startDate) ||\n (!isMilestone && (taskDays <= 0 || !startDate || !endDate || startDate.getTime() > endDate.getTime()))\n ) {\n return { barGroupBox: null, baselineBar: null };\n }\n let taskBarSize =\n this._scene._gantt.getXByTime(endDate.getTime() + 1) - this._scene._gantt.getXByTime(startDate.getTime());\n\n const taskBarStyle = this._scene._gantt.getTaskBarStyle(index, childIndex);\n const taskbarHeight = taskBarStyle.width;\n if (isValid(taskBarStyle.minSize)) {\n taskBarSize = Math.max(taskBarSize, taskBarStyle.minSize);\n }\n\n const oneTaskHeigth = this._scene._gantt.parsedOptions.rowHeight;\n const milestoneTaskBarHeight = this._scene._gantt.parsedOptions.taskBarMilestoneStyle.width;\n const x = this._scene._gantt.getXByTime(startDate.getTime()) - (isMilestone ? milestoneTaskBarHeight / 2 : 0);\n let y =\n this._scene._gantt.getRowsHeightByIndex(0, index - 1) +\n (this._scene._gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate\n ? ((childIndex as number) ?? 0) * 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\n const baselineInfo = this._scene._gantt.getBaselineInfoByTaskListIndex(index, childIndex);\n const hasBaseline = baselineInfo.baselineStartDate && baselineInfo.baselineEndDate && baselineInfo.baselineDays > 0;\n const baselinePosition = this._scene._gantt.parsedOptions.baselinePosition;\n\n let baselineBar: any = null;\n let taskBarYOffset = 0;\n\n if (hasBaseline && !isMilestone) {\n const baselineStyle = this._scene._gantt.getBaselineStyle(index, childIndex);\n const baselineX = this._scene._gantt.getXByTime(baselineInfo.baselineStartDate.getTime());\n const baselineWidth =\n this._scene._gantt.getXByTime(baselineInfo.baselineEndDate.getTime() + 1) -\n this._scene._gantt.getXByTime(baselineInfo.baselineStartDate.getTime());\n\n let baselineY: number;\n const taskBarPaddingTop = taskBarStyle.paddingTop ?? undefined;\n const baselinePaddingTop = baselineStyle.paddingTop ?? undefined;\n\n if (baselinePosition === 'overlap') {\n if (taskBarPaddingTop !== undefined) {\n baselineY = y + taskBarPaddingTop;\n } else {\n baselineY = y + (oneTaskHeigth - baselineStyle.width) / 2;\n }\n } else if (baselinePosition === 'top') {\n const gap = 4;\n if (baselinePaddingTop !== undefined && taskBarPaddingTop !== undefined) {\n baselineY = y + baselinePaddingTop;\n taskBarYOffset = taskBarPaddingTop;\n } else if (baselinePaddingTop !== undefined) {\n baselineY = y + baselinePaddingTop;\n taskBarYOffset = baselinePaddingTop + baselineStyle.width + gap;\n } else if (taskBarPaddingTop !== undefined) {\n const totalHeight = baselineStyle.width + gap + taskbarHeight;\n const startY = (oneTaskHeigth - totalHeight) / 2;\n baselineY = y + startY;\n taskBarYOffset = taskBarPaddingTop;\n } else {\n const totalHeight = baselineStyle.width + gap + taskbarHeight;\n const startY = (oneTaskHeigth - totalHeight) / 2;\n baselineY = y + startY;\n taskBarYOffset = startY + baselineStyle.width + gap;\n }\n } else {\n const gap = 4;\n if (taskBarPaddingTop !== undefined && baselinePaddingTop !== undefined) {\n taskBarYOffset = taskBarPaddingTop;\n baselineY = y + baselinePaddingTop;\n } else if (taskBarPaddingTop !== undefined) {\n taskBarYOffset = taskBarPaddingTop;\n baselineY = y + taskBarPaddingTop + taskbarHeight + gap;\n } else if (baselinePaddingTop !== undefined) {\n const totalHeight = taskbarHeight + gap + baselineStyle.width;\n const startY = (oneTaskHeigth - totalHeight) / 2;\n taskBarYOffset = startY;\n baselineY = y + baselinePaddingTop;\n } else {\n const totalHeight = taskbarHeight + gap + baselineStyle.width;\n const startY = (oneTaskHeigth - totalHeight) / 2;\n taskBarYOffset = startY;\n baselineY = y + startY + taskbarHeight + gap;\n }\n }\n\n baselineBar = createRect({\n x: baselineX,\n y: baselineY,\n width: Math.max(baselineWidth, baselineStyle.minSize || 0),\n height: baselineStyle.width,\n fill: baselineStyle.barColor,\n cornerRadius: baselineStyle.cornerRadius,\n lineWidth: (baselineStyle.borderLineWidth ?? baselineStyle.borderWidth) * 2,\n stroke: baselineStyle.borderColor,\n pickable: false\n });\n baselineBar.name = 'baseline-bar';\n }\n\n const taskBarPaddingTop = taskBarStyle.paddingTop ?? undefined;\n if (hasBaseline && !isMilestone && baselinePosition !== 'overlap') {\n y = y + taskBarYOffset;\n } else if (taskBarPaddingTop !== undefined) {\n y = y + taskBarPaddingTop;\n } else {\n y += (oneTaskHeigth - (isMilestone ? milestoneTaskBarHeight : taskbarHeight)) / 2 + taskBarYOffset;\n }\n\n const barGroupBox = new GanttTaskBarNode({\n x,\n y,\n width: isMilestone ? milestoneTaskBarHeight : taskBarSize,\n height: isMilestone ? milestoneTaskBarHeight : taskbarHeight,\n cornerRadius: isMilestone\n ? this._scene._gantt.parsedOptions.taskBarMilestoneStyle.cornerRadius\n : taskBarStyle.cornerRadius,\n lineWidth: isMilestone\n ? this._scene._gantt.parsedOptions.taskBarMilestoneStyle.borderLineWidth * 2\n : (taskBarStyle.borderLineWidth ?? taskBarStyle.borderWidth) * 2,\n stroke: isMilestone\n ? this._scene._gantt.parsedOptions.taskBarMilestoneStyle.borderColor\n : taskBarStyle.borderColor,\n angle: isMilestone ? (45 / 180) * Math.PI : 0,\n anchor: isMilestone ? [x + milestoneTaskBarHeight / 2, y + milestoneTaskBarHeight / 2] : undefined\n });\n barGroupBox.name = 'task-bar';\n barGroupBox.task_index = index;\n barGroupBox.sub_task_index = childIndex as any;\n barGroupBox.record = taskRecord;\n\n const barGroup = new Group({\n x: 0,\n y: 0,\n width: barGroupBox.attribute.width,\n height: barGroupBox.attribute.height,\n cornerRadius: isMilestone\n ? this._scene._gantt.parsedOptions.taskBarMilestoneStyle.cornerRadius\n : taskBarStyle.cornerRadius,\n clip: this._scene._gantt.parsedOptions.taskBarClip\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 rootContainer = customLayoutObj.rootContainer;\n renderDefaultBar = customLayoutObj.renderDefaultBar ?? false;\n renderDefaultText = customLayoutObj.renderDefaultText ?? false;\n rootContainer && (rootContainer.name = 'task-bar-custom-render');\n }\n }\n\n if (renderDefaultBar) {\n const rect = createRect({\n x: 0,\n y: 0,\n width: barGroupBox.attribute.width,\n height: barGroupBox.attribute.height,\n fill: isMilestone ? this._scene._gantt.parsedOptions.taskBarMilestoneStyle.fillColor : taskBarStyle.barColor,\n pickable: false\n });\n rect.name = 'task-bar-rect';\n barGroup.appendChild(rect);\n barGroupBox.barRect = rect;\n if (taskRecord.type !== TaskType.MILESTONE) {\n const progress_rect = createRect({\n x: 0,\n y: 0,\n width: (taskBarSize * progress) / 100,\n height: taskbarHeight,\n fill: 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\n rootContainer && barGroup.appendChild(rootContainer);\n if (renderDefaultText && taskRecord.type !== TaskType.MILESTONE) {\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 } as any);\n\n barGroup.appendChild(label);\n barGroupBox.textLabel = label;\n\n barGroupBox.labelStyle = this._scene._gantt.parsedOptions.taskBarLabelStyle;\n\n barGroupBox.updateTextPosition();\n }\n if (\n renderDefaultText &&\n taskRecord.type === 'milestone' &&\n this._scene._gantt.parsedOptions.taskBarMilestoneStyle.labelText\n ) {\n const milestoneStyle = this._scene._gantt.parsedOptions.taskBarMilestoneStyle;\n const textStyle = milestoneStyle.labelTextStyle || {};\n const pos = this.calculateMilestoneTextPosition(\n milestoneStyle.textOrient || 'right',\n milestoneStyle.width,\n textStyle.padding ?? 4\n );\n\n const textContainer = new Group({\n x,\n y,\n width: milestoneStyle.width,\n height: milestoneStyle.width,\n angle: 0,\n pickable: false\n });\n\n const milestoneLabel = createText({\n x: pos.textX,\n y: pos.textY,\n fontSize: textStyle.fontSize || 16,\n fontFamily: textStyle.fontFamily || 'Arial',\n fill: textStyle.color || '#ff0000',\n textBaseline: (textStyle.textBaseline || pos.textBaselineValue) as any,\n textAlign: textStyle.textAlign || pos.textAlignValue,\n text: this.formatMilestoneText(milestoneStyle.labelText, taskRecord),\n pickable: false\n });\n\n textContainer.appendChild(milestoneLabel);\n this.barContainer.appendChild(textContainer);\n\n barGroupBox.milestoneTextLabel = milestoneLabel;\n barGroupBox.milestoneTextContainer = textContainer;\n }\n return { barGroupBox, baselineBar };\n }\n updateTaskBarNode(index: number, sub_task_index?: number) {\n const taskbarGroup = this.getTaskBarNodeByIndex(index, sub_task_index);\n if (taskbarGroup) {\n this.barContainer.removeChild(taskbarGroup);\n }\n const { barGroupBox, baselineBar } = this.initBar(index, sub_task_index);\n if (barGroupBox) {\n this.barContainer.insertInto(barGroupBox, index); //TODO\n barGroupBox.updateTextPosition();\n }\n if (baselineBar) {\n this.barContainer.insertBefore(baselineBar, barGroupBox);\n }\n }\n initHoverBarIcons() {\n const hoverBarGroup = new Group({\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n clip: false, // 关闭裁剪以允许进度手柄显示在任务条外部\n pickable: false,\n cornerRadius:\n this._scene._gantt.parsedOptions.taskBarHoverStyle.cornerRadius ?? defaultTaskBarStyle.cornerRadius ?? 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 const progressHandle = new Group({\n x: 0,\n y: 0,\n width: 12,\n height: 12,\n pickable: true,\n cursor: 'ew-resize',\n visible: false\n });\n\n // 创建三角形手柄\n const triangleHandle = new Polygon({\n points: [\n { x: 6, y: 0 }, // 顶部中心点\n { x: 0, y: 6 }, // 左下角\n { x: 12, y: 6 } // 右下角\n ],\n fill: '#0064ff',\n stroke: '#ffffff',\n lineWidth: 1,\n pickable: false\n });\n progressHandle.appendChild(triangleHandle);\n\n progressHandle.name = 'task-bar-progress-handle';\n this.hoverBarProgressHandle = progressHandle;\n hoverBarGroup.appendChild(progressHandle);\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 const x = this.barContainer.attribute.x;\n const y = this.barContainer.attribute.y;\n this.barContainer.removeAllChild();\n this.group.removeChild(this.barContainer);\n this.initBars();\n this.setX(x);\n this.setY(y);\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?: GanttTaskBarNode) {\n const { startDate, endDate, taskRecord } = this._scene._gantt.getTaskInfoByTaskListIndex(\n target.task_index,\n target.sub_task_index\n );\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 const taskBarStyle = this._scene._gantt.getTaskBarStyle(target.task_index, target.sub_task_index);\n if (taskRecord.type === TaskType.MILESTONE) {\n this.hoverBarGroup.setAttribute('cornerRadius', target.attribute.cornerRadius);\n } else {\n const cornerRadius =\n this._scene._gantt.parsedOptions.taskBarHoverStyle.cornerRadius ?? taskBarStyle.cornerRadius ?? 0;\n this.hoverBarGroup.setAttribute('cornerRadius', cornerRadius);\n }\n this.hoverBarLeftIcon?.setAttribute('visible', false);\n this.hoverBarRightIcon?.setAttribute('visible', false);\n this.hoverBarProgressHandle?.setAttribute('visibleAll', false);\n\n let leftResizable = true;\n let rightResizable = true;\n let progressAdjustable = true;\n\n const progressField = this._scene._gantt.parsedOptions.progressField;\n const hasProgressField =\n progressField && taskRecord[progressField] !== undefined && taskRecord[progressField] !== null;\n\n if (!hasProgressField) {\n progressAdjustable = false;\n } else if (typeof this._scene._gantt.parsedOptions.taskBarProgressAdjustable === 'function') {\n const arg = {\n index: target.task_index,\n startDate,\n endDate,\n taskRecord,\n ganttInstance: this._scene._gantt\n };\n progressAdjustable = this._scene._gantt.parsedOptions.taskBarProgressAdjustable(arg);\n } else {\n progressAdjustable = this._scene._gantt.parsedOptions.taskBarProgressAdjustable;\n }\n\n if (taskRecord.type === TaskType.MILESTONE) {\n leftResizable = false;\n rightResizable = false;\n progressAdjustable = false;\n } else 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 (progressAdjustable) {\n this.hoverBarProgressHandle.setAttribute('visibleAll', 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 if (this.hoverBarProgressHandle) {\n const { progress } = this._scene._gantt.getTaskInfoByTaskListIndex(target.task_index, target.sub_task_index);\n const progressX = (width * progress) / 100 - 6;\n this.hoverBarProgressHandle.setAttribute('x', progressX);\n this.hoverBarProgressHandle.setAttribute('y', height - 3); // 让三角形有一半在进度条内\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 record = attachedToTaskBarNode.record;\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: attachedToTaskBarNode.attribute.cornerRadius,\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 // angle: attachedToTaskBarNode.attribute.angle,\n // anchor: attachedToTaskBarNode.attribute.anchor\n } as any);\n selectedBorder.name = 'task-bar-select-border';\n this.barContainer.appendChild(selectedBorder);\n this.selectedBorders.push(selectedBorder);\n\n const selectRectBorder = new Group({\n x: 0,\n y: 0,\n width,\n height,\n lineWidth: this._scene._gantt.parsedOptions.taskBarSelectedStyle.borderLineWidth,\n pickable: false,\n cornerRadius: attachedToTaskBarNode.attribute.cornerRadius,\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 angle: attachedToTaskBarNode.attribute.angle,\n anchor: [width / 2, height / 2]\n });\n // selectRectBorder.name = 'task-bar-select-border';\n selectedBorder.appendChild(selectRectBorder);\n\n if (showLinkPoint) {\n const isMilestone = record.type === TaskType.MILESTONE;\n const linePointPadding = isMilestone ? 15 : 10;\n const linkPointContainer = new Group({\n x: -linePointPadding,\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 + (linePointPadding - 10),\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): GanttTaskBarNode {\n let c = this.barContainer.firstChild as GanttTaskBarNode;\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 GanttTaskBarNode;\n }\n return null;\n }\n}\n"]}
@@ -21,7 +21,6 @@ class TimelineHeader {
21
21
  pickable: !1
22
22
  });
23
23
  this.group = dateHeader, dateHeader.name = "date-header-container", scene.ganttGroup.addChild(this.group);
24
- const {unit: minUnit, step: step} = scene._gantt.parsedOptions.reverseSortedTimelineScales[0];
25
24
  let y = 0;
26
25
  for (let i = 0; i < scene._gantt.timeLineHeaderLevel; i++) {
27
26
  const {timelineDates: timelineDates, customLayout: customLayout, visible: visible} = scene._gantt.parsedOptions.sortedTimelineScales[i];
@@ -35,9 +34,7 @@ class TimelineHeader {
35
34
  });
36
35
  y += rowHeader.attribute.height, rowHeader.name = "row-header", dateHeader.addChild(rowHeader);
37
36
  for (let j = 0; j < (null == timelineDates ? void 0 : timelineDates.length); j++) {
38
- const {days: days, endDate: endDate, startDate: startDate, title: title, dateIndex: dateIndex, unit: unit} = timelineDates[j], x = Math.ceil((0,
39
- util_1.computeCountToTimeScale)(startDate, scene._gantt.parsedOptions.minDate, minUnit, step) * scene._gantt.parsedOptions.timelineColWidth), width = Math.ceil((0,
40
- util_1.computeCountToTimeScale)(endDate, scene._gantt.parsedOptions.minDate, minUnit, step, 1) * scene._gantt.parsedOptions.timelineColWidth) - x, date = new vrender_1.Group({
37
+ const {days: days, endDate: endDate, startDate: startDate, title: title, dateIndex: dateIndex, unit: unit} = timelineDates[j], x = Math.ceil(scene._gantt.getXByTime(startDate.getTime())), width = Math.ceil(scene._gantt.getXByTime(endDate.getTime() + 1)) - x, date = new vrender_1.Group({
41
38
  x: x,
42
39
  y: 0,
43
40
  width: width,