@amcharts/amcharts5 5.14.0 → 5.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.internal/charts/gantt/Gantt.d.ts +6 -0
- package/.internal/charts/gantt/Gantt.d.ts.map +1 -1
- package/.internal/charts/gantt/Gantt.js +23 -0
- package/.internal/charts/gantt/Gantt.js.map +1 -1
- package/.internal/charts/gantt/GanttCategoryAxis.d.ts.map +1 -1
- package/.internal/charts/gantt/GanttCategoryAxis.js +5 -9
- package/.internal/charts/gantt/GanttCategoryAxis.js.map +1 -1
- package/.internal/charts/gantt/GanttDefaultTheme.d.ts.map +1 -1
- package/.internal/charts/gantt/GanttDefaultTheme.js +15 -2
- package/.internal/charts/gantt/GanttDefaultTheme.js.map +1 -1
- package/.internal/charts/gantt/GanttSeries.d.ts.map +1 -1
- package/.internal/charts/gantt/GanttSeries.js +16 -8
- package/.internal/charts/gantt/GanttSeries.js.map +1 -1
- package/.internal/charts/xy/axes/CategoryAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/CategoryAxis.js +13 -6
- package/.internal/charts/xy/axes/CategoryAxis.js.map +1 -1
- package/.internal/charts/xy/axes/DateAxis.js +1 -1
- package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
- package/.internal/core/Registry.js +1 -1
- package/.internal/core/Registry.js.map +1 -1
- package/.internal/core/Root.d.ts +1 -0
- package/.internal/core/Root.d.ts.map +1 -1
- package/.internal/core/Root.js +13 -1
- package/.internal/core/Root.js.map +1 -1
- package/CHANGELOG.md +21 -1
- package/examples/javascript/flow-arc-horizontal/package.json +1 -1
- package/examples/javascript/flow-arc-vertical/package.json +1 -1
- package/examples/javascript/flow-chord/package.json +1 -1
- package/examples/javascript/flow-chord-directed/package.json +1 -1
- package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/javascript/flow-sankey/package.json +1 -1
- package/examples/javascript/gantt/index.js +0 -5
- package/examples/javascript/gantt/package.json +1 -1
- package/examples/javascript/gantt-multilevel/index.js +27 -48
- package/examples/javascript/gantt-multilevel/package.json +1 -1
- package/examples/javascript/gantt-simple/index.js +0 -4
- package/examples/javascript/gantt-simple/package.json +1 -1
- package/examples/javascript/gauge/package.json +1 -1
- package/examples/javascript/gauge-bands/package.json +1 -1
- package/examples/javascript/hierarchy-force-directed/package.json +1 -1
- package/examples/javascript/hierarchy-pack/package.json +1 -1
- package/examples/javascript/hierarchy-partition/package.json +1 -1
- package/examples/javascript/hierarchy-sunburst/package.json +1 -1
- package/examples/javascript/hierarchy-tree/package.json +1 -1
- package/examples/javascript/hierarchy-treemap/package.json +1 -1
- package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/javascript/jest/package.json +1 -1
- package/examples/javascript/json-pie/package.json +1 -1
- package/examples/javascript/json-xy/package.json +1 -1
- package/examples/javascript/map-animating-along-lines/package.json +1 -1
- package/examples/javascript/map-clustered-points/package.json +1 -1
- package/examples/javascript/map-day-and-night/package.json +1 -1
- package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/javascript/map-with-bubbles/package.json +1 -1
- package/examples/javascript/map-zoom-to-country/package.json +1 -1
- package/examples/javascript/misc-40-charts/package.json +1 -1
- package/examples/javascript/misc-microchart-grid/package.json +1 -1
- package/examples/javascript/pie-chart/package.json +1 -1
- package/examples/javascript/pie-donut-chart/package.json +1 -1
- package/examples/javascript/pie-variable-radius/package.json +1 -1
- package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
- package/examples/javascript/radar-heat-map/package.json +1 -1
- package/examples/javascript/radar-line/package.json +1 -1
- package/examples/javascript/radar-time-line/package.json +1 -1
- package/examples/javascript/sliced-funnel/package.json +1 -1
- package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/javascript/sliced-pyramid/package.json +1 -1
- package/examples/javascript/stock-chart/package.json +1 -1
- package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
- package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
- package/examples/javascript/stock-chart-intraday/package.json +1 -1
- package/examples/javascript/stock-chart-live/package.json +1 -1
- package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
- package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
- package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
- package/examples/javascript/timeline-spiral-chart/package.json +1 -1
- package/examples/javascript/venn-diagram/package.json +1 -1
- package/examples/javascript/wordcloud-with-data/package.json +1 -1
- package/examples/javascript/wordcloud-with-text/package.json +1 -1
- package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/javascript/xy-bubble/package.json +1 -1
- package/examples/javascript/xy-candlestick/package.json +1 -1
- package/examples/javascript/xy-clustered-column/package.json +1 -1
- package/examples/javascript/xy-column/package.json +1 -1
- package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/javascript/xy-data-grouping/package.json +1 -1
- package/examples/javascript/xy-draggable-range/package.json +1 -1
- package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/javascript/xy-dumbbell plot/package.json +1 -1
- package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/javascript/xy-line/package.json +1 -1
- package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/javascript/xy-live-data/package.json +1 -1
- package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/javascript/xy-ohlc/package.json +1 -1
- package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/javascript/xy-smoothed-line/package.json +1 -1
- package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/javascript/xy-stacked-column/package.json +1 -1
- package/examples/javascript/xy-stacked-step/package.json +1 -1
- package/examples/javascript/xy-stock/package.json +1 -1
- package/examples/javascript/xy-stock-comparing/package.json +1 -1
- package/examples/typescript/flow-arc-horizontal/package.json +1 -1
- package/examples/typescript/flow-arc-vertical/package.json +1 -1
- package/examples/typescript/flow-chord/package.json +1 -1
- package/examples/typescript/flow-chord-directed/package.json +1 -1
- package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/typescript/flow-sankey/package.json +1 -1
- package/examples/typescript/gantt/index.ts +0 -5
- package/examples/typescript/gantt/package.json +1 -1
- package/examples/typescript/gantt-multilevel/index.ts +27 -48
- package/examples/typescript/gantt-multilevel/package.json +1 -1
- package/examples/typescript/gantt-simple/index.ts +0 -4
- package/examples/typescript/gantt-simple/package.json +1 -1
- package/examples/typescript/gauge/package.json +1 -1
- package/examples/typescript/gauge-bands/package.json +1 -1
- package/examples/typescript/hierarchy-force-directed/package.json +1 -1
- package/examples/typescript/hierarchy-pack/package.json +1 -1
- package/examples/typescript/hierarchy-partition/package.json +1 -1
- package/examples/typescript/hierarchy-sunburst/package.json +1 -1
- package/examples/typescript/hierarchy-tree/package.json +1 -1
- package/examples/typescript/hierarchy-treemap/package.json +1 -1
- package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/typescript/jest/package.json +1 -1
- package/examples/typescript/json-pie/package.json +1 -1
- package/examples/typescript/json-xy/package.json +1 -1
- package/examples/typescript/map-animating-along-lines/package.json +1 -1
- package/examples/typescript/map-clustered-points/package.json +1 -1
- package/examples/typescript/map-day-and-night/package.json +1 -1
- package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/typescript/map-with-bubbles/package.json +1 -1
- package/examples/typescript/map-zoom-to-country/package.json +1 -1
- package/examples/typescript/misc-40-charts/package.json +1 -1
- package/examples/typescript/misc-microchart-grid/package.json +1 -1
- package/examples/typescript/pie-chart/package.json +1 -1
- package/examples/typescript/pie-donut-chart/package.json +1 -1
- package/examples/typescript/pie-variable-radius/package.json +1 -1
- package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
- package/examples/typescript/radar-heat-map/package.json +1 -1
- package/examples/typescript/radar-line/package.json +1 -1
- package/examples/typescript/radar-time-line/package.json +1 -1
- package/examples/typescript/sliced-funnel/package.json +1 -1
- package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/typescript/sliced-pyramid/package.json +1 -1
- package/examples/typescript/stock-chart/package.json +1 -1
- package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
- package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
- package/examples/typescript/stock-chart-intraday/package.json +1 -1
- package/examples/typescript/stock-chart-live/package.json +1 -1
- package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
- package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
- package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
- package/examples/typescript/timeline-spiral-chart/package.json +1 -1
- package/examples/typescript/venn-diagram/package.json +1 -1
- package/examples/typescript/wordcloud-with-data/package.json +1 -1
- package/examples/typescript/wordcloud-with-text/package.json +1 -1
- package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/typescript/xy-bubble/package.json +1 -1
- package/examples/typescript/xy-candlestick/package.json +1 -1
- package/examples/typescript/xy-clustered-column/package.json +1 -1
- package/examples/typescript/xy-column/package.json +1 -1
- package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/typescript/xy-data-grouping/package.json +1 -1
- package/examples/typescript/xy-draggable-range/package.json +1 -1
- package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/typescript/xy-dumbbell plot/package.json +1 -1
- package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/typescript/xy-line/package.json +1 -1
- package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/typescript/xy-live-data/package.json +1 -1
- package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/typescript/xy-ohlc/package.json +1 -1
- package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/typescript/xy-smoothed-line/package.json +1 -1
- package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/typescript/xy-stacked-column/package.json +1 -1
- package/examples/typescript/xy-stacked-step/package.json +1 -1
- package/examples/typescript/xy-stock/package.json +1 -1
- package/examples/typescript/xy-stock-comparing/package.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GanttSeries.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/gantt/GanttSeries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ValueAxis } from \"../xy/axes/ValueAxis\";\r\nimport type { AxisRendererX } from \"../xy/axes/AxisRendererX\";\r\nimport type { CategoryAxis } from \"../xy/axes/CategoryAxis\";\r\nimport type { AxisRendererY } from \"../xy/axes/AxisRendererY\";\r\nimport type { Gantt } from \"./Gantt\";\r\nimport type { DateAxis } from \"../xy/axes/DateAxis\";\r\nimport type { GanttCategoryAxis, IGanttCategoryAxisDataItem } from \"./GanttCategoryAxis\";\r\nimport type { GanttCategoryAxisRenderer } from \"./GanttCategoryAxisRenderer\";\r\nimport type { GanttDateAxis } from \"./GanttDateAxis\";\r\nimport type { GanttDateAxisRenderer } from \"./GanttDateAxisRenderer\";\r\n\r\nimport { ColumnSeries, IColumnSeriesPrivate, IColumnSeriesSettings, IColumnSeriesDataItem, IColumnSeriesAxisRange } from \"../xy/series/ColumnSeries\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Circle, color, DataItem, Graphics, IPoint, ISpritePointerEvent, Line, Link, ListTemplate, percent, Percent, Rectangle, RoundedRectangle, Template, Triangle } from \"../../..\";\r\n\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\nimport * as $math from \"../../core/util/Math\";\r\nimport * as $time from \"../../core/util/Time\";\r\nimport * as $object from \"../../core/util/Object\";\r\nimport * as $type from \"../../core/util/Type\";\r\n\r\nexport interface IGanttSeriesDataItem extends IColumnSeriesDataItem {\r\n\r\n\t/**\r\n\t * [[Container]] that holds all the elements of the series item, except the column graphics itslef.\r\n\t */\r\n\tcontainer?: Container\r\n\r\n\t/**\r\n\t * A [[Container]] that is masked and holds progress rectangle and progress grip.\t\r\n\t */\r\n\tmaskedContainer?: Container;\r\n\r\n\t/**\r\n\t * A [[RoundedRectangle]] that is used to mask the progress rectangle.\r\n\t */\r\n\tmask?: RoundedRectangle;\r\n\r\n\t/**\r\n\t * A [[Circle]] used as a bullet shown at the start of the task bar.\r\n\t */\r\n\tstartBullet?: Circle;\r\n\r\n\t/**\r\n\t * A [[Circle]] used as a bullet shown at the end of the task bar.\r\n\t */\r\n\tendBullet?: Circle;\r\n\r\n\t/**\r\n\t * A [[Rectangle]] filled with line pattern which is used to resize task bar.\r\n\t */\r\n\tstartGrip?: Rectangle;\r\n\r\n\t/**\r\n\t * A [[Rectangle]] filled with line pattern which is used to resize task bar.\r\n\t */\r\n\tendGrip?: Rectangle;\r\n\r\n\t/**\r\n\t * A [[Rectangle]] that is used to show progress of the task. It actually\r\n\t * shows the remaining part of the task and is filled with diagonal line\r\n\t * pattern.\r\n\t */\r\n\tprogressRectangle?: Rectangle;\r\n\r\n\t/**\r\n\t * A [[RoundedRectangle]] rotated by 45 degrees and is shown instead of a\r\n\t * column when the task has zero duration.\r\n\t */\r\n\tzeroRectangle?: RoundedRectangle;\r\n\r\n\t/**\r\n\t * A [[Triangle]] that is used to resize progress rectangle.\r\n\t */\r\n\tprogressGrip?: Triangle;\r\n\r\n\t/**\r\n\t * A value that holds the progress value of the task.\r\n\t */\r\n\tprogress?: number;\r\n\r\n\t/**\r\n\t * A value that holds previous progress value of the task, used when\r\n\t * toggling progress using progress pie next to the y axis label.\r\n\t */\r\n\tprevProgress?: number;\r\n\r\n\t/**\r\n\t * Duration of the task, in units of the x axis.\r\n\t */\r\n\tduration?: number;\r\n\r\n\t/**\r\n\t * Array of IDs of tasks this task is linked to.\r\n\t */\r\n\tlinkTo?: Array<string>;\r\n\r\n\t/**\r\n\t * Refferences to `Link` objects that are used to visually connect tasks.\r\n\t */\r\n\tlinks?: { [index: string]: Link };\r\n\r\n\t/**\r\n\t * A reference to a corresponding category axis data item.\r\n\t */\r\n\tcategoryAxisDataItem?: DataItem<IGanttCategoryAxisDataItem>;\r\n\r\n\t/**\r\n\t * Array of children data items.\r\n\t */\r\n\tchildren?: Array<DataItem<IGanttSeriesDataItem>>;\r\n\r\n\t/**\r\n\t * A reference to a parent data item, if any.\r\n\t */\r\n\tparent?: DataItem<IGanttSeriesDataItem>;\r\n\r\n\t/**\r\n\t * Category name.\r\n\t */\r\n\tname?: string;\r\n\r\n}\r\n\r\nexport interface IGanttSeriesSettings extends IColumnSeriesSettings {\r\n\r\n\t/**\r\n\t * A field in data that holds progress of the task.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/gantt/#Series_data} for more info\r\n\t * @default \"progress\"\r\n\t */\r\n\tprogressField?: string;\r\n\r\n\t/**\r\n\t * A field in data that holds duration of the task.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/gantt/#Series_data} for more info\r\n\t * @default \"duration\"\r\n\t */\r\n\tdurationField?: string;\r\n\r\n\t/**\r\n\t * A field in data that holds and ID of the task it is linked to.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/gantt/#Series_data} for more info\r\n\t * @default \"linkTo\"\r\n\t */\r\n\tlinkToField?: string;\r\n\r\n\t/**\r\n\t * A distance in pixels that link should be protracted from the edge of the\r\n\t * task bars.\r\n\t *\r\n\t * @default 25\r\n\t */\r\n\tlinkHorizontalOffset?: number;\r\n\r\n\t/**\r\n\t * When dragging/resizing a column, how many units should it snap to.\r\n\t * @default 1\r\n\t */\r\n\tsnapCount?: number;\r\n\r\n\t/**\r\n\t * A reference to the y-axis of the Gantt chart.\r\n\t */\r\n\tyAxis: GanttCategoryAxis<GanttCategoryAxisRenderer>;\r\n\r\n\t/**\r\n\t * A reference to the x-axis of the Gantt chart.\r\n\t */\r\n\txAxis: GanttDateAxis<GanttDateAxisRenderer>;\r\n\r\n}\r\n\r\nexport interface IGanttSeriesPrivate extends IColumnSeriesPrivate {\r\n}\r\n\r\nexport interface IGanttSeriesAxisRange extends IColumnSeriesAxisRange {\r\n}\r\n\r\n/**\r\n * A series used in [[Gantt]] chart to display tasks and their progress.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/gantt/#Gantt_series} for more info\r\n * @important\r\n * @since 5.14.0\r\n */\r\nexport class GanttSeries extends ColumnSeries {\r\n\r\n\tdeclare public _settings: IGanttSeriesSettings;\r\n\tdeclare public _privateSettings: IGanttSeriesPrivate;\r\n\tdeclare public _dataItemSettings: IGanttSeriesDataItem;\r\n\tdeclare public _axisRangeType: IGanttSeriesAxisRange;\r\n\r\n\tpublic static className: string = \"GanttSeries\";\r\n\tpublic static classNames: Array<string> = ColumnSeries.classNames.concat([GanttSeries.className]);\r\n\r\n\tprotected _startBullet?: Circle;\r\n\tprotected _endBullet?: Circle;\r\n\r\n\t/**\r\n\t * A reference to the parent [[Gantt]] chart.\r\n\t */\r\n\tpublic gantt!: Gantt;\r\n\r\n\tprotected _columnDragStartX?: number;\r\n\tprotected _columnDragStartY?: number;\r\n\r\n\tprotected _hoveredDataItem?: DataItem<IGanttSeriesDataItem>;\r\n\r\n\tprotected _xPan?: boolean = false;\r\n\tprotected _yPan?: boolean = false;\r\n\r\n\r\n\t/**\r\n\t * A container that holds all the links between tasks.\r\n\t */\r\n\tpublic linksContainer: Container = this.children.push(Container.new(this._root, {}));\r\n\r\n\t/**\r\n\t * A line which is shown while creating a connector between two tasks.\r\n\t */\r\n\tpublic connectorLine: Line = this.children.push(Line.new(this._root, {\r\n\t\tthemeTags: [\"connectorline\"],\r\n\t\tvisible: false,\r\n\t\tforceInactive: true\r\n\t}));\r\n\r\n\t/**\r\n\t * A triangle that is shown at the end of the connector line, while creating\r\n\t * a connector.\r\n\t */\r\n\tpublic connectorArrow: Triangle = this.children.push(Triangle.new(this._root, {\r\n\t\tthemeTags: [\"connectorarrow\"],\r\n\t\tvisible: false,\r\n\t\tforceInactive: true\r\n\t}));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Link]] that connect tasks.\r\n\t */\r\n\tpublic readonly links: ListTemplate<Link> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Link._new(this._root, {\r\n\t\t\tthemeTags: $utils.mergeTags(this.containers.template.get(\"themeTags\", []), [\"link\"])\r\n\t\t}, [this.links.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Container]]s that hold all the elements of series\r\n\t * items, such as grips, bullets, etc.\r\n\t */\r\n\tpublic readonly containers: ListTemplate<Container> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Container._new(this._root, {\r\n\t\t\tposition: \"absolute\",\r\n\t\t\tthemeTagsSelf: [\"columncontainer\"]\r\n\t\t}, [this.containers.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Container]]s that are used to mask elements, such\r\n\t * as progress rectangles.\r\n\t */\r\n\tpublic readonly maskedContainers: ListTemplate<Container> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Container._new(this._root, {\r\n\t\t\tposition: \"absolute\",\r\n\t\t\tthemeTagsSelf: [\"maskedcontainer\"]\r\n\t\t}, [this.maskedContainers.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Circle]]s that are used as start bullets.\r\n\t */\r\n\tpublic readonly startBullets: ListTemplate<Circle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Circle._new(this._root, {\r\n\t\t\tx: - 1000,\r\n\t\t\tthemeTagsSelf: [\"connectorbullet\", \"start\"],\r\n\t\t}, [this.startBullets.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Circle]]s that are used as end bullets.\r\n\t */\r\n\tpublic readonly endBullets: ListTemplate<Circle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Circle._new(this._root, {\r\n\t\t\tx: - 1000,\r\n\t\t\tthemeTagsSelf: [\"connectorbullet\", \"end\"]\r\n\t\t}, [this.endBullets.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Rectangle]]s that are used to resize task bars.\r\n\t */\r\n\tpublic readonly startGrips: ListTemplate<Rectangle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Rectangle._new(this._root, {\r\n\t\t\tthemeTagsSelf: [\"resizegrip\", \"start\"]\r\n\t\t}, [this.startGrips.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Rectangle]]s that are used to resize task bars.\r\n\t */\r\n\tpublic readonly endGrips: ListTemplate<Rectangle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Rectangle._new(this._root, {\r\n\t\t\tthemeTagsSelf: [\"resizegrip\", \"end\"]\r\n\t\t}, [this.endGrips.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[RoundedRectangle]]s that are used to show\r\n\t * zero-duration tasks.\r\n\t */\r\n\tpublic readonly zeroRectangles: ListTemplate<RoundedRectangle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => RoundedRectangle._new(this._root, {\r\n\t\t\tthemeTagsSelf: [\"zerorectangle\"],\r\n\t\t}, [this.zeroRectangles.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Rectangle]]s that are used to show progress of the\r\n\t * task. It is actually a remaining part of the task and is filled with\r\n\t * diagonal line pattern.\r\n\t */\r\n\tpublic readonly progressRectangles: ListTemplate<Rectangle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Rectangle._new(this._root, {\r\n\t\t\tthemeTagsSelf: [\"progressrectangle\"]\r\n\t\t}, [this.progressRectangles.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Triangle]]s that are used to resize progress\r\n\t * rectangles.\r\n\t */\r\n\tpublic readonly progressGrips: ListTemplate<Triangle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Triangle._new(this._root, {\r\n\t\t\tthemeTagsSelf: [\"progressgrip\"]\r\n\t\t}, [this.progressGrips.template])\r\n\t));\r\n\r\n\tprotected _afterNew(): void {\r\n\t\tthis.fields.push(\"linkTo\", \"categoryId\");\r\n\t\tthis.valueFields.push(\"progress\", \"duration\");\r\n\t\tthis.set(\"exactLocationX\", true);\r\n\r\n\t\tsuper._afterNew();\r\n\r\n\t\tthis._disposers.push(this.events.on(\"globalpointermove\", (event) => {\r\n\t\t\tif (this.connectorLine.isVisible()) {\r\n\t\t\t\tconst point = this.toLocal(event.point);\r\n\t\t\t\tthis._updateConnector(point);\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis.events.on(\"globalpointerup\", (_event) => {\r\n\t\t\tif (this.connectorLine.isVisible()) {\r\n\t\t\t\tthis._endConnector();\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.columns.template.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._columnDragStartX = e.target.x();\r\n\t\t\tthis._columnDragStartY = e.target.y();\r\n\t\t})\r\n\r\n\t\tthis.columns.template.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._handleColumnDragged(e);\r\n\t\t})\r\n\r\n\t\tthis.columns.template.events.on(\"dragstop\", (e) => {\r\n\t\t\tconst xAxis = this.get(\"xAxis\") as ValueAxis<AxisRendererX>;\r\n\t\t\tconst dataItem = e.target.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t\tconst openValueX = dataItem.get(\"openValueX\", 0);\r\n\t\t\tlet newOpenValueX = xAxis.positionToValue(xAxis.coordinateToPosition(e.target.x()));\r\n\r\n\t\t\tconst valueX = dataItem.get(\"valueX\", 0);\r\n\r\n\t\t\tlet diff = newOpenValueX - openValueX;\r\n\t\t\tdataItem.set(\"openValueX\", newOpenValueX);\r\n\t\t\tdataItem.set(\"valueX\", valueX + diff);\r\n\r\n\t\t\tdataItem.set(\"openValueXWorking\", newOpenValueX);\r\n\t\t\tdataItem.set(\"valueXWorking\", valueX + diff);\r\n\r\n\t\t\tthis._fixValues(dataItem, \"duration\");\r\n\r\n\t\t\tthis._moveChildValues(dataItem, diff);\r\n\t\t})\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected roundValue(value: number, invertThreshold?: boolean): number {\r\n\t\tlet threshold = this.gantt.get(\"snapThreshold\", 0.8);\r\n\t\tif (invertThreshold) {\r\n\t\t\tthreshold = 1 - threshold;\r\n\t\t}\r\n\t\tconst snapCount = this.get(\"snapCount\", 1);\r\n\t\tconst xAxis = this.get(\"xAxis\") as DateAxis<AxisRendererX>;\r\n\t\tconst baseInterval = xAxis.get(\"baseInterval\");\r\n\t\treturn $time.roun(value + this.getUnitDuration() * threshold, baseInterval.timeUnit, baseInterval.count * snapCount, this._root);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic makeColumn(\r\n\t\tdataItem: DataItem<this[\"_dataItemSettings\"]>,\r\n\t\tlistTemplate: ListTemplate<RoundedRectangle>\r\n\t): RoundedRectangle {\r\n\t\t// Create the main column\r\n\t\tconst column = super.makeColumn(dataItem, listTemplate);\r\n\t\tconst yAxis = this.get(\"yAxis\") as GanttCategoryAxis<GanttCategoryAxisRenderer>;\r\n\t\tcolumn.events.on(\"click\", () => {\r\n\t\t\tyAxis.selectDataItem(dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>);\r\n\t\t})\r\n\r\n\t\t// --- Container setup ---\r\n\t\tconst container = this.mainContainer.children.push(this.containers.make());\r\n\t\tcontainer._setDataItem(dataItem);\r\n\t\tthis.containers.push(container);\r\n\r\n\t\tconst zeroRectangle = this.zeroRectangles.make();\r\n\t\tdataItem.set(\"zeroRectangle\", zeroRectangle);\r\n\t\tthis.zeroRectangles.push(zeroRectangle);\r\n\t\tcontainer.children.unshift(zeroRectangle);\r\n\t\tif (dataItem.get(\"duration\", 0) > 0) {\r\n\t\t\tzeroRectangle.hide(0);\r\n\t\t}\r\n\r\n\t\tlet zy = 0;\r\n\t\tzeroRectangle.events.on(\"pointerdown\", (e) => {\r\n\t\t\tzy = e.target.y();\r\n\t\t\tcolumn.dragStart(e);\r\n\t\t})\r\n\r\n\t\tzeroRectangle.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._handleColumnDragged(e);\r\n\t\t\te.target.setAll({\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: zy\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tzeroRectangle.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._handleColumnDragged(e);\r\n\r\n\t\t\te.target.setAll({\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: zy\r\n\t\t\t});\r\n\t\t})\r\n\r\n\t\tzeroRectangle.events.on(\"dragstop\", (e) => {\r\n\t\t\tcolumn.dragStop(e);\r\n\t\t})\r\n\r\n\t\tzeroRectangle.events.on(\"pointerover\", (e) => {\r\n\t\t\tthis._handleColumnHover(e);\r\n\t\t})\r\n\r\n\t\tzeroRectangle.adapters.add(\"fillPattern\", (fillPattern, target) => {\r\n\t\t\tconst dataItem = target.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\t\t\tif (dataItem.get(\"progress\", 0) < 1) {\r\n\t\t\t\treturn progressRectangle.get(\"fillPattern\");\r\n\t\t\t}\r\n\r\n\t\t\treturn fillPattern;\r\n\t\t});\r\n\r\n\t\tconst maskedContainer = container.children.push(this.maskedContainers.make());\r\n\t\tdataItem.setRaw(\"maskedContainer\", maskedContainer);\r\n\r\n\t\tconst mask = container.children.push(RoundedRectangle.new(this._root, {\r\n\t\t\tfill: color(0xffffff),\r\n\t\t\tforceInactive: true,\r\n\t\t\tfillOpacity: 0\r\n\t\t}));\r\n\t\tdataItem.setRaw(\"mask\", mask);\r\n\t\tmaskedContainer.set(\"mask\", mask);\r\n\r\n\t\t// --- Progress elements ---\r\n\t\tconst progressRectangle = maskedContainer.children.push(this.progressRectangles.make());\r\n\t\tthis.progressRectangles.push(progressRectangle);\r\n\r\n\t\tconst progressGrip = this.progressGrips.make();\r\n\t\tthis.progressGrips.push(progressGrip);\r\n\t\tmaskedContainer.children.push(progressGrip);\r\n\r\n\t\tprogressGrip.events.on(\"dragged\", () => {\r\n\t\t\tlet x = progressGrip.x();\r\n\t\t\tx = $math.fitToRange(x, 0, column.getPrivate(\"width\", 0));\r\n\t\t\tprogressGrip.setAll({ x: x, y: column.getPrivate(\"height\", 0) });\r\n\t\t\tdataItem.set(\"progress\", progressGrip.x() / column.getPrivate(\"width\", 0));\r\n\t\t});\r\n\r\n\t\t// --- Grips (start/end) ---\r\n\r\n\t\tconst startGrip = this.startGrips.make();\r\n\t\tthis.startGrips.push(startGrip);\r\n\t\tcontainer.children.push(startGrip);\r\n\r\n\t\tconst endGrip = this.endGrips.make();\r\n\t\tthis.endGrips.push(endGrip);\r\n\t\tcontainer.children.push(endGrip);\r\n\r\n\t\tdataItem.setRaw(\"startGrip\", startGrip);\r\n\t\tdataItem.setRaw(\"endGrip\", endGrip);\r\n\r\n\t\t// --- Axis reference ---\r\n\t\tconst xAxis = this.get(\"xAxis\") as ValueAxis<AxisRendererX>;\r\n\r\n\t\t// --- Grip events ---\r\n\t\tlet startX = 0;\r\n\t\tstartGrip.events.on(\"dragstart\", () => {\r\n\t\t\tstartX = column.x();\r\n\t\t\tcolumn.show();\r\n\t\t\tzeroRectangle.hide();\r\n\t\t\tmaskedContainer.show();\r\n\t\t});\r\n\t\tstartGrip.events.on(\"pointerover\", () => {\r\n\t\t\tcolumn.states.applyAnimate(\"hover\");\r\n\t\t});\r\n\t\tstartGrip.events.on(\"pointerout\", () => {\r\n\t\t\tif (column.isVisible()) {\r\n\t\t\t\tcolumn.states.applyAnimate(\"default\");\r\n\t\t\t}\r\n\t\t});\r\n\t\tstartGrip.events.on(\"dragged\", () => {\r\n\t\t\tstartGrip.set(\"y\", 0);\r\n\t\t\tconst x = startGrip.x() + startX;\r\n\t\t\tlet openValueX = xAxis.positionToValue(xAxis.coordinateToPosition(x));\r\n\t\t\tlet minStart = this._findMinStart(dataItem);\r\n\r\n\t\t\topenValueX = Math.max(openValueX, minStart);\r\n\t\t\topenValueX = Math.min(openValueX, dataItem.get(\"valueX\", openValueX));\r\n\r\n\t\t\tdataItem.set(\"openValueX\", openValueX);\r\n\r\n\t\t\tstartGrip.set(\"x\", 0);\r\n\t\t});\r\n\r\n\t\tstartGrip.events.on(\"dragstop\", () => {\r\n\t\t\tthis._fixValues(dataItem, \"end\");\r\n\t\t\tthis.markDirtyValues();\r\n\t\t});\r\n\r\n\t\tlet endX = 0;\r\n\t\tendGrip.events.on(\"dragstart\", () => {\r\n\t\t\tendX = column.x();\r\n\t\t\tcolumn.show();\r\n\t\t\tzeroRectangle.hide();\r\n\t\t\tmaskedContainer.show();\r\n\t\t});\r\n\t\tendGrip.events.on(\"pointerover\", () => {\r\n\t\t\tcolumn.states.applyAnimate(\"hover\");\r\n\t\t});\r\n\t\tendGrip.events.on(\"pointerout\", () => {\r\n\t\t\tif (column.isVisible()) {\r\n\t\t\t\tcolumn.states.applyAnimate(\"default\");\r\n\t\t\t}\r\n\t\t});\r\n\t\tendGrip.events.on(\"dragged\", () => {\r\n\t\t\tendGrip.set(\"y\", 0);\r\n\t\t\tconst x = endGrip.x() + endX;\r\n\t\t\tlet valueX = xAxis.positionToValue(xAxis.coordinateToPosition(x));\r\n\t\t\tvalueX = Math.max(valueX, dataItem.get(\"openValueX\", 0));\r\n\t\t\tdataItem.set(\"valueX\", valueX);\r\n\t\t\tdataItem.set(\"valueXWorking\", valueX);\r\n\t\t\tconst column = dataItem.get(\"graphics\") as RoundedRectangle;\r\n\t\t\tif (column) {\r\n\t\t\t\tendGrip.set(\"x\", column.width());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tendGrip.events.on(\"dragstop\", () => {\r\n\t\t\tthis._fixValues(dataItem, \"start\");\r\n\t\t\tthis.markDirtyValues();\r\n\t\t});\r\n\r\n\t\t// --- Bullets (start/end) ---\r\n\t\tconst startBullet = this.startBullets.make();\r\n\r\n\t\tstartBullet.events.on(\"pointerout\", () => {\r\n\t\t\tif (column.isVisible()) {\r\n\t\t\t\tcolumn.states.applyAnimate(\"default\");\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.startBullets.push(startBullet);\r\n\t\tcontainer.children.push(startBullet);\r\n\r\n\t\tconst endBullet = this.endBullets.make();\r\n\t\tthis.endBullets.push(endBullet);\r\n\t\tcontainer.children.push(endBullet);\r\n\r\n\t\t// --- Bullet events (connector logic) ---\r\n\t\tconst bulletPointerDown = (bullet: Circle) => {\r\n\t\t\tthis._startConnector(bullet);\r\n\t\t};\r\n\r\n\t\tstartBullet.events.on(\"pointerdown\", () => bulletPointerDown(startBullet));\r\n\t\tendBullet.events.on(\"pointerdown\", () => bulletPointerDown(endBullet));\r\n\r\n\t\tcolumn.events.on(\"pointerover\", (e) => {\r\n\t\t\tthis._handleColumnHover(e);\r\n\t\t})\r\n\r\n\t\tcolumn.events.on(\"pointerout\", () => {\r\n\t\t\tthis._hoveredDataItem = undefined;\r\n\t\t\tif (this.connectorLine.isVisible()) {\r\n\t\t\t\tstartBullet.hide();\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\t// --- Data item references ---\r\n\t\tdataItem.setRaw(\"container\", container);\r\n\t\tdataItem.setRaw(\"startBullet\", startBullet);\r\n\t\tdataItem.setRaw(\"endBullet\", endBullet);\r\n\t\tdataItem.setRaw(\"progressRectangle\", progressRectangle);\r\n\t\tdataItem.setRaw(\"progressGrip\", progressGrip);\r\n\r\n\t\t// --- Sync container with column position ---\r\n\t\tconst syncProp = (prop: any, target: any) => {\r\n\t\t\tcolumn.on(prop, (val) => {\r\n\t\t\t\ttarget.set(prop, val);\r\n\t\t\t});\r\n\t\t};\r\n\t\tsyncProp(\"x\", container);\r\n\t\tsyncProp(\"y\", container);\r\n\t\tsyncProp(\"dx\", container);\r\n\t\tsyncProp(\"dy\", container);\r\n\t\tsyncProp(\"cornerRadiusBL\", mask);\r\n\t\tsyncProp(\"cornerRadiusBR\", mask);\r\n\t\tsyncProp(\"cornerRadiusTL\", mask);\r\n\t\tsyncProp(\"cornerRadiusTR\", mask);\r\n\r\n\t\tif (this.isCollapsed(dataItem)) {\r\n\t\t\tdataItem.hide(0);\r\n\t\t\tcolumn.hide(0);\r\n\t\t\tmaskedContainer.hide(0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (dataItem.get(\"duration\", 0) > 0) {\r\n\t\t\t\tcolumn.appear();\r\n\t\t\t\tmaskedContainer.appear();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tprotected _handleColumnDragged(e: ISpritePointerEvent) {\r\n\t\tconst column = e.target as RoundedRectangle;\r\n\t\tconst dataItem = column.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t// Maintain vertical position to prevent vertical dragging\r\n\t\tif (this._columnDragStartY !== undefined) {\r\n\t\t\tcolumn.set(\"y\", this._columnDragStartY);\r\n\t\t}\r\n\r\n\t\t// Calculate horizontal drag offset and apply to child elements\r\n\t\tif (dataItem && this._columnDragStartX !== undefined) {\r\n\t\t\tconst dragOffset = column.x() - this._columnDragStartX;\r\n\t\t\tthis._dragChildValues(dataItem, dragOffset);\r\n\r\n\t\t\tthis._updateLinks();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _handleColumnHover(e: ISpritePointerEvent) {\r\n\t\t// Only process hover if we're currently creating a connector\r\n\t\tif (!this.connectorLine.isVisible()) return;\r\n\r\n\t\tconst column = e.target as RoundedRectangle;\r\n\t\tconst dataItem = column.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t// Skip if no valid data item\r\n\t\tif (!dataItem) return;\r\n\r\n\t\tconst startBullet = dataItem.get(\"startBullet\");\r\n\t\tconst sourceDataItem = this._startBullet?.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t// Show the start bullet only if:\r\n\t\t// 1. We have a valid start bullet\r\n\t\t// 2. We have a source data item for the connection\r\n\t\t// 3. Both items are at the same depth level\r\n\t\t// 4. We're not trying to connect to the same item\r\n\t\tif (startBullet &&\r\n\t\t\tsourceDataItem &&\r\n\t\t\tthis.getDepth(sourceDataItem) === this.getDepth(dataItem) &&\r\n\t\t\tsourceDataItem !== dataItem) {\r\n\r\n\t\t\tstartBullet.show();\r\n\t\t\tthis._hoveredDataItem = dataItem;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the task is collapsed.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @return Collapsed?\r\n\t */\r\n\tpublic isCollapsed(dataItem: DataItem<IGanttSeriesDataItem>): boolean {\r\n\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\t\tif (categoryAxisDataItem) {\r\n\t\t\tconst parent = categoryAxisDataItem.get(\"parent\");\r\n\t\t\tif (parent) {\r\n\t\t\t\tif (parent.get(\"collapsed\")) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\treturn this.isCollapsed(parent);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the series, recalculating values and updating children.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _updateChildren() {\r\n\r\n\t\tif (this._valuesDirty) {\r\n\r\n\t\t\tthis.setPrivateRaw(\"minX\", undefined);\r\n\t\t\tthis.setPrivateRaw(\"maxX\", undefined);\r\n\r\n\t\t\tconst yAxis = this.get(\"yAxis\") as GanttCategoryAxis<GanttCategoryAxisRenderer>;\r\n\t\t\tconst yRenderer = yAxis.get(\"renderer\") as GanttCategoryAxisRenderer;\r\n\r\n\t\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\t\tconst dataContext = dataItem.dataContext as any;\r\n\r\n\t\t\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\t\t\t\tif (categoryAxisDataItem) {\r\n\r\n\t\t\t\t\tconst children = dataItem.get(\"children\");\r\n\t\t\t\t\tif (children && children.length > 0) {\r\n\t\t\t\t\t\tdataItem.set(\"openValueX\", undefined);\r\n\t\t\t\t\t\tdataItem.set(\"valueX\", undefined);\r\n\r\n\t\t\t\t\t\tdataItem.set(\"openValueXWorking\", undefined);\r\n\t\t\t\t\t\tdataItem.set(\"valueXWorking\", undefined);\r\n\r\n\r\n\t\t\t\t\t\tdelete (dataContext[this.get(\"openValueXField\")]);\r\n\t\t\t\t\t\tdelete (dataContext[this.get(\"durationField\")]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tdataContext[this.get(\"openValueXField\")] = dataItem.get(\"openValueX\");\r\n\t\t\t\t\t\tdataContext[this.get(\"durationField\")] = dataItem.get(\"duration\");\r\n\t\t\t\t\t\tdataContext[this.get(\"progressField\")] = dataItem.get(\"progress\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataContext[this.get(\"linkToField\")] = dataItem.get(\"linkTo\");\r\n\r\n\t\t\t\t\tconst category = dataItem.get(\"categoryY\");\r\n\t\t\t\t\tconst categoryYField = this.get(\"categoryYField\", \"category\");\r\n\r\n\t\t\t\t\tdataContext[categoryYField] = category;\r\n\r\n\t\t\t\t\tconst categoryDataContext = categoryAxisDataItem.dataContext as any;\r\n\t\t\t\t\tconst categoryField = yAxis.get(\"categoryField\", \"category\");\r\n\t\t\t\t\tconst parent = categoryAxisDataItem.get(\"parent\");\r\n\r\n\t\t\t\t\tcategoryDataContext[categoryField] = category;\r\n\t\t\t\t\tif (parent) {\r\n\t\t\t\t\t\tcategoryDataContext[yAxis.get(\"parentIdField\", \"parentId\")] = parent.get(\"id\");\r\n\t\t\t\t\t\tcategoryDataContext[yAxis.get(\"collapsedField\", \"collapsed\")] = categoryAxisDataItem.get(\"collapsed\", false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\t\tthis._adjustParentValues(dataItem);\r\n\r\n\t\t\t\tconst children = dataItem.get(\"children\");\r\n\t\t\t\tconst startGrip = dataItem.get(\"startGrip\");\r\n\t\t\t\tconst endGrip = dataItem.get(\"endGrip\");\r\n\t\t\t\tconst progressGrip = dataItem.get(\"progressGrip\");\r\n\r\n\t\t\t\tlet visible = true;\r\n\t\t\t\tif (children && children.length > 0) {\r\n\t\t\t\t\tvisible = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (startGrip) {\r\n\t\t\t\t\tstartGrip.setPrivate(\"visible\", visible);\r\n\t\t\t\t}\r\n\t\t\t\tif (endGrip) {\r\n\t\t\t\t\tendGrip.set(\"visible\", visible);\r\n\t\t\t\t}\r\n\t\t\t\tif (progressGrip) {\r\n\t\t\t\t\tprogressGrip.set(\"visible\", visible);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\r\n\t\t\t\tlet index = 0;\r\n\t\t\t\tif (categoryAxisDataItem) {\r\n\t\t\t\t\tconst durationStepper = categoryAxisDataItem.get(\"durationStepper\");\r\n\t\t\t\t\tif (durationStepper) {\r\n\t\t\t\t\t\tdurationStepper.set(\"disabled\", !visible);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tindex = categoryAxisDataItem.get(\"index\", 0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst duration = dataItem.get(\"duration\", 0);\r\n\r\n\t\t\t\tlet zeroRectangle = dataItem.get(\"zeroRectangle\");\r\n\t\t\t\tconst column = dataItem.get(\"graphics\") as RoundedRectangle;\r\n\t\t\t\tconst maskedContainer = dataItem.get(\"maskedContainer\");\r\n\t\t\t\tconst fill = categoryAxisDataItem.get(\"customColor\", categoryAxisDataItem.get(\"color\"));\r\n\r\n\t\t\t\tif (zeroRectangle) {\r\n\t\t\t\t\tlet height = 20;\r\n\r\n\t\t\t\t\tlet y0 = yAxis.indexToPosition(index, 0);\r\n\t\t\t\t\tlet y1 = yAxis.indexToPosition(index, 1);\r\n\r\n\t\t\t\t\ty0 = yRenderer.positionToCoordinate(y0);\r\n\t\t\t\t\ty1 = yRenderer.positionToCoordinate(y1);\r\n\r\n\t\t\t\t\tconst columnHeight = column.get(\"height\", 0);\r\n\t\t\t\t\tlet r = 1;\r\n\t\t\t\t\tif (columnHeight instanceof Percent) {\r\n\t\t\t\t\t\tr *= columnHeight.value * $math.cos(45);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theight = (y1 - y0) * r;\r\n\r\n\t\t\t\t\tzeroRectangle.setPrivate(\"height\", height);\r\n\t\t\t\t\tzeroRectangle.setPrivate(\"width\", height);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (column && maskedContainer && !this.isCollapsed(dataItem)) {\r\n\t\t\t\t\tif (duration === 0 && zeroRectangle) {\r\n\t\t\t\t\t\tif (!column.isHidden() && !column.isHiding()) {\r\n\t\t\t\t\t\t\tzeroRectangle.setAll({\r\n\t\t\t\t\t\t\t\tfill: fill,\r\n\t\t\t\t\t\t\t\tstroke: fill\r\n\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\tif (!startGrip?.isDragging() && !endGrip?.isDragging()) {\r\n\t\t\t\t\t\t\t\tcolumn.hide();\r\n\t\t\t\t\t\t\t\tmaskedContainer.hide();\r\n\t\t\t\t\t\t\t\tzeroRectangle.show();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif (zeroRectangle) {\r\n\t\t\t\t\t\t\tzeroRectangle.hide();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tcolumn.show();\r\n\t\t\t\t\t\tmaskedContainer.show();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\t\tthis._adjustLinkValues(dataItem);\r\n\t\t\t});\r\n\r\n\t\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\t\tthis._adjustParentValues(dataItem);\r\n\r\n\t\t\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\t\t\t\tif (categoryAxisDataItem) {\r\n\t\t\t\t\tcategoryAxisDataItem.set(\"duration\", dataItem.get(\"duration\"));\r\n\t\t\t\t\tcategoryAxisDataItem.set(\"progress\", dataItem.get(\"progress\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// dispatch event\r\n\t\t\tconst eventType = \"valueschanged\";\r\n\t\t\tif (this.events.isEnabled(eventType)) {\r\n\t\t\t\tthis.events.dispatch(eventType, {\r\n\t\t\t\t\ttype: eventType, target: this\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this._columnsUpdated) {\r\n\t\t\tthis._updateLinks();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _getParentOpen(dataItem: DataItem<IGanttSeriesDataItem>): number {\r\n\t\tconst parent = dataItem.get(\"parent\");\r\n\t\tif (parent) {\r\n\t\t\treturn this._getParentOpen(parent);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn dataItem.get(\"openValueX\", -Infinity);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _adjustLinkValues(dataItem: DataItem<IGanttSeriesDataItem>) {\r\n\t\tconst linkTo = dataItem.get(\"linkTo\");\r\n\t\tif (linkTo) {\r\n\t\t\tconst valueX = dataItem.get(\"valueX\", 0);\r\n\t\t\t$array.each(linkTo, (id) => {\r\n\t\t\t\tconst linkDataItem = this.getDataItemById(id);\r\n\r\n\t\t\t\tif (linkDataItem && linkDataItem !== dataItem) {\r\n\t\t\t\t\tconst linkOpenValueX = linkDataItem.get(\"openValueX\", 0);\r\n\t\t\t\t\tif (linkOpenValueX !== undefined && linkOpenValueX < valueX) {\r\n\t\t\t\t\t\tlinkDataItem.set(\"openValueX\", valueX);\r\n\t\t\t\t\t\tthis._fixValues(linkDataItem, \"duration\");\r\n\t\t\t\t\t\tthis._adjustChildValues(linkDataItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _adjustChildValues(dataItem: DataItem<IGanttSeriesDataItem>) {\r\n\t\tconst children = dataItem.get(\"children\", []);\r\n\t\tif (children && children.length > 0) {\r\n\t\t\tlet openValueX = dataItem.get(\"openValueX\", 0);\r\n\r\n\t\t\t$array.each(children, (child) => {\r\n\t\t\t\tconst childOpenValueX = child.get(\"openValueX\", 0);\r\n\t\t\t\tif (childOpenValueX === undefined || childOpenValueX < openValueX) {\r\n\t\t\t\t\tchild.set(\"openValueX\", openValueX);\r\n\t\t\t\t\tthis._fixValues(child, \"duration\");\r\n\t\t\t\t}\r\n\t\t\t\tthis._adjustChildValues(child);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _dragChildValues(dataItem: DataItem<IGanttSeriesDataItem>, dx: number) {\r\n\t\tconst children = dataItem.get(\"children\");\r\n\t\tif (children && children.length > 0) {\r\n\t\t\t$array.each(children, (child) => {\r\n\t\t\t\tconst column = child.get(\"graphics\") as RoundedRectangle;\r\n\t\t\t\tif (column) {\r\n\t\t\t\t\tcolumn.set(\"dx\", dx);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._dragChildValues(child, dx);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _moveChildValues(dataItem: DataItem<IGanttSeriesDataItem>, diff: number) {\r\n\t\tconst children = dataItem.get(\"children\");\r\n\t\tif (children && children.length > 0) {\r\n\t\t\t$array.each(children, (child) => {\r\n\t\t\t\tchild.set(\"openValueX\", child.get(\"openValueX\", 0) + diff);\r\n\t\t\t\tchild.set(\"valueX\", child.get(\"valueX\", 0) + diff);\r\n\r\n\t\t\t\tchild.set(\"openValueXWorking\", child.get(\"openValueX\"));\r\n\t\t\t\tchild.set(\"valueXWorking\", child.get(\"openValueX\"));\r\n\r\n\r\n\t\t\t\tconst column = child.get(\"graphics\") as RoundedRectangle;\r\n\t\t\t\tif (column) {\r\n\t\t\t\t\tcolumn.set(\"dx\", 0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._fixValues(child, \"duration\");\r\n\t\t\t\tthis._moveChildValues(child, diff);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _findMinStart(dataItem: DataItem<IGanttSeriesDataItem>): number {\r\n\t\t// check if item has links from other items\r\n\t\tlet maxValue: number = -Infinity;\r\n\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\tconst linkTo = item.get(\"linkTo\");\r\n\t\t\tif (linkTo) {\r\n\t\t\t\t$array.each(linkTo, (id) => {\r\n\t\t\t\t\tif (id === dataItem.get(\"id\")) {\r\n\t\t\t\t\t\tconst itemValueX = item.get(\"valueX\", 0);\r\n\t\t\t\t\t\tif (itemValueX > maxValue) {\r\n\t\t\t\t\t\t\tmaxValue = itemValueX;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\t// if this is a child, check parent start\r\n\t\tconst parent = dataItem.get(\"parent\");\r\n\t\tif (parent) {\r\n\t\t\tmaxValue = Math.max(maxValue, this._findMinStart(parent));\r\n\t\t}\r\n\r\n\t\treturn maxValue;\r\n\t}\r\n\r\n\tprotected _adjustParentValues(dataItem: DataItem<IGanttSeriesDataItem>) {\r\n\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\");\r\n\t\tif (categoryAxisDataItem) {\r\n\t\t\tconst column = dataItem.get(\"graphics\") as RoundedRectangle;\r\n\t\t\tlet color = categoryAxisDataItem.get(\"customColor\", categoryAxisDataItem.get(\"color\"));\r\n\t\t\tif (column) {\r\n\t\t\t\tcolumn.setAll({\r\n\t\t\t\t\tfill: color,\r\n\t\t\t\t\tstroke: color\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\tconst zeroRectangle = dataItem.get(\"zeroRectangle\");\r\n\t\t\tif (zeroRectangle) {\r\n\t\t\t\tzeroRectangle.setAll({\r\n\t\t\t\t\tfill: color,\r\n\t\t\t\t\tstroke: color,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst children = dataItem.get(\"children\");\r\n\t\t\tif (children && children.length > 0) {\r\n\t\t\t\tlet progress = 0;\r\n\t\t\t\t$array.each(children, (child) => {\r\n\t\t\t\t\tconst childProgress = child.get(\"progress\", 0);\r\n\t\t\t\t\tif (childProgress !== undefined) {\r\n\t\t\t\t\t\tprogress += childProgress;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tprogress /= children.length;\r\n\t\t\t\tdataItem.set(\"progress\", progress);\r\n\t\t\t}\r\n\r\n\t\t\tif (categoryAxisDataItem) {\r\n\t\t\t\tlet valueX = dataItem.get(\"valueX\");\r\n\t\t\t\tlet openValueX = dataItem.get(\"openValueX\");\r\n\r\n\t\t\t\tconst duration = dataItem.get(\"duration\", 0);\r\n\t\t\t\tif (valueX === undefined && openValueX !== undefined) {\r\n\t\t\t\t\topenValueX = this.getOpenValue(openValueX);\r\n\t\t\t\t\tvalueX = this.getEndValue(openValueX, duration);\r\n\r\n\t\t\t\t\tdataItem.setRaw(\"openValueX\", openValueX);\r\n\t\t\t\t\tdataItem.setRaw(\"valueX\", valueX);\r\n\r\n\t\t\t\t\t//dataItem.setRaw(\"openValueXWorking\", openValueX);\r\n\t\t\t\t\t//dataItem.setRaw(\"valueXWorking\", valueX);\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet parent = dataItem.get(\"parent\");\r\n\t\t\t\tif (openValueX !== undefined && valueX !== undefined && parent) {\r\n\t\t\t\t\tconst parentOpenValueX = parent.get(\"openValueX\");\r\n\t\t\t\t\tconst parentValueX = parent.get(\"valueX\");\r\n\r\n\t\t\t\t\tif (parentOpenValueX === undefined || parentOpenValueX > openValueX) {\r\n\t\t\t\t\t\tparent.set(\"openValueX\", openValueX);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (parentValueX === undefined || parentValueX < valueX) {\r\n\t\t\t\t\t\tparent.set(\"valueX\", valueX);\r\n\t\t\t\t\t\tparent.set(\"valueXWorking\", valueX);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tparent.set(\"duration\", this.getDataItemDuration(parent));\r\n\t\t\t\t\tthis._adjustParentValues(parent);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _startConnector(bullet: Circle) {\r\n\t\tthis._startBullet = bullet;\r\n\r\n\t\tthis.connectorLine.show();\r\n\t\tthis.connectorArrow.show();\r\n\r\n\t\tthis._xPan = this.chart?.get(\"panX\");\r\n\t\tthis._yPan = this.chart?.get(\"panY\");\r\n\r\n\t\tthis.chart?.set(\"panX\", false);\r\n\t\tthis.chart?.set(\"panY\", false);\r\n\r\n\t\tconst dataItem = bullet.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t// disable all columns of not the same depth\r\n\t\tconst depth = this.getDepth(dataItem);\r\n\t\tconst itemsToDisable: Array<DataItem<IGanttSeriesDataItem>> = [];\r\n\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\tif (this.getDepth(item) != depth) {\r\n\t\t\t\t$array.move(itemsToDisable, item);\r\n\t\t\t}\r\n\t\t\t// also if already connected, disable\r\n\t\t\tconst links = dataItem.get(\"links\");\r\n\t\t\tif (links && links[item.get(\"id\")!]) {\r\n\t\t\t\t$array.move(itemsToDisable, item);\r\n\t\t\t}\r\n\r\n\t\t})\r\n\r\n\t\t// if this item has parent, disable all items ecept items in the same branch\r\n\t\tconst parent = dataItem.get(\"parent\");\r\n\t\tif (parent) {\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tif (item.get(\"parent\") !== parent) {\r\n\t\t\t\t\t$array.move(itemsToDisable, item);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t// disable all columns of the same depth which are connected to start bullet data item\r\n\t\tconst id = dataItem.get(\"id\")!;\r\n\t\tconst checkIfConnected = (id: string) => {\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tconst links = item.get(\"links\");\r\n\t\t\t\tif (links && links[id]) {\r\n\t\t\t\t\titemsToDisable.push(item);\r\n\t\t\t\t\tcheckIfConnected(item.get(\"id\")!);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t\tcheckIfConnected(id);\r\n\r\n\t\t$array.each(itemsToDisable, (item) => {\r\n\t\t\tconst column = item.get(\"graphics\") as RoundedRectangle;\r\n\t\t\tif (column) {\r\n\t\t\t\tcolumn.states.applyAnimate(\"disabled\");\r\n\t\t\t}\r\n\t\t\tconst container = item.get(\"container\") as Container;\r\n\t\t\tif (container) {\r\n\t\t\t\tcontainer.states.applyAnimate(\"disabled\");\r\n\t\t\t}\r\n\r\n\t\t\tconst zeroRectangle = item.get(\"zeroRectangle\") as RoundedRectangle;\r\n\t\t\tif (zeroRectangle) {\r\n\t\t\t\tzeroRectangle.states.applyAnimate(\"disabled\");\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprotected _updateConnector(point: IPoint) {\r\n\r\n\t\tlet startPoint = this._startBullet?.toGlobal({ x: 0, y: 0 });\r\n\t\tif (startPoint) {\r\n\r\n\t\t\tstartPoint = this.toLocal(startPoint);\r\n\r\n\t\t\tthis.connectorLine.setAll({\r\n\t\t\t\tsegments: [[[{ x: startPoint.x, y: startPoint.y }, { x: point.x, y: point.y }]]]\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectorArrow.setAll({\r\n\t\t\t\tx: point.x,\r\n\t\t\t\ty: point.y,\r\n\t\t\t\trotation: $math.getAngle(startPoint, point) + 90,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _endConnector() {\r\n\r\n\t\tlet startPoint = this._startBullet?.toGlobal({ x: 0, y: 0 });\r\n\t\tif (startPoint) {\r\n\t\t\tstartPoint = this.toLocal(startPoint);\r\n\r\n\t\t\tthis.connectorLine.hide();\r\n\t\t\tthis.connectorArrow.hide();\r\n\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tconst column = item.get(\"graphics\") as RoundedRectangle;\r\n\t\t\t\tif (column && column.isVisible()) {\r\n\t\t\t\t\tcolumn.states.applyAnimate(\"default\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst container = item.get(\"container\") as Container;\r\n\t\t\t\tif (container && container.isVisible()) {\r\n\t\t\t\t\tcontainer.states.applyAnimate(\"default\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst zeroRectangle = item.get(\"zeroRectangle\") as RoundedRectangle;\r\n\t\t\t\tif (zeroRectangle && zeroRectangle.isVisible()) {\r\n\t\t\t\t\tzeroRectangle.states.applyAnimate(\"default\");\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tlet dataItem = this._hoveredDataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t\tif (dataItem && dataItem !== this._startBullet?.dataItem) {\r\n\t\t\t\tconst id = dataItem.get(\"id\");\r\n\r\n\t\t\t\tif (id) {\r\n\t\t\t\t\tconst startDataItem = this._startBullet?.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t\t\t\tif (startDataItem) {\r\n\t\t\t\t\t\tconst linkTo: Array<string> = startDataItem.get(\"linkTo\", []);\r\n\t\t\t\t\t\tif ($array.indexOf(linkTo, id) === -1) {\r\n\t\t\t\t\t\t\tlinkTo.push(id);\r\n\t\t\t\t\t\t\tstartDataItem.set(\"linkTo\", linkTo);\r\n\t\t\t\t\t\t\tthis.markDirtyValues();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._updateLinks();\r\n\t\t}\r\n\r\n\t\tthis.endBullets.each((bullet) => {\r\n\t\t\tbullet.show();\r\n\t\t})\r\n\r\n\t\tthis.startBullets.each((bullet) => {\r\n\t\t\tbullet.hide();\r\n\t\t})\r\n\r\n\t\tthis.chart?.set(\"panX\", this._xPan);\r\n\t\tthis.chart?.set(\"panY\", this._yPan);\r\n\t}\r\n\r\n\t/**\r\n\t * Fixes values of a data item, adjusting start, end, or duration as needed.\r\n\t */\r\n\tprotected _fixValues(dataItem: DataItem<IGanttSeriesDataItem>, keep: \"start\" | \"end\" | \"duration\") {\r\n\t\tlet valueX = dataItem.get(\"valueX\");\r\n\t\tlet openValueX = dataItem.get(\"openValueX\");\r\n\t\tlet duration = dataItem.get(\"duration\", 0);\r\n\r\n\t\tif ($type.isNumber(valueX) && $type.isNumber(openValueX)) {\r\n\t\t\tif (keep === \"start\") {\r\n\t\t\t\tvalueX = this.roundValue(valueX);\r\n\t\t\t\tduration = this.getDataItemDuration(dataItem);\r\n\t\t\t\tdataItem.set(\"duration\", duration);\r\n\t\t\t}\r\n\t\t\telse if (keep === \"end\") {\r\n\t\t\t\topenValueX = this.roundValue(openValueX, true);\r\n\t\t\t\tduration = this.getDataItemDuration(dataItem);\r\n\t\t\t\tdataItem.set(\"duration\", duration);\r\n\t\t\t}\r\n\t\t\telse if (keep === \"duration\") {\r\n\t\t\t\topenValueX = this.roundValue(openValueX, true);\r\n\t\t\t\tvalueX = openValueX + duration * this.getUnitDuration();\r\n\t\t\t}\r\n\r\n\t\t\topenValueX = this.getOpenValue(openValueX);\r\n\t\t\tvalueX = this.getEndValue(openValueX, duration);\r\n\r\n\t\t\tconst animationDuration = this.get(\"interpolationDuration\", 0);\r\n\t\t\tconst animationEasing = this.get(\"interpolationEasing\");\r\n\t\t\tconst index = this.dataItems.indexOf(dataItem);\r\n\r\n\t\t\tif (index >= this.startIndex() && index <= this.endIndex()) {\r\n\t\t\t\tdataItem.animate({ key: \"openValueXWorking\", to: openValueX, duration: animationDuration, easing: animationEasing });\r\n\t\t\t\tdataItem.animate({ key: \"valueXWorking\", to: valueX, duration: animationDuration, easing: animationEasing });\r\n\t\t\t\t// animate not working also\r\n\t\t\t\tdataItem.animate({ key: \"openValueX\", to: openValueX, duration: animationDuration, easing: animationEasing });\r\n\t\t\t\tdataItem.animate({ key: \"valueX\", to: valueX, duration: animationDuration, easing: animationEasing });\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tdataItem.set(\"openValueXWorking\", openValueX);\r\n\t\t\t\tdataItem.set(\"valueXWorking\", valueX);\r\n\t\t\t\tdataItem.set(\"openValueX\", openValueX);\r\n\t\t\t\tdataItem.set(\"valueX\", valueX);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _toggleColumn(dataItem: DataItem<this[\"_dataItemSettings\"]>, visible: boolean) {\r\n\t\tsuper._toggleColumn(dataItem, visible);\r\n\t\tconst container = dataItem.get(\"container\");\r\n\t\tif (container) {\r\n\t\t\tcontainer.setPrivate(\"visible\", visible);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _afterDataChange(): void {\r\n\t\tconst yAxis = this.get(\"yAxis\") as GanttCategoryAxis<GanttCategoryAxisRenderer>;\r\n\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\tthis._fixValues(dataItem, \"duration\");\r\n\t\t\tconst category = dataItem.get(\"categoryY\");\r\n\r\n\t\t\tif (category) {\r\n\t\t\t\tconst categoryAxisDataItem = yAxis.dataItems.find((item) => item.get(\"category\") === category);\r\n\r\n\t\t\t\tdataItem.set(\"categoryAxisDataItem\", categoryAxisDataItem);\r\n\t\t\t\tif (categoryAxisDataItem) {\r\n\t\t\t\t\tcategoryAxisDataItem.on(\"duration\", () => {\r\n\t\t\t\t\t\tconst duration = categoryAxisDataItem.get(\"duration\");\r\n\t\t\t\t\t\tconst children = dataItem.get(\"children\");\r\n\t\t\t\t\t\tif (!children || children.length === 0) {\r\n\t\t\t\t\t\t\tif (duration !== undefined) {\r\n\t\t\t\t\t\t\t\tdataItem.set(\"duration\", duration);\r\n\t\t\t\t\t\t\t\tthis._fixValues(dataItem, \"duration\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.get(\"yAxis\").markDirtyTree();\r\n\t\tsuper._afterDataChange();\r\n\t}\r\n\r\n\tprotected _updateLinks() {\r\n\r\n\t\tconst xAxis = this.get(\"xAxis\") as ValueAxis<AxisRendererX>;\r\n\t\tconst yAxis = this.get(\"yAxis\") as GanttCategoryAxis<GanttCategoryAxisRenderer>;\r\n\t\tconst yRenderer = yAxis.get(\"renderer\") as GanttCategoryAxisRenderer;\r\n\t\tlet endRadius = 0;\r\n\t\tconst endBullet = this.endBullets.getIndex(0);\r\n\t\tif (endBullet && endBullet.isVisible()) {\r\n\t\t\tendRadius = endBullet.get(\"radius\", 0);\r\n\t\t}\r\n\r\n\t\tlet columnHeight: number | Percent = percent(60);\r\n\t\tlet column = this.columns.getIndex(0);\r\n\t\tif (column) {\r\n\t\t\tcolumnHeight = column.get(\"height\", 0);\r\n\t\t}\r\n\r\n\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\tconst linkTo = dataItem.get(\"linkTo\");\r\n\r\n\t\t\tconst categoryDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\r\n\r\n\t\t\tif (linkTo) {\r\n\t\t\t\tlet links = dataItem.get(\"links\");\r\n\t\t\t\tconst linkHorizontalOffset = this.get(\"linkHorizontalOffset\", 25);\r\n\r\n\t\t\t\t$array.each(linkTo, (dataItemId) => {\r\n\t\t\t\t\tif (!links) {\r\n\t\t\t\t\t\tlinks = dataItem.set(\"links\", {});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet link = links[dataItemId];\r\n\r\n\t\t\t\t\tif (!link) {\r\n\t\t\t\t\t\tlink = this.links.make();\r\n\t\t\t\t\t\tlinks[dataItemId] = link;\r\n\t\t\t\t\t\tthis.links.push(link);\r\n\t\t\t\t\t\tthis.linksContainer.children.push(link);\r\n\t\t\t\t\t\tlink.appear();\r\n\r\n\t\t\t\t\t\tlink.events.on(\"click\", () => {\r\n\t\t\t\t\t\t\tif (link.get(\"active\")) {\r\n\t\t\t\t\t\t\t\tthis.links.removeValue(link);\r\n\t\t\t\t\t\t\t\tconst links = dataItem.get(\"links\");\r\n\t\t\t\t\t\t\t\tif (links) {\r\n\t\t\t\t\t\t\t\t\tdelete links[dataItemId];\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t$array.remove(linkTo, dataItemId);\r\n\t\t\t\t\t\t\t\tthis.markDirtyValues();\r\n\t\t\t\t\t\t\t\tlink.dispose();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tlink.events.on(\"globalpointerup\", () => {\r\n\t\t\t\t\t\t\tif (link.get(\"active\") && !link.isHover()) {\r\n\t\t\t\t\t\t\t\tlink.set(\"active\", false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst points: Array<IPoint> = [];\r\n\r\n\t\t\t\t\tconst positionX = xAxis.valueToPosition(dataItem.get(\"valueX\", 0));\r\n\t\t\t\t\tconst positionY = yAxis.categoryToPosition(dataItem.get(\"categoryY\")!);\r\n\r\n\t\t\t\t\tconst point = this.getPoint(positionX, positionY);\r\n\r\n\t\t\t\t\tlet firstPoint = { x: point.x + endRadius, y: point.y };\r\n\r\n\t\t\t\t\tif (dataItem.get(\"duration\", 0) === 0) {\r\n\t\t\t\t\t\tlet y0 = yAxis.indexToPosition(categoryDataItem.get(\"index\", 0), 0);\r\n\t\t\t\t\t\tlet y1 = yAxis.indexToPosition(categoryDataItem.get(\"index\", 0), 1);\r\n\t\t\t\t\t\ty0 = yRenderer.positionToCoordinate(y0);\r\n\t\t\t\t\t\ty1 = yRenderer.positionToCoordinate(y1);\r\n\r\n\t\t\t\t\t\tlet h = (y1 - y0) / 2;\r\n\t\t\t\t\t\tif (columnHeight instanceof Percent) {\r\n\t\t\t\t\t\t\th *= columnHeight.value;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfirstPoint.x += h - endRadius;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpoints.push(firstPoint);\r\n\t\t\t\t\tpoints.push({ x: firstPoint.x + linkHorizontalOffset, y: firstPoint.y });\r\n\r\n\t\t\t\t\tconst targetDataItem = this.getDataItemById(dataItemId) as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t\t\t\tif (targetDataItem) {\r\n\r\n\t\t\t\t\t\tconst positionX = xAxis.valueToPosition(targetDataItem.get(\"openValueX\", 0));\r\n\t\t\t\t\t\tconst positionY = yAxis.categoryToPosition(targetDataItem.get(\"categoryY\")!);\r\n\r\n\t\t\t\t\t\tconst point = this.getPoint(positionX, positionY);\r\n\r\n\t\t\t\t\t\tlet x = point.x;\r\n\t\t\t\t\t\tlet y = point.y;\r\n\r\n\t\t\t\t\t\tlet lastPoint = { x: x, y: y };\r\n\r\n\t\t\t\t\t\tif (targetDataItem.get(\"duration\", 0) === 0) {\r\n\t\t\t\t\t\t\tlet targetCategoryDataItem = targetDataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\t\t\t\t\t\t\tif (targetCategoryDataItem) {\r\n\t\t\t\t\t\t\t\tlet y0 = yAxis.indexToPosition(targetCategoryDataItem.get(\"index\", 0), 0);\r\n\t\t\t\t\t\t\t\tlet y1 = yAxis.indexToPosition(targetCategoryDataItem.get(\"index\", 0), 1);\r\n\t\t\t\t\t\t\t\ty0 = yRenderer.positionToCoordinate(y0);\r\n\t\t\t\t\t\t\t\ty1 = yRenderer.positionToCoordinate(y1);\r\n\r\n\t\t\t\t\t\t\t\tlet h = (y1 - y0) / 2;\r\n\t\t\t\t\t\t\t\tif (columnHeight instanceof Percent) {\r\n\t\t\t\t\t\t\t\t\th *= columnHeight.value;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlastPoint.x -= h;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (lastPoint.x - linkHorizontalOffset < firstPoint.x + linkHorizontalOffset) {\r\n\t\t\t\t\t\t\tconst category = dataItem.get(\"categoryY\");\r\n\t\t\t\t\t\t\tconst yAxis = this.get(\"yAxis\") as CategoryAxis<AxisRendererY>;\r\n\r\n\t\t\t\t\t\t\tif (category) {\r\n\t\t\t\t\t\t\t\tlet index = yAxis.categoryToIndex(category);\r\n\r\n\t\t\t\t\t\t\t\tconst position0 = yAxis.indexToPosition(index);\r\n\t\t\t\t\t\t\t\tconst position1 = yAxis.indexToPosition(index, 1);\r\n\r\n\t\t\t\t\t\t\t\tif (yAxis && category) {\r\n\r\n\t\t\t\t\t\t\t\t\tlet sign = -1;\r\n\t\t\t\t\t\t\t\t\tif (lastPoint.y > firstPoint.y) {\r\n\t\t\t\t\t\t\t\t\t\tsign = 1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tlet y = yAxis.get(\"renderer\").positionToCoordinate(yAxis.categoryToPosition(category) + (position1 - position0) * sign);\r\n\r\n\t\t\t\t\t\t\t\t\tpoints.push({ x: firstPoint.x + linkHorizontalOffset, y: y });\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tpoints.push({ x: lastPoint.x - linkHorizontalOffset, y: lastPoint.y });\r\n\t\t\t\t\t\tpoints.push(lastPoint);\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlink.set(\"points\", points);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Updates series graphics.\r\n\t */\r\n\tprotected _updateSeriesGraphics(dataItem: DataItem<this[\"_dataItemSettings\"]>, graphics: Graphics, l: number, r: number, t: number, b: number, _fitW: boolean, fitH: boolean) {\r\n\t\tsuper._updateSeriesGraphics(dataItem, graphics, l, r, t, b, false, fitH);\r\n\t\tlet x = dataItem.get(\"left\", 0);\r\n\t\tlet y = dataItem.get(\"top\", 0);\r\n\t\tlet width = dataItem.get(\"right\", 0) - x;\r\n\t\tlet height = dataItem.get(\"bottom\", 0) - y;\r\n\r\n\t\t// Update the container position and size\r\n\t\tconst container = dataItem.get(\"container\");\r\n\t\tconst mask = dataItem.get(\"mask\");\r\n\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\t\tconst fill = categoryAxisDataItem ? categoryAxisDataItem.get(\"customColor\", categoryAxisDataItem.get(\"color\")) : undefined;\r\n\r\n\t\tdataItem.setRaw(\"name\", (categoryAxisDataItem.dataContext as any).name);\r\n\r\n\t\tconst startBullet = dataItem.get(\"startBullet\");\r\n\t\tstartBullet?.setAll({\r\n\t\t\tx: 0,\r\n\t\t\tstroke: fill\r\n\t\t});\r\n\r\n\t\tconst endBullet = dataItem.get(\"endBullet\");\r\n\t\tendBullet?.setAll({\r\n\t\t\tstroke: fill,\r\n\t\t\tx: width\r\n\t\t});\r\n\r\n\t\tif (container) {\r\n\t\t\tcontainer.setAll({\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\twidth: width,\r\n\t\t\t\theight: height\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst maskedContainer = dataItem.get(\"maskedContainer\");\r\n\t\tif (maskedContainer) {\r\n\t\t\tmaskedContainer.setAll({\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: 0,\r\n\t\t\t\twidth: width,\r\n\t\t\t\theight: height\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (mask) {\r\n\t\t\tmask.setAll({\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: 0,\r\n\t\t\t\twidth: width,\r\n\t\t\t\theight: height\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst startGrip = dataItem.get(\"startGrip\");\r\n\t\tif (startGrip) {\r\n\t\t\tstartGrip.setAll({\r\n\t\t\t\theight: height\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tconst endGrip = dataItem.get(\"endGrip\");\r\n\t\tif (endGrip) {\r\n\t\t\tendGrip.setAll({\r\n\t\t\t\tx: width,\r\n\t\t\t\theight: height\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// update progress rectangle\r\n\t\tconst progressRectangle = dataItem.get(\"progressRectangle\");\r\n\t\tif (progressRectangle) {\r\n\t\t\tconst progress = dataItem.get(\"progress\", 0);\r\n\t\t\tconst progressWidth = width - width * progress;\r\n\r\n\t\t\tprogressRectangle.setAll({\r\n\t\t\t\tx: width - progressWidth,\r\n\t\t\t\twidth: progressWidth,\r\n\t\t\t\theight: height\r\n\t\t\t});\r\n\r\n\t\t\tconst progressGrip = dataItem.get(\"progressGrip\");\r\n\t\t\tif (progressGrip) {\r\n\t\t\t\tprogressGrip.setAll({\r\n\t\t\t\t\tx: width - progressWidth\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst zeroRectangle = dataItem.get(\"zeroRectangle\");\r\n\t\t\tif (zeroRectangle) {\r\n\t\t\t\tzeroRectangle.markDirtyKey(\"fillPattern\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Hides series's data item.\r\n\t * \r\n\t * @param dataItem Data item\r\n\t * @param duration Animation duration in milliseconds\r\n\t * @return Promise\r\n\t */\r\n\tpublic async hideDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, duration?: number): Promise<void> {\r\n\t\tconst promises = [super.hideDataItem(dataItem, duration)];\r\n\t\tconst container = dataItem.get(\"container\");\r\n\t\tif (container) {\r\n\t\t\tpromises.push(container.hide(duration));\r\n\t\t}\r\n\r\n\t\t// hide all links\r\n\t\tconst links = dataItem.get(\"links\", {});\r\n\t\tif (links) {\r\n\t\t\t$object.each(links, (_key, link: Link) => {\r\n\t\t\t\tlink.hide(duration);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// hide all links to this data item\r\n\t\tconst id = dataItem.get(\"id\")!;\r\n\t\tif (id) {\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tconst linkTo = item.get(\"linkTo\");\r\n\t\t\t\tif (linkTo && linkTo.includes(id)) {\r\n\t\t\t\t\tconst links: { [index: string]: Link } | undefined = item.get(\"links\");\r\n\t\t\t\t\tif (links && links[id]) {\r\n\t\t\t\t\t\tconst link = links[id];\r\n\t\t\t\t\t\tlink.hide(duration);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tawait Promise.all(promises);\r\n\t}\r\n\r\n\t/**\r\n\t * Shows series's data item.\r\n\t * \r\n\t * @param dataItem Data item\r\n\t * @param duration Animation duration in milliseconds\r\n\t * @return Promise\r\n\t */\r\n\tpublic async showDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, duration?: number): Promise<void> {\r\n\t\tconst promises = [super.showDataItem(dataItem, duration)];\r\n\t\tconst container = dataItem.get(\"container\");\r\n\t\tif (container) {\r\n\t\t\tpromises.push(container.show(duration));\r\n\t\t}\r\n\r\n\t\t// show all links\r\n\t\tconst links = dataItem.get(\"links\", {});\r\n\t\tif (links) {\r\n\t\t\t$object.each(links, (_key, link: Link) => {\r\n\t\t\t\tlink.show(duration);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// show all links to this data item\r\n\t\tconst id = dataItem.get(\"id\")!;\r\n\t\tif (id) {\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tconst linkTo = item.get(\"linkTo\");\r\n\t\t\t\tif (linkTo && linkTo.includes(id)) {\r\n\t\t\t\t\tconst links: { [index: string]: Link } | undefined = item.get(\"links\");\r\n\t\t\t\t\tif (links && links[id]) {\r\n\t\t\t\t\t\tconst link = links[id];\r\n\t\t\t\t\t\tlink.show(duration);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tawait Promise.all(promises);\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes a data item and removes it from the series.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic disposeDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\r\n\t\tsuper.disposeDataItem(dataItem);\r\n\r\n\t\tconst container = dataItem.get(\"container\");\r\n\t\tif (container) {\r\n\t\t\tthis.containers.removeValue(container);\r\n\t\t\tcontainer.dispose();\r\n\t\t}\r\n\r\n\t\tconst startBullet = dataItem.get(\"startBullet\");\r\n\t\tif (startBullet) {\r\n\t\t\tthis.startBullets.removeValue(startBullet);\r\n\t\t\tstartBullet.dispose();\r\n\t\t}\r\n\r\n\t\tconst endBullet = dataItem.get(\"endBullet\");\r\n\t\tif (endBullet) {\r\n\t\t\tthis.endBullets.removeValue(endBullet);\r\n\t\t\tendBullet.dispose();\r\n\t\t}\r\n\t\tconst startGrip = dataItem.get(\"startGrip\");\r\n\t\tif (startGrip) {\r\n\t\t\tthis.startGrips.removeValue(startGrip);\r\n\t\t\tstartGrip.dispose();\r\n\t\t}\r\n\t\tconst endGrip = dataItem.get(\"endGrip\");\r\n\t\tif (endGrip) {\r\n\t\t\tthis.endGrips.removeValue(endGrip);\r\n\t\t\tendGrip.dispose();\r\n\t\t}\r\n\t\tconst progressRectangle = dataItem.get(\"progressRectangle\");\r\n\t\tif (progressRectangle) {\r\n\t\t\tthis.progressRectangles.removeValue(progressRectangle);\r\n\t\t\tprogressRectangle.dispose();\r\n\t\t}\r\n\t\tconst zeroRectangle = dataItem.get(\"zeroRectangle\");\r\n\t\tif (zeroRectangle) {\r\n\t\t\tthis.zeroRectangles.removeValue(zeroRectangle);\r\n\t\t\tzeroRectangle.dispose();\r\n\t\t}\r\n\t\tconst progressGrip = dataItem.get(\"progressGrip\");\r\n\t\tif (progressGrip) {\r\n\t\t\tthis.progressGrips.removeValue(progressGrip);\r\n\t\t\tprogressGrip.dispose();\r\n\t\t}\r\n\r\n\t\tthis.disposeLinks(dataItem);\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes all links of a data item and removes them from the series.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic disposeLinks(dataItem: DataItem<IGanttSeriesDataItem>) {\r\n\t\tconst links = dataItem.get(\"links\", {});\r\n\t\tif (links) {\r\n\t\t\t$object.each(links, (key, link: Link) => {\r\n\t\t\t\tlink.dispose();\r\n\t\t\t\tdelete links[key];\r\n\t\t\t});\r\n\t\t\tdataItem.set(\"linkTo\", []);\r\n\t\t}\r\n\r\n\t\tconst id = dataItem.get(\"id\", \"\");\r\n\r\n\t\tif (id) {\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tconst linkTo = item.get(\"linkTo\");\r\n\t\t\t\tif (linkTo && linkTo.includes(id)) {\r\n\t\t\t\t\t$array.remove(linkTo, id);\r\n\r\n\t\t\t\t\tconst links: { [index: string]: Link } | undefined = item.get(\"links\");\r\n\t\t\t\t\tif (links && links[id]) {\r\n\t\t\t\t\t\tconst link = links[id];\r\n\t\t\t\t\t\tthis.links.removeValue(link);\r\n\t\t\t\t\t\tdelete links[id];\r\n\t\t\t\t\t\tlink.dispose();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the duration of a data item in units.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @return Duration in units\r\n\t */\r\n\tpublic getDataItemDuration(dataItem: DataItem<IGanttSeriesDataItem>): number {\r\n\t\tconst openValueX = dataItem.get(\"openValueX\", 0);\r\n\t\tlet valueX = dataItem.get(\"valueX\", 0);\r\n\r\n\t\t// if valueX is within weekend or holiday, round it to the end of a previous work day\r\n\t\treturn Math.round((valueX - openValueX) / this.getUnitDuration()) - this.getHolidayCount(openValueX, valueX);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the depth of a data item in the hierarchy.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @return Depth level\r\n\t */\r\n\tpublic getDepth(dataItem: DataItem<IGanttSeriesDataItem>): number {\r\n\t\tlet depth = 0;\r\n\t\tlet parent = dataItem.get(\"parent\");\r\n\t\twhile (parent) {\r\n\t\t\tdepth++;\r\n\t\t\tparent = parent.get(\"parent\");\r\n\t\t}\r\n\t\treturn depth;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the end value of a data item, adjusting for holidays and weekends.\r\n\t *\r\n\t * @param openValue Open value in milliseconds\r\n\t * @param duration Duration in units\r\n\t * @return Adjusted end value in milliseconds\r\n\t */\r\n\tpublic getEndValue(openValue: number, duration: number): number {\r\n\t\tlet adjustedDuration = duration;\r\n\r\n\t\tconst unitDuration = this.getUnitDuration();\r\n\r\n\t\tif (this.gantt.get(\"excludeWeekends\", true)) {\r\n\t\t\tfor (let i = 0; i < adjustedDuration; i++) {\r\n\t\t\t\tif (this.isHoliday(openValue + i * unitDuration)) {\r\n\t\t\t\t\tadjustedDuration++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn openValue + adjustedDuration * unitDuration;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the open value of a data item, adjusting for holidays and weekends.\r\n\t *\r\n\t * @param openValue Open value in milliseconds\r\n\t * @return Adjusted open value\r\n\t */\r\n\tpublic getOpenValue(openValue: number): number {\r\n\t\tif (this.gantt.get(\"excludeWeekends\", true)) {\r\n\t\t\twhile (this.isHoliday(openValue)) {\r\n\t\t\t\topenValue += this.getUnitDuration();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn openValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the duration of a unit in milliseconds.\r\n\t *\r\n\t * @return Duration in milliseconds\r\n\t */\r\n\tpublic getUnitDuration(): number {\r\n\t\treturn $time.getDuration(this.gantt.get(\"durationUnit\", \"day\"));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the count of holidays between two dates.\r\n\t *\r\n\t * @param start Start date in milliseconds\r\n\t * @param end End date in milliseconds\r\n\t * @return Count of holidays\r\n\t */\r\n\tpublic getHolidayCount(start: number, end: number): number {\r\n\t\tlet count = 0;\r\n\t\tlet holiday = true;\r\n\t\tfor (let i = end; i >= start; i -= this.getUnitDuration()) {\r\n\t\t\tif (!this.isHoliday(i)) {\r\n\t\t\t\tholiday = false;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (!holiday && this.isHoliday(i)) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\r\n\t/**\r\n\t\t * Checks if a given date is a holiday or weekend.\r\n\t\t *\r\n\t\t * @param value Date value in milliseconds\r\n\t\t * @return `true` if the date is a holiday or weekend, otherwise `false`\r\n\t\t */\r\n\tpublic isHoliday(value: number): boolean {\r\n\t\tif (this.gantt.get(\"excludeWeekends\", true)) {\r\n\t\t\tconst holidays = this.gantt.get(\"holidays\", []);\r\n\t\t\tconst weekends = this.gantt.get(\"weekends\", [0, 6]);\r\n\r\n\t\t\tconst date = new Date(value);\r\n\r\n\t\t\tif (weekends.includes(date.getDay())) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (holidays && holidays.length > 0) {\r\n\t\t\t\tlet isHoliday = false;\r\n\t\t\t\t$array.eachContinue(holidays, (holiday) => {\r\n\t\t\t\t\tif (holiday instanceof Date) {\r\n\t\t\t\t\t\tconst start = holiday.getTime()\r\n\t\t\t\t\t\tconst end = holiday.getTime() + $time.getDuration(\"day\");\r\n\t\t\t\t\t\tif (value >= start && value < end) {\r\n\t\t\t\t\t\t\tisHoliday = true;\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t})\r\n\t\t\t\treturn isHoliday;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"GanttSeries.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/gantt/GanttSeries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ValueAxis } from \"../xy/axes/ValueAxis\";\r\nimport type { AxisRendererX } from \"../xy/axes/AxisRendererX\";\r\nimport type { CategoryAxis } from \"../xy/axes/CategoryAxis\";\r\nimport type { AxisRendererY } from \"../xy/axes/AxisRendererY\";\r\nimport type { Gantt } from \"./Gantt\";\r\nimport type { DateAxis } from \"../xy/axes/DateAxis\";\r\nimport type { GanttCategoryAxis, IGanttCategoryAxisDataItem } from \"./GanttCategoryAxis\";\r\nimport type { GanttCategoryAxisRenderer } from \"./GanttCategoryAxisRenderer\";\r\nimport type { GanttDateAxis } from \"./GanttDateAxis\";\r\nimport type { GanttDateAxisRenderer } from \"./GanttDateAxisRenderer\";\r\n\r\nimport { ColumnSeries, IColumnSeriesPrivate, IColumnSeriesSettings, IColumnSeriesDataItem, IColumnSeriesAxisRange } from \"../xy/series/ColumnSeries\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Circle, color, DataItem, Graphics, IPoint, ISpritePointerEvent, Line, Link, ListTemplate, percent, Percent, Rectangle, RoundedRectangle, Template, Triangle } from \"../../..\";\r\n\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\nimport * as $math from \"../../core/util/Math\";\r\nimport * as $time from \"../../core/util/Time\";\r\nimport * as $object from \"../../core/util/Object\";\r\nimport * as $type from \"../../core/util/Type\";\r\n\r\nexport interface IGanttSeriesDataItem extends IColumnSeriesDataItem {\r\n\r\n\t/**\r\n\t * [[Container]] that holds all the elements of the series item, except the column graphics itslef.\r\n\t */\r\n\tcontainer?: Container\r\n\r\n\t/**\r\n\t * A [[Container]] that is masked and holds progress rectangle and progress grip.\t\r\n\t */\r\n\tmaskedContainer?: Container;\r\n\r\n\t/**\r\n\t * A [[RoundedRectangle]] that is used to mask the progress rectangle.\r\n\t */\r\n\tmask?: RoundedRectangle;\r\n\r\n\t/**\r\n\t * A [[Circle]] used as a bullet shown at the start of the task bar.\r\n\t */\r\n\tstartBullet?: Circle;\r\n\r\n\t/**\r\n\t * A [[Circle]] used as a bullet shown at the end of the task bar.\r\n\t */\r\n\tendBullet?: Circle;\r\n\r\n\t/**\r\n\t * A [[Rectangle]] filled with line pattern which is used to resize task bar.\r\n\t */\r\n\tstartGrip?: Rectangle;\r\n\r\n\t/**\r\n\t * A [[Rectangle]] filled with line pattern which is used to resize task bar.\r\n\t */\r\n\tendGrip?: Rectangle;\r\n\r\n\t/**\r\n\t * A [[Rectangle]] that is used to show progress of the task. It actually\r\n\t * shows the remaining part of the task and is filled with diagonal line\r\n\t * pattern.\r\n\t */\r\n\tprogressRectangle?: Rectangle;\r\n\r\n\t/**\r\n\t * A [[RoundedRectangle]] rotated by 45 degrees and is shown instead of a\r\n\t * column when the task has zero duration.\r\n\t */\r\n\tzeroRectangle?: RoundedRectangle;\r\n\r\n\t/**\r\n\t * A [[Triangle]] that is used to resize progress rectangle.\r\n\t */\r\n\tprogressGrip?: Triangle;\r\n\r\n\t/**\r\n\t * A value that holds the progress value of the task.\r\n\t */\r\n\tprogress?: number;\r\n\r\n\t/**\r\n\t * A value that holds previous progress value of the task, used when\r\n\t * toggling progress using progress pie next to the y axis label.\r\n\t */\r\n\tprevProgress?: number;\r\n\r\n\t/**\r\n\t * Duration of the task, in units of the x axis.\r\n\t */\r\n\tduration?: number;\r\n\r\n\t/**\r\n\t * Array of IDs of tasks this task is linked to.\r\n\t */\r\n\tlinkTo?: Array<string>;\r\n\r\n\t/**\r\n\t * Refferences to `Link` objects that are used to visually connect tasks.\r\n\t */\r\n\tlinks?: { [index: string]: Link };\r\n\r\n\t/**\r\n\t * A reference to a corresponding category axis data item.\r\n\t */\r\n\tcategoryAxisDataItem?: DataItem<IGanttCategoryAxisDataItem>;\r\n\r\n\t/**\r\n\t * Array of children data items.\r\n\t */\r\n\tchildren?: Array<DataItem<IGanttSeriesDataItem>>;\r\n\r\n\t/**\r\n\t * A reference to a parent data item, if any.\r\n\t */\r\n\tparent?: DataItem<IGanttSeriesDataItem>;\r\n\r\n\t/**\r\n\t * Category name.\r\n\t */\r\n\tname?: string;\r\n\r\n}\r\n\r\nexport interface IGanttSeriesSettings extends IColumnSeriesSettings {\r\n\r\n\t/**\r\n\t * A field in data that holds progress of the task.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/gantt/#Series_data} for more info\r\n\t * @default \"progress\"\r\n\t */\r\n\tprogressField?: string;\r\n\r\n\t/**\r\n\t * A field in data that holds duration of the task.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/gantt/#Series_data} for more info\r\n\t * @default \"duration\"\r\n\t */\r\n\tdurationField?: string;\r\n\r\n\t/**\r\n\t * A field in data that holds and ID of the task it is linked to.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/gantt/#Series_data} for more info\r\n\t * @default \"linkTo\"\r\n\t */\r\n\tlinkToField?: string;\r\n\r\n\t/**\r\n\t * A distance in pixels that link should be protracted from the edge of the\r\n\t * task bars.\r\n\t *\r\n\t * @default 25\r\n\t */\r\n\tlinkHorizontalOffset?: number;\r\n\r\n\t/**\r\n\t * When dragging/resizing a column, how many units should it snap to.\r\n\t * @default 1\r\n\t */\r\n\tsnapCount?: number;\r\n\r\n\t/**\r\n\t * A reference to the y-axis of the Gantt chart.\r\n\t */\r\n\tyAxis: GanttCategoryAxis<GanttCategoryAxisRenderer>;\r\n\r\n\t/**\r\n\t * A reference to the x-axis of the Gantt chart.\r\n\t */\r\n\txAxis: GanttDateAxis<GanttDateAxisRenderer>;\r\n\r\n}\r\n\r\nexport interface IGanttSeriesPrivate extends IColumnSeriesPrivate {\r\n}\r\n\r\nexport interface IGanttSeriesAxisRange extends IColumnSeriesAxisRange {\r\n}\r\n\r\n/**\r\n * A series used in [[Gantt]] chart to display tasks and their progress.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/gantt/#Gantt_series} for more info\r\n * @important\r\n * @since 5.14.0\r\n */\r\nexport class GanttSeries extends ColumnSeries {\r\n\r\n\tdeclare public _settings: IGanttSeriesSettings;\r\n\tdeclare public _privateSettings: IGanttSeriesPrivate;\r\n\tdeclare public _dataItemSettings: IGanttSeriesDataItem;\r\n\tdeclare public _axisRangeType: IGanttSeriesAxisRange;\r\n\r\n\tpublic static className: string = \"GanttSeries\";\r\n\tpublic static classNames: Array<string> = ColumnSeries.classNames.concat([GanttSeries.className]);\r\n\r\n\tprotected _startBullet?: Circle;\r\n\tprotected _endBullet?: Circle;\r\n\r\n\t/**\r\n\t * A reference to the parent [[Gantt]] chart.\r\n\t */\r\n\tpublic gantt!: Gantt;\r\n\r\n\tprotected _columnDragStartX?: number;\r\n\tprotected _columnDragStartY?: number;\r\n\r\n\tprotected _hoveredDataItem?: DataItem<IGanttSeriesDataItem>;\r\n\r\n\tprotected _xPan?: boolean = false;\r\n\tprotected _yPan?: boolean = false;\r\n\r\n\r\n\t/**\r\n\t * A container that holds all the links between tasks.\r\n\t */\r\n\tpublic linksContainer: Container = this.children.push(Container.new(this._root, {}));\r\n\r\n\t/**\r\n\t * A line which is shown while creating a connector between two tasks.\r\n\t */\r\n\tpublic connectorLine: Line = this.children.push(Line.new(this._root, {\r\n\t\tthemeTags: [\"connectorline\"],\r\n\t\tvisible: false,\r\n\t\tforceInactive: true\r\n\t}));\r\n\r\n\t/**\r\n\t * A triangle that is shown at the end of the connector line, while creating\r\n\t * a connector.\r\n\t */\r\n\tpublic connectorArrow: Triangle = this.children.push(Triangle.new(this._root, {\r\n\t\tthemeTags: [\"connectorarrow\"],\r\n\t\tvisible: false,\r\n\t\tforceInactive: true\r\n\t}));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Link]] that connect tasks.\r\n\t */\r\n\tpublic readonly links: ListTemplate<Link> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Link._new(this._root, {\r\n\t\t\tthemeTags: $utils.mergeTags(this.containers.template.get(\"themeTags\", []), [\"link\"])\r\n\t\t}, [this.links.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Container]]s that hold all the elements of series\r\n\t * items, such as grips, bullets, etc.\r\n\t */\r\n\tpublic readonly containers: ListTemplate<Container> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Container._new(this._root, {\r\n\t\t\tposition: \"absolute\",\r\n\t\t\tthemeTagsSelf: [\"columncontainer\"]\r\n\t\t}, [this.containers.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Container]]s that are used to mask elements, such\r\n\t * as progress rectangles.\r\n\t */\r\n\tpublic readonly maskedContainers: ListTemplate<Container> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Container._new(this._root, {\r\n\t\t\tposition: \"absolute\",\r\n\t\t\tthemeTagsSelf: [\"maskedcontainer\"]\r\n\t\t}, [this.maskedContainers.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Circle]]s that are used as start bullets.\r\n\t */\r\n\tpublic readonly startBullets: ListTemplate<Circle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Circle._new(this._root, {\r\n\t\t\tx: - 1000,\r\n\t\t\tthemeTagsSelf: [\"connectorbullet\", \"start\"],\r\n\t\t}, [this.startBullets.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Circle]]s that are used as end bullets.\r\n\t */\r\n\tpublic readonly endBullets: ListTemplate<Circle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Circle._new(this._root, {\r\n\t\t\tx: - 1000,\r\n\t\t\tthemeTagsSelf: [\"connectorbullet\", \"end\"]\r\n\t\t}, [this.endBullets.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Rectangle]]s that are used to resize task bars.\r\n\t */\r\n\tpublic readonly startGrips: ListTemplate<Rectangle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Rectangle._new(this._root, {\r\n\t\t\tthemeTagsSelf: [\"resizegrip\", \"start\"]\r\n\t\t}, [this.startGrips.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Rectangle]]s that are used to resize task bars.\r\n\t */\r\n\tpublic readonly endGrips: ListTemplate<Rectangle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Rectangle._new(this._root, {\r\n\t\t\tthemeTagsSelf: [\"resizegrip\", \"end\"]\r\n\t\t}, [this.endGrips.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[RoundedRectangle]]s that are used to show\r\n\t * zero-duration tasks.\r\n\t */\r\n\tpublic readonly zeroRectangles: ListTemplate<RoundedRectangle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => RoundedRectangle._new(this._root, {\r\n\t\t\tthemeTagsSelf: [\"zerorectangle\"],\r\n\t\t}, [this.zeroRectangles.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Rectangle]]s that are used to show progress of the\r\n\t * task. It is actually a remaining part of the task and is filled with\r\n\t * diagonal line pattern.\r\n\t */\r\n\tpublic readonly progressRectangles: ListTemplate<Rectangle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Rectangle._new(this._root, {\r\n\t\t\tthemeTagsSelf: [\"progressrectangle\"]\r\n\t\t}, [this.progressRectangles.template])\r\n\t));\r\n\r\n\t/**\r\n\t * [[ListTemplate]] of [[Triangle]]s that are used to resize progress\r\n\t * rectangles.\r\n\t */\r\n\tpublic readonly progressGrips: ListTemplate<Triangle> = this.addDisposer(new ListTemplate(\r\n\t\tTemplate.new({}),\r\n\t\t() => Triangle._new(this._root, {\r\n\t\t\tthemeTagsSelf: [\"progressgrip\"]\r\n\t\t}, [this.progressGrips.template])\r\n\t));\r\n\r\n\tprotected _afterNew(): void {\r\n\t\tthis.fields.push(\"linkTo\", \"categoryId\");\r\n\t\tthis.valueFields.push(\"progress\", \"duration\");\r\n\t\tthis.set(\"exactLocationX\", true);\r\n\r\n\t\tsuper._afterNew();\r\n\r\n\t\tthis._disposers.push(this.events.on(\"globalpointermove\", (event) => {\r\n\t\t\tif (this.connectorLine.isVisible()) {\r\n\t\t\t\tconst point = this.toLocal(event.point);\r\n\t\t\t\tthis._updateConnector(point);\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis.events.on(\"globalpointerup\", (_event) => {\r\n\t\t\tif (this.connectorLine.isVisible()) {\r\n\t\t\t\tthis._endConnector();\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.columns.template.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._columnDragStartX = e.target.x();\r\n\t\t\tthis._columnDragStartY = e.target.y();\r\n\t\t})\r\n\r\n\t\tthis.columns.template.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._handleColumnDragged(e);\r\n\t\t})\r\n\r\n\t\tthis.columns.template.events.on(\"dragstop\", (e) => {\r\n\t\t\tconst xAxis = this.get(\"xAxis\") as ValueAxis<AxisRendererX>;\r\n\t\t\tconst dataItem = e.target.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t\tconst openValueX = dataItem.get(\"openValueX\", 0);\r\n\t\t\tlet newOpenValueX = xAxis.positionToValue(xAxis.coordinateToPosition(e.target.x()));\r\n\r\n\t\t\tconst valueX = dataItem.get(\"valueX\", 0);\r\n\r\n\t\t\tlet diff = newOpenValueX - openValueX;\r\n\t\t\tdataItem.set(\"openValueX\", newOpenValueX);\r\n\t\t\tdataItem.set(\"valueX\", valueX + diff);\r\n\r\n\t\t\tdataItem.set(\"openValueXWorking\", newOpenValueX);\r\n\t\t\tdataItem.set(\"valueXWorking\", valueX + diff);\r\n\r\n\t\t\tthis._fixValues(dataItem, \"duration\");\r\n\r\n\t\t\tthis._moveChildValues(dataItem, diff);\r\n\t\t})\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected roundValue(value: number, invertThreshold?: boolean): number {\r\n\t\tlet threshold = this.gantt.get(\"snapThreshold\", 0.8);\r\n\t\tif (invertThreshold) {\r\n\t\t\tthreshold = 1 - threshold;\r\n\t\t}\r\n\t\tconst snapCount = this.get(\"snapCount\", 1);\r\n\t\tconst xAxis = this.get(\"xAxis\") as DateAxis<AxisRendererX>;\r\n\t\tconst baseInterval = xAxis.get(\"baseInterval\");\r\n\t\treturn $time.roun(value + this.getUnitDuration() * threshold, baseInterval.timeUnit, baseInterval.count * snapCount, this._root);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic makeColumn(\r\n\t\tdataItem: DataItem<this[\"_dataItemSettings\"]>,\r\n\t\tlistTemplate: ListTemplate<RoundedRectangle>\r\n\t): RoundedRectangle {\r\n\t\t// Create the main column\r\n\t\tconst column = super.makeColumn(dataItem, listTemplate);\r\n\t\tconst yAxis = this.get(\"yAxis\") as GanttCategoryAxis<GanttCategoryAxisRenderer>;\r\n\t\tcolumn.events.on(\"click\", () => {\r\n\t\t\tyAxis.selectDataItem(dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>);\r\n\t\t})\r\n\r\n\t\t// --- Container setup ---\r\n\t\tconst container = this.mainContainer.children.push(this.containers.make());\r\n\t\tcontainer._setDataItem(dataItem);\r\n\t\tthis.containers.push(container);\r\n\r\n\t\tconst zeroRectangle = this.zeroRectangles.make();\r\n\t\tdataItem.set(\"zeroRectangle\", zeroRectangle);\r\n\t\tthis.zeroRectangles.push(zeroRectangle);\r\n\t\tcontainer.children.unshift(zeroRectangle);\r\n\t\tif (dataItem.get(\"duration\", 0) > 0) {\r\n\t\t\tzeroRectangle.hide(0);\r\n\t\t}\r\n\r\n\t\tlet zy = 0;\r\n\t\tzeroRectangle.events.on(\"pointerdown\", (e) => {\r\n\t\t\tzy = e.target.y();\r\n\t\t\tcolumn.dragStart(e);\r\n\t\t})\r\n\r\n\t\tzeroRectangle.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._handleColumnDragged(e);\r\n\t\t\te.target.setAll({\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: zy\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tzeroRectangle.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._handleColumnDragged(e);\r\n\r\n\t\t\te.target.setAll({\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: zy\r\n\t\t\t});\r\n\t\t})\r\n\r\n\t\tzeroRectangle.events.on(\"dragstop\", (e) => {\r\n\t\t\tcolumn.dragStop(e);\r\n\t\t})\r\n\r\n\t\tzeroRectangle.events.on(\"pointerover\", (e) => {\r\n\t\t\tthis._handleColumnHover(e);\r\n\t\t})\r\n\r\n\t\tzeroRectangle.adapters.add(\"fillPattern\", (fillPattern, target) => {\r\n\t\t\tconst dataItem = target.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\t\t\tif (dataItem.get(\"progress\", 0) < 1) {\r\n\t\t\t\treturn progressRectangle.get(\"fillPattern\");\r\n\t\t\t}\r\n\r\n\t\t\treturn fillPattern;\r\n\t\t});\r\n\r\n\t\tconst maskedContainer = container.children.push(this.maskedContainers.make());\r\n\t\tdataItem.setRaw(\"maskedContainer\", maskedContainer);\r\n\r\n\t\tconst mask = container.children.push(RoundedRectangle.new(this._root, {\r\n\t\t\tfill: color(0xffffff),\r\n\t\t\tforceInactive: true,\r\n\t\t\tfillOpacity: 0\r\n\t\t}));\r\n\t\tdataItem.setRaw(\"mask\", mask);\r\n\t\tmaskedContainer.set(\"mask\", mask);\r\n\r\n\t\t// --- Progress elements ---\r\n\t\tconst progressRectangle = maskedContainer.children.push(this.progressRectangles.make());\r\n\t\tthis.progressRectangles.push(progressRectangle);\r\n\r\n\t\tconst progressGrip = this.progressGrips.make();\r\n\t\tthis.progressGrips.push(progressGrip);\r\n\t\tmaskedContainer.children.push(progressGrip);\r\n\r\n\t\tprogressGrip.events.on(\"dragged\", () => {\r\n\t\t\tlet x = progressGrip.x();\r\n\t\t\tx = $math.fitToRange(x, 0, column.getPrivate(\"width\", 0));\r\n\t\t\tprogressGrip.setAll({ x: x, y: column.getPrivate(\"height\", 0) });\r\n\t\t\tdataItem.set(\"progress\", progressGrip.x() / column.getPrivate(\"width\", 0));\r\n\t\t});\r\n\r\n\t\t// --- Grips (start/end) ---\r\n\r\n\t\tconst startGrip = this.startGrips.make();\r\n\t\tthis.startGrips.push(startGrip);\r\n\t\tcontainer.children.push(startGrip);\r\n\r\n\t\tconst endGrip = this.endGrips.make();\r\n\t\tthis.endGrips.push(endGrip);\r\n\t\tcontainer.children.push(endGrip);\r\n\r\n\t\tdataItem.setRaw(\"startGrip\", startGrip);\r\n\t\tdataItem.setRaw(\"endGrip\", endGrip);\r\n\r\n\t\t// --- Axis reference ---\r\n\t\tconst xAxis = this.get(\"xAxis\") as ValueAxis<AxisRendererX>;\r\n\r\n\t\t// --- Grip events ---\r\n\t\tlet startX = 0;\r\n\t\tstartGrip.events.on(\"dragstart\", () => {\r\n\t\t\tstartX = column.x();\r\n\t\t\tcolumn.show();\r\n\t\t\tzeroRectangle.hide();\r\n\t\t\tmaskedContainer.show();\r\n\t\t});\r\n\t\tstartGrip.events.on(\"pointerover\", () => {\r\n\t\t\tcolumn.states.applyAnimate(\"hover\");\r\n\t\t});\r\n\t\tstartGrip.events.on(\"pointerout\", () => {\r\n\t\t\tif (column.isVisible()) {\r\n\t\t\t\tcolumn.states.applyAnimate(\"default\");\r\n\t\t\t}\r\n\t\t});\r\n\t\tstartGrip.events.on(\"dragged\", () => {\r\n\t\t\tstartGrip.set(\"y\", 0);\r\n\t\t\tconst x = startGrip.x() + startX;\r\n\t\t\tlet openValueX = xAxis.positionToValue(xAxis.coordinateToPosition(x));\r\n\t\t\tlet minStart = this._findMinStart(dataItem);\r\n\r\n\t\t\topenValueX = Math.max(openValueX, minStart);\r\n\t\t\topenValueX = Math.min(openValueX, dataItem.get(\"valueX\", openValueX));\r\n\r\n\t\t\tdataItem.set(\"openValueX\", openValueX);\r\n\r\n\t\t\tstartGrip.set(\"x\", 0);\r\n\t\t});\r\n\r\n\t\tstartGrip.events.on(\"dragstop\", () => {\r\n\t\t\tthis._fixValues(dataItem, \"end\");\r\n\t\t\tthis.markDirtyValues();\r\n\t\t});\r\n\r\n\t\tlet endX = 0;\r\n\t\tendGrip.events.on(\"dragstart\", () => {\r\n\t\t\tendX = column.x();\r\n\t\t\tcolumn.show();\r\n\t\t\tzeroRectangle.hide();\r\n\t\t\tmaskedContainer.show();\r\n\t\t});\r\n\t\tendGrip.events.on(\"pointerover\", () => {\r\n\t\t\tcolumn.states.applyAnimate(\"hover\");\r\n\t\t});\r\n\t\tendGrip.events.on(\"pointerout\", () => {\r\n\t\t\tif (column.isVisible()) {\r\n\t\t\t\tcolumn.states.applyAnimate(\"default\");\r\n\t\t\t}\r\n\t\t});\r\n\t\tendGrip.events.on(\"dragged\", () => {\r\n\t\t\tendGrip.set(\"y\", 0);\r\n\t\t\tconst x = endGrip.x() + endX;\r\n\t\t\tlet valueX = xAxis.positionToValue(xAxis.coordinateToPosition(x));\r\n\t\t\tvalueX = Math.max(valueX, dataItem.get(\"openValueX\", 0));\r\n\t\t\tdataItem.set(\"valueX\", valueX);\r\n\t\t\tdataItem.set(\"valueXWorking\", valueX);\r\n\t\t\tconst column = dataItem.get(\"graphics\") as RoundedRectangle;\r\n\t\t\tif (column) {\r\n\t\t\t\tendGrip.set(\"x\", column.width());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tendGrip.events.on(\"dragstop\", () => {\r\n\t\t\tthis._fixValues(dataItem, \"start\");\r\n\t\t\tthis.markDirtyValues();\r\n\t\t});\r\n\r\n\t\t// --- Bullets (start/end) ---\r\n\t\tconst startBullet = this.startBullets.make();\r\n\r\n\t\tstartBullet.events.on(\"pointerout\", () => {\r\n\t\t\tif (column.isVisible()) {\r\n\t\t\t\tcolumn.states.applyAnimate(\"default\");\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.startBullets.push(startBullet);\r\n\t\tcontainer.children.push(startBullet);\r\n\r\n\t\tconst endBullet = this.endBullets.make();\r\n\t\tthis.endBullets.push(endBullet);\r\n\t\tcontainer.children.push(endBullet);\r\n\r\n\t\t// --- Bullet events (connector logic) ---\r\n\t\tconst bulletPointerDown = (bullet: Circle) => {\r\n\t\t\tthis._startConnector(bullet);\r\n\t\t};\r\n\r\n\t\tstartBullet.events.on(\"pointerdown\", () => bulletPointerDown(startBullet));\r\n\t\tendBullet.events.on(\"pointerdown\", () => bulletPointerDown(endBullet));\r\n\r\n\t\tcolumn.events.on(\"pointerover\", (e) => {\r\n\t\t\tthis._handleColumnHover(e);\r\n\t\t})\r\n\r\n\t\tcolumn.events.on(\"pointerout\", () => {\r\n\t\t\tthis._hoveredDataItem = undefined;\r\n\t\t\tif (this.connectorLine.isVisible()) {\r\n\t\t\t\tstartBullet.hide();\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\t// --- Data item references ---\r\n\t\tdataItem.setRaw(\"container\", container);\r\n\t\tdataItem.setRaw(\"startBullet\", startBullet);\r\n\t\tdataItem.setRaw(\"endBullet\", endBullet);\r\n\t\tdataItem.setRaw(\"progressRectangle\", progressRectangle);\r\n\t\tdataItem.setRaw(\"progressGrip\", progressGrip);\r\n\r\n\t\t// --- Sync container with column position ---\r\n\t\tconst syncProp = (prop: any, target: any) => {\r\n\t\t\tcolumn.on(prop, (val) => {\r\n\t\t\t\ttarget.set(prop, val);\r\n\t\t\t});\r\n\t\t};\r\n\t\tsyncProp(\"x\", container);\r\n\t\tsyncProp(\"y\", container);\r\n\t\tsyncProp(\"dx\", container);\r\n\t\tsyncProp(\"dy\", container);\r\n\t\tsyncProp(\"cornerRadiusBL\", mask);\r\n\t\tsyncProp(\"cornerRadiusBR\", mask);\r\n\t\tsyncProp(\"cornerRadiusTL\", mask);\r\n\t\tsyncProp(\"cornerRadiusTR\", mask);\r\n\r\n\t\tif (this.isCollapsed(dataItem)) {\r\n\t\t\tdataItem.hide(0);\r\n\t\t\tcolumn.hide(0);\r\n\t\t\tmaskedContainer.hide(0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (dataItem.get(\"duration\", 0) > 0) {\r\n\t\t\t\tcolumn.appear();\r\n\t\t\t\tmaskedContainer.appear();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tprotected _handleColumnDragged(e: ISpritePointerEvent) {\r\n\t\tconst column = e.target as RoundedRectangle;\r\n\t\tconst dataItem = column.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t// Maintain vertical position to prevent vertical dragging\r\n\t\tif (this._columnDragStartY !== undefined) {\r\n\t\t\tcolumn.set(\"y\", this._columnDragStartY);\r\n\t\t}\r\n\r\n\t\t// Calculate horizontal drag offset and apply to child elements\r\n\t\tif (dataItem && this._columnDragStartX !== undefined) {\r\n\t\t\tconst dragOffset = column.x() - this._columnDragStartX;\r\n\t\t\tthis._dragChildValues(dataItem, dragOffset);\r\n\r\n\t\t\tthis._updateLinks();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _handleColumnHover(e: ISpritePointerEvent) {\r\n\t\t// Only process hover if we're currently creating a connector\r\n\t\tif (!this.connectorLine.isVisible()) return;\r\n\r\n\t\tconst column = e.target as RoundedRectangle;\r\n\t\tconst dataItem = column.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t// Skip if no valid data item\r\n\t\tif (!dataItem) return;\r\n\r\n\t\tconst startBullet = dataItem.get(\"startBullet\");\r\n\t\tconst sourceDataItem = this._startBullet?.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t// Show the start bullet only if:\r\n\t\t// 1. We have a valid start bullet\r\n\t\t// 2. We have a source data item for the connection\r\n\t\t// 3. Both items are at the same depth level\r\n\t\t// 4. We're not trying to connect to the same item\r\n\t\tif (startBullet &&\r\n\t\t\tsourceDataItem &&\r\n\t\t\tthis.getDepth(sourceDataItem) === this.getDepth(dataItem) &&\r\n\t\t\tsourceDataItem !== dataItem) {\r\n\r\n\t\t\tstartBullet.show();\r\n\t\t\tthis._hoveredDataItem = dataItem;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the task is collapsed.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @return Collapsed?\r\n\t */\r\n\tpublic isCollapsed(dataItem: DataItem<IGanttSeriesDataItem>): boolean {\r\n\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\t\tif (categoryAxisDataItem) {\r\n\t\t\tconst parent = categoryAxisDataItem.get(\"parent\");\r\n\t\t\tif (parent) {\r\n\t\t\t\tif (parent.get(\"collapsed\")) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\treturn this.isCollapsed(parent);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the series, recalculating values and updating children.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _updateChildren() {\r\n\r\n\t\tif (this._valuesDirty) {\r\n\r\n\t\t\tthis.setPrivateRaw(\"minX\", undefined);\r\n\t\t\tthis.setPrivateRaw(\"maxX\", undefined);\r\n\r\n\t\t\tconst yAxis = this.get(\"yAxis\") as GanttCategoryAxis<GanttCategoryAxisRenderer>;\r\n\t\t\tconst yRenderer = yAxis.get(\"renderer\") as GanttCategoryAxisRenderer;\r\n\r\n\t\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\t\tconst dataContext = dataItem.dataContext as any;\r\n\r\n\t\t\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\t\t\t\tif (categoryAxisDataItem) {\r\n\r\n\t\t\t\t\tconst children = dataItem.get(\"children\");\r\n\t\t\t\t\tif (children && children.length > 0) {\r\n\t\t\t\t\t\tdataItem.set(\"openValueX\", undefined);\r\n\t\t\t\t\t\tdataItem.set(\"valueX\", undefined);\r\n\r\n\t\t\t\t\t\tdataItem.set(\"openValueXWorking\", undefined);\r\n\t\t\t\t\t\tdataItem.set(\"valueXWorking\", undefined);\r\n\r\n\r\n\t\t\t\t\t\tdelete (dataContext[this.get(\"openValueXField\")]);\r\n\t\t\t\t\t\tdelete (dataContext[this.get(\"durationField\")]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tdataContext[this.get(\"openValueXField\")] = dataItem.get(\"openValueX\");\r\n\t\t\t\t\t\tdataContext[this.get(\"durationField\")] = dataItem.get(\"duration\");\r\n\t\t\t\t\t\tdataContext[this.get(\"progressField\")] = dataItem.get(\"progress\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataContext[this.get(\"linkToField\")] = dataItem.get(\"linkTo\");\r\n\r\n\t\t\t\t\tconst category = dataItem.get(\"categoryY\");\r\n\t\t\t\t\tconst categoryYField = this.get(\"categoryYField\", \"category\");\r\n\r\n\t\t\t\t\tdataContext[categoryYField] = category;\r\n\r\n\t\t\t\t\tconst categoryDataContext = categoryAxisDataItem.dataContext as any;\r\n\t\t\t\t\tconst categoryField = yAxis.get(\"categoryField\", \"category\");\r\n\t\t\t\t\tconst parent = categoryAxisDataItem.get(\"parent\");\r\n\r\n\t\t\t\t\tcategoryDataContext[categoryField] = category;\r\n\t\t\t\t\tif (parent) {\r\n\t\t\t\t\t\tcategoryDataContext[yAxis.get(\"parentIdField\", \"parentId\")] = parent.get(\"id\");\r\n\t\t\t\t\t\tcategoryDataContext[yAxis.get(\"collapsedField\", \"collapsed\")] = categoryAxisDataItem.get(\"collapsed\", false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\t\tthis._adjustParentValues(dataItem);\r\n\r\n\t\t\t\tconst children = dataItem.get(\"children\");\r\n\t\t\t\tconst startGrip = dataItem.get(\"startGrip\");\r\n\t\t\t\tconst endGrip = dataItem.get(\"endGrip\");\r\n\t\t\t\tconst progressGrip = dataItem.get(\"progressGrip\");\r\n\r\n\t\t\t\tlet visible = true;\r\n\t\t\t\tif (children && children.length > 0) {\r\n\t\t\t\t\tvisible = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (startGrip) {\r\n\t\t\t\t\tstartGrip.setPrivate(\"visible\", visible);\r\n\t\t\t\t}\r\n\t\t\t\tif (endGrip) {\r\n\t\t\t\t\tendGrip.set(\"visible\", visible);\r\n\t\t\t\t}\r\n\t\t\t\tif (progressGrip) {\r\n\t\t\t\t\tprogressGrip.set(\"visible\", visible);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\r\n\t\t\t\tlet index = 0;\r\n\t\t\t\tif (categoryAxisDataItem) {\r\n\t\t\t\t\tconst durationStepper = categoryAxisDataItem.get(\"durationStepper\");\r\n\t\t\t\t\tif (durationStepper) {\r\n\t\t\t\t\t\tdurationStepper.set(\"disabled\", !visible);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tindex = categoryAxisDataItem.get(\"index\", 0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst duration = dataItem.get(\"duration\", 0);\r\n\r\n\t\t\t\tlet zeroRectangle = dataItem.get(\"zeroRectangle\");\r\n\t\t\t\tconst column = dataItem.get(\"graphics\") as RoundedRectangle;\r\n\t\t\t\tconst maskedContainer = dataItem.get(\"maskedContainer\");\r\n\t\t\t\tconst fill = categoryAxisDataItem.get(\"customColor\", categoryAxisDataItem.get(\"color\"));\r\n\r\n\t\t\t\tif (zeroRectangle) {\r\n\t\t\t\t\tlet height = 20;\r\n\r\n\t\t\t\t\tlet y0 = yAxis.indexToPosition(index, 0);\r\n\t\t\t\t\tlet y1 = yAxis.indexToPosition(index, 1);\r\n\r\n\t\t\t\t\ty0 = yRenderer.positionToCoordinate(y0);\r\n\t\t\t\t\ty1 = yRenderer.positionToCoordinate(y1);\r\n\r\n\t\t\t\t\tconst columnHeight = column.get(\"height\", 0);\r\n\t\t\t\t\tlet r = 1;\r\n\t\t\t\t\tif (columnHeight instanceof Percent) {\r\n\t\t\t\t\t\tr *= columnHeight.value * $math.cos(45);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theight = (y1 - y0) * r;\r\n\r\n\r\n\r\n\t\t\t\t\tconst maxHeight = column.get(\"maxHeight\", Infinity) * $math.cos(45);\r\n\t\t\t\t\tconst minHeight = column.get(\"minHeight\", 0) * $math.cos(45);\r\n\t\t\t\t\theight = $math.fitToRange(height, minHeight, maxHeight);\r\n\r\n\t\t\t\t\tzeroRectangle.setPrivate(\"height\", height);\r\n\t\t\t\t\tzeroRectangle.setPrivate(\"width\", height);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (column && maskedContainer && !this.isCollapsed(dataItem)) {\r\n\t\t\t\t\tif (duration === 0 && zeroRectangle) {\r\n\t\t\t\t\t\tif (!column.isHidden() && !column.isHiding()) {\r\n\t\t\t\t\t\t\tzeroRectangle.setAll({\r\n\t\t\t\t\t\t\t\tfill: fill,\r\n\t\t\t\t\t\t\t\tstroke: fill\r\n\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\tif (!startGrip?.isDragging() && !endGrip?.isDragging()) {\r\n\t\t\t\t\t\t\t\tcolumn.hide();\r\n\t\t\t\t\t\t\t\tmaskedContainer.hide();\r\n\t\t\t\t\t\t\t\tzeroRectangle.show();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif (zeroRectangle) {\r\n\t\t\t\t\t\t\tzeroRectangle.hide();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tcolumn.show();\r\n\t\t\t\t\t\tmaskedContainer.show();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\t\tthis._adjustLinkValues(dataItem);\r\n\t\t\t});\r\n\r\n\t\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\t\tthis._adjustParentValues(dataItem);\r\n\r\n\t\t\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\t\t\t\tif (categoryAxisDataItem) {\r\n\t\t\t\t\tcategoryAxisDataItem.set(\"duration\", dataItem.get(\"duration\"));\r\n\t\t\t\t\tcategoryAxisDataItem.set(\"progress\", dataItem.get(\"progress\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// dispatch event\r\n\t\t\tconst eventType = \"valueschanged\";\r\n\t\t\tif (this.events.isEnabled(eventType)) {\r\n\t\t\t\tthis.events.dispatch(eventType, {\r\n\t\t\t\t\ttype: eventType, target: this\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this._columnsUpdated) {\r\n\t\t\tthis._updateLinks();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _getParentOpen(dataItem: DataItem<IGanttSeriesDataItem>): number {\r\n\t\tconst parent = dataItem.get(\"parent\");\r\n\t\tif (parent) {\r\n\t\t\treturn this._getParentOpen(parent);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn dataItem.get(\"openValueX\", -Infinity);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _adjustLinkValues(dataItem: DataItem<IGanttSeriesDataItem>) {\r\n\t\tconst linkTo = dataItem.get(\"linkTo\");\r\n\t\tif (linkTo) {\r\n\t\t\tconst valueX = dataItem.get(\"valueX\", 0);\r\n\t\t\t$array.each(linkTo, (id) => {\r\n\t\t\t\tconst linkDataItem = this.getDataItemById(id);\r\n\r\n\t\t\t\tif (linkDataItem && linkDataItem !== dataItem) {\r\n\t\t\t\t\tconst linkOpenValueX = linkDataItem.get(\"openValueX\", 0);\r\n\t\t\t\t\tif (linkOpenValueX !== undefined && linkOpenValueX < valueX) {\r\n\t\t\t\t\t\tlinkDataItem.set(\"openValueX\", valueX);\r\n\t\t\t\t\t\tthis._fixValues(linkDataItem, \"duration\");\r\n\t\t\t\t\t\tthis._adjustChildValues(linkDataItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _adjustChildValues(dataItem: DataItem<IGanttSeriesDataItem>) {\r\n\t\tconst children = dataItem.get(\"children\", []);\r\n\t\tif (children && children.length > 0) {\r\n\t\t\tlet openValueX = dataItem.get(\"openValueX\", 0);\r\n\r\n\t\t\t$array.each(children, (child) => {\r\n\t\t\t\tconst childOpenValueX = child.get(\"openValueX\", 0);\r\n\t\t\t\tif (childOpenValueX === undefined || childOpenValueX < openValueX) {\r\n\t\t\t\t\tchild.set(\"openValueX\", openValueX);\r\n\t\t\t\t\tthis._fixValues(child, \"duration\");\r\n\t\t\t\t}\r\n\t\t\t\tthis._adjustChildValues(child);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _dragChildValues(dataItem: DataItem<IGanttSeriesDataItem>, dx: number) {\r\n\t\tconst children = dataItem.get(\"children\");\r\n\t\tif (children && children.length > 0) {\r\n\t\t\t$array.each(children, (child) => {\r\n\t\t\t\tconst column = child.get(\"graphics\") as RoundedRectangle;\r\n\t\t\t\tif (column) {\r\n\t\t\t\t\tcolumn.set(\"dx\", dx);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._dragChildValues(child, dx);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _moveChildValues(dataItem: DataItem<IGanttSeriesDataItem>, diff: number) {\r\n\t\tconst children = dataItem.get(\"children\");\r\n\t\tif (children && children.length > 0) {\r\n\t\t\t$array.each(children, (child) => {\r\n\t\t\t\tchild.set(\"openValueX\", child.get(\"openValueX\", 0) + diff);\r\n\t\t\t\tchild.set(\"valueX\", child.get(\"valueX\", 0) + diff);\r\n\r\n\t\t\t\tchild.set(\"openValueXWorking\", child.get(\"openValueX\"));\r\n\t\t\t\tchild.set(\"valueXWorking\", child.get(\"openValueX\"));\r\n\r\n\r\n\t\t\t\tconst column = child.get(\"graphics\") as RoundedRectangle;\r\n\t\t\t\tif (column) {\r\n\t\t\t\t\tcolumn.set(\"dx\", 0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._fixValues(child, \"duration\");\r\n\t\t\t\tthis._moveChildValues(child, diff);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _findMinStart(dataItem: DataItem<IGanttSeriesDataItem>): number {\r\n\t\t// check if item has links from other items\r\n\t\tlet maxValue: number = -Infinity;\r\n\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\tconst linkTo = item.get(\"linkTo\");\r\n\t\t\tif (linkTo) {\r\n\t\t\t\t$array.each(linkTo, (id) => {\r\n\t\t\t\t\tif (id === dataItem.get(\"id\")) {\r\n\t\t\t\t\t\tconst itemValueX = item.get(\"valueX\", 0);\r\n\t\t\t\t\t\tif (itemValueX > maxValue) {\r\n\t\t\t\t\t\t\tmaxValue = itemValueX;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\t// if this is a child, check parent start\r\n\t\tconst parent = dataItem.get(\"parent\");\r\n\t\tif (parent) {\r\n\t\t\tmaxValue = Math.max(maxValue, this._findMinStart(parent));\r\n\t\t}\r\n\r\n\t\treturn maxValue;\r\n\t}\r\n\r\n\tprotected _adjustParentValues(dataItem: DataItem<IGanttSeriesDataItem>) {\r\n\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\");\r\n\t\tif (categoryAxisDataItem) {\r\n\t\t\tconst column = dataItem.get(\"graphics\") as RoundedRectangle;\r\n\t\t\tlet color = categoryAxisDataItem.get(\"customColor\", categoryAxisDataItem.get(\"color\"));\r\n\t\t\tif (column) {\r\n\t\t\t\tcolumn.setAll({\r\n\t\t\t\t\tfill: color,\r\n\t\t\t\t\tstroke: color\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\tconst zeroRectangle = dataItem.get(\"zeroRectangle\");\r\n\t\t\tif (zeroRectangle) {\r\n\t\t\t\tzeroRectangle.setAll({\r\n\t\t\t\t\tfill: color,\r\n\t\t\t\t\tstroke: color,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst children = dataItem.get(\"children\");\r\n\t\t\tif (children && children.length > 0) {\r\n\t\t\t\tlet progress = 0;\r\n\t\t\t\t$array.each(children, (child) => {\r\n\t\t\t\t\tconst childProgress = child.get(\"progress\", 0);\r\n\t\t\t\t\tif (childProgress !== undefined) {\r\n\t\t\t\t\t\tprogress += childProgress;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tprogress /= children.length;\r\n\t\t\t\tdataItem.set(\"progress\", progress);\r\n\t\t\t}\r\n\r\n\t\t\tif (categoryAxisDataItem) {\r\n\t\t\t\tlet valueX = dataItem.get(\"valueX\");\r\n\t\t\t\tlet openValueX = dataItem.get(\"openValueX\");\r\n\r\n\t\t\t\tconst duration = dataItem.get(\"duration\", 0);\r\n\t\t\t\tif (valueX === undefined && openValueX !== undefined) {\r\n\t\t\t\t\topenValueX = this.getOpenValue(openValueX);\r\n\t\t\t\t\tvalueX = this.getEndValue(openValueX, duration);\r\n\r\n\t\t\t\t\tdataItem.setRaw(\"openValueX\", openValueX);\r\n\t\t\t\t\tdataItem.setRaw(\"valueX\", valueX);\r\n\r\n\t\t\t\t\t//dataItem.setRaw(\"openValueXWorking\", openValueX);\r\n\t\t\t\t\t//dataItem.setRaw(\"valueXWorking\", valueX);\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet parent = dataItem.get(\"parent\");\r\n\t\t\t\tif (openValueX !== undefined && valueX !== undefined && parent) {\r\n\t\t\t\t\tconst parentOpenValueX = parent.get(\"openValueX\");\r\n\t\t\t\t\tconst parentValueX = parent.get(\"valueX\");\r\n\r\n\t\t\t\t\tif (parentOpenValueX === undefined || parentOpenValueX > openValueX) {\r\n\t\t\t\t\t\tparent.set(\"openValueX\", openValueX);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (parentValueX === undefined || parentValueX < valueX) {\r\n\t\t\t\t\t\tparent.set(\"valueX\", valueX);\r\n\t\t\t\t\t\tparent.set(\"valueXWorking\", valueX);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tparent.set(\"duration\", this.getDataItemDuration(parent));\r\n\t\t\t\t\tthis._adjustParentValues(parent);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _startConnector(bullet: Circle) {\r\n\t\tthis._startBullet = bullet;\r\n\r\n\t\tthis.connectorLine.show();\r\n\t\tthis.connectorArrow.show();\r\n\r\n\t\tthis._xPan = this.chart?.get(\"panX\");\r\n\t\tthis._yPan = this.chart?.get(\"panY\");\r\n\r\n\t\tthis.chart?.set(\"panX\", false);\r\n\t\tthis.chart?.set(\"panY\", false);\r\n\r\n\t\tconst dataItem = bullet.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t// disable all columns of not the same depth\r\n\t\tconst depth = this.getDepth(dataItem);\r\n\t\tconst itemsToDisable: Array<DataItem<IGanttSeriesDataItem>> = [];\r\n\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\tif (this.getDepth(item) != depth) {\r\n\t\t\t\t$array.move(itemsToDisable, item);\r\n\t\t\t}\r\n\t\t\t// also if already connected, disable\r\n\t\t\tconst links = dataItem.get(\"links\");\r\n\t\t\tif (links && links[item.get(\"id\")!]) {\r\n\t\t\t\t$array.move(itemsToDisable, item);\r\n\t\t\t}\r\n\r\n\t\t})\r\n\r\n\t\t// if this item has parent, disable all items ecept items in the same branch\r\n\t\tconst parent = dataItem.get(\"parent\");\r\n\t\tif (parent) {\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tif (item.get(\"parent\") !== parent) {\r\n\t\t\t\t\t$array.move(itemsToDisable, item);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t// disable all columns of the same depth which are connected to start bullet data item\r\n\t\tconst id = dataItem.get(\"id\")!;\r\n\t\tconst checkIfConnected = (id: string) => {\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tconst links = item.get(\"links\");\r\n\t\t\t\tif (links && links[id]) {\r\n\t\t\t\t\titemsToDisable.push(item);\r\n\t\t\t\t\tcheckIfConnected(item.get(\"id\")!);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t\tcheckIfConnected(id);\r\n\r\n\t\t$array.each(itemsToDisable, (item) => {\r\n\t\t\tconst column = item.get(\"graphics\") as RoundedRectangle;\r\n\t\t\tif (column) {\r\n\t\t\t\tcolumn.states.applyAnimate(\"disabled\");\r\n\t\t\t}\r\n\t\t\tconst container = item.get(\"container\") as Container;\r\n\t\t\tif (container) {\r\n\t\t\t\tcontainer.states.applyAnimate(\"disabled\");\r\n\t\t\t}\r\n\r\n\t\t\tconst zeroRectangle = item.get(\"zeroRectangle\") as RoundedRectangle;\r\n\t\t\tif (zeroRectangle) {\r\n\t\t\t\tzeroRectangle.states.applyAnimate(\"disabled\");\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprotected _updateConnector(point: IPoint) {\r\n\r\n\t\tlet startPoint = this._startBullet?.toGlobal({ x: 0, y: 0 });\r\n\t\tif (startPoint) {\r\n\r\n\t\t\tstartPoint = this.toLocal(startPoint);\r\n\r\n\t\t\tthis.connectorLine.setAll({\r\n\t\t\t\tsegments: [[[{ x: startPoint.x, y: startPoint.y }, { x: point.x, y: point.y }]]]\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectorArrow.setAll({\r\n\t\t\t\tx: point.x,\r\n\t\t\t\ty: point.y,\r\n\t\t\t\trotation: $math.getAngle(startPoint, point) + 90,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _endConnector() {\r\n\r\n\t\tlet startPoint = this._startBullet?.toGlobal({ x: 0, y: 0 });\r\n\t\tif (startPoint) {\r\n\t\t\tstartPoint = this.toLocal(startPoint);\r\n\r\n\t\t\tthis.connectorLine.hide();\r\n\t\t\tthis.connectorArrow.hide();\r\n\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tconst column = item.get(\"graphics\") as RoundedRectangle;\r\n\t\t\t\tif (column && column.isVisible()) {\r\n\t\t\t\t\tcolumn.states.applyAnimate(\"default\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst container = item.get(\"container\") as Container;\r\n\t\t\t\tif (container && container.isVisible()) {\r\n\t\t\t\t\tcontainer.states.applyAnimate(\"default\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst zeroRectangle = item.get(\"zeroRectangle\") as RoundedRectangle;\r\n\t\t\t\tif (zeroRectangle && zeroRectangle.isVisible()) {\r\n\t\t\t\t\tzeroRectangle.states.applyAnimate(\"default\");\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tlet dataItem = this._hoveredDataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t\tif (dataItem && dataItem !== this._startBullet?.dataItem) {\r\n\t\t\t\tconst id = dataItem.get(\"id\");\r\n\r\n\t\t\t\tif (id) {\r\n\t\t\t\t\tconst startDataItem = this._startBullet?.dataItem as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t\t\t\tif (startDataItem) {\r\n\t\t\t\t\t\tconst linkTo: Array<string> = startDataItem.get(\"linkTo\", []);\r\n\t\t\t\t\t\tif ($array.indexOf(linkTo, id) === -1) {\r\n\t\t\t\t\t\t\tlinkTo.push(id);\r\n\t\t\t\t\t\t\tstartDataItem.set(\"linkTo\", linkTo);\r\n\t\t\t\t\t\t\tthis.markDirtyValues();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._updateLinks();\r\n\t\t}\r\n\r\n\t\tthis.endBullets.each((bullet) => {\r\n\t\t\tbullet.show();\r\n\t\t})\r\n\r\n\t\tthis.startBullets.each((bullet) => {\r\n\t\t\tbullet.hide();\r\n\t\t})\r\n\r\n\t\tthis.chart?.set(\"panX\", this._xPan);\r\n\t\tthis.chart?.set(\"panY\", this._yPan);\r\n\t}\r\n\r\n\t/**\r\n\t * Fixes values of a data item, adjusting start, end, or duration as needed.\r\n\t */\r\n\tprotected _fixValues(dataItem: DataItem<IGanttSeriesDataItem>, keep: \"start\" | \"end\" | \"duration\") {\r\n\t\tlet valueX = dataItem.get(\"valueX\");\r\n\t\tlet openValueX = dataItem.get(\"openValueX\");\r\n\t\tlet duration = dataItem.get(\"duration\", 0);\r\n\r\n\t\tif ($type.isNumber(valueX) && $type.isNumber(openValueX)) {\r\n\t\t\tif (keep === \"start\") {\r\n\t\t\t\tvalueX = this.roundValue(valueX);\r\n\t\t\t\tduration = this.getDataItemDuration(dataItem);\r\n\t\t\t\tdataItem.set(\"duration\", duration);\r\n\t\t\t}\r\n\t\t\telse if (keep === \"end\") {\r\n\t\t\t\topenValueX = this.roundValue(openValueX, true);\r\n\t\t\t\tduration = this.getDataItemDuration(dataItem);\r\n\t\t\t\tdataItem.set(\"duration\", duration);\r\n\t\t\t}\r\n\t\t\telse if (keep === \"duration\") {\r\n\t\t\t\topenValueX = this.roundValue(openValueX, true);\r\n\t\t\t\tvalueX = openValueX + duration * this.getUnitDuration();\r\n\t\t\t}\r\n\r\n\t\t\topenValueX = this.getOpenValue(openValueX);\r\n\t\t\tvalueX = this.getEndValue(openValueX, duration);\r\n\r\n\t\t\tconst animationDuration = this.get(\"interpolationDuration\", 0);\r\n\t\t\tconst animationEasing = this.get(\"interpolationEasing\");\r\n\t\t\tconst index = this.dataItems.indexOf(dataItem);\r\n\r\n\t\t\tif (index >= this.startIndex() && index <= this.endIndex()) {\r\n\t\t\t\tdataItem.animate({ key: \"openValueXWorking\", to: openValueX, duration: animationDuration, easing: animationEasing });\r\n\t\t\t\tdataItem.animate({ key: \"valueXWorking\", to: valueX, duration: animationDuration, easing: animationEasing });\r\n\t\t\t\t// animate not working also\r\n\t\t\t\tdataItem.animate({ key: \"openValueX\", to: openValueX, duration: animationDuration, easing: animationEasing });\r\n\t\t\t\tdataItem.animate({ key: \"valueX\", to: valueX, duration: animationDuration, easing: animationEasing });\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tdataItem.set(\"openValueXWorking\", openValueX);\r\n\t\t\t\tdataItem.set(\"valueXWorking\", valueX);\r\n\t\t\t\tdataItem.set(\"openValueX\", openValueX);\r\n\t\t\t\tdataItem.set(\"valueX\", valueX);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _toggleColumn(dataItem: DataItem<this[\"_dataItemSettings\"]>, visible: boolean) {\r\n\t\tsuper._toggleColumn(dataItem, visible);\r\n\t\tconst container = dataItem.get(\"container\");\r\n\t\tif (container) {\r\n\t\t\tcontainer.setPrivate(\"visible\", visible);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _afterDataChange(): void {\r\n\t\tconst yAxis = this.get(\"yAxis\") as GanttCategoryAxis<GanttCategoryAxisRenderer>;\r\n\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\tthis._fixValues(dataItem, \"duration\");\r\n\t\t\tconst category = dataItem.get(\"categoryY\");\r\n\r\n\t\t\tif (category) {\r\n\t\t\t\tconst categoryAxisDataItem = yAxis.dataItems.find((item) => item.get(\"category\") === category);\r\n\r\n\t\t\t\tdataItem.set(\"categoryAxisDataItem\", categoryAxisDataItem);\r\n\t\t\t\tif (categoryAxisDataItem) {\r\n\t\t\t\t\tcategoryAxisDataItem.on(\"duration\", () => {\r\n\t\t\t\t\t\tconst duration = categoryAxisDataItem.get(\"duration\");\r\n\t\t\t\t\t\tconst children = dataItem.get(\"children\");\r\n\t\t\t\t\t\tif (!children || children.length === 0) {\r\n\t\t\t\t\t\t\tif (duration !== undefined) {\r\n\t\t\t\t\t\t\t\tdataItem.set(\"duration\", duration);\r\n\t\t\t\t\t\t\t\tthis._fixValues(dataItem, \"duration\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.get(\"yAxis\").markDirtyTree();\r\n\t\tsuper._afterDataChange();\r\n\t}\r\n\r\n\tprotected _updateLinks() {\r\n\r\n\t\tconst xAxis = this.get(\"xAxis\") as ValueAxis<AxisRendererX>;\r\n\t\tconst yAxis = this.get(\"yAxis\") as GanttCategoryAxis<GanttCategoryAxisRenderer>;\r\n\t\tconst yRenderer = yAxis.get(\"renderer\") as GanttCategoryAxisRenderer;\r\n\t\tlet endRadius = 0;\r\n\t\tconst endBullet = this.endBullets.getIndex(0);\r\n\t\tif (endBullet && endBullet.isVisible()) {\r\n\t\t\tendRadius = endBullet.get(\"radius\", 0);\r\n\t\t}\r\n\r\n\t\tlet columnHeight: number | Percent = percent(60);\r\n\t\tlet minHeight = 0;\r\n\t\tlet maxHeight = Infinity;\r\n\t\tlet column = this.columns.getIndex(0);\r\n\t\tlet r = 1;\r\n\t\tif (column) {\r\n\t\t\tcolumnHeight = column.get(\"height\", 0);\r\n\t\t\tconst cos = $math.cos(45);\r\n\t\t\tif (columnHeight instanceof Percent) {\r\n\t\t\t\tr = columnHeight.value * cos * cos;\r\n\t\t\t}\r\n\t\t\tminHeight = column.get(\"minHeight\", 0) * cos * cos;\r\n\t\t\tmaxHeight = column.get(\"maxHeight\", Infinity) * cos * cos;\r\n\t\t}\r\n\r\n\t\t$array.each(this.dataItems, (dataItem) => {\r\n\t\t\tconst linkTo = dataItem.get(\"linkTo\");\r\n\r\n\t\t\tconst categoryDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\r\n\r\n\t\t\tif (linkTo) {\r\n\t\t\t\tlet links = dataItem.get(\"links\");\r\n\t\t\t\tconst linkHorizontalOffset = this.get(\"linkHorizontalOffset\", 25);\r\n\r\n\t\t\t\t$array.each(linkTo, (dataItemId) => {\r\n\t\t\t\t\tif (!links) {\r\n\t\t\t\t\t\tlinks = dataItem.set(\"links\", {});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet link = links[dataItemId];\r\n\r\n\t\t\t\t\tif (!link) {\r\n\t\t\t\t\t\tlink = this.links.make();\r\n\t\t\t\t\t\tlinks[dataItemId] = link;\r\n\t\t\t\t\t\tthis.links.push(link);\r\n\t\t\t\t\t\tthis.linksContainer.children.push(link);\r\n\t\t\t\t\t\tlink.appear();\r\n\r\n\t\t\t\t\t\tlink.events.on(\"click\", () => {\r\n\t\t\t\t\t\t\tif (link.get(\"active\")) {\r\n\t\t\t\t\t\t\t\tthis.links.removeValue(link);\r\n\t\t\t\t\t\t\t\tconst links = dataItem.get(\"links\");\r\n\t\t\t\t\t\t\t\tif (links) {\r\n\t\t\t\t\t\t\t\t\tdelete links[dataItemId];\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t$array.remove(linkTo, dataItemId);\r\n\t\t\t\t\t\t\t\tthis.markDirtyValues();\r\n\t\t\t\t\t\t\t\tlink.dispose();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tlink.events.on(\"globalpointerup\", () => {\r\n\t\t\t\t\t\t\tif (link.get(\"active\") && !link.isHover()) {\r\n\t\t\t\t\t\t\t\tlink.set(\"active\", false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst points: Array<IPoint> = [];\r\n\r\n\t\t\t\t\tconst positionX = xAxis.valueToPosition(dataItem.get(\"valueX\", 0));\r\n\t\t\t\t\tconst positionY = yAxis.categoryToPosition(dataItem.get(\"categoryY\")!);\r\n\r\n\t\t\t\t\tconst point = this.getPoint(positionX, positionY);\r\n\r\n\t\t\t\t\tlet firstPoint = { x: point.x + endRadius, y: point.y };\r\n\r\n\t\t\t\t\tif (dataItem.get(\"duration\", 0) === 0) {\r\n\t\t\t\t\t\tlet y0 = yAxis.indexToPosition(categoryDataItem.get(\"index\", 0), 0);\r\n\t\t\t\t\t\tlet y1 = yAxis.indexToPosition(categoryDataItem.get(\"index\", 0), 1);\r\n\t\t\t\t\t\ty0 = yRenderer.positionToCoordinate(y0);\r\n\t\t\t\t\t\ty1 = yRenderer.positionToCoordinate(y1);\r\n\r\n\t\t\t\t\t\tlet h = (y1 - y0) * r;\r\n\t\t\t\t\t\th = $math.fitToRange(h, minHeight, maxHeight);\r\n\r\n\t\t\t\t\t\tfirstPoint.x += h - endRadius;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpoints.push(firstPoint);\r\n\t\t\t\t\tpoints.push({ x: firstPoint.x + linkHorizontalOffset, y: firstPoint.y });\r\n\r\n\t\t\t\t\tconst targetDataItem = this.getDataItemById(dataItemId) as DataItem<IGanttSeriesDataItem>;\r\n\r\n\t\t\t\t\tif (targetDataItem) {\r\n\r\n\t\t\t\t\t\tconst positionX = xAxis.valueToPosition(targetDataItem.get(\"openValueX\", 0));\r\n\t\t\t\t\t\tconst positionY = yAxis.categoryToPosition(targetDataItem.get(\"categoryY\")!);\r\n\r\n\t\t\t\t\t\tconst point = this.getPoint(positionX, positionY);\r\n\r\n\t\t\t\t\t\tlet x = point.x;\r\n\t\t\t\t\t\tlet y = point.y;\r\n\r\n\t\t\t\t\t\tlet lastPoint = { x: x, y: y };\r\n\r\n\t\t\t\t\t\tif (targetDataItem.get(\"duration\", 0) === 0) {\r\n\t\t\t\t\t\t\tlet targetCategoryDataItem = targetDataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\t\t\t\t\t\t\tif (targetCategoryDataItem) {\r\n\t\t\t\t\t\t\t\tlet y0 = yAxis.indexToPosition(targetCategoryDataItem.get(\"index\", 0), 0);\r\n\t\t\t\t\t\t\t\tlet y1 = yAxis.indexToPosition(targetCategoryDataItem.get(\"index\", 0), 1);\r\n\t\t\t\t\t\t\t\ty0 = yRenderer.positionToCoordinate(y0);\r\n\t\t\t\t\t\t\t\ty1 = yRenderer.positionToCoordinate(y1);\r\n\r\n\t\t\t\t\t\t\t\tlet h = (y1 - y0) * r;\r\n\r\n\r\n\r\n\t\t\t\t\t\t\t\th = $math.fitToRange(h, minHeight, maxHeight);\r\n\t\t\t\t\t\t\t\tlastPoint.x -= h;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (lastPoint.x - linkHorizontalOffset < firstPoint.x + linkHorizontalOffset) {\r\n\t\t\t\t\t\t\tconst category = dataItem.get(\"categoryY\");\r\n\t\t\t\t\t\t\tconst yAxis = this.get(\"yAxis\") as CategoryAxis<AxisRendererY>;\r\n\r\n\t\t\t\t\t\t\tif (category) {\r\n\t\t\t\t\t\t\t\tlet index = yAxis.categoryToIndex(category);\r\n\r\n\t\t\t\t\t\t\t\tconst position0 = yAxis.indexToPosition(index);\r\n\t\t\t\t\t\t\t\tconst position1 = yAxis.indexToPosition(index, 1);\r\n\r\n\t\t\t\t\t\t\t\tif (yAxis && category) {\r\n\r\n\t\t\t\t\t\t\t\t\tlet sign = -1;\r\n\t\t\t\t\t\t\t\t\tif (lastPoint.y > firstPoint.y) {\r\n\t\t\t\t\t\t\t\t\t\tsign = 1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tlet y = yAxis.get(\"renderer\").positionToCoordinate(yAxis.categoryToPosition(category) + (position1 - position0) * sign);\r\n\r\n\t\t\t\t\t\t\t\t\tpoints.push({ x: firstPoint.x + linkHorizontalOffset, y: y });\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tpoints.push({ x: lastPoint.x - linkHorizontalOffset, y: lastPoint.y });\r\n\t\t\t\t\t\tpoints.push(lastPoint);\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlink.set(\"points\", points);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Updates series graphics.\r\n\t */\r\n\tprotected _updateSeriesGraphics(dataItem: DataItem<this[\"_dataItemSettings\"]>, graphics: Graphics, l: number, r: number, t: number, b: number, _fitW: boolean, fitH: boolean) {\r\n\t\tsuper._updateSeriesGraphics(dataItem, graphics, l, r, t, b, false, fitH);\r\n\t\tlet x = dataItem.get(\"left\", 0);\r\n\t\tlet y = dataItem.get(\"top\", 0);\r\n\t\tlet width = dataItem.get(\"right\", 0) - x;\r\n\t\tlet height = dataItem.get(\"bottom\", 0) - y;\r\n\r\n\t\t// Update the container position and size\r\n\t\tconst container = dataItem.get(\"container\");\r\n\t\tconst mask = dataItem.get(\"mask\");\r\n\t\tconst categoryAxisDataItem = dataItem.get(\"categoryAxisDataItem\") as DataItem<IGanttCategoryAxisDataItem>;\r\n\t\tconst fill = categoryAxisDataItem ? categoryAxisDataItem.get(\"customColor\", categoryAxisDataItem.get(\"color\")) : undefined;\r\n\r\n\t\tdataItem.setRaw(\"name\", (categoryAxisDataItem.dataContext as any).name);\r\n\r\n\t\tconst startBullet = dataItem.get(\"startBullet\");\r\n\t\tstartBullet?.setAll({\r\n\t\t\tx: 0,\r\n\t\t\tstroke: fill\r\n\t\t});\r\n\r\n\t\tconst endBullet = dataItem.get(\"endBullet\");\r\n\t\tendBullet?.setAll({\r\n\t\t\tstroke: fill,\r\n\t\t\tx: width\r\n\t\t});\r\n\r\n\t\tif (container) {\r\n\t\t\tcontainer.setAll({\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\twidth: width,\r\n\t\t\t\theight: height\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst maskedContainer = dataItem.get(\"maskedContainer\");\r\n\t\tif (maskedContainer) {\r\n\t\t\tmaskedContainer.setAll({\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: 0,\r\n\t\t\t\twidth: width,\r\n\t\t\t\theight: height\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (mask) {\r\n\t\t\tmask.setAll({\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: 0,\r\n\t\t\t\twidth: width,\r\n\t\t\t\theight: height\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst startGrip = dataItem.get(\"startGrip\");\r\n\t\tif (startGrip) {\r\n\t\t\tstartGrip.setAll({\r\n\t\t\t\theight: height\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tconst endGrip = dataItem.get(\"endGrip\");\r\n\t\tif (endGrip) {\r\n\t\t\tendGrip.setAll({\r\n\t\t\t\tx: width,\r\n\t\t\t\theight: height\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// update progress rectangle\r\n\t\tconst progressRectangle = dataItem.get(\"progressRectangle\");\r\n\t\tif (progressRectangle) {\r\n\t\t\tconst progress = dataItem.get(\"progress\", 0);\r\n\t\t\tconst progressWidth = width - width * progress;\r\n\r\n\t\t\tprogressRectangle.setAll({\r\n\t\t\t\tx: width - progressWidth,\r\n\t\t\t\twidth: progressWidth,\r\n\t\t\t\theight: height\r\n\t\t\t});\r\n\r\n\t\t\tconst progressGrip = dataItem.get(\"progressGrip\");\r\n\t\t\tif (progressGrip) {\r\n\t\t\t\tprogressGrip.setAll({\r\n\t\t\t\t\tx: width - progressWidth\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst zeroRectangle = dataItem.get(\"zeroRectangle\");\r\n\t\t\tif (zeroRectangle) {\r\n\t\t\t\tzeroRectangle.markDirtyKey(\"fillPattern\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Hides series's data item.\r\n\t * \r\n\t * @param dataItem Data item\r\n\t * @param duration Animation duration in milliseconds\r\n\t * @return Promise\r\n\t */\r\n\tpublic async hideDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, duration?: number): Promise<void> {\r\n\t\tconst promises = [super.hideDataItem(dataItem, duration)];\r\n\t\tconst container = dataItem.get(\"container\");\r\n\t\tif (container) {\r\n\t\t\tpromises.push(container.hide(duration));\r\n\t\t}\r\n\r\n\t\t// hide all links\r\n\t\tconst links = dataItem.get(\"links\", {});\r\n\t\tif (links) {\r\n\t\t\t$object.each(links, (_key, link: Link) => {\r\n\t\t\t\tlink.hide(duration);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// hide all links to this data item\r\n\t\tconst id = dataItem.get(\"id\")!;\r\n\t\tif (id) {\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tconst linkTo = item.get(\"linkTo\");\r\n\t\t\t\tif (linkTo && linkTo.includes(id)) {\r\n\t\t\t\t\tconst links: { [index: string]: Link } | undefined = item.get(\"links\");\r\n\t\t\t\t\tif (links && links[id]) {\r\n\t\t\t\t\t\tconst link = links[id];\r\n\t\t\t\t\t\tlink.hide(duration);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tawait Promise.all(promises);\r\n\t}\r\n\r\n\t/**\r\n\t * Shows series's data item.\r\n\t * \r\n\t * @param dataItem Data item\r\n\t * @param duration Animation duration in milliseconds\r\n\t * @return Promise\r\n\t */\r\n\tpublic async showDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, duration?: number): Promise<void> {\r\n\t\tconst promises = [super.showDataItem(dataItem, duration)];\r\n\t\tconst container = dataItem.get(\"container\");\r\n\t\tif (container) {\r\n\t\t\tpromises.push(container.show(duration));\r\n\t\t}\r\n\r\n\t\t// show all links\r\n\t\tconst links = dataItem.get(\"links\", {});\r\n\t\tif (links) {\r\n\t\t\t$object.each(links, (_key, link: Link) => {\r\n\t\t\t\tlink.show(duration);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// show all links to this data item\r\n\t\tconst id = dataItem.get(\"id\")!;\r\n\t\tif (id) {\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tconst linkTo = item.get(\"linkTo\");\r\n\t\t\t\tif (linkTo && linkTo.includes(id)) {\r\n\t\t\t\t\tconst links: { [index: string]: Link } | undefined = item.get(\"links\");\r\n\t\t\t\t\tif (links && links[id]) {\r\n\t\t\t\t\t\tconst link = links[id];\r\n\t\t\t\t\t\tlink.show(duration);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tawait Promise.all(promises);\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes a data item and removes it from the series.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic disposeDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\r\n\t\tsuper.disposeDataItem(dataItem);\r\n\r\n\t\tconst container = dataItem.get(\"container\");\r\n\t\tif (container) {\r\n\t\t\tthis.containers.removeValue(container);\r\n\t\t\tcontainer.dispose();\r\n\t\t}\r\n\r\n\t\tconst startBullet = dataItem.get(\"startBullet\");\r\n\t\tif (startBullet) {\r\n\t\t\tthis.startBullets.removeValue(startBullet);\r\n\t\t\tstartBullet.dispose();\r\n\t\t}\r\n\r\n\t\tconst endBullet = dataItem.get(\"endBullet\");\r\n\t\tif (endBullet) {\r\n\t\t\tthis.endBullets.removeValue(endBullet);\r\n\t\t\tendBullet.dispose();\r\n\t\t}\r\n\t\tconst startGrip = dataItem.get(\"startGrip\");\r\n\t\tif (startGrip) {\r\n\t\t\tthis.startGrips.removeValue(startGrip);\r\n\t\t\tstartGrip.dispose();\r\n\t\t}\r\n\t\tconst endGrip = dataItem.get(\"endGrip\");\r\n\t\tif (endGrip) {\r\n\t\t\tthis.endGrips.removeValue(endGrip);\r\n\t\t\tendGrip.dispose();\r\n\t\t}\r\n\t\tconst progressRectangle = dataItem.get(\"progressRectangle\");\r\n\t\tif (progressRectangle) {\r\n\t\t\tthis.progressRectangles.removeValue(progressRectangle);\r\n\t\t\tprogressRectangle.dispose();\r\n\t\t}\r\n\t\tconst zeroRectangle = dataItem.get(\"zeroRectangle\");\r\n\t\tif (zeroRectangle) {\r\n\t\t\tthis.zeroRectangles.removeValue(zeroRectangle);\r\n\t\t\tzeroRectangle.dispose();\r\n\t\t}\r\n\t\tconst progressGrip = dataItem.get(\"progressGrip\");\r\n\t\tif (progressGrip) {\r\n\t\t\tthis.progressGrips.removeValue(progressGrip);\r\n\t\t\tprogressGrip.dispose();\r\n\t\t}\r\n\r\n\t\tthis.disposeLinks(dataItem);\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes all links of a data item and removes them from the series.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic disposeLinks(dataItem: DataItem<IGanttSeriesDataItem>) {\r\n\t\tconst links = dataItem.get(\"links\", {});\r\n\t\tif (links) {\r\n\t\t\t$object.each(links, (key, link: Link) => {\r\n\t\t\t\tlink.dispose();\r\n\t\t\t\tdelete links[key];\r\n\t\t\t});\r\n\t\t\tdataItem.set(\"linkTo\", []);\r\n\t\t}\r\n\r\n\t\tconst id = dataItem.get(\"id\", \"\");\r\n\r\n\t\tif (id) {\r\n\t\t\t$array.each(this.dataItems, (item) => {\r\n\t\t\t\tconst linkTo = item.get(\"linkTo\");\r\n\t\t\t\tif (linkTo && linkTo.includes(id)) {\r\n\t\t\t\t\t$array.remove(linkTo, id);\r\n\r\n\t\t\t\t\tconst links: { [index: string]: Link } | undefined = item.get(\"links\");\r\n\t\t\t\t\tif (links && links[id]) {\r\n\t\t\t\t\t\tconst link = links[id];\r\n\t\t\t\t\t\tthis.links.removeValue(link);\r\n\t\t\t\t\t\tdelete links[id];\r\n\t\t\t\t\t\tlink.dispose();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the duration of a data item in units.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @return Duration in units\r\n\t */\r\n\tpublic getDataItemDuration(dataItem: DataItem<IGanttSeriesDataItem>): number {\r\n\t\tconst openValueX = dataItem.get(\"openValueX\", 0);\r\n\t\tlet valueX = dataItem.get(\"valueX\", 0);\r\n\r\n\t\t// if valueX is within weekend or holiday, round it to the end of a previous work day\r\n\t\treturn Math.round((valueX - openValueX) / this.getUnitDuration()) - this.getHolidayCount(openValueX, valueX);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the depth of a data item in the hierarchy.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @return Depth level\r\n\t */\r\n\tpublic getDepth(dataItem: DataItem<IGanttSeriesDataItem>): number {\r\n\t\tlet depth = 0;\r\n\t\tlet parent = dataItem.get(\"parent\");\r\n\t\twhile (parent) {\r\n\t\t\tdepth++;\r\n\t\t\tparent = parent.get(\"parent\");\r\n\t\t}\r\n\t\treturn depth;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the end value of a data item, adjusting for holidays and weekends.\r\n\t *\r\n\t * @param openValue Open value in milliseconds\r\n\t * @param duration Duration in units\r\n\t * @return Adjusted end value in milliseconds\r\n\t */\r\n\tpublic getEndValue(openValue: number, duration: number): number {\r\n\t\tlet adjustedDuration = duration;\r\n\r\n\t\tconst unitDuration = this.getUnitDuration();\r\n\r\n\t\tif (this.gantt.get(\"excludeWeekends\", true)) {\r\n\t\t\tfor (let i = 0; i < adjustedDuration; i++) {\r\n\t\t\t\tif (this.isHoliday(openValue + i * unitDuration)) {\r\n\t\t\t\t\tadjustedDuration++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn openValue + adjustedDuration * unitDuration;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the open value of a data item, adjusting for holidays and weekends.\r\n\t *\r\n\t * @param openValue Open value in milliseconds\r\n\t * @return Adjusted open value\r\n\t */\r\n\tpublic getOpenValue(openValue: number): number {\r\n\t\tif (this.gantt.get(\"excludeWeekends\", true)) {\r\n\t\t\twhile (this.isHoliday(openValue)) {\r\n\t\t\t\topenValue += this.getUnitDuration();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn openValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the duration of a unit in milliseconds.\r\n\t *\r\n\t * @return Duration in milliseconds\r\n\t */\r\n\tpublic getUnitDuration(): number {\r\n\t\treturn $time.getDuration(this.gantt.get(\"durationUnit\", \"day\"));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the count of holidays between two dates.\r\n\t *\r\n\t * @param start Start date in milliseconds\r\n\t * @param end End date in milliseconds\r\n\t * @return Count of holidays\r\n\t */\r\n\tpublic getHolidayCount(start: number, end: number): number {\r\n\t\tlet count = 0;\r\n\t\tlet holiday = true;\r\n\t\tfor (let i = end; i >= start; i -= this.getUnitDuration()) {\r\n\t\t\tif (!this.isHoliday(i)) {\r\n\t\t\t\tholiday = false;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (!holiday && this.isHoliday(i)) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\r\n\t/**\r\n\t\t * Checks if a given date is a holiday or weekend.\r\n\t\t *\r\n\t\t * @param value Date value in milliseconds\r\n\t\t * @return `true` if the date is a holiday or weekend, otherwise `false`\r\n\t\t */\r\n\tpublic isHoliday(value: number): boolean {\r\n\t\tif (this.gantt.get(\"excludeWeekends\", true)) {\r\n\t\t\tconst holidays = this.gantt.get(\"holidays\", []);\r\n\t\t\tconst weekends = this.gantt.get(\"weekends\", [0, 6]);\r\n\r\n\t\t\tconst date = new Date(value);\r\n\r\n\t\t\tif (weekends.includes(date.getDay())) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (holidays && holidays.length > 0) {\r\n\t\t\t\tlet isHoliday = false;\r\n\t\t\t\t$array.eachContinue(holidays, (holiday) => {\r\n\t\t\t\t\tif (holiday instanceof Date) {\r\n\t\t\t\t\t\tconst start = holiday.getTime()\r\n\t\t\t\t\t\tconst end = holiday.getTime() + $time.getDuration(\"day\");\r\n\t\t\t\t\t\tif (value >= start && value < end) {\r\n\t\t\t\t\t\t\tisHoliday = true;\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t})\r\n\t\t\t\treturn isHoliday;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CategoryAxis.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/xy/axes/CategoryAxis.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CategoryAxis.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/xy/axes/CategoryAxis.ts"],"names":[],"mappings":"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"}
|