@syncfusion/ej2-gantt 21.2.10 → 22.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/.eslintrc.json +1 -0
  2. package/CHANGELOG.md +12 -0
  3. package/dist/ej2-gantt.min.js +2 -2
  4. package/dist/ej2-gantt.umd.min.js +2 -2
  5. package/dist/ej2-gantt.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-gantt.es2015.js +734 -711
  7. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  8. package/dist/es6/ej2-gantt.es5.js +773 -751
  9. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  10. package/dist/global/ej2-gantt.min.js +2 -2
  11. package/dist/global/ej2-gantt.min.js.map +1 -1
  12. package/dist/global/index.d.ts +1 -1
  13. package/package.json +20 -19
  14. package/src/gantt/actions/connector-line-edit.js +21 -26
  15. package/src/gantt/actions/context-menu.js +2 -2
  16. package/src/gantt/actions/critical-path.js +4 -9
  17. package/src/gantt/actions/day-markers.js +4 -1
  18. package/src/gantt/actions/edit.js +8 -6
  19. package/src/gantt/actions/pdf-export.js +1 -1
  20. package/src/gantt/actions/taskbar-edit.d.ts +6 -0
  21. package/src/gantt/actions/taskbar-edit.js +120 -45
  22. package/src/gantt/base/css-constants.d.ts +5 -10
  23. package/src/gantt/base/css-constants.js +5 -10
  24. package/src/gantt/base/date-processor.js +1 -19
  25. package/src/gantt/base/enum.d.ts +215 -231
  26. package/src/gantt/base/gantt-chart.js +112 -5
  27. package/src/gantt/base/gantt-model.d.ts +6 -3
  28. package/src/gantt/base/gantt.d.ts +7 -3
  29. package/src/gantt/base/gantt.js +17 -13
  30. package/src/gantt/base/interface.d.ts +36 -1
  31. package/src/gantt/base/task-processor.js +14 -15
  32. package/src/gantt/base/tree-grid.js +1 -1
  33. package/src/gantt/export/export-helper.js +1 -0
  34. package/src/gantt/export/pdf-connector-line.d.ts +4 -4
  35. package/src/gantt/export/pdf-connector-line.js +11 -22
  36. package/src/gantt/export/pdf-gantt.d.ts +1 -2
  37. package/src/gantt/export/pdf-gantt.js +4 -4
  38. package/src/gantt/models/column.d.ts +8 -4
  39. package/src/gantt/models/edit-settings-model.d.ts +1 -0
  40. package/src/gantt/models/edit-settings.d.ts +1 -0
  41. package/src/gantt/models/filter-settings-model.d.ts +3 -0
  42. package/src/gantt/models/filter-settings.d.ts +3 -0
  43. package/src/gantt/models/search-settings-model.d.ts +1 -0
  44. package/src/gantt/models/search-settings.d.ts +1 -0
  45. package/src/gantt/models/sort-settings-model.d.ts +1 -0
  46. package/src/gantt/models/sort-settings.d.ts +1 -0
  47. package/src/gantt/models/tooltip-settings-model.d.ts +8 -4
  48. package/src/gantt/models/tooltip-settings.d.ts +8 -4
  49. package/src/gantt/renderer/chart-rows.d.ts +1 -1
  50. package/src/gantt/renderer/chart-rows.js +27 -65
  51. package/src/gantt/renderer/connector-line.d.ts +23 -0
  52. package/src/gantt/renderer/connector-line.js +287 -384
  53. package/src/gantt/renderer/edit-tooltip.js +4 -4
  54. package/src/gantt/renderer/nonworking-day.js +2 -2
  55. package/src/gantt/renderer/tooltip.d.ts +3 -3
  56. package/src/gantt/renderer/tooltip.js +103 -76
  57. package/styles/bootstrap-dark.css +27 -47
  58. package/styles/bootstrap.css +29 -49
  59. package/styles/bootstrap4.css +29 -49
  60. package/styles/bootstrap5-dark.css +27 -47
  61. package/styles/bootstrap5.css +27 -47
  62. package/styles/fabric-dark.css +27 -47
  63. package/styles/fabric.css +27 -47
  64. package/styles/fluent-dark.css +28 -47
  65. package/styles/fluent.css +28 -47
  66. package/styles/gantt/_layout.scss +53 -7
  67. package/styles/gantt/_material3-dark-definition.scss +1 -0
  68. package/styles/gantt/_material3-definition.scss +220 -0
  69. package/styles/gantt/_theme.scss +53 -53
  70. package/styles/gantt/bootstrap-dark.css +27 -47
  71. package/styles/gantt/bootstrap.css +29 -49
  72. package/styles/gantt/bootstrap4.css +29 -49
  73. package/styles/gantt/bootstrap5-dark.css +27 -47
  74. package/styles/gantt/bootstrap5.css +27 -47
  75. package/styles/gantt/fabric-dark.css +27 -47
  76. package/styles/gantt/fabric.css +27 -47
  77. package/styles/gantt/fluent-dark.css +28 -47
  78. package/styles/gantt/fluent.css +28 -47
  79. package/styles/gantt/highcontrast-light.css +27 -47
  80. package/styles/gantt/highcontrast.css +27 -47
  81. package/styles/gantt/icons/_material3-dark.scss +1 -0
  82. package/styles/gantt/material-dark.css +27 -47
  83. package/styles/gantt/material.css +27 -47
  84. package/styles/gantt/material3-dark.css +2184 -0
  85. package/styles/gantt/material3-dark.scss +23 -0
  86. package/styles/gantt/material3.css +2240 -0
  87. package/styles/gantt/material3.scss +23 -0
  88. package/styles/gantt/tailwind-dark.css +27 -47
  89. package/styles/gantt/tailwind.css +27 -47
  90. package/styles/highcontrast-light.css +27 -47
  91. package/styles/highcontrast.css +27 -47
  92. package/styles/material-dark.css +27 -47
  93. package/styles/material.css +27 -47
  94. package/styles/material3-dark.css +2184 -0
  95. package/styles/material3-dark.scss +3 -0
  96. package/styles/material3.css +2240 -0
  97. package/styles/material3.scss +3 -0
  98. package/styles/tailwind-dark.css +27 -47
  99. package/styles/tailwind.css +27 -47
@@ -1,8 +1,9 @@
1
- import { Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, append, classList, closest, compile, createElement, deleteObject, extend, formatUnit, getValue, isNullOrUndefined, isObject, isObjectArray, isUndefined, merge, remove, removeClass, setValue } from '@syncfusion/ej2-base';
1
+ import { Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, append, classList, closest, compile, createElement, deleteObject, extend, formatUnit, getValue, initializeCSPTemplate, isNullOrUndefined, isObject, isObjectArray, isUndefined, merge, remove, removeClass, setValue } from '@syncfusion/ej2-base';
2
2
  import { Dialog, Tooltip, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';
3
3
  import { Edit, ForeignKey, Grid, Page, Predicate, Toolbar, ValueFormatter, click, filterAfterOpen, getActualProperties, getCustomDateFormat, getFilterMenuPostion, getForeignData, getObject, getUid, parentsUntil, setCssInGridPopUp } from '@syncfusion/ej2-grids';
4
4
  import { CacheAdaptor, DataManager, DataUtil, Deferred, ODataAdaptor, ODataV4Adaptor, Query, RemoteSaveAdaptor, UrlAdaptor, WebApiAdaptor, WebMethodAdaptor } from '@syncfusion/ej2-data';
5
5
  import { ColumnMenu, ContextMenu, Edit as Edit$1, ExcelExport, Filter, Reorder, Resize, RowDD, Selection, Sort, TreeGrid, VirtualScroll } from '@syncfusion/ej2-treegrid';
6
+ import { SvgRenderer } from '@syncfusion/ej2-svg-base';
6
7
  import { Splitter } from '@syncfusion/ej2-layouts';
7
8
  import { ContextMenu as ContextMenu$1, Tab, Toolbar as Toolbar$1 } from '@syncfusion/ej2-navigations';
8
9
  import { Count, HtmlEditor, Link, QuickToolbar, RichTextEditor, Toolbar as Toolbar$2 } from '@syncfusion/ej2-richtexteditor';
@@ -734,24 +735,7 @@ class DateProcessor {
734
735
  this.setTime(this.parent.defaultStartTime, sDate);
735
736
  }
736
737
  else if (!isNullOrUndefined(duration)) {
737
- this.parent.flatData.map((record) => {
738
- if (record.ganttProperties.taskId == ganttProp.taskId) {
739
- if ((!isNullOrUndefined(record.parentItem)) && (record.parentItem.taskId)) {
740
- this.parent.flatData.map((data) => {
741
- if (data.ganttProperties.taskId === record.parentItem.taskId) {
742
- if (!isNullOrUndefined(data.ganttProperties.startDate))
743
- sDate = data.ganttProperties.startDate;
744
- }
745
- else {
746
- sDate = this.getProjectStartDate(ganttProp);
747
- }
748
- });
749
- }
750
- else {
751
- sDate = this.getProjectStartDate(ganttProp);
752
- }
753
- }
754
- });
738
+ sDate = this.getProjectStartDate(ganttProp);
755
739
  }
756
740
  }
757
741
  else {
@@ -1893,7 +1877,7 @@ class TaskProcessor extends DateProcessor {
1893
1877
  (this.parent.taskMode === 'Manual') ? false :
1894
1878
  data[taskSettings.manual] === true ? false : true;
1895
1879
  this.parent.setRecordValue('ganttProperties', ganttProperties, ganttData);
1896
- if (!isNullOrUndefined(data[taskSettings.id]) && (!((this.parent.viewType === "ResourceView" && level == 0))) || data[taskSettings.name] === "Unassigned Task") {
1880
+ if (!isNullOrUndefined(data[taskSettings.id])) {
1897
1881
  id = data[taskSettings.id];
1898
1882
  name = data[taskSettings.name];
1899
1883
  this.addTaskData(ganttData, data, isLoad);
@@ -2334,7 +2318,7 @@ class TaskProcessor extends DateProcessor {
2334
2318
  startDate = this.getDateFromFormat(data[taskSettings.startDate], true);
2335
2319
  endDate = this.getDateFromFormat(data[taskSettings.endDate], true);
2336
2320
  }
2337
- const segments = taskSettings.segments && (!isNullOrUndefined(data[taskSettings.segments]) || !isNullOrUndefined(ganttData.taskData)) ? (data[taskSettings.segments] ||
2321
+ const segments = taskSettings.segments ? (data[taskSettings.segments] ||
2338
2322
  ganttData.taskData[taskSettings.segments]) : null;
2339
2323
  const isMileStone = taskSettings.milestone ? data[taskSettings.milestone] ? true : false : false;
2340
2324
  const durationMapping = data[taskSettings.durationUnit] ? data[taskSettings.durationUnit] : '';
@@ -3022,7 +3006,7 @@ class TaskProcessor extends DateProcessor {
3022
3006
  setDataSource(data) {
3023
3007
  let createData = [];
3024
3008
  let length = data.length;
3025
- for (var i = 0; i < length; i++) {
3009
+ for (let i = 0; i < length; i++) {
3026
3010
  let record = data[i];
3027
3011
  createData.push(record);
3028
3012
  if (!(isNullOrUndefined(data[i][this.parent.taskFields.child]))) {
@@ -3039,15 +3023,17 @@ class TaskProcessor extends DateProcessor {
3039
3023
  else {
3040
3024
  hierarchicalData = this.parent.dataSource;
3041
3025
  }
3042
- hierarchicalData.map((record) => {
3043
- if (task.ganttProperties.taskId === record[this.parent.taskFields.id]) {
3044
- if (!isNullOrUndefined(this.parent.taskFields.startDate)) {
3045
- task[this.parent.taskFields.startDate] = record[this.parent.taskFields.startDate];
3046
- }
3047
- if (!isNullOrUndefined(this.parent.taskFields.endDate)) {
3048
- task[this.parent.taskFields.endDate] = record[this.parent.taskFields.endDate];
3026
+ this.parent.flatData.map((data) => {
3027
+ hierarchicalData.map((record) => {
3028
+ if (data.ganttProperties.taskId === record[this.parent.taskFields.id]) {
3029
+ if (!isNullOrUndefined(this.parent.taskFields.startDate)) {
3030
+ task[this.parent.taskFields.endDate] = record[this.parent.taskFields.endDate];
3031
+ }
3032
+ if (!isNullOrUndefined(this.parent.taskFields.endDate)) {
3033
+ task[this.parent.taskFields.endDate] = record[this.parent.taskFields.endDate];
3034
+ }
3049
3035
  }
3050
- }
3036
+ });
3051
3037
  });
3052
3038
  }
3053
3039
  getWorkInHour(work, workUnit) {
@@ -3157,9 +3143,6 @@ class TaskProcessor extends DateProcessor {
3157
3143
  return resourceIdCollection;
3158
3144
  }
3159
3145
  resourceIdCollection = data[this.parent.taskFields.resourceInfo];
3160
- if (resourceIdCollection != "" && typeof resourceIdCollection == "string") {
3161
- resourceIdCollection = resourceIdCollection.split(',');
3162
- }
3163
3146
  let resourceData;
3164
3147
  if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.dialogModule)
3165
3148
  && this.parent.editModule.dialogModule.isAddNewResource) {
@@ -3169,7 +3152,6 @@ class TaskProcessor extends DateProcessor {
3169
3152
  resourceData = this.parent.resources;
3170
3153
  }
3171
3154
  const resourceIDMapping = this.parent.resourceFields.id;
3172
- const resourceNameMapping = this.parent.resourceFields.name;
3173
3155
  const resourceUnitMapping = this.parent.resourceFields.unit;
3174
3156
  const resourceGroup = this.parent.resourceFields.group;
3175
3157
  const resources = [];
@@ -3180,7 +3162,7 @@ class TaskProcessor extends DateProcessor {
3180
3162
  return true;
3181
3163
  }
3182
3164
  else {
3183
- return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]) || (resourceIdCollection[count] === resourceInfo[resourceNameMapping]);
3165
+ return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]);
3184
3166
  }
3185
3167
  });
3186
3168
  const ganttDataResource = extend({}, resource[0]);
@@ -3738,6 +3720,7 @@ class TaskProcessor extends DateProcessor {
3738
3720
  const segments = ganttRecord.segments;
3739
3721
  let fixedWidth = true;
3740
3722
  const totalTaskWidth = this.splitTasksDuration(segments) * ((this.parent.timelineModule.bottomTier === "Hour" || this.parent.timelineModule.bottomTier === "Minutes") ? this.parent.timelineSettings.timelineUnitSize : this.parent.perDayWidth);
3723
+
3741
3724
  let totalProgressWidth = this.parent.dataOperation.getProgressWidth(totalTaskWidth, ganttRecord.progress);
3742
3725
  for (let i = 0; i < segments.length; i++) {
3743
3726
  const segment = segments[i];
@@ -4011,15 +3994,10 @@ const childTaskBarInnerDiv = 'e-gantt-child-taskbar-inner-div';
4011
3994
  const childProgressBarInnerDiv = 'e-gantt-child-progressbar-inner-div';
4012
3995
  const criticalChildTaskBarInnerDiv = 'e-gantt-child-critical-taskbar-inner-div';
4013
3996
  const criticalChildProgressBarInnerDiv = 'e-gantt-child-critical-progressbar-inner-div';
4014
- const milestoneTop = 'e-milestone-top';
4015
- const milestoneBottom = 'e-milestone-bottom';
4016
- const criticalMilestoneTop = 'e-critical-milestone-top';
4017
- const criticalMilestoneBottom = 'e-critical-milestone-bottom';
3997
+ const criticalMilestone = 'e-critical-milestone';
4018
3998
  const baselineBar = 'e-baseline-bar';
4019
3999
  const baselineMilestoneContainer = 'e-baseline-gantt-milestone-container';
4020
- const baselineMilestoneDiv = 'e-baseline-gantt-milestone';
4021
- const baselineMilestoneTop = 'e-baseline-milestone-top';
4022
- const baselineMilestoneBottom = 'e-baseline-milestone-bottom';
4000
+
4023
4001
  const chartRowCell = 'e-chart-row-cell';
4024
4002
  const chartRow = 'e-chart-row';
4025
4003
  const rowExpand = 'e-row-expand';
@@ -4033,15 +4011,11 @@ const progressBarHandlerAfter = 'e-progressbar-handler-after';
4033
4011
  const icon = 'e-icon';
4034
4012
  const traceMilestone = 'e-gantt-milestone';
4035
4013
  const parentMilestone = 'e-gantt-parent-milestone';
4036
- const parentMilestoneTop = 'e-parent-milestone-top';
4037
- const parentMilestoneBottom = 'e-parent-milestone-bottom';
4038
4014
  const traceChildTaskBar = 'e-gantt-child-taskbar';
4039
4015
  const traceChildProgressBar = 'e-gantt-child-progressbar';
4040
4016
  const manualParentMainContainer = 'e-manualparent-main-container';
4041
4017
  const manualParentTaskBar = 'e-gantt-manualparenttaskbar';
4042
4018
  const manualParentMilestone = 'e-gantt-manualparent-milestone';
4043
- const manualParentMilestoneTop = 'e-manualparent-milestone-top';
4044
- const manualParentMilestoneBottom = 'e-manualparent-milestone-bottom';
4045
4019
  const manualChildTaskBar = 'e-gantt-child-manualtaskbar';
4046
4020
  const manualChildProgressBar = 'e-gantt-child-manualprogressbar';
4047
4021
  const manualParentRightResizer = 'e-gantt-manualparenttaskbar-right';
@@ -4072,25 +4046,29 @@ const weekend = 'e-weekend';
4072
4046
  const unscheduledTaskbarLeft = 'e-gantt-unscheduled-taskbar-left';
4073
4047
  const unscheduledTaskbarRight = 'e-gantt-unscheduled-taskbar-right';
4074
4048
  const unscheduledTaskbar = 'e-gantt-unscheduled-taskbar';
4075
- const unscheduledMilestoneTop = 'e-unscheduled-milestone-top';
4076
- const unscheduledMilestoneBottom = 'e-unscheduled-milestone-bottom';
4049
+
4050
+
4077
4051
  //Connector Line
4078
4052
  const dependencyViewContainer = 'e-gantt-dependency-view-container';
4079
4053
  const connectorLineContainer = 'e-connector-line-container';
4080
- const connectorLine = 'e-line';
4081
- const criticalConnectorLine = 'e-criticalconnector-line';
4082
- const criticalConnectorLineRightArrow = 'e-criticalconnector-line-right-arrow';
4083
- const criticalConnectorLineLeftArrow = 'e-criticalconnector-line-left-arrow';
4084
- const connectorLineRightArrow = 'e-connector-line-right-arrow';
4085
- const connectorLineLeftArrow = 'e-connector-line-left-arrow';
4054
+
4055
+ const connectorLineSVG = 'e-connector-line';
4056
+ const criticalConnectorLineSVG = 'e-critical-line';
4057
+ const criticalConnectorArrowSVG = 'e-critical-line-arrow';
4058
+ const connectorLineArrow = 'e-connector-line-arrow';
4059
+
4060
+
4061
+
4062
+
4063
+
4086
4064
  const connectorLineZIndex = 'e-connector-line-z-index';
4087
- const connectorLineHover = 'e-connector-line-hover';
4088
- const criticalConnectorLineHover = 'e-critical-connector-line-hover';
4089
- const connectorLineHoverZIndex = 'e-connector-line-hover-z-index';
4090
- const connectorLineRightArrowHover = 'e-connector-line-right-arrow-hover';
4091
- const connectorLineLeftArrowHover = 'e-connector-line-left-arrow-hover';
4092
- const criticalConnectorLineRightArrowHover = 'e-critical-connector-line-right-arrow-hover';
4093
- const criticalConnectorLineLeftArrowHover = 'e-critical-connector-line-left-arrow-hover';
4065
+
4066
+
4067
+
4068
+
4069
+
4070
+
4071
+
4094
4072
 
4095
4073
  const connectorPointLeft = 'e-connectorpoint-left';
4096
4074
  const connectorPointRight = 'e-connectorpoint-right';
@@ -4818,6 +4796,16 @@ class GanttChart {
4818
4796
  if (this.parent.isDestroyed || e.which === 3) {
4819
4797
  return;
4820
4798
  }
4799
+ var resizeCheck = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-taskbar-resize-div');
4800
+ if (!isNullOrUndefined(resizeCheck)) {
4801
+ resizeCheck.remove();
4802
+ }
4803
+ var Check = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-clone-taskbar');
4804
+ if (!isNullOrUndefined(Check)) {
4805
+ var clonetbody = Check.parentElement;
4806
+ var cloneTable = clonetbody.parentElement;
4807
+ cloneTable.remove();
4808
+ }
4821
4809
  let isTaskbarEdited = false;
4822
4810
  if (this.parent.editSettings.allowTaskbarEditing &&
4823
4811
  getValue('editModule.taskbarEditModule.isMouseDragged', this.parent) &&
@@ -5376,7 +5364,72 @@ class GanttChart {
5376
5364
  /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
5377
5365
  $target.closest('.e-chart-row') ? $target.closest('.e-chart-row').rowIndex : -1;
5378
5366
  const isTab = (e.action === 'tab') ? true : false;
5379
- const nextElement = this.getNextElement($target, isTab, isInEditedState);
5367
+ let nextElement = this.getNextElement($target, isTab, isInEditedState);
5368
+ if (nextElement && $target.classList.contains('e-headercell')) {
5369
+ let colIndex = parseInt(nextElement.getAttribute('data-colindex'));
5370
+ if (e.action === 'shiftTab') {
5371
+ while (colIndex != -1 && !this.parent.treeGrid.columns[colIndex]['visible']) {
5372
+ colIndex = colIndex - 1;
5373
+ }
5374
+ if (colIndex != -1) {
5375
+ nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[colIndex];
5376
+ }
5377
+ else {
5378
+ let toolbarItems = document.getElementsByClassName('e-toolbar-item');
5379
+ for (let i = toolbarItems.length - 1; i > 0; i--) {
5380
+ if (!document.getElementsByClassName('e-toolbar-item')[i].classList.contains('e-hidden')) {
5381
+ nextElement = document.getElementsByClassName('e-toolbar-item')[i];
5382
+ break;
5383
+ }
5384
+ }
5385
+ }
5386
+ }
5387
+ else {
5388
+ while (!this.parent.treeGrid.columns[colIndex]['visible']) {
5389
+ colIndex = colIndex + 1;
5390
+ }
5391
+ nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[colIndex];
5392
+ }
5393
+ }
5394
+ if (!nextElement && e.action === 'shiftTab' && $target.classList.contains('e-headercell')) {
5395
+ let toolbarItems = document.getElementsByClassName('e-toolbar-item');
5396
+ for (let i = toolbarItems.length - 1; i > 0; i--) {
5397
+ if (!document.getElementsByClassName('e-toolbar-item')[i].classList.contains('e-hidden')) {
5398
+ nextElement = document.getElementsByClassName('e-toolbar-item')[i];
5399
+ break;
5400
+ }
5401
+ }
5402
+ }
5403
+ if ($target.classList.contains('e-treegrid') && !nextElement) {
5404
+ for (let i = 0; i < this.parent.treeGrid.columns.length; i++) {
5405
+ if (this.parent.treeGrid.columns[i]['visible']) {
5406
+ nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[i];
5407
+ break;
5408
+ }
5409
+ }
5410
+ }
5411
+ if (!nextElement && $target.classList.contains('e-headercell')) {
5412
+ nextElement = document.getElementsByClassName('e-timeline-header-container')[0];
5413
+ }
5414
+ if (e.action !== 'shiftTab' && $target.classList.contains('e-timeline-header-container')) {
5415
+ for (let i = 0; i < this.parent.treeGrid.columns.length; i++) {
5416
+ if (this.parent.treeGrid.columns[i]['visible']) {
5417
+ nextElement = document.getElementsByClassName('e-row')[0].childNodes[i];
5418
+ break;
5419
+ }
5420
+ }
5421
+ }
5422
+ if (e.action === 'shiftTab' && !nextElement) {
5423
+ nextElement = document.getElementsByClassName('e-timeline-header-container')[0];
5424
+ }
5425
+ if (e.action === 'shiftTab' && $target.classList.contains('e-timeline-header-container')) {
5426
+ for (let i = this.parent.treeGrid.columns.length - 1; i > 0; i--) {
5427
+ if (this.parent.treeGrid.columns[i]['visible']) {
5428
+ nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[i];
5429
+ break;
5430
+ }
5431
+ }
5432
+ }
5380
5433
  this.tempNextElement = nextElement;
5381
5434
  if (!isNullOrUndefined(nextElement) && !isNullOrUndefined(nextElement['cellIndex'])) {
5382
5435
  if (this.parent.allowRowDragAndDrop) {
@@ -5400,7 +5453,7 @@ class GanttChart {
5400
5453
  }
5401
5454
  if (typeof nextElement !== 'string') {
5402
5455
  if ($target.classList.contains('e-rowcell') || $target.closest('.e-chart-row-cell') ||
5403
- $target.classList.contains('e-headercell') || $target.closest('.e-segmented-taskbar')) {
5456
+ $target.classList.contains('e-headercell') || $target.closest('.e-segmented-taskbar') || $target.classList.contains('e-timeline-header-container')) {
5404
5457
  e.preventDefault();
5405
5458
  }
5406
5459
  if (isTab && $target.classList.contains('e-rowdragdrop')) {
@@ -5436,11 +5489,21 @@ class GanttChart {
5436
5489
  }
5437
5490
  }
5438
5491
  else {
5439
- this.parent.treeGrid.grid.notify('key-pressed', e);
5492
+ if (!nextElement || nextElement && !nextElement.classList.contains('e-headercell')) {
5493
+ if ($target.classList.contains('e-headercell')) {
5494
+ this.manageFocus($target, 'remove', false);
5495
+ }
5496
+ if (!nextElement || $target.classList.contains('e-editedbatchcell')) {
5497
+ this.parent.treeGrid.grid.notify('key-pressed', e);
5498
+ }
5499
+ }
5440
5500
  }
5441
5501
  }
5442
5502
  else {
5443
- this.parent.treeGrid.grid.notify('key-pressed', e);
5503
+ if (!nextElement.classList.contains('e-headercell') && !nextElement.classList.contains('e-rowcell')
5504
+ && !nextElement.classList.contains('e-toolbar-item')) {
5505
+ this.parent.treeGrid.grid.notify('key-pressed', e);
5506
+ }
5444
5507
  }
5445
5508
  }
5446
5509
  if (!(this.parent.editModule && this.parent.editModule.cellEditModule
@@ -5452,7 +5515,8 @@ class GanttChart {
5452
5515
  else {
5453
5516
  this.manageFocus($target, 'remove', true);
5454
5517
  }
5455
- if ((nextElement.classList.contains('e-rowcell') && $target.nextElementSibling) || $target.classList.contains('e-right-label-container')) {
5518
+ if ((nextElement.classList.contains('e-rowcell') && $target.nextElementSibling && !$target.classList.contains('e-timeline-header-container'))
5519
+ || $target.classList.contains('e-right-label-container')) {
5456
5520
  if (!$target.classList.contains('e-rowcell')) {
5457
5521
  this.parent.treeGrid.grid.notify('key-pressed', e);
5458
5522
  const fmodule = getValue('focusModule', this.parent.treeGrid.grid);
@@ -5464,7 +5528,17 @@ class GanttChart {
5464
5528
  this.manageFocus(nextElement, 'add', false);
5465
5529
  }
5466
5530
  else {
5467
- this.manageFocus(nextElement, 'add', true);
5531
+ if (nextElement && (nextElement.classList.contains('e-toolbar-item') || nextElement.classList.contains('e-headercell')
5532
+ || nextElement.classList.contains("e-rowcell"))) {
5533
+ this.manageFocus($target, 'remove', false);
5534
+ this.manageFocus(nextElement, 'add', false);
5535
+ if ($target.classList.contains('e-treegrid')) {
5536
+ e.preventDefault();
5537
+ }
5538
+ }
5539
+ else {
5540
+ this.manageFocus(nextElement, 'add', true);
5541
+ }
5468
5542
  }
5469
5543
  this.parent.focusModule.setActiveElement(nextElement);
5470
5544
  }
@@ -5551,6 +5625,17 @@ class GanttChart {
5551
5625
  const childElement = this.getChildElement(rowElement, isTab);
5552
5626
  return childElement;
5553
5627
  }
5628
+ nextElement = $target;
5629
+ if (nextElement && nextElement.parentElement.classList.contains('e-toolbar-item') && this.parent.toolbarModule) {
5630
+ while (nextElement && nextElement.parentElement.classList.contains('e-toolbar-item') && nextElement.parentElement.nextElementSibling.classList.contains('e-toolbar-item')) {
5631
+ if (nextElement.parentElement.nextElementSibling.classList.contains('e-hidden')) {
5632
+ nextElement = nextElement.parentElement.nextElementSibling.childNodes[0];
5633
+ }
5634
+ else {
5635
+ return nextElement.parentElement.nextElementSibling;
5636
+ }
5637
+ }
5638
+ }
5554
5639
  }
5555
5640
  return null;
5556
5641
  }
@@ -8057,7 +8142,7 @@ class GanttTreeGrid {
8057
8142
  }
8058
8143
  } // eslint-disable-next-line
8059
8144
  durationValueAccessor(field, data, column) {
8060
- const ganttProp = (!isNullOrUndefined(data)) ? data.ganttProperties : null;
8145
+ const ganttProp = data.ganttProperties;
8061
8146
  if (!isNullOrUndefined(ganttProp)) {
8062
8147
  return this.parent.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);
8063
8148
  }
@@ -8683,7 +8768,7 @@ class ChartRows extends DateProcessor {
8683
8768
  createChartTable() {
8684
8769
  this.taskTable = createElement('table', {
8685
8770
  className: taskTable + ' ' + zeroSpacing, id: 'GanttTaskTable' + this.parent.element.id,
8686
- styles: 'z-index: 2;position: absolute;width:' + this.parent.timelineModule.totalTimelineWidth + 'px;',
8771
+ styles: 'position: absolute;width:' + this.parent.timelineModule.totalTimelineWidth + 'px;',
8687
8772
  attrs: { cellspacing: '0.25px' }
8688
8773
  });
8689
8774
  const colgroup = createElement('colgroup');
@@ -8767,7 +8852,7 @@ class ChartRows extends DateProcessor {
8767
8852
  taskbarInnerDiv = this.createDivElement('<div class="' + childTaskBarInnerDiv + ' ' + traceChildTaskBar +
8768
8853
  ' ' + (data.ganttProperties.isAutoSchedule ? '' : manualChildTaskBar) + '"' +
8769
8854
  'style="width:' + data.ganttProperties.width + 'px;height:' +
8770
- (this.taskBarHeight) + 'px;"></div>');
8855
+ (this.taskBarHeight) + 'px; margin-top :-1px"></div>');
8771
8856
  progressDiv = this.createDivElement('<div class="' + childProgressBarInnerDiv + ' ' +
8772
8857
  traceChildProgressBar + ' ' + (data.ganttProperties.isAutoSchedule ?
8773
8858
  '' : manualChildProgressBar) + '"' +
@@ -9246,15 +9331,8 @@ class ChartRows extends DateProcessor {
9246
9331
  milestoneNode = this.milestoneTemplateFunction(extend({ index: i }, data), this.parent, 'MilestoneTemplate', this.getTemplateID('MilestoneTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);
9247
9332
  }
9248
9333
  else {
9249
- const template = '<div class="' + traceMilestone + '" style="position:absolute;">' +
9250
- '<div class="' + milestoneTop + ' ' + ((!data.ganttProperties.startDate && !data.ganttProperties.endDate) ?
9251
- unscheduledMilestoneTop : '') + '" style="border-right-width:' +
9252
- this.milesStoneRadius + 'px;border-left-width:' + this.milesStoneRadius + 'px;border-bottom-width:' +
9253
- this.milesStoneRadius + 'px;"></div>' +
9254
- '<div class="' + milestoneBottom + ' ' + ((!data.ganttProperties.startDate && !data.ganttProperties.endDate) ?
9255
- unscheduledMilestoneBottom : '') + '" style="top:' +
9256
- (this.milesStoneRadius) + 'px;border-right-width:' + this.milesStoneRadius + 'px; border-left-width:' +
9257
- this.milesStoneRadius + 'px; border-top-width:' + this.milesStoneRadius + 'px;"></div></div>';
9334
+ const template = '<div class="' + traceMilestone + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;height:' +
9335
+ ((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;position:absolute;transform: rotate(45deg);top:' + (this.parent.rowHeight > 40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;"> </div>';
9258
9336
  milestoneNode = this.createDivElement(template);
9259
9337
  }
9260
9338
  return milestoneNode;
@@ -9282,25 +9360,9 @@ class ChartRows extends DateProcessor {
9282
9360
  getMilestoneBaselineNode() {
9283
9361
  const data = this.templateData;
9284
9362
  let baselineMilestoneHeight = this.parent.renderBaseline ? 5 : 2;
9285
- const template = '<div class="' + baselineMilestoneContainer + ' ' + '" style="' +
9286
- (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.baselineLeft - this.milesStoneRadius) + 'px;' +
9287
- 'margin-top:' + (-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + baselineMilestoneHeight) +
9288
- 'px">' + '<div class="' + baselineMilestoneDiv + '">' + '<div class="' + baselineMilestoneDiv +
9289
- ' ' + baselineMilestoneTop + '" ' +
9290
- 'style="top:' + (-this.milestoneHeight) + 'px;border-right:' + this.milesStoneRadius +
9291
- 'px solid transparent;border-left:' + this.milesStoneRadius +
9292
- 'px solid transparent;border-top:0px' +
9293
- 'solid transparent;border-bottom-width:' + this.milesStoneRadius + 'px;' +
9294
- 'border-bottom-style: solid;' + (this.baselineColor ? 'border-bottom-color: ' + this.baselineColor + ';' : '') +
9295
- '"></div>' +
9296
- '<div class="' + baselineMilestoneDiv + ' ' + baselineMilestoneBottom + '" ' +
9297
- 'style="top:' + (this.milesStoneRadius - this.milestoneHeight) + 'px;border-right:' + this.milesStoneRadius +
9298
- 'px solid transparent;border-left:' + this.milesStoneRadius +
9299
- 'px solid transparent;border-bottom:0px' +
9300
- 'solid transparent;border-top-width:' + this.milesStoneRadius + 'px;' +
9301
- 'border-top-style: solid;' +
9302
- (this.baselineColor ? 'border-top-color: ' + this.baselineColor + ';' : '') + '"></div>' +
9303
- '</div></div>';
9363
+ const template = '<div class="' + baselineMilestoneContainer + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight - 5 : this.taskBarHeight - 10) + 2) + 'px;height:' +
9364
+ ((this.parent.renderBaseline ? this.taskBarHeight - 5 : this.taskBarHeight - 10) + 2) + 'px;position:absolute;transform:rotate(45deg);' + (this.parent.enableRtl ? 'right:' : 'left:') + (this.parent.enableRtl ? (data.ganttProperties.left -
9365
+ (this.milestoneHeight / 2) + 3) : (data.ganttProperties.left - (this.milestoneHeight / 2) + 2)) + 'px;' + (this.baselineColor ? 'background-color: ' + this.baselineColor + ';' : '') + 'margin-top:' + ((-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + baselineMilestoneHeight) + 3) + 'px"> </div>';
9304
9366
  return this.createDivElement(template);
9305
9367
  }
9306
9368
  /**
@@ -9426,16 +9488,8 @@ class ChartRows extends DateProcessor {
9426
9488
  (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.width - Math.floor(((taskbarHeight / 5) + 8) / 5)) + 'px;height:' +
9427
9489
  ((taskbarHeight / 5) + 8) + 'px;border-right-width:' + taskbarHeight / 5 + 'px;border-bottom:' +
9428
9490
  taskbarHeight / 5 + 'px solid transparent;>' + '</div></div>' : '');
9429
- const milestoneTemplate = '<div class="' + manualParentMilestone + '" style="position:absolute;' +
9430
- (this.parent.enableRtl ? 'right:' : 'left:') +
9431
- (data.ganttProperties.left - data.ganttProperties.autoLeft - (this.milestoneHeight / 2)) +
9432
- 'px;width:' + (this.milesStoneRadius * 2) +
9433
- 'px;">' + '<div class="' + manualParentMilestoneTop + '" style="border-right-width:' +
9434
- this.milesStoneRadius + 'px;border-left-width:' + this.milesStoneRadius + 'px;border-bottom-width:' +
9435
- this.milesStoneRadius + 'px;"></div>' +
9436
- '<div class="' + manualParentMilestoneBottom + '" style="top:' +
9437
- (this.milesStoneRadius) + 'px;border-right-width:' + this.milesStoneRadius + 'px; border-left-width:' +
9438
- this.milesStoneRadius + 'px; border-top-width:' + this.milesStoneRadius + 'px;"></div></div>';
9491
+ const milestoneTemplate = '<div class="' + manualParentMilestone + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;height:' +
9492
+ ((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;position:absolute;transform: rotate(45deg);top:' + (this.parent.rowHeight > 40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;"> </div>';
9439
9493
  return this.createDivElement(data.ganttProperties.duration !== 0 ? template : milestoneTemplate);
9440
9494
  }
9441
9495
  /**
@@ -9460,8 +9514,8 @@ class ChartRows extends DateProcessor {
9460
9514
  this.getExpandClass(data) + ' ' + traceParentTaskBar + '"' +
9461
9515
  ' style="width:' + (data.ganttProperties.isAutoSchedule ? data.ganttProperties.width :
9462
9516
  data.ganttProperties.autoWidth) + 'px;height:' + (data.ganttProperties.isAutoSchedule ? this.taskBarHeight :
9463
- (tHeight * 3)) + 'px;margin-top:' + (data.ganttProperties.isAutoSchedule ? '' :
9464
- (tHeight * 2)) + 'px;">' +
9517
+ (tHeight * 3)) + 'px;margin-top:' + (data.ganttProperties.isAutoSchedule ? -1 :
9518
+ (tHeight * 2)) + 'px; ">' +
9465
9519
  '</div>');
9466
9520
  const progressBarInnerDiv = this.createDivElement('<div class="' + parentProgressBarInnerDiv + ' ' +
9467
9521
  this.getExpandClass(data) + ' ' + traceParentProgressBar + '"' +
@@ -9526,13 +9580,8 @@ class ChartRows extends DateProcessor {
9526
9580
  parentLabel && !parentLabel['elementRef'] && div.innerHTML !== '')
9527
9581
  progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent = parentLabel;
9528
9582
  }
9529
- const milestoneTemplate = '<div class="' + parentMilestone + '" style="position:absolute;">' +
9530
- '<div class="' + parentMilestoneTop + '" style="border-right-width:' +
9531
- this.milesStoneRadius + 'px;border-left-width:' + this.milesStoneRadius + 'px;border-bottom-width:' +
9532
- this.milesStoneRadius + 'px;"></div>' +
9533
- '<div class="' + parentMilestoneBottom + '" style="top:' +
9534
- (this.milesStoneRadius) + 'px;border-right-width:' + this.milesStoneRadius + 'px; border-left-width:' +
9535
- this.milesStoneRadius + 'px; border-top-width:' + this.milesStoneRadius + 'px;"></div></div>';
9583
+ const milestoneTemplate = '<div class="' + parentMilestone + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;height:' +
9584
+ ((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;position:absolute;transform: rotate(45deg);top:' + (this.parent.rowHeight > 40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;"> </div>';
9536
9585
  template[0].appendChild([].slice.call(progressBarInnerDiv)[0]);
9537
9586
  parentTaskbarNode = data.ganttProperties.isMilestone ?
9538
9587
  this.createDivElement(data.ganttProperties.isAutoSchedule ? milestoneTemplate : '') : template;
@@ -9909,8 +9958,8 @@ class ChartRows extends DateProcessor {
9909
9958
  this.milestoneMarginTop = Math.floor((this.parent.rowHeight - this.milestoneHeight) / 2);
9910
9959
  this.milesStoneRadius = Math.floor((this.milestoneHeight) / 2);
9911
9960
  this.baselineTop = -(Math.floor((this.parent.rowHeight - (this.taskBarHeight + this.taskBarMarginTop))) - 4);
9912
- this.connectorPointWidth = this.parent.isAdaptive ? Math.round(this.taskBarHeight / 2) : 8;
9913
- this.connectorPointMargin = Math.floor((this.taskBarHeight / 2) - (this.connectorPointWidth / 2));
9961
+ this.connectorPointWidth = this.parent.isAdaptive ? Math.round(this.taskBarHeight / 2) : 10;
9962
+ this.connectorPointMargin = Math.floor((this.taskBarHeight / 2) - (this.connectorPointWidth / 2)) - 1;
9914
9963
  }
9915
9964
  /**
9916
9965
  * Function used to refresh Gantt rows.
@@ -9978,7 +10027,6 @@ class ChartRows extends DateProcessor {
9978
10027
  const tempTemplateData = this.parent.currentViewData[i];
9979
10028
  if (this.parent.viewType === 'ResourceView') {
9980
10029
  if (this.parent.editModule && this.parent.editModule.isResourceTaskDeleted || this.parent.isFromOnPropertyChange) {
9981
- this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();
9982
10030
  this.parent.editModule.isResourceTaskDeleted = false;
9983
10031
  }
9984
10032
  if (!tempTemplateData.expanded && this.parent.enableMultiTaskbar) {
@@ -9997,11 +10045,12 @@ class ChartRows extends DateProcessor {
9997
10045
  }
9998
10046
  }
9999
10047
  this.ganttChartTableBody.replaceChildren(...dupChartBody.childNodes);
10048
+ this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();
10000
10049
  }
10001
10050
  this.parent.renderTemplates();
10002
10051
  this.triggerQueryTaskbarInfo();
10003
10052
  this.parent.modifiedRecords = [];
10004
- if (this.parent.viewType === 'ResourceView' && this.parent.showOverAllocation) {
10053
+ if (this.parent.viewType == 'ResourceView' && this.parent.showOverAllocation) {
10005
10054
  this.updateOverlapped();
10006
10055
  }
10007
10056
  if (collapsedResourceRecord.length) {
@@ -10074,7 +10123,7 @@ class ChartRows extends DateProcessor {
10074
10123
  else if (this.templateData.ganttProperties.isMilestone) {
10075
10124
  const milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);
10076
10125
  if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {
10077
- taskbarContainerNode[0].appendChild([].slice.call(milestoneTemplateNode)[0]);
10126
+ append(milestoneTemplateNode, taskbarContainerNode[0]);
10078
10127
  }
10079
10128
  if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&
10080
10129
  this.templateData.ganttProperties.baselineEndDate) {
@@ -10250,9 +10299,9 @@ class ChartRows extends DateProcessor {
10250
10299
  const classCollections = this.getClassName(args);
10251
10300
  if (args.taskbarType === 'Milestone') {
10252
10301
  args.milestoneColor = taskbarElement.querySelector(classCollections[0]) ?
10253
- getComputedStyle(taskbarElement.querySelector(classCollections[0])).borderBottomColor : null;
10302
+ getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor : null;
10254
10303
  args.baselineColor = trElement.querySelector(classCollections[1]) ?
10255
- getComputedStyle(trElement.querySelector(classCollections[1])).borderBottomColor :
10304
+ getComputedStyle(trElement.querySelector(classCollections[1])).backgroundColor :
10256
10305
  (trElement.querySelector('.' + baselineBar) ? getComputedStyle(trElement.querySelector('.' + baselineBar)).backgroundColor : null);
10257
10306
  }
10258
10307
  else if (taskbarElement) {
@@ -10320,14 +10369,12 @@ class ChartRows extends DateProcessor {
10320
10369
  }
10321
10370
  if (args.taskbarType === 'Milestone') {
10322
10371
  if (taskbarElement.querySelector(classCollections[0]) &&
10323
- getComputedStyle(taskbarElement.querySelector(classCollections[0])).borderBottomColor !== args.milestoneColor) {
10324
- taskbarElement.querySelector(classCollections[0]).style.borderBottomColor = args.milestoneColor;
10325
- taskbarElement.querySelector('.' + milestoneBottom).style.borderTopColor = args.milestoneColor;
10372
+ getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor !== args.milestoneColor) {
10373
+ taskbarElement.querySelector(classCollections[0]).style.backgroundColor = args.milestoneColor;
10326
10374
  }
10327
10375
  if (trElement.querySelector(classCollections[1]) &&
10328
- getComputedStyle(trElement.querySelector(classCollections[1])).borderTopColor !== args.baselineColor) {
10329
- trElement.querySelector(classCollections[1]).style.borderBottomColor = args.baselineColor;
10330
- trElement.querySelector('.' + baselineMilestoneBottom).style.borderTopColor = args.baselineColor;
10376
+ getComputedStyle(trElement.querySelector(classCollections[1])).backgroundColor !== args.baselineColor) {
10377
+ trElement.querySelector(classCollections[1]).style.backgroundColor = args.baselineColor;
10331
10378
  }
10332
10379
  if (trElement.querySelector('.' + baselineBar) &&
10333
10380
  getComputedStyle(trElement.querySelector('.' + baselineBar)).borderTopColor !== args.baselineColor) {
@@ -10408,9 +10455,9 @@ class ChartRows extends DateProcessor {
10408
10455
  getClassName(args) {
10409
10456
  const classCollection = [];
10410
10457
  classCollection.push('.' + (args.taskbarType === 'ParentTask' ?
10411
- traceParentTaskBar : args.taskbarType === 'ChildTask' ? traceChildTaskBar : milestoneTop));
10458
+ traceParentTaskBar : args.taskbarType === 'ChildTask' ? traceChildTaskBar : traceMilestone));
10412
10459
  classCollection.push('.' + (args.taskbarType === 'ParentTask' ?
10413
- traceParentProgressBar : args.taskbarType === 'ChildTask' ? traceChildProgressBar : baselineMilestoneTop));
10460
+ traceParentProgressBar : args.taskbarType === 'ChildTask' ? traceChildProgressBar : baselineMilestoneContainer));
10414
10461
  return classCollection;
10415
10462
  }
10416
10463
  /**
@@ -10423,7 +10470,7 @@ class ChartRows extends DateProcessor {
10423
10470
  templateCompiler(template) {
10424
10471
  if (!isNullOrUndefined(template) && template !== '') {
10425
10472
  try {
10426
- if (document.querySelectorAll(template).length) {
10473
+ if (typeof template !== 'function' && document.querySelectorAll(template).length) {
10427
10474
  return compile(document.querySelector(template).innerHTML.trim(), this.parent);
10428
10475
  }
10429
10476
  else {
@@ -11573,11 +11620,28 @@ class Dependency {
11573
11620
  */
11574
11621
  class ConnectorLine {
11575
11622
  constructor(ganttObj) {
11623
+ this.transform = '';
11624
+ this.connectorLinePath = '';
11625
+ this.arrowPath = '';
11576
11626
  this.expandedRecords = [];
11577
11627
  this.parent = ganttObj;
11578
11628
  this.dependencyViewContainer =
11579
- createElement('div', { className: dependencyViewContainer });
11629
+ createElement('div', { className: dependencyViewContainer,
11630
+ });
11631
+ Object.assign(this.dependencyViewContainer.style, {
11632
+ width: "100%",
11633
+ height: "100%",
11634
+ zIndex: 2,
11635
+ position: "absolute",
11636
+ pointerEvents: "none"
11637
+ });
11638
+ this.renderer = new SvgRenderer(this.parent.element.id);
11580
11639
  this.initPublicProp();
11640
+ this.svgObject = this.renderer.createSvg({
11641
+ id: this.parent.element.id + '_svg'
11642
+ });
11643
+ this.svgObject.setAttribute('height', '100%');
11644
+ this.svgObject.setAttribute('width', '100%');
11581
11645
  }
11582
11646
  /**
11583
11647
  * To get connector line gap.
@@ -11606,7 +11670,7 @@ class ConnectorLine {
11606
11670
  }
11607
11671
  getTaskbarMidpoint(isMilestone) {
11608
11672
  return Math.floor(isMilestone ?
11609
- (this.parent.chartRowsModule.milestoneMarginTop + (this.parent.chartRowsModule.milestoneHeight / 2)) :
11673
+ (this.parent.chartRowsModule.milestoneMarginTop + (this.parent.chartRowsModule.milestoneHeight / 2)) + 1 :
11610
11674
  (this.parent.chartRowsModule.taskBarMarginTop + (this.parent.chartRowsModule.taskBarHeight / 2))) + 1;
11611
11675
  }
11612
11676
  /**
@@ -11655,6 +11719,10 @@ class ConnectorLine {
11655
11719
  connectorObj.connectorLineId = 'parent' + parentId + 'child' + childId;
11656
11720
  connectorObj.milestoneParent = parentGanttRecord.isMilestone ? true : false;
11657
11721
  connectorObj.milestoneChild = childGanttRecord.isMilestone ? true : false;
11722
+ connectorObj.isManualParent = (!(this.parent.flatData[parentIndex].ganttProperties.isAutoSchedule) && this.parent.flatData[parentIndex].hasChildRecords);
11723
+ connectorObj.isManualChild = (!(this.parent.flatData[childIndex].ganttProperties.isAutoSchedule) && this.parent.flatData[childIndex].hasChildRecords);
11724
+ connectorObj.parentEndPoint = connectorObj.parentLeft + connectorObj.parentWidth;
11725
+ connectorObj.childEndPoint = connectorObj.childLeft + connectorObj.childWidth;
11658
11726
  if (isNullOrUndefined(isScheduledTask(parentGanttRecord)) || isNullOrUndefined(isScheduledTask(childGanttRecord))) {
11659
11727
  return null;
11660
11728
  }
@@ -11677,8 +11745,8 @@ class ConnectorLine {
11677
11745
  connectorLine$$1 = connectorLine$$1 + this.getConnectorLineTemplate(connectorLinesCollection[index]);
11678
11746
  ariaConnector.push(connectorLinesCollection[index]);
11679
11747
  }
11680
- this.dependencyViewContainer.innerHTML = connectorLine$$1;
11681
- const childNodes = this.parent.connectorLineModule.dependencyViewContainer.childNodes;
11748
+ this.svgObject.innerHTML = connectorLine$$1;
11749
+ const childNodes = this.parent.connectorLineModule.svgObject.childNodes;
11682
11750
  for (let i = 0; i < childNodes.length; i++) {
11683
11751
  const innerChild = childNodes[i].childNodes;
11684
11752
  for (let j = 0; j < innerChild.length; j++) {
@@ -11686,9 +11754,10 @@ class ConnectorLine {
11686
11754
  innerChild[j].setAttribute('aria-label', ariaString);
11687
11755
  }
11688
11756
  }
11689
- this.parent.ganttChartModule.chartBodyContent.appendChild(this.dependencyViewContainer);
11690
- for (let i = 0; i < this.dependencyViewContainer.children.length; i++) {
11691
- this.dependencyViewContainer.children[i].children[0].setAttribute('tabindex', '-1');
11757
+ this.parent.ganttChartModule.chartBodyContent.insertBefore(this.dependencyViewContainer, this.parent.ganttChartModule.chartBodyContent.lastChild);
11758
+ this.dependencyViewContainer.appendChild(this.svgObject);
11759
+ for (let i = 0; i < this.svgObject.children.length; i++) {
11760
+ this.svgObject.children[i].children[0].setAttribute('tabindex', '-1');
11692
11761
  }
11693
11762
  }
11694
11763
  /**
@@ -11946,16 +12015,15 @@ class ConnectorLine {
11946
12015
  const height = this.getHeightValue(data);
11947
12016
  const isMilestoneParent = data.milestoneParent ? true : false;
11948
12017
  const isMilestone = data.milestoneChild ? true : false;
11949
- let connectorContainer = '';
11950
12018
  const isVirtual = this.parent.virtualScrollModule && this.parent.enableVirtualization;
11951
12019
  const connectorLine$$1 = this.getPosition(data, this.getParentPosition(data), height);
12020
+ const rowPosition = this.getPosition(data, this.getParentPosition(data), height);
12021
+ let rowPositionHeight = rowPosition.top;
11952
12022
  let isMilestoneValue = 0;
11953
12023
  if (this.parent.renderBaseline) {
11954
12024
  isMilestoneValue = (data.milestoneParent && data.milestoneChild) ? 0 : data.milestoneParent ? -5 : data.milestoneChild ? 5 : 0;
11955
12025
  }
11956
12026
  let heightValue = isVirtual ? connectorLine$$1.height : (height + isMilestoneValue);
11957
- let borderTopWidth = 0;
11958
- let addTop = 0;
11959
12027
  let parentOverlapTopValue = 0;
11960
12028
  let childOverlapTopValue = 0;
11961
12029
  let count = 0;
@@ -11992,454 +12060,318 @@ class ConnectorLine {
11992
12060
  }
11993
12061
  if (isValid) {
11994
12062
  if (((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {
11995
- addTop = -11;
12063
+
11996
12064
  }
11997
12065
  else if (!((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {
11998
12066
  if (data.childIndex > data.parentIndex) {
11999
- if (!fromRecordIsParent && toRecordIsParent) {
12000
- borderTopWidth = -11;
12001
- }
12002
- else {
12003
- borderTopWidth = 11;
12004
- addTop = -11;
12005
- }
12067
+
12006
12068
  }
12007
12069
  else {
12008
- if ((fromRecordIsParent && !toRecordIsParent)) {
12009
- borderTopWidth = -11;
12010
- }
12011
- else {
12012
- borderTopWidth = 11;
12013
- addTop = -11;
12014
- }
12070
+
12015
12071
  }
12016
12072
  }
12017
12073
  if (this.parent.currentViewData[data.parentIndex].ganttProperties.isMilestone) {
12018
12074
  if (data.parentIndex > data.childIndex) {
12019
- addTop = -5;
12020
- borderTopWidth = 10;
12075
+
12021
12076
  }
12022
12077
  else if (data.type === 'SS' || data.type === 'FF') {
12023
- addTop = -5;
12078
+
12024
12079
  }
12025
12080
  }
12026
12081
  else if (this.parent.currentViewData[data.childIndex].ganttProperties.isMilestone) {
12027
12082
  if (data.parentIndex > data.childIndex) {
12028
- addTop = 5;
12029
- borderTopWidth = -10;
12083
+
12030
12084
  }
12031
12085
  else if (data.type === 'SS' || data.type === 'FF') {
12032
- addTop = 5;
12086
+
12033
12087
  }
12034
12088
  }
12035
12089
  }
12036
12090
  }
12037
12091
  if (this.getParentPosition(data)) {
12038
- connectorContainer = '<div id="ConnectorLine' + data.connectorLineId + '" style="background-color:black">';
12039
- let div = '<div class="' + connectorLineContainer +
12040
- '" tabindex="-1" style="';
12041
- let direction = this.parent.enableRtl ? 'right:' : 'left:';
12042
- const eLine = '<div class="' + connectorLine + '" style="' +
12043
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
12044
- let rightArrow;
12045
- let leftArrow;
12046
- if (this.parent.enableRtl) {
12047
- leftArrow = '<div class="' + connectorLineRightArrow + '" style="' +
12048
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
12049
- rightArrow = '<div class="' + connectorLineLeftArrow + '" style="' +
12050
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
12051
- }
12052
- else {
12053
- rightArrow = '<div class="' + connectorLineRightArrow + '" style="' +
12054
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
12055
- leftArrow = '<div class="' + connectorLineLeftArrow + '" style="' +
12056
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
12057
- }
12058
- const duplicateStingOne = leftArrow + (isMilestone ? (this.parent.enableRtl ? 'right:0px;' : 'left:0px;') : '') +
12059
- this.getBorderStyles((this.parent.enableRtl ? 'left' : 'right'), 10) +
12060
- 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
12061
- 'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
12062
- const duplicateStingTwo = this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
12063
- 'top:' + (-6) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
12064
- 'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
12065
- const duplicateStingThree = this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>' + eLine +
12066
- 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12067
- this.getBorderStyles('top', (heightValue + borderTopWidth - (this.lineStroke - 1))) + 'position:relative;"></div>';
12068
- const duplicateStingFour = leftArrow + (this.parent.enableRtl ? 'right:' : 'left:') +
12069
- (((data.childLeft + data.childWidth) - (data.parentLeft)) + 10) + 'px;' +
12070
- this.getBorderStyles((this.parent.enableRtl ? 'left' : 'right'), 10);
12071
- const duplicateStingFive = 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;' +
12072
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12092
+ // Create the group element
12093
+ this.transform = this.parent.enableRtl ? `translate(${this.parent.timelineModule.totalTimelineWidth}, 0) scale(-1, 1)` : '';
12094
+ this.connectorId = "ConnectorLine" + data.connectorLineId;
12095
+ this.groupObject = this.renderer.createGroup({
12096
+ id: this.connectorId,
12097
+ transform: this.transform,
12098
+ style: 'pointer-events: stroke',
12099
+ class: connectorLineContainer,
12100
+ });
12101
+ // Create the path element for the connector line
12102
+ this.connectorPath = this.renderer.drawPath({
12103
+ class: connectorLineSVG,
12104
+ d: this.connectorLinePath,
12105
+ fill: 'transparent',
12106
+ "stroke-width": 1,
12107
+ });
12108
+ // Create the path element for the arrow
12109
+ this.arrowlinePath = this.renderer.drawPath({
12110
+ d: this.arrowPath,
12111
+ class: connectorLineArrow
12112
+ });
12113
+ // Append the path element to the group element
12114
+ this.groupObject.appendChild(this.connectorPath);
12115
+ this.groupObject.appendChild(this.arrowlinePath);
12073
12116
  if (this.getParentPosition(data) === 'FSType1') {
12074
- div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12075
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12076
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType1">';
12077
- div = div + eLine;
12078
- div = div + direction + (isMilestoneParent ? -1 : 0) + 'px;width:' + (isMilestoneParent ?
12079
- ((((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10) + 1) :
12080
- (((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10)) + 'px;' +
12081
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12082
- div = div + eLine;
12083
- div = div + direction + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;' +
12084
- 'width:0px;' + this.getBorderStyles('right', this.lineStroke) +
12085
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
12086
- div = div + eLine;
12087
- div = div + direction + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;width:10px;' +
12088
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12089
- div = div + rightArrow;
12090
- div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
12091
- this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
12092
- 'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
12117
+ this.taskLineValue = data.milestoneChild ? 1 : 0;
12118
+ this.x1 = data.parentEndPoint + (data.milestoneParent ? -1 : (data.milestoneChild ? -1 : 0));
12119
+ this.x2 = data.milestoneParent ? ((((data.childLeft - (data.parentEndPoint + 10)) + 1) - 10) + 1) : (((data.childLeft - (data.parentEndPoint + 10))) - 10);
12120
+ this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12121
+ this.y2 = heightValue + this.taskLineValue;
12122
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12123
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12124
+ this.connectorLinePath = "M " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x2) + " " + (this.y1 + this.y2) +
12125
+ " L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.y2);
12126
+ this.arrowPath = "M " + (this.x1 + this.x2 + 18) + " " + (this.y1 + this.y2 + this.manualChild) +
12127
+ " L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +
12128
+ " L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12093
12129
  }
12094
12130
  if (this.getParentPosition(data) === 'FSType2') {
12095
- div = div + direction + data.parentLeft + 'px;top:' + (isVirtual ? connectorLine$$1.top : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop +
12096
- this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12097
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType2">';
12098
- div = div + eLine;
12099
- div = div + direction + (isMilestoneParent ? data.parentWidth - 1 : data.parentWidth) + 'px;width:' +
12100
- (isMilestoneParent ? 11 : 10) + 'px;' +
12101
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12102
- div = div + eLine;
12103
- div = div + direction + (data.parentWidth + 10 - this.lineStroke) + 'px;' +
12104
- this.getBorderStyles('left', this.lineStroke) + 'width:0px;' +
12105
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
12106
- div = div + eLine;
12107
- div = div + direction + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 20)) + 'px;' +
12108
- 'width:' + (((data.parentLeft + data.parentWidth) - data.childLeft) + 30) + 'px;' +
12109
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12110
- div = div + eLine;
12111
- div = div + direction + (data.parentWidth - (((data.parentLeft +
12112
- data.parentWidth) - data.childLeft) + 20)) + 'px;width:0px;' +
12113
- this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) +
12114
- this.getBorderStyles('left', this.lineStroke) + 'position:relative;"></div>';
12115
- div = div + eLine;
12116
- div = div + direction + (data.parentWidth - (((data.parentLeft +
12117
- data.parentWidth) - data.childLeft) + 20)) + 'px;width:10px;' +
12118
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12119
- div = div + rightArrow;
12120
- div = div + direction + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 10)) + 'px;' +
12121
- this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
12122
- 'border-top-width:' + (5 + this.lineStroke) + 'px;top:' + (-6 - this.lineStroke) +
12123
- 'px;width:0;height:0;position:relative;"></div></div>';
12131
+ this.taskLineValue = data.milestoneChild ? 1 : 0;
12132
+ this.x1 = data.parentLeft + (data.milestoneChild ? -1 : 0);
12133
+ this.x2 = data.parentWidth + (data.milestoneParent ? 1 : 0);
12134
+ this.x3 = this.x2 + (data.milestoneParent ? 11 : 10);
12135
+ this.x4 = data.parentWidth - ((data.parentEndPoint - data.childLeft) + 20);
12136
+ this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12137
+ this.y2 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;
12138
+ this.y3 = this.getconnectorLineGap(data);
12139
+ this.y4 = this.y1 + this.y2 - ((this.y1 + this.y2) % data.rowHeight);
12140
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12141
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12142
+ this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " " + " L " + (this.x1 + this.x3) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x3) + " " + this.y4 +
12143
+ " L " + (this.x1 + this.x4) + " " + this.y4 + " L " + (this.x1 + this.x4) + " " + (this.y1 + this.y2 + this.y3) + " L " + (this.x1 + this.x4 + 11) + " " + (this.y1 + this.y2 + this.y3);
12144
+ this.arrowPath = "M " + (this.x1 + this.x4 + 18) + " " + (this.y1 + this.y2 + this.y3 + this.manualChild) +
12145
+ " L " + (this.x1 + this.x4 + 11) + " " + (this.y1 + this.y2 + this.y3 - (4 + this.lineStroke) + this.manualChild) +
12146
+ " L " + (this.x1 + this.x4 + 11) + " " + (this.y1 + this.y2 + this.y3 + 4 + this.lineStroke + this.manualChild) + " Z";
12124
12147
  }
12125
12148
  if (this.getParentPosition(data) === 'FSType3') {
12126
- div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12127
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12128
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType3">';
12129
- div = div + rightArrow;
12130
- div = div + direction + '10px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
12131
- 'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' + (5 + this.lineStroke) + 'px;' +
12132
- 'top:' + (-6) + 'px;width:0;height:0;position:relative;"></div>';
12133
- div = div + eLine;
12134
- div = div + 'width:10px;' + this.getBorderStyles('top', this.lineStroke) +
12135
- 'position:relative;top:' + (-(6 + (5 + this.lineStroke) + Math.round(this.lineStroke / 2))) + 'px;"></div>';
12136
- div = div + eLine;
12137
- div = div + 'width:' + this.lineStroke + 'px;' + this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke + 1)) +
12138
- 'position:relative;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
12139
- div = div + eLine;
12140
- div = div + 'width:' + (((data.parentLeft + data.parentWidth) - data.childLeft) + 30) + 'px;' +
12141
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;top:' +
12142
- (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
12143
- div = div + eLine;
12144
- div = div + direction + (((data.parentLeft + data.parentWidth) - data.childLeft) + (30 - this.lineStroke)) +
12145
- 'px;width:0px;' + 'height:' + (this.getconnectorLineGap(data) - this.lineStroke) + 'px;' +
12146
- this.getBorderStyles('left', this.lineStroke) + 'position:relative;' +
12147
- 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
12148
- div = div + eLine;
12149
- div = div + (isMilestoneParent ? direction + (((data.parentLeft +
12150
- data.parentWidth) - data.childLeft) + (18 - this.lineStroke)) + 'px;width:' + (12 + this.lineStroke) + 'px;' : direction +
12151
- (((data.parentLeft + data.parentWidth) - data.childLeft) + 20) + 'px;width:10px;') +
12152
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;top:' +
12153
- (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div></div>';
12149
+ this.taskLineValue = data.milestoneChild ? 1 : 0;
12150
+ this.point1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
12151
+ this.x1 = (data.childLeft + (data.milestoneChild ? -1 : 0) + (data.milestoneParent ? 1 : 0)) - 20;
12152
+ this.x2 = (data.parentEndPoint - data.childLeft) + 30;
12153
+ this.y1 = this.point1 + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12154
+ this.y2 = this.point1 + heightValue - this.getconnectorLineGap(data) + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneChild ? -10 : 0) : 0);
12155
+ this.y3 = this.getconnectorLineGap(data) + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12156
+ this.y4 = this.y2 - (this.y2 % data.rowHeight);
12157
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12158
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12159
+ this.connectorLinePath = "M " + (this.x1 + 12) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + this.y4 +
12160
+ " L " + (this.x1 + this.x2) + " " + this.y4 + " L " + (this.x1 + this.x2) + " " + (this.y2 + this.y3) + " L " + (this.x1 + this.x2 - 12) + " " + (this.y2 + this.y3);
12161
+ this.arrowPath = "M " + (this.x1 + 18) + " " + (this.y1 + this.manualChild) +
12162
+ " L " + (this.x1 + 11) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12163
+ " L " + (this.x1 + 11) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12154
12164
  }
12155
12165
  if (this.getParentPosition(data) === 'FSType4') {
12156
- div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12157
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12158
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType4">';
12159
- div = div + rightArrow;
12160
- div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
12161
- this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6) + 'px;' +
12162
- 'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
12163
- (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
12164
- div = div + eLine;
12165
- div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth) - 20) +
12166
- 'px;top:' + (-(6 + (5 + this.lineStroke) + Math.round(this.lineStroke / 2))) + 'px;width:10px;' +
12167
- this.getBorderStyles('top', this.lineStroke) +
12168
- 'position:relative;"></div>';
12169
- div = div + eLine;
12170
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' + direction +
12171
- (data.childLeft - (data.parentLeft + data.parentWidth) - 20) + 'px;width:0px;' +
12172
- this.getBorderStyles('left', this.lineStroke) +
12173
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
12174
- div = div + eLine;
12175
- div = div + (isMilestoneParent ? direction + '-1px;' : '') + 'top:' +
12176
- (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
12177
- (isMilestoneParent ? ((data.childLeft - (data.parentLeft + data.parentWidth + 20) + 1) + this.lineStroke) :
12178
- ((data.childLeft - (data.parentLeft + data.parentWidth + 20)) + this.lineStroke)) + 'px;' +
12179
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
12166
+ this.point1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
12167
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12168
+ this.x1 = data.parentEndPoint + (data.milestoneChild ? -1 : 0) + (data.milestoneParent ? 1 : 0);
12169
+ this.x2 = data.childLeft - data.parentEndPoint - 20;
12170
+ this.y1 = this.point1 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12171
+ this.y2 = this.point1 + heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12172
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12173
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12174
+ this.connectorLinePath = "M " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x2) + " " + this.y2 +
12175
+ " L " + this.x1 + " " + this.y2;
12176
+ this.arrowPath = "M " + (this.x1 + this.x2 + 18) + " " + (this.y1 + this.manualChild) +
12177
+ " L " + (this.x1 + this.x2 + 11) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12178
+ " L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12180
12179
  }
12181
12180
  if (this.getParentPosition(data) === 'SSType4') {
12182
- div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12183
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12184
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType4">';
12185
- div = div + rightArrow;
12186
- div = div + direction + (data.childLeft - data.parentLeft) + 'px;' + duplicateStingTwo;
12187
- div = div + eLine;
12188
- div = div + 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;width:' +
12189
- (data.childLeft - data.parentLeft) + 'px;' + duplicateStingThree;
12190
- div = div + eLine;
12191
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:10px;' +
12192
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
12181
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12182
+ this.point1 = heightValue + this.taskLineValue;
12183
+ this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
12184
+ this.x1 = data.parentLeft - 8;
12185
+ this.x2 = data.childLeft - data.parentLeft;
12186
+ this.y1 = this.point2 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12187
+ this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12188
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12189
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12190
+ this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) +
12191
+ " L " + this.x1 + " " + this.y2 + " L " + (this.x1 + 10) + " " + this.y2;
12192
+ this.arrowPath = "M " + (this.x1 + this.x2 + 8) + " " + (this.y1 + this.manualChild) +
12193
+ " L " + (this.x1 + this.x2) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12194
+ " L " + (this.x1 + this.x2) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12193
12195
  }
12194
12196
  if (this.getParentPosition(data) === 'SSType3') {
12195
- div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12196
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12197
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType3">';
12198
- div = div + rightArrow;
12199
- div = div + direction + '10px;' + duplicateStingTwo;
12200
- div = div + eLine;
12201
- div = div + 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;width:10px;' + duplicateStingThree;
12202
- div = div + eLine;
12203
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
12204
- (data.parentLeft - data.childLeft + 21) + 'px;' +
12205
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
12197
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
12198
+ this.point1 = heightValue + this.taskLineValue;
12199
+ this.x1 = data.childLeft - 20;
12200
+ this.y1 = (data.milestoneChild ? 1 : 0) + ((this.parent.enableVirtualization ? rowPositionHeight : (!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild))) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12201
+ this.x2 = data.parentLeft - data.childLeft + 21;
12202
+ this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild ? -11 : data.milestoneParent ? 10 : 0) : 0);
12203
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12204
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12205
+ this.connectorLinePath = "M " + (this.x1 + 12) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) +
12206
+ " L " + this.x1 + " " + this.y2 + " L " + (this.x1 + this.x2) + " " + this.y2;
12207
+ this.arrowPath = "M " + (this.x1 + 20) + " " + (this.y1 + this.manualChild) +
12208
+ " L " + (this.x1 + 12) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12209
+ " L " + (this.x1 + 12) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12206
12210
  }
12207
12211
  if (this.getParentPosition(data) === 'SSType2') {
12208
- div = div + direction + setInnerElementLeftSSType2 + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12209
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12210
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType2">';
12211
- div = div + eLine;
12212
- div = div + 'width:' + (setInnerChildWidthSSType2 + 1) + 'px;' +
12213
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12214
- div = div + eLine;
12215
- div = div + 'width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12216
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
12217
- div = div + eLine;
12218
- div = div + 'width:' + setInnerElementWidthSSType2 + 'px;' +
12219
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12220
- div = div + rightArrow;
12221
- div = div + direction + setInnerElementWidthSSType2 + 'px;' +
12222
- this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
12223
- 'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
12224
- (5 + this.lineStroke) + 'px;width:0;' +
12225
- 'height:0;position:relative;"></div></div>';
12212
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
12213
+ this.point1 = heightValue + this.taskLineValue;
12214
+ this.x1 = setInnerElementLeftSSType2;
12215
+ this.x2 = setInnerChildWidthSSType2 + 1;
12216
+ this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12217
+ this.y2 = this.y1 + this.point1;
12218
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12219
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12220
+ this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + this.y2 +
12221
+ " L " + (this.x1 + setInnerElementWidthSSType2) + " " + this.y2;
12222
+ this.arrowPath = "M " + (this.x1 + setInnerElementWidthSSType2 + 8) + " " + (this.y2 + this.manualChild) +
12223
+ " L " + (this.x1 + setInnerElementWidthSSType2) + " " + (this.y2 - (4 + this.lineStroke) + this.manualChild) +
12224
+ " L " + (this.x1 + setInnerElementWidthSSType2) + " " + (this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12226
12225
  }
12227
12226
  if (this.getParentPosition(data) === 'SSType1') {
12228
- div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12229
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop +
12230
- this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12231
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType1">';
12232
- div = div + eLine;
12233
- div = div + 'width:' + (data.parentLeft - data.childLeft + 21) + 'px;' +
12234
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12235
- div = div + eLine;
12236
- div = div + 'width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12237
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
12238
- div = div + eLine;
12239
- div = div + 'width:10px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12240
- div = div + rightArrow;
12241
- div = div + direction + '10px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
12242
- 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
12243
- 'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
12227
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
12228
+ this.point1 = heightValue + this.taskLineValue;
12229
+ this.x1 = data.childLeft - 20;
12230
+ this.x2 = data.parentLeft - data.childLeft + 21;
12231
+ this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);
12232
+ this.y2 = this.y1 + this.point1;
12233
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12234
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12235
+ this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + this.y2 +
12236
+ " L " + (this.x1 + 12) + " " + this.y2;
12237
+ this.arrowPath = "M " + (this.x1 + 20) + " " + (this.y2 + this.manualChild) +
12238
+ " L " + (this.x1 + 12) + " " + (this.y2 - (4 + this.lineStroke) + this.manualChild) +
12239
+ " L " + (this.x1 + 12) + " " + (this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12244
12240
  }
12245
12241
  if (this.getParentPosition(data) === 'FFType1') {
12246
- div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12247
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12248
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType1">';
12249
- div = div + eLine;
12250
- div = div + direction + (isMilestoneParent ? (((data.parentLeft + data.parentWidth) -
12251
- (data.childLeft + data.childWidth)) - 1) : ((data.parentLeft + data.parentWidth) -
12252
- (data.childLeft + data.childWidth))) + 'px;' +
12253
- 'width:' + (isMilestoneParent ? (21 + this.lineStroke) : (20 + this.lineStroke)) + 'px;' +
12254
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12255
- div = div + eLine;
12256
- div = div + direction + (((data.parentLeft + data.parentWidth) -
12257
- (data.childLeft + data.childWidth)) + 20) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12258
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
12259
- div = div + eLine;
12260
- div = div + direction + (isMilestone ? 4 : 10) + 'px;width:' + (isMilestone ?
12261
- (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + (16 + this.lineStroke)) :
12262
- (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + (10 + this.lineStroke))) + 'px;' +
12263
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12264
- div = div + leftArrow;
12265
- div = div + (isMilestone ? direction + '0px;' : '') + this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) +
12266
- 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
12267
- 'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
12242
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? 1 : 0);
12243
+ this.x1 = data.childEndPoint;
12244
+ this.x2 = data.parentEndPoint + (data.milestoneParent ? -1 : 0);
12245
+ this.x3 = data.milestoneParent ? 22 : 21;
12246
+ this.x4 = data.milestoneChild ? 4 : 8;
12247
+ this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12248
+ this.y2 = heightValue + this.taskLineValue;
12249
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12250
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12251
+ this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x2 + this.x3) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x2 + this.x3) + " " + (this.y1 + this.y2) +
12252
+ " L " + (this.x1 + this.x4) + " " + (this.y1 + this.y2);
12253
+ this.arrowPath = "M " + this.x1 + " " + (this.y1 + this.y2 + this.manualChild) +
12254
+ " L " + (this.x1 + 8) + " " + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +
12255
+ " L " + (this.x1 + 8) + " " + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12268
12256
  }
12269
12257
  if (this.getParentPosition(data) === 'FFType2') {
12270
- div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12271
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12272
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType2">';
12273
- div = div + eLine;
12274
- div = div + (isMilestoneParent ? direction + '-1px;' : '') + 'width:' +
12275
- (isMilestoneParent ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) +
12276
- (21 + this.lineStroke)) : (((data.childLeft + data.childWidth) -
12277
- (data.parentLeft + data.parentWidth)) + (20 + this.lineStroke))) + 'px;' +
12278
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12279
- div = div + eLine;
12280
- div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 20) +
12281
- 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12282
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) +
12283
- 'position:relative;"></div>';
12284
- div = div + eLine;
12285
- div = div + direction + (isMilestone ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 4) :
12286
- (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 10)) + 'px;' +
12287
- 'width:' + (isMilestone ? (16 + this.lineStroke) : (10 + this.lineStroke)) + 'px;' +
12288
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12289
- div = div + leftArrow;
12290
- div = div + direction + ((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 'px;' +
12291
- this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
12292
- 'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' + (5 + this.lineStroke) +
12293
- 'px;width:0;height:0;position:relative;"></div></div>';
12258
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? 1 : 0);
12259
+ this.x1 = data.parentEndPoint;
12260
+ this.x2 = data.childEndPoint + (data.milestoneParent ? 22 : 21);
12261
+ this.x3 = data.childEndPoint + (data.milestoneChild ? 9 : 8);
12262
+ this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12263
+ this.y2 = heightValue + this.taskLineValue;
12264
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12265
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12266
+ this.connectorLinePath = "M " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x2 + " " + (this.y1 + this.y2) +
12267
+ " L " + this.x3 + " " + (this.y1 + this.y2);
12268
+ this.arrowPath = "M " + (this.x3 - 8) + " " + (this.y1 + this.y2 + this.manualChild) +
12269
+ " L " + this.x3 + " " + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +
12270
+ " L " + this.x3 + " " + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12294
12271
  }
12295
12272
  if (this.getParentPosition(data) === 'FFType3') {
12296
- div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12297
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12298
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType3">';
12299
- div = div + duplicateStingOne;
12300
- div = div + eLine;
12301
- div = div + (isMilestone ? (direction + '4px;width:' +
12302
- (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + 16)) :
12303
- (direction + '10px;width:' + (((data.parentLeft + data.parentWidth) -
12304
- (data.childLeft + data.childWidth)) + 10))) + 'px;top:' + (-(6 + (5 + this.lineStroke) +
12305
- (this.lineStroke / 2))) + 'px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12306
- div = div + eLine;
12307
- div = div + direction + (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + 20) +
12308
- 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
12309
- 'width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12310
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
12311
- div = div + eLine;
12312
- div = div + (isMilestoneParent ? (direction + (((data.parentLeft + data.parentWidth) -
12313
- (data.childLeft + data.childWidth)) - 1) + 'px;width:21') : (direction + ((data.parentLeft + data.parentWidth) -
12314
- (data.childLeft + data.childWidth)) + 'px;width:20')) +
12315
- 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
12316
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
12273
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12274
+ this.x1 = data.childEndPoint;
12275
+ this.x2 = this.x1 + (data.milestoneChild ? 4 : 8);
12276
+ this.x3 = data.parentEndPoint - data.childEndPoint + (data.milestoneChild ? 16 : 10);
12277
+ this.x4 = data.parentEndPoint + (data.milestoneParent ? -1 : 0);
12278
+ this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12279
+ this.y2 = heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12280
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12281
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12282
+ this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x2 + this.x3) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x2 + this.x3) + " " + (this.y1 + this.y2) +
12283
+ " L " + this.x4 + " " + (this.y1 + this.y2);
12284
+ this.arrowPath = "M " + this.x1 + " " + (this.y1 + this.manualChild) +
12285
+ " L " + (this.x1 + 8) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12286
+ " L " + (this.x1 + 8) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12317
12287
  }
12318
12288
  if (this.getParentPosition(data) === 'FFType4') {
12319
- div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12320
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12321
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType4">';
12322
- div = div + leftArrow;
12323
- div = div + (direction + ((data.childLeft + data.childWidth) -
12324
- (data.parentLeft + data.parentWidth))) + 'px;' +
12325
- this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
12326
- 'border-bottom-width:' + (5 + this.lineStroke) +
12327
- 'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;' +
12328
- 'position:relative;"></div>';
12329
- div = div + eLine;
12330
- div = div + (isMilestone ? (direction + (((data.childLeft + data.childWidth) -
12331
- (data.parentLeft + data.parentWidth)) + 4) +
12332
- 'px;width:' + (16 + this.lineStroke)) : (direction + (((data.childLeft + data.childWidth) -
12333
- (data.parentLeft + data.parentWidth)) + 10) + 'px;width:' + (10 + this.lineStroke))) +
12334
- 'px;' + duplicateStingFive;
12335
- div = div + eLine;
12336
- div = div + direction + (((data.childLeft + data.childWidth) -
12337
- (data.parentLeft + data.parentWidth)) + 20) + 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) +
12338
- 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12339
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
12340
- div = div + eLine;
12341
- div = div + (isMilestoneParent ? (direction + '-1px;width:' + (((data.childLeft + data.childWidth) -
12342
- (data.parentLeft + data.parentWidth)) + (21 + this.lineStroke))) : ('width:' + (((data.childLeft + data.childWidth) -
12343
- (data.parentLeft + data.parentWidth)) + (20 + this.lineStroke)))) + 'px;top:' +
12344
- (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
12345
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
12289
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12290
+ this.x1 = data.parentEndPoint;
12291
+ this.x2 = data.childEndPoint + (data.milestoneChild ? 7 : 8);
12292
+ this.x3 = this.x2 + (data.milestoneChild ? 12 : 11);
12293
+ this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12294
+ this.y2 = heightValue + this.taskLineValue + +(this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12295
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12296
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12297
+ this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + (this.y1 + this.y2) +
12298
+ " L " + this.x1 + " " + (this.y1 + this.y2);
12299
+ this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1 + this.manualChild) +
12300
+ " L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12301
+ " L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12346
12302
  }
12347
12303
  if (this.getParentPosition(data) === 'SFType4') {
12348
- div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12349
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;width:1px;' +
12350
- 'height:' + heightValue + 'px;position:absolute" data-connectortype="SFType4">';
12351
- div = div + duplicateStingFour + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
12352
- 'border-bottom-width:' + (5 + this.lineStroke) +
12353
- 'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;' +
12354
- 'position:relative;"></div>';
12355
- div = div + eLine;
12356
- div = div + direction + (isMilestone ? ((((data.childLeft + data.childWidth) - (data.parentLeft)) + (14 + this.lineStroke)) +
12357
- 'px;width:16') : ((((data.childLeft + data.childWidth) - (data.parentLeft)) + 20) + 'px;width:' +
12358
- (10 + this.lineStroke))) + 'px;' + duplicateStingFive;
12359
- div = div + eLine;
12360
- div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) + 'px;top:' +
12361
- (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12362
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - (this.lineStroke - 1))) + 'position:relative;"></div>';
12363
- div = div + eLine;
12364
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
12365
- (((data.childLeft + data.childWidth) - (data.parentLeft)) + (30 + this.lineStroke)) + 'px;' +
12366
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12367
- div = div + eLine;
12368
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' +
12369
- this.getBorderStyles('left', this.lineStroke) +
12370
- this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
12371
- div = div + eLine;
12372
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:11px;' +
12373
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
12304
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? -1 : 0);
12305
+ this.point1 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;
12306
+ this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
12307
+ this.x1 = data.parentLeft - 10;
12308
+ this.x2 = this.x1 + ((data.childEndPoint - data.parentLeft) + 18);
12309
+ this.x3 = this.x2 + (data.milestoneChild ? 16 : 11);
12310
+ this.y1 = this.point2 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12311
+ this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild ? -11 : 0) : 0);
12312
+ this.y3 = this.getconnectorLineGap(data) + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12313
+ this.y4 = this.y2 - (this.y2 % data.rowHeight);
12314
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12315
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12316
+ this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + this.y4 + " L " + this.x1 + " " + this.y4 +
12317
+ " L " + this.x1 + " " + (this.y2 + this.y3) + " L " + (this.x1 + 11) + " " + (this.y2 + this.y3);
12318
+ this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1 + this.manualChild) +
12319
+ " L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12320
+ " L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12374
12321
  }
12375
12322
  if (this.getParentPosition(data) === 'SFType3') {
12376
- div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12377
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12378
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType3">';
12379
- div = div + duplicateStingOne;
12380
- div = div + eLine;
12381
- div = div + (isMilestone ? direction + '4px;width:' + (16 + this.lineStroke) : direction + '10px;width:' +
12382
- (10 + this.lineStroke)) + 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2) - 1)) + 'px;' +
12383
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12384
- div = div + eLine;
12385
- div = div + direction + '20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' +
12386
- this.getBorderStyles('left', this.lineStroke) +
12387
- this.getBorderStyles('top', (heightValue + borderTopWidth - (this.lineStroke - 1))) + 'position:relative;"></div>';
12388
- div = div + eLine;
12389
- div = div + direction + '20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
12390
- ((data.parentLeft - (data.childLeft + data.childWidth + 20)) + this.lineStroke) + 'px;' +
12391
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
12323
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12324
+ this.point1 = (data.parentLeft - (data.childEndPoint + (data.milestoneParent ? 25 : 20))) + 1 + (this.parent.renderBaseline ? (data.milestoneParent ? 5 : 0) : 0);
12325
+ this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
12326
+ this.x1 = data.childEndPoint;
12327
+ this.x2 = this.x1 + (data.milestoneChild ? 9 : 8);
12328
+ this.x3 = this.x2 + (data.milestoneChild ? 17 : 11);
12329
+ this.y1 = this.point2 + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12330
+ this.y2 = this.y1 + heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12331
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12332
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12333
+ this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + (this.y1 + this.manualParent + this.manualChild) +
12334
+ " L " + this.x3 + " " + this.y2 + " L " + (this.x3 + this.point1) + " " + this.y2;
12335
+ this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1 + this.manualChild) +
12336
+ " L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12337
+ " L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12392
12338
  }
12393
12339
  if (this.getParentPosition(data) === 'SFType1') {
12394
- div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12395
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12396
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType1">';
12397
- div = div + eLine;
12398
- div = div + 'width:11px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12399
- div = div + eLine;
12400
- div = div + 'width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12401
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
12402
- div = div + eLine;
12403
- div = div + 'width:' + (((data.childLeft + data.childWidth) - (data.parentLeft)) + (30 + this.lineStroke)) + 'px;' +
12404
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12405
- div = div + eLine;
12406
- div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) +
12407
- 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12408
- this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
12409
- div = div + eLine;
12410
- div = div + (isMilestone ? (direction + (((data.childLeft + data.childWidth) -
12411
- (data.parentLeft)) + 15) + 'px;width:' + (15 + this.lineStroke)) : (direction +
12412
- (((data.childLeft + data.childWidth) - (data.parentLeft)) + 20) + 'px;width:' + (10 + this.lineStroke))) + 'px;' +
12413
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12414
- div = div + duplicateStingFour + 'top:' + (-6 - this.lineStroke) + 'px;' +
12415
- 'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
12416
- (5 + this.lineStroke) + 'px;position:relative;"></div></div>';
12340
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
12341
+ this.point1 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;
12342
+ this.point2 = this.getconnectorLineGap(data);
12343
+ this.x1 = data.parentLeft - 10;
12344
+ this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);
12345
+ this.x2 = (data.childEndPoint - data.parentLeft) + 31;
12346
+ this.y2 = this.y1 + this.point1;
12347
+ this.x3 = (data.childEndPoint - data.parentLeft) + 18;
12348
+ this.y3 = this.y2 - (this.y2 % data.rowHeight);
12349
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12350
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12351
+ this.connectorLinePath = "M " + (this.x1 + 11) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + this.y3 +
12352
+ " L " + (this.x1 + this.x2) + " " + this.y3 + " L " + (this.x1 + this.x2) + " " + (this.y2 + this.point2) + " L " + (this.x1 + this.x3) + " " + (this.y2 + this.point2);
12353
+ this.arrowPath = "M " + (this.x1 + this.x3 - 8) + " " + (this.y2 + this.point2 + this.manualChild) +
12354
+ " L " + (this.x1 + this.x3) + " " + (this.y2 + this.point2 - (4 + this.lineStroke) + this.manualChild) +
12355
+ " L " + (this.x1 + this.x3) + " " + (this.y2 + this.point2 + 4 + this.lineStroke + this.manualChild) + " Z";
12417
12356
  }
12418
12357
  if (this.getParentPosition(data) === 'SFType2') {
12419
- div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12420
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12421
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType2">';
12422
- div = div + eLine;
12423
- div = div + direction + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
12424
- 'px;width:11px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12425
- div = div + eLine;
12426
- div = div + direction + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
12427
- 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12428
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
12429
- div = div + eLine;
12430
- div = div + (isMilestone ? (direction + '4px;width:' + (((data.parentLeft) - (data.childLeft + data.childWidth))
12431
- - (14 - this.lineStroke))) : (direction + '10px;width:' + (((data.parentLeft) -
12432
- (data.childLeft + data.childWidth)) - (20 - this.lineStroke)))) +
12433
- 'px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12434
- div = div + leftArrow;
12435
- div = div + direction + '0px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
12436
- 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
12437
- 'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
12438
- }
12439
- connectorContainer += div;
12440
- connectorContainer += '</div>';
12441
- }
12442
- return connectorContainer;
12358
+ this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12359
+ this.x1 = data.childEndPoint;
12360
+ this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);
12361
+ this.x2 = (data.parentLeft - data.childEndPoint);
12362
+ this.y2 = this.y1 + heightValue + this.taskLineValue;
12363
+ this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12364
+ this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12365
+ this.connectorLinePath = "M " + (this.x1 + this.x2 + 1) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + (this.x1 + this.x2 - 10) + " " + (this.y1 + this.manualParent + this.manualChild) +
12366
+ " L " + (this.x1 + this.x2 - 10) + " " + this.y2 + " L " + (this.x1 + 8) + " " + this.y2;
12367
+ this.arrowPath = "M " + this.x1 + " " + (this.y2 + this.manualChild) +
12368
+ " L " + (this.x1 + 8) + " " + (this.y2 - (4 + this.lineStroke) + this.manualChild) +
12369
+ " L " + (this.x1 + 8) + " " + (this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12370
+ }
12371
+ this.connectorPath.setAttribute("d", this.connectorLinePath);
12372
+ this.arrowlinePath.setAttribute("d", this.arrowPath);
12373
+ }
12374
+ return this.groupObject.outerHTML;
12443
12375
  }
12444
12376
  /**
12445
12377
  * @param {IConnectorLineObject} data .
@@ -12505,10 +12437,10 @@ class ConnectorLine {
12505
12437
  * @private
12506
12438
  */
12507
12439
  getConnectorLineTooltipInnerTd(fromTaskName, fromPredecessorText, toTaskName, toPredecessorText) {
12508
- let innerTd = '<tr id="fromPredecessor"><td >' + this.parent.localeObj.getConstant('from') + '</td><td> ';
12509
- innerTd = innerTd + fromTaskName + ' </td><td> ' + this.parent.localeObj.getConstant(fromPredecessorText) + ' </td> </tr>';
12510
- innerTd = innerTd + '<tr id="toPredecessor"><td>' + this.parent.localeObj.getConstant('to') + '</td><td> ' + toTaskName;
12511
- innerTd = innerTd + ' </td><td> ' + this.parent.localeObj.getConstant(toPredecessorText) + ' </td></tr></tbody><table>';
12440
+ let innerTd = '<tr id="fromPredecessor"><td style="padding: 4px;">' + this.parent.localeObj.getConstant('from') + '</td><td> ';
12441
+ innerTd = innerTd + fromTaskName + ' </td><td style="padding: 2px;"> ' + this.parent.localeObj.getConstant(fromPredecessorText) + ' </td> </tr>';
12442
+ innerTd = innerTd + '<tr id="toPredecessor"><td style="padding: 4px;">' + this.parent.localeObj.getConstant('to') + '</td><td> ' + toTaskName;
12443
+ innerTd = innerTd + ' </td><td style="padding: 2px;"> ' + this.parent.localeObj.getConstant(toPredecessorText) + ' </td></tr></tbody><table>';
12512
12444
  return innerTd;
12513
12445
  }
12514
12446
  /**
@@ -13018,7 +12950,7 @@ class Tooltip$1 {
13018
12950
  * @param {IGanttData} ganttData .
13019
12951
  * @param {Gantt} parent .
13020
12952
  * @param {TooltipEventArgs} args .
13021
- * @returns {string} .
12953
+ * @returns {string | Function} .
13022
12954
  */
13023
12955
  getTooltipContent(elementType, ganttData, parent, args) {
13024
12956
  let content$$1;
@@ -13050,8 +12982,11 @@ class Tooltip$1 {
13050
12982
  let sDate = !isNullOrUndefined(milestoneStartDate) ? '<tr><td class = "e-gantt-tooltip-label"> Date</td><td>:</td>' +
13051
12983
  '<td class = "e-gantt-tooltip-value">' +
13052
12984
  sDateValue + '</td></tr>' : '';
13053
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
13054
- taskName + sDate + '</tbody></table>';
12985
+ let contentTemp = function () {
12986
+ return '<table class = "e-gantt-tooltiptable"><tbody>' +
12987
+ taskName + sDate + '</tbody></table>';
12988
+ };
12989
+ content$$1 = initializeCSPTemplate(contentTemp);
13055
12990
  break;
13056
12991
  }
13057
12992
  case 'taskbar':
@@ -13069,19 +13004,22 @@ class Tooltip$1 {
13069
13004
  }
13070
13005
  let startDate = data.startDate ? '<tr><td class = "e-gantt-tooltip-label">' +
13071
13006
  this.parent.localeObj.getConstant(scheduledTask ? 'startDate' : 'subTasksStartDate') +
13072
- '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value"> ' + startDateValue + '</td></tr>' : '';
13007
+ '</td><td style="padding: 2px;">:</td>' + '<td class = "e-gantt-tooltip-value"> ' + startDateValue + '</td></tr>' : '';
13073
13008
  let endDate = data.endDate ? '<tr><td class = "e-gantt-tooltip-label">' +
13074
13009
  this.parent.localeObj.getConstant(scheduledTask ? 'endDate' : 'subTasksEndDate') +
13075
- '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' + endDateValue + '</td></tr>' : '';
13010
+ '</td><td style="padding: 2px;">:</td>' + '<td class = "e-gantt-tooltip-value">' + endDateValue + '</td></tr>' : '';
13076
13011
  let duration = !isNullOrUndefined(data.duration) ? '<tr><td class = "e-gantt-tooltip-label">' +
13077
- this.parent.localeObj.getConstant('duration') + '</td><td>:</td>' +
13012
+ this.parent.localeObj.getConstant('duration') + '</td><td style="padding: 2px;">:</td>' +
13078
13013
  '<td class = "e-gantt-tooltip-value"> ' + durationValue +
13079
13014
  '</td></tr>' : '';
13080
13015
  let progress = !isNullOrUndefined(data.progress) ? '<tr><td class = "e-gantt-tooltip-label">' +
13081
- this.parent.localeObj.getConstant('progress') + '</td><td>:</td><td>' + progressValue +
13016
+ this.parent.localeObj.getConstant('progress') + '</td><td style="padding: 2px;">:</td><td>' + progressValue +
13082
13017
  '</td></tr>' : '';
13083
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
13084
- taskName + startDate + endDate + duration + progress + '</tbody></table>';
13018
+ let contentTemp = function () {
13019
+ return '<table class = "e-gantt-tooltiptable"><tbody>' +
13020
+ taskName + startDate + endDate + duration + progress + '</tbody></table>';
13021
+ };
13022
+ content$$1 = initializeCSPTemplate(contentTemp);
13085
13023
  break;
13086
13024
  }
13087
13025
  case 'baseline':
@@ -13092,13 +13030,16 @@ class Tooltip$1 {
13092
13030
  baselineStartDateValue = typeof (baselineStartDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(baselineStartDateValue) : baselineStartDateValue;
13093
13031
  baselineEndDateValue = typeof (baselineEndDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(baselineEndDateValue) : baselineEndDateValue;
13094
13032
  }
13095
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
13096
- taskName + '<tr><td class = "e-gantt-tooltip-label">' +
13097
- this.parent.localeObj.getConstant('baselineStartDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
13098
- baselineStartDateValue + '</td></tr><tr>' +
13099
- '<td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('baselineEndDate') +
13100
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
13101
- baselineEndDateValue + '</td></tr></tbody></table>';
13033
+ let contentTemp = function () {
13034
+ return '<table class = "e-gantt-tooltiptable"><tbody>' +
13035
+ taskName + '<tr><td class = "e-gantt-tooltip-label">' +
13036
+ this.parent.localeObj.getConstant('baselineStartDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
13037
+ baselineStartDateValue + '</td></tr><tr>' +
13038
+ '<td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('baselineEndDate') +
13039
+ '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
13040
+ baselineEndDateValue + '</td></tr></tbody></table>';
13041
+ };
13042
+ content$$1 = initializeCSPTemplate(contentTemp, this);
13102
13043
  break;
13103
13044
  }
13104
13045
  case 'marker':
@@ -13110,8 +13051,11 @@ class Tooltip$1 {
13110
13051
  markerLabel = typeof (markerLabel) === 'string' ? SanitizeHtmlHelper.sanitize(markerLabel) : markerLabel;
13111
13052
  markerTooltipElementValue = typeof (markerTooltipElementValue) === 'string' ? SanitizeHtmlHelper.sanitize(markerTooltipElementValue) : markerTooltipElementValue;
13112
13053
  }
13113
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody><tr><td>' +
13114
- markerTooltipElementValue + '</td></tr><tr><td>' + (this.parent.disableHtmlEncode ? markerLabel.replace(/</g, "&lt;").replace(/>/g, "&gt;") : markerLabel) + '</td></tr></tbody></table>';
13054
+ let contentTemp = function () {
13055
+ return '<table class = "e-gantt-tooltiptable"><tbody><tr><td>' +
13056
+ markerTooltipElementValue + '</td></tr><tr><td>' + (this.parent.disableHtmlEncode ? markerLabel.replace(/</g, "&lt;").replace(/>/g, "&gt;") : markerLabel) + '</td></tr></tbody></table>';
13057
+ };
13058
+ content$$1 = initializeCSPTemplate(contentTemp, this);
13115
13059
  break;
13116
13060
  }
13117
13061
  case 'connectorLine':
@@ -13130,16 +13074,19 @@ class Tooltip$1 {
13130
13074
  linkTextValue = typeof (linkTextValue) === 'string' ? SanitizeHtmlHelper.sanitize(linkTextValue) : linkTextValue;
13131
13075
  offsetStringValue = typeof (offsetStringValue) === 'string' ? SanitizeHtmlHelper.sanitize(offsetStringValue) : offsetStringValue;
13132
13076
  }
13133
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody><tr><td class = "e-gantt-tooltip-label">' +
13134
- this.parent.localeObj.getConstant('from') + '</td><td>:</td>' +
13135
- '<td class = "e-gantt-tooltip-value">' + (this.parent.disableHtmlEncode ? fromNameValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : fromNameValue) + ' (' +
13136
- (this.parent.disableHtmlEncode ? (typeof (fromIdValue) === 'string' ? fromIdValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : fromIdValue) : fromIdValue) + ')' + '</td></tr><tr><td class = "e-gantt-tooltip-label">' +
13137
- this.parent.localeObj.getConstant('to') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
13138
- (this.parent.disableHtmlEncode ? toNameValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : toNameValue) + ' (' + toIdValue + ')' + '</td></tr><tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('taskLink') +
13139
- '</td><td>:</td><td class = "e-gantt-tooltip-value"> ' + linkTextValue +
13140
- '</td></tr><tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('lag') +
13141
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
13142
- offsetStringValue + '</td></tr></tbody></table>';
13077
+ let contentTemp = function () {
13078
+ return '<table class = "e-gantt-tooltiptable"><tbody><tr><td class = "e-gantt-tooltip-label">' +
13079
+ this.parent.localeObj.getConstant('from') + '</td><td>:</td>' +
13080
+ '<td class = "e-gantt-tooltip-value">' + (this.parent.disableHtmlEncode ? fromNameValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : fromNameValue) + ' (' +
13081
+ (this.parent.disableHtmlEncode ? (typeof (fromIdValue) === 'string' ? fromIdValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : fromIdValue) : fromIdValue) + ')' + '</td></tr><tr><td class = "e-gantt-tooltip-label">' +
13082
+ this.parent.localeObj.getConstant('to') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
13083
+ (this.parent.disableHtmlEncode ? toNameValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : toNameValue) + ' (' + toIdValue + ')' + '</td></tr><tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('taskLink') +
13084
+ '</td><td>:</td><td class = "e-gantt-tooltip-value"> ' + linkTextValue +
13085
+ '</td></tr><tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('lag') +
13086
+ '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
13087
+ offsetStringValue + '</td></tr></tbody></table>';
13088
+ };
13089
+ content$$1 = initializeCSPTemplate(contentTemp, this);
13143
13090
  break;
13144
13091
  }
13145
13092
  case 'indicator':
@@ -13148,7 +13095,10 @@ class Tooltip$1 {
13148
13095
  if (this.parent.enableHtmlSanitizer && typeof (titleValue) === 'string') {
13149
13096
  titleValue = SanitizeHtmlHelper.sanitize(titleValue);
13150
13097
  }
13151
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody><tr>' + titleValue + '</tr></tbody></table>';
13098
+ let contentTemp = function () {
13099
+ return '<table class = "e-gantt-tooltiptable"><tbody><tr>' + titleValue + '</tr></tbody></table>';
13100
+ };
13101
+ content$$1 = initializeCSPTemplate(contentTemp);
13152
13102
  }
13153
13103
  break;
13154
13104
  case 'timeline':
@@ -13156,7 +13106,10 @@ class Tooltip$1 {
13156
13106
  if (this.parent.enableHtmlSanitizer && typeof (timlineTitleValue) === 'string') {
13157
13107
  timlineTitleValue = SanitizeHtmlHelper.sanitize(timlineTitleValue);
13158
13108
  }
13159
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody><tr>' + timlineTitleValue + '</tr></tbody></table>';
13109
+ let contentTemp = function () {
13110
+ return '<table class = "e-gantt-tooltiptable"><tbody><tr>' + timlineTitleValue + '</tr></tbody></table>';
13111
+ };
13112
+ content$$1 = initializeCSPTemplate(contentTemp);
13160
13113
  break;
13161
13114
  case 'manualtaskbar':
13162
13115
  {
@@ -13188,8 +13141,11 @@ class Tooltip$1 {
13188
13141
  let manualEndDate = data.endDate ? '<tr><td class = "e-gantt-tooltip-label">' +
13189
13142
  this.parent.localeObj.getConstant('endDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
13190
13143
  manualEndDateValue + '</td></tr>' : '';
13191
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
13192
- taskName + manualStartDate + autoStartDate + manualEndDate + autoEndDate + durationValue + '</tbody></table>';
13144
+ let contentTemp = function () {
13145
+ return '<table class = "e-gantt-tooltiptable"><tbody>' +
13146
+ taskName + manualStartDate + autoStartDate + manualEndDate + autoEndDate + durationValue + '</tbody></table>';
13147
+ };
13148
+ content$$1 = initializeCSPTemplate(contentTemp);
13193
13149
  break;
13194
13150
  }
13195
13151
  case 'manualmilestone':
@@ -13211,8 +13167,11 @@ class Tooltip$1 {
13211
13167
  let date = '<tr><td class = "e-gantt-tooltip-label"> Date</td><td>:</td>' +
13212
13168
  '<td class = "e-gantt-tooltip-value">' +
13213
13169
  dateValue + '</tr>';
13214
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
13215
- taskName + date + autoStart + autoEnd + '</tbody></table>';
13170
+ let contentTemp = function () {
13171
+ return '<table class = "e-gantt-tooltiptable"><tbody>' +
13172
+ taskName + date + autoStart + autoEnd + '</tbody></table>';
13173
+ };
13174
+ content$$1 = initializeCSPTemplate(contentTemp);
13216
13175
  break;
13217
13176
  }
13218
13177
  }
@@ -13238,7 +13197,7 @@ class Tooltip$1 {
13238
13197
  * @private
13239
13198
  */
13240
13199
  getPredecessorTooltipData(args) {
13241
- let predeceesorParent = args.target.parentElement.id;
13200
+ let predeceesorParent = args.target.id;
13242
13201
  if (this.parent.enableHtmlSanitizer && typeof (predeceesorParent) === 'string') {
13243
13202
  predeceesorParent = SanitizeHtmlHelper.sanitize(predeceesorParent);
13244
13203
  }
@@ -13271,7 +13230,7 @@ class Tooltip$1 {
13271
13230
  /**
13272
13231
  * To compile template string.
13273
13232
  *
13274
- * @param {string} template .
13233
+ * @param {string | Function} template .
13275
13234
  * @param {Gantt} parent .
13276
13235
  * @param {IGanttData|PredecessorTooltip} data .
13277
13236
  * @param {string} propName .
@@ -14333,19 +14292,17 @@ let Gantt = class Gantt extends Component {
14333
14292
  this.notify('initPredessorDialog', {});
14334
14293
  }
14335
14294
  this.splitterModule.updateSplitterPosition();
14336
- if (this.gridLines === 'Vertical' || this.gridLines === 'Both') {
14337
- this.renderChartVerticalLines();
14338
- }
14295
+ // if (this.gridLines === 'Vertical' || this.gridLines === 'Both') {
14296
+ // this.renderChartVerticalLines();
14297
+ // }
14339
14298
  }
14340
14299
  removeCriticalPathStyles() {
14341
14300
  const ganttChartElement = this.ganttChartModule.chartElement;
14342
14301
  removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-taskbar-inner-div'), criticalChildTaskBarInnerDiv);
14343
14302
  removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-progressbar-inner-div'), criticalChildProgressBarInnerDiv);
14344
- removeClass(ganttChartElement.querySelectorAll('.e-milestone-top'), criticalMilestoneTop);
14345
- removeClass(ganttChartElement.querySelectorAll('.e-milestone-bottom'), criticalMilestoneBottom);
14346
- removeClass(this.element.querySelectorAll('.e-line'), criticalConnectorLine);
14347
- removeClass(this.element.querySelectorAll('.e-connector-line-right-arrow'), criticalConnectorLineRightArrow);
14348
- removeClass(this.element.querySelectorAll('.e-connector-line-left-arrow'), criticalConnectorLineLeftArrow);
14303
+ removeClass(ganttChartElement.querySelectorAll('.e-critical-milestone'), criticalMilestone);
14304
+ removeClass(this.element.querySelectorAll('.e-connector-line'), criticalConnectorLineSVG);
14305
+ removeClass(this.element.querySelectorAll('.e-connector-line-arrow'), criticalConnectorArrowSVG);
14349
14306
  }
14350
14307
  wireEvents() {
14351
14308
  if (this.allowKeyboard) {
@@ -14357,6 +14314,15 @@ let Gantt = class Gantt extends Component {
14357
14314
  }
14358
14315
  /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
14359
14316
  EventHandler.add(window, 'resize', this.windowResize, this);
14317
+ EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);
14318
+ }
14319
+ keyDownHandler(e) {
14320
+ if (e.altKey) {
14321
+ if (e.keyCode === 74) { //alt j
14322
+ this.ganttChartModule.manageFocus(this.treeGrid.element.childNodes[1], 'remove', false);
14323
+ this.ganttChartModule.manageFocus(this.element, 'add', false);
14324
+ }
14325
+ }
14360
14326
  }
14361
14327
  /**
14362
14328
  * Method trigger while user perform window resize.
@@ -15457,9 +15423,9 @@ let Gantt = class Gantt extends Component {
15457
15423
  if (!this.element.contains(this.chartVerticalLineContainer)) {
15458
15424
  this.chartVerticalLineContainer = createElement('div', {
15459
15425
  id: this.element.id + 'line-container',
15460
- styles: 'position:absolute;height:100%;z-index:1'
15426
+ styles: 'position:absolute;height:100%;'
15461
15427
  });
15462
- this.ganttChartModule.chartBodyContent.appendChild(this.chartVerticalLineContainer);
15428
+ this.ganttChartModule.chartBodyContent.insertBefore(this.chartVerticalLineContainer, this.ganttChartModule.chartBodyContent.lastChild);
15463
15429
  }
15464
15430
  this.chartVerticalLineContainer.innerHTML = '';
15465
15431
  let headerTable = this.element.getElementsByClassName('e-timeline-header-table-container')[1];
@@ -15848,9 +15814,6 @@ let Gantt = class Gantt extends Component {
15848
15814
  this.timelineModule.updateChartByNewTimeline();
15849
15815
  this.ganttChartModule.chartBodyContent.style.width = formatUnit(this.timelineModule.totalTimelineWidth);
15850
15816
  this.ganttChartModule.updateLastRowBottomWidth();
15851
- if (this.gridLines === 'Vertical' || this.gridLines === 'Both') {
15852
- this.renderChartVerticalLines();
15853
- }
15854
15817
  if (this.taskFields.dependency) {
15855
15818
  this.ganttChartModule.reRenderConnectorLines();
15856
15819
  }
@@ -18080,23 +18043,23 @@ class EditTooltip {
18080
18043
  let duration;
18081
18044
  if (!isNullOrUndefined(editRecord.startDate)) {
18082
18045
  startDate = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('startDate') +
18083
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
18046
+ '</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' +
18084
18047
  instance.formatDate(editRecord.startDate, { format: this.parent.getDateFormat() }) + '</td></tr>';
18085
18048
  }
18086
18049
  if (!isNullOrUndefined(editRecord.endDate)) {
18087
18050
  endDate = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('endDate') +
18088
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
18051
+ '</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' +
18089
18052
  instance.formatDate(editRecord.endDate, { format: this.parent.getDateFormat() }) + '</td></tr>';
18090
18053
  }
18091
18054
  if (!isNullOrUndefined(editRecord.duration)) {
18092
18055
  duration = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('duration') +
18093
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
18056
+ '</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' +
18094
18057
  this.parent.getDurationString(editRecord.duration, editRecord.durationUnit) + '</td></tr>';
18095
18058
  }
18096
18059
  switch (this.taskbarEdit.taskBarEditAction) {
18097
18060
  case 'ProgressResizing':
18098
18061
  const progress = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('progress') +
18099
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' + editRecord.progress + '</td></tr>';
18062
+ '</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' + editRecord.progress + '</td></tr>';
18100
18063
  tooltipString = '<table class = "e-gantt-tooltiptable"><tbody>' +
18101
18064
  progress + '</tbody></table>';
18102
18065
  break;
@@ -18353,8 +18316,7 @@ class TaskbarEdit extends DateProcessor {
18353
18316
  || target.classList.contains(manualParentTaskBar)) {
18354
18317
  element = parentsUntil$1(target, manualParentMainContainer);
18355
18318
  }
18356
- else if (target.classList.contains(manualParentMilestoneTop) || target.classList.contains(manualParentMilestoneBottom)
18357
- || target.classList.contains(manualParentMilestone)) {
18319
+ else if (target.classList.contains(manualParentMilestone)) {
18358
18320
  element = parentsUntil$1(target, manualParentMilestone);
18359
18321
  }
18360
18322
  else {
@@ -18370,18 +18332,60 @@ class TaskbarEdit extends DateProcessor {
18370
18332
  if (this.parent.editSettings.allowTaskbarEditing && element) {
18371
18333
  this.showHideTaskBarEditingElements(element, this.taskBarEditElement);
18372
18334
  this.editElement = element;
18373
- this.taskBarEditElement = element;
18374
- const index = this.taskBarEditElement.getAttribute('data-segment-index');
18335
+ this.realTaskbarElement = this.editElement;
18336
+ const index = this.editElement.getAttribute('data-segment-index');
18375
18337
  if (!isNullOrUndefined(index)) {
18376
18338
  this.segmentIndex = Number(index);
18377
18339
  }
18378
18340
  else {
18379
18341
  this.segmentIndex = -1;
18380
18342
  }
18381
- this.taskBarEditRecord = this.parent.ganttChartModule.getRecordByTaskBar(this.taskBarEditElement);
18343
+ this.taskBarEditRecord = this.parent.ganttChartModule.getRecordByTaskBar(this.editElement);
18382
18344
  if (e.type === 'mousedown' || e.type === 'touchstart' || e.type === 'click') {
18383
- this.roundOffDuration = true;
18384
18345
  this.taskBarEditAction = this.getTaskBarAction(e);
18346
+ const index = this.editElement.getAttribute('data-segment-index');
18347
+ const currentRecord = this.parent.ganttChartModule.getRecordByTaskBar(element);
18348
+ const ganttprop = currentRecord.ganttProperties;
18349
+ const parentleft = this.editElement.parentElement.offsetLeft;
18350
+ this.currentData = currentRecord;
18351
+ const resizeElement = createElement('div', { styles: 'height:100%;border-style:dashed;border-bottom:none;border-top:none;border-width:1px;position:absolute;z-index:10000' });
18352
+ addClass([resizeElement], 'e-taskbar-resize-div');
18353
+ resizeElement.style.setProperty("width", ganttprop.width + "px");
18354
+ const currentindex = this.editElement.getAttribute('data-segment-index');
18355
+ resizeElement.style.setProperty("left", ((!isNullOrUndefined(ganttprop.segments) ? parentleft + ganttprop.segments[Number(currentindex)].left + "px" : (ganttprop.left) + "px")));
18356
+ const resizeTable = this.parent.createElement('table');
18357
+ const resizetableBody = this.parent.createElement("tbody");
18358
+ resizetableBody.appendChild(resizeElement);
18359
+ resizeTable.appendChild(resizetableBody);
18360
+ var Check = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-clone-taskbar');
18361
+ let createTable = null;
18362
+ if ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && !isNullOrUndefined(index) && !isNullOrUndefined(index) ? Number(index) === 0 : false) {
18363
+ var cloneTaskBar = this.editElement.parentElement.cloneNode(true);
18364
+ }
18365
+ else {
18366
+ var cloneTaskBar = this.editElement.cloneNode(true);
18367
+ }
18368
+ if (!Check) {
18369
+ addClass([cloneTaskBar], 'e-clone-taskbar');
18370
+ cloneTaskBar.style.setProperty("position", "absolute");
18371
+ cloneTaskBar.style.setProperty("top", 0 + "px");
18372
+ createTable = this.parent.createElement('table');
18373
+ const tableBody = this.parent.createElement("tbody");
18374
+ tableBody.appendChild(cloneTaskBar);
18375
+ createTable.appendChild(tableBody);
18376
+ }
18377
+ if ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && !isNullOrUndefined(index) && !isNullOrUndefined(index) ? Number(index) === 0 : false) {
18378
+ const segmentedTasks = cloneTaskBar.getElementsByClassName('e-segmented-taskbar');
18379
+ this.cloneTaskbarElement = segmentedTasks[Number(index)];
18380
+ }
18381
+ else {
18382
+ this.cloneTaskbarElement = cloneTaskBar;
18383
+ }
18384
+ this.taskBarEditElement = this.cloneTaskbarElement;
18385
+ this.taskbarElement = createTable;
18386
+ this.taskbarResizer = resizeTable;
18387
+ this.currentIndex = index;
18388
+ this.roundOffDuration = true;
18385
18389
  if ((this.taskBarEditAction === 'ConnectorPointLeftDrag' || this.taskBarEditAction === 'ConnectorPointRightDrag') &&
18386
18390
  isNullOrUndefined(this.parent.taskFields.dependency)) {
18387
18391
  this.taskBarEditAction = null;
@@ -18412,7 +18416,7 @@ class TaskbarEdit extends DateProcessor {
18412
18416
  this.initPublicProp();
18413
18417
  }
18414
18418
  else {
18415
- this.showHideTaskBarEditingElements(element, this.taskBarEditElement);
18419
+ this.showHideTaskBarEditingElements(element, this.editElement);
18416
18420
  }
18417
18421
  }
18418
18422
  }
@@ -18447,9 +18451,10 @@ class TaskbarEdit extends DateProcessor {
18447
18451
  addClass([element.querySelector('.' + taskBarLeftResizer)], [leftResizeGripper]);
18448
18452
  addClass([element.querySelector('.' + taskBarRightResizer)], [rightResizeGripper]);
18449
18453
  if (isShowProgressResizer) {
18450
- const progresElement = !isNullOrUndefined(element.querySelector('.' + childProgressResizer)) ? true : false;
18451
- if (progresElement) {
18452
- addClass([element.querySelector('.' + childProgressResizer)], [progressResizeGripper]);
18454
+ const progressElement = element.querySelector('.' + childProgressResizer);
18455
+ if (!isNullOrUndefined(progressElement)) {
18456
+ addClass([progressElement], [progressResizeGripper]);
18457
+ progressElement.style.top = '3px';
18453
18458
  }
18454
18459
  }
18455
18460
  }
@@ -18530,9 +18535,6 @@ class TaskbarEdit extends DateProcessor {
18530
18535
  }
18531
18536
  else if (mouseDownElement.classList.contains(manualParentTaskBar) ||
18532
18537
  mouseDownElement.classList.contains(manualParentMainContainer) ||
18533
- mouseDownElement.classList.contains(manualParentMilestone) ||
18534
- mouseDownElement.classList.contains(manualParentMilestoneTop) ||
18535
- mouseDownElement.classList.contains(manualParentMilestoneBottom) ||
18536
18538
  mouseDownElement.classList.contains(manualParentMilestone)) {
18537
18539
  action = 'ManualParentDrag';
18538
18540
  }
@@ -18628,6 +18630,21 @@ class TaskbarEdit extends DateProcessor {
18628
18630
  this.dragMouseLeave = false;
18629
18631
  this.isMouseDragCheck();
18630
18632
  if (this.isMouseDragged && this.taskBarEditAction) {
18633
+ if (!isNullOrUndefined(this.taskbarElement) && !isNullOrUndefined(this.editElement) && (this.taskBarEditAction !== "ConnectorPointRightDrag" && this.taskBarEditAction !== "ConnectorPointLeftDrag") && !(this.parent.viewType === 'ResourceView' && this.currentData.hasChildRecords)) {
18634
+ var currentElement = this.editElement.parentElement;
18635
+ currentElement.style.setProperty("position", "absolute");
18636
+ if ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && !isNullOrUndefined(this.currentIndex) && !isNullOrUndefined(this.currentIndex) ? Number(this.currentIndex) === 0 : false) {
18637
+ this.taskbarElement.childNodes[0].childNodes[0].style.setProperty("top", currentElement.parentElement.offsetTop + "px");
18638
+ currentElement.parentElement.appendChild(this.taskbarElement);
18639
+ }
18640
+ else {
18641
+ currentElement.appendChild(this.taskbarElement);
18642
+ }
18643
+ if (this.taskBarEditAction !== 'ProgressResizing') {
18644
+ const rootElement = this.parent.ganttChartModule.chartBodyContainer.querySelectorAll(".e-chart-rows-container");
18645
+ rootElement[0].appendChild(this.taskbarResizer);
18646
+ }
18647
+ }
18631
18648
  const args = {
18632
18649
  cancel: false,
18633
18650
  requestType: 'taskbarediting',
@@ -18733,16 +18750,6 @@ class TaskbarEdit extends DateProcessor {
18733
18750
  merge(this.taskBarEditRecord.ganttProperties, arg.previousData);
18734
18751
  }
18735
18752
  });
18736
- this.parent.flatData.map((data) => {
18737
- if ((!isNullOrUndefined(this.taskBarEditRecord.parentItem)) && data.ganttProperties.taskId === this.taskBarEditRecord.parentItem.taskId) {
18738
- data.childRecords.map((s) => {
18739
- if (isNullOrUndefined(s.ganttProperties.startDate) || isNullOrUndefined(s.ganttProperties.endDate) ||
18740
- isNullOrUndefined(s.ganttProperties.duration)) {
18741
- this.parent.dataOperation.updateGanttData();
18742
- }
18743
- });
18744
- }
18745
- });
18746
18753
  }
18747
18754
  }
18748
18755
  /**
@@ -19547,6 +19554,15 @@ class TaskbarEdit extends DateProcessor {
19547
19554
  * @private
19548
19555
  */
19549
19556
  setItemPosition() {
19557
+ if (!isNullOrUndefined(this.editElement)) {
19558
+ var currentElement = this.editElement.parentElement;
19559
+ if (this.parent.viewType == 'ResourceView' && this.parent.allowTaskbarDragAndDrop && this.taskBarEditAction === 'ChildDrag') {
19560
+ currentElement.style.position = null;
19561
+ }
19562
+ else {
19563
+ currentElement.style.setProperty("position", "absolute");
19564
+ }
19565
+ }
19550
19566
  const item = this.taskBarEditRecord.ganttProperties;
19551
19567
  let position = this.parent.enableRtl ? "right" : "left";
19552
19568
  const segment = !isNullOrUndefined(item.segments) ? item.segments[this.segmentIndex] : null;
@@ -19556,13 +19572,10 @@ class TaskbarEdit extends DateProcessor {
19556
19572
  if (!isNullOrUndefined(segment)) {
19557
19573
  rightResizer = this.parent.isAdaptive ? (segment.width - 2) : (segment.width - 10);
19558
19574
  }
19559
- const taskBarMainContainer$$1 = (!this.taskBarEditElement.classList.contains(taskBarMainContainer)) ? closest(this.taskBarEditElement, 'tr.' + chartRow)
19575
+ this.taskBarEditElement.style.setProperty("opacity", '.75');
19576
+ const taskBarMainContainer$$1 = (!this.taskBarEditElement.classList.contains(taskBarMainContainer)) ? ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && this.segmentIndex === 0) ? this.taskBarEditElement.parentElement : closest(this.taskBarEditElement, 'tr.' + chartRow)
19560
19577
  .querySelector('.' + taskBarMainContainer) : this.taskBarEditElement;
19561
19578
  const segmentedTaskBarContainer = this.taskBarEditElement.classList.contains('e-segmented-taskbar');
19562
- const leftLabelContainer$$1 = closest(this.taskBarEditElement, 'tr.' + chartRow)
19563
- .querySelector('.' + leftLabelContainer);
19564
- const rightLabelContainer$$1 = closest(this.taskBarEditElement, 'tr.' + chartRow)
19565
- .querySelector('.' + rightLabelContainer);
19566
19579
  const traceChildProgressBar$$1 = this.taskBarEditElement.querySelector('.' + traceChildProgressBar);
19567
19580
  const traceChildTaskBar$$1 = this.taskBarEditElement.querySelector('.' + traceChildTaskBar);
19568
19581
  const childProgressResizer$$1 = this.taskBarEditElement.querySelector('.' + childProgressResizer);
@@ -19574,34 +19587,45 @@ class TaskbarEdit extends DateProcessor {
19574
19587
  const manualTaskbar = this.taskBarEditElement.querySelector('.' + manualParentTaskBar);
19575
19588
  const manualParentRight = this.taskBarEditElement.querySelector('.' + manualParentRightResizer);
19576
19589
  const manualParentLeft = this.taskBarEditElement.querySelector('.' + manualParentLeftResizer);
19590
+ const resizeLine = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-taskbar-resize-div');
19577
19591
  if (this.taskBarEditAction !== 'ConnectorPointRightDrag' &&
19578
19592
  this.taskBarEditAction !== 'ConnectorPointLeftDrag') {
19579
19593
  if (this.taskBarEditAction !== 'ParentResizing' && this.taskBarEditAction !== 'ManualParentDrag') {
19580
19594
  if (segmentedTaskBarContainer && !isNullOrUndefined(item.segments)
19581
19595
  && (this.taskBarEditAction === 'RightResizing' || this.segmentIndex !== 0)) {
19596
+ if (!isNullOrUndefined(resizeLine)) {
19597
+ resizeLine.style.width = (segment.width) + "px";
19598
+ }
19582
19599
  this.taskBarEditElement.style.width = (segment.width) + 'px';
19583
19600
  if (this.parent.enableRtl) {
19584
19601
  this.taskBarEditElement.style.right = (segment.left) + 'px';
19585
19602
  }
19586
19603
  else {
19587
19604
  this.taskBarEditElement.style.left = (segment.left) + 'px';
19605
+ if (!isNullOrUndefined(resizeLine)) {
19606
+ resizeLine.style.left = (segment.left + this.editElement.parentElement.offsetLeft) + "px";
19607
+ }
19588
19608
  }
19589
19609
  }
19590
- taskBarMainContainer$$1.style.width = (width) + 'px';
19591
- leftLabelContainer$$1.style.width = (item.left) + 'px';
19592
19610
  taskBarMainContainer$$1.style.setProperty(position, (item.left) + 'px');
19611
+ taskBarMainContainer$$1.style.width = (width) + 'px';
19593
19612
  if (this.parent.viewType === 'ResourceView' && this.parent.allowTaskbarDragAndDrop && this.parent.rowDragAndDropModule &&
19594
19613
  (this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'MilestoneDrag')) {
19595
19614
  taskBarMainContainer$$1.style.setProperty('top', (this.topValue) + 'px');
19596
19615
  taskBarMainContainer$$1.style.zIndex = '4';
19597
19616
  }
19598
19617
  if (this.taskBarEditAction === 'LeftResizing' && this.segmentIndex === 0) {
19618
+ this.taskBarEditElement.style.setProperty("opacity", '.75');
19599
19619
  const parent = this.taskBarEditElement.parentElement;
19600
19620
  const segmentedTasks = parent.getElementsByClassName('e-segmented-taskbar');
19601
19621
  for (let i = 0; i < item.segments.length; i++) {
19602
19622
  const segment = item.segments[i];
19603
19623
  const segmentElement = segmentedTasks[i];
19604
19624
  segmentElement.style.width = (segment.width) + 'px';
19625
+ if (i === 0) {
19626
+ resizeLine.style.width = (segment.width) + "px";
19627
+ resizeLine.style.left = (segment.left + item.left) + "px";
19628
+ }
19605
19629
  if (this.parent.enableRtl) {
19606
19630
  segmentElement.style.right = (segment.left) + 'px';
19607
19631
  }
@@ -19610,8 +19634,10 @@ class TaskbarEdit extends DateProcessor {
19610
19634
  }
19611
19635
  }
19612
19636
  }
19613
- if (!isNullOrUndefined(rightLabelContainer$$1)) {
19614
- rightLabelContainer$$1.style.setProperty(position, (item.left + width) + 'px');
19637
+ if (this.taskBarEditAction === 'ChildDrag' && this.segmentIndex === 0) {
19638
+ resizeLine.style.width = (width) + "px";
19639
+ resizeLine.style.left = (item.left) + "px";
19640
+ taskBarMainContainer$$1.style.setProperty("opacity", '.75');
19615
19641
  }
19616
19642
  }
19617
19643
  if (traceConnectorPointRight) {
@@ -19624,10 +19650,8 @@ class TaskbarEdit extends DateProcessor {
19624
19650
  }
19625
19651
  if (this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone) {
19626
19652
  taskBarMainContainer$$1.style.setProperty(position, (item.left - (width / 2)) + 'px');
19627
- leftLabelContainer$$1.style.width = (item.left - (width / 2)) + 'px';
19628
- if (!isNullOrUndefined(rightLabelContainer$$1)) {
19629
- rightLabelContainer$$1.style.setProperty(position, (item.left + (width / 2)) + 'px');
19630
- }
19653
+ resizeLine.style.left = (item.left - (width / 2)) + 'px';
19654
+ resizeLine.style.width = (width) + "px";
19631
19655
  }
19632
19656
  else if (this.taskBarEditAction === 'ProgressResizing') {
19633
19657
  if (this.segmentIndex === -1) {
@@ -19650,6 +19674,7 @@ class TaskbarEdit extends DateProcessor {
19650
19674
  }
19651
19675
  }
19652
19676
  else if (this.taskBarEditAction === 'RightResizing' && !isNullOrUndefined(traceChildTaskBar$$1)) {
19677
+ resizeLine.style.width = (width) + 'px';
19653
19678
  traceChildTaskBar$$1.style.width = (width) + 'px';
19654
19679
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
19655
19680
  traceChildProgressBar$$1.style.width = (item.progressWidth) + 'px';
@@ -19660,23 +19685,36 @@ class TaskbarEdit extends DateProcessor {
19660
19685
  }
19661
19686
  }
19662
19687
  else if (this.taskBarEditAction === 'ParentDrag') {
19688
+ resizeLine.style.left = (item.left) + 'px';
19689
+ resizeLine.style.width = (width) + "px";
19690
+ resizeLine.style.width = (item.width) + 'px';
19663
19691
  if (!isNullOrUndefined(traceParentTaskBar$$1)) {
19664
19692
  traceParentTaskBar$$1.style.width = (width) + 'px';
19693
+ resizeLine.style.width = (item.width) + 'px';
19665
19694
  }
19666
19695
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
19667
19696
  traceParentProgressBar$$1.style.width = (item.progressWidth) + 'px';
19668
19697
  }
19669
19698
  }
19670
19699
  else if (this.taskBarEditAction === 'ParentResizing') {
19700
+ resizeLine.style.width = (item.width) + 'px';
19701
+ resizeLine.style.left = item.left + 'px';
19671
19702
  manualParentTaskbar.style.width = manualTaskbar.style.width = (item.width) + 'px';
19672
19703
  manualParentRight.style.setProperty(position, item.width - manualParentLeft.offsetLeft + 'px');
19673
19704
  }
19674
19705
  else if (this.taskBarEditAction === 'ManualParentDrag') {
19706
+ resizeLine.style.width = (item.width) + 'px';
19707
+ resizeLine.style.left = item.left + 'px';
19675
19708
  manualParentTaskbar.style.setProperty(position, item.left - item.autoLeft + 'px');
19676
19709
  }
19677
19710
  else {
19678
19711
  if (!isNullOrUndefined(traceChildTaskBar$$1) && !segmentedTaskBarContainer) {
19679
- traceChildTaskBar$$1.style.width = (width) + 'px';
19712
+ traceChildTaskBar$$1.style.width = (item.width) + 'px';
19713
+ traceChildTaskBar$$1.style.left = (item.left) + 'px';
19714
+ this.taskBarEditElement.style.width = (item.width) + 'px';
19715
+ this.taskBarEditElement.style.left = (item.left) + "px";
19716
+ resizeLine.style.left = (item.left) + 'px';
19717
+ resizeLine.style.width = (item.width) + "px";
19680
19718
  }
19681
19719
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
19682
19720
  taskBarRightResizer$$1.style.setProperty(position, rightResizer + 'px');
@@ -20072,21 +20110,21 @@ class TaskbarEdit extends DateProcessor {
20072
20110
  if ((this.parent.virtualScrollModule && this.parent.enableVirtualization &&
20073
20111
  !this.elementOffsetLeft) || !this.parent.enableVirtualization) {
20074
20112
  if (!this.parent.allowParentDependency) {
20075
- this.elementOffsetLeft = this.taskBarEditElement.offsetLeft;
20076
- this.elementOffsetTop = this.taskBarEditElement.offsetTop + scrollTop;
20113
+ this.elementOffsetLeft = this.realTaskbarElement.offsetLeft;
20114
+ this.elementOffsetTop = this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 + scrollTop;
20077
20115
  }
20078
20116
  else {
20079
20117
  if (this.taskBarEditElement.children[0].classList.contains('e-manualparent-main-container')) {
20080
- this.elementOffsetLeft = this.taskBarEditElement.children[0]['offsetLeft'] + this.taskBarEditElement.offsetLeft;
20081
- this.elementOffsetTop = ((this.taskBarEditElement.offsetTop - 5) + this.taskBarEditElement.children[0]['offsetTop']) + scrollTop;
20118
+ this.elementOffsetLeft = this.realTaskbarElement.children[0]['offsetLeft'] + this.realTaskbarElement.offsetLeft;
20119
+ this.elementOffsetTop = ((this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 - 5) + this.taskBarEditElement.children[0]['offsetTop']) + scrollTop;
20082
20120
  }
20083
20121
  else {
20084
- this.elementOffsetLeft = this.taskBarEditElement.offsetLeft;
20085
- this.elementOffsetTop = this.taskBarEditElement.offsetTop + scrollTop;
20122
+ this.elementOffsetLeft = this.realTaskbarElement.offsetLeft;
20123
+ this.elementOffsetTop = this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 + scrollTop;
20086
20124
  }
20087
20125
  }
20088
- this.elementOffsetWidth = this.taskBarEditElement.offsetWidth;
20089
- this.elementOffsetHeight = this.taskBarEditElement.offsetHeight;
20126
+ this.elementOffsetWidth = this.realTaskbarElement.offsetWidth;
20127
+ this.elementOffsetHeight = this.realTaskbarElement.offsetHeight;
20090
20128
  }
20091
20129
  this.showHideTaskBarEditingElements(element, this.highlightedSecondElement, true);
20092
20130
  }
@@ -22621,10 +22659,11 @@ class ConnectorLineEdit {
22621
22659
  * @private
22622
22660
  */
22623
22661
  getConnectorLineHoverElement(target) {
22624
- const isOnLine = parentsUntil$1(target, connectorLine);
22625
- const isOnRightArrow = parentsUntil$1(target, connectorLineRightArrow);
22626
- const isOnLeftArrow = parentsUntil$1(target, connectorLineLeftArrow);
22627
- if (isOnLine || isOnRightArrow || isOnLeftArrow) {
22662
+ const isOnLine = parentsUntil$1(target, connectorLineSVG);
22663
+ const isArrow = parentsUntil$1(target, connectorLineArrow);
22664
+ const isCriticalLine = parentsUntil$1(target, criticalConnectorLineSVG);
22665
+ var isCriticalArrow = parentsUntil$1(target, criticalConnectorArrowSVG);
22666
+ if (isOnLine || isArrow || isCriticalLine || isCriticalArrow) {
22628
22667
  return parentsUntil$1(target, connectorLineContainer);
22629
22668
  }
22630
22669
  else {
@@ -22658,16 +22697,13 @@ class ConnectorLineEdit {
22658
22697
  */
22659
22698
  addHighlight(element) {
22660
22699
  this.connectorLineElement = element;
22661
- addClass([element], [connectorLineHoverZIndex]);
22662
- if (element.querySelectorAll('.' + connectorLine)[0].classList.contains('e-criticalconnector-line')) {
22663
- addClass(element.querySelectorAll('.' + connectorLine), [criticalConnectorLineHover]);
22664
- addClass(element.querySelectorAll('.' + connectorLineRightArrow), [criticalConnectorLineRightArrowHover]);
22665
- addClass(element.querySelectorAll('.' + connectorLineLeftArrow), [criticalConnectorLineLeftArrowHover]);
22700
+ const pathElement = element.querySelector('.' + connectorLineSVG);
22701
+ const criticalElement = element.querySelector('.' + criticalConnectorLineSVG);
22702
+ if (pathElement) {
22703
+ pathElement.setAttribute('stroke-width', '2');
22666
22704
  }
22667
22705
  else {
22668
- addClass(element.querySelectorAll('.' + connectorLine), [connectorLineHover]);
22669
- addClass(element.querySelectorAll('.' + connectorLineRightArrow), [connectorLineRightArrowHover]);
22670
- addClass(element.querySelectorAll('.' + connectorLineLeftArrow), [connectorLineLeftArrowHover]);
22706
+ criticalElement.setAttribute('stroke-width', '2');
22671
22707
  }
22672
22708
  }
22673
22709
  /**
@@ -22677,17 +22713,14 @@ class ConnectorLineEdit {
22677
22713
  * @private
22678
22714
  */
22679
22715
  removeHighlight() {
22680
- if (!isNullOrUndefined(this.connectorLineElement)) {
22681
- removeClass([this.connectorLineElement], [connectorLineHoverZIndex]);
22682
- if (this.connectorLineElement.querySelectorAll('.' + connectorLine)[0].classList.contains(criticalConnectorLineHover)) {
22683
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLine), [criticalConnectorLineHover]);
22684
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLineRightArrow), [criticalConnectorLineRightArrowHover]);
22685
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLineLeftArrow), [criticalConnectorLineLeftArrowHover]);
22716
+ if (this.connectorLineElement) {
22717
+ const pathElement = this.connectorLineElement.querySelector('.' + connectorLineSVG);
22718
+ const criticalElement = this.connectorLineElement.querySelector('.' + criticalConnectorLineSVG);
22719
+ if (pathElement) {
22720
+ pathElement.setAttribute('stroke-width', '1');
22686
22721
  }
22687
22722
  else {
22688
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLine), [connectorLineHover]);
22689
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLineRightArrow), [connectorLineRightArrowHover]);
22690
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLineLeftArrow), [connectorLineLeftArrowHover]);
22723
+ criticalElement.setAttribute('stroke-width', '1');
22691
22724
  }
22692
22725
  this.connectorLineElement = null;
22693
22726
  }
@@ -22754,8 +22787,8 @@ class ConnectorLineEdit {
22754
22787
  this.parent.connectorLineModule.expandedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?
22755
22788
  this.parent.updatedRecords : this.parent.getExpandedRecords(this.parent.updatedRecords);
22756
22789
  const editedConnectorLineString = this.getEditedConnectorLineString(editedRecord);
22757
- this.parent.connectorLineModule.dependencyViewContainer.innerHTML =
22758
- this.parent.connectorLineModule.dependencyViewContainer.innerHTML + editedConnectorLineString;
22790
+ this.parent.connectorLineModule.svgObject.innerHTML =
22791
+ this.parent.connectorLineModule.svgObject.innerHTML + editedConnectorLineString;
22759
22792
  }
22760
22793
  idFromPredecessor(pre) {
22761
22794
  const preArray = pre.split(',');
@@ -23375,9 +23408,9 @@ class ConnectorLineEdit {
23375
23408
  validateTypes(ganttRecord, data) {
23376
23409
  const predecessor = this.parent.predecessorModule.getValidPredecessor(ganttRecord);
23377
23410
  let parentGanttRecord;
23378
- let ganttTaskData;
23379
23411
  this.validationPredecessor = [];
23380
23412
  let violatedParent;
23413
+ let ganttTaskData;
23381
23414
  let violateType;
23382
23415
  const startDate = this.parent.predecessorModule.getPredecessorDate(ganttRecord, predecessor);
23383
23416
  if (data) {
@@ -24450,6 +24483,10 @@ class Edit$2 {
24450
24483
  if (data.hasChildRecords && ganttProp.isAutoSchedule) {
24451
24484
  this.parent.setRecordValue('startDate', ganttProp.autoStartDate, ganttProp, true);
24452
24485
  this.parent.setRecordValue('endDate', ganttProp.autoEndDate, ganttProp, true);
24486
+ this.parent.setRecordValue('StartDate', ganttProp.autoStartDate, data, true);
24487
+ this.parent.setRecordValue('EndDate', ganttProp.autoEndDate, data, true);
24488
+ this.parent.setRecordValue('taskData.StartDate', ganttProp.autoStartDate, data, true);
24489
+ this.parent.setRecordValue('taskData.EndDate', ganttProp.autoEndDate, data, true);
24453
24490
  this.parent.setRecordValue('width', this.parent.dataOperation.calculateWidth(data, true), ganttProp, true);
24454
24491
  this.parent.setRecordValue('left', this.parent.dataOperation.calculateLeft(ganttProp, true), ganttProp, true);
24455
24492
  this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth(ganttProp.width, ganttProp.progress), ganttProp, true);
@@ -24458,8 +24495,8 @@ class Edit$2 {
24458
24495
  else if (data.hasChildRecords && !ganttProp.isAutoSchedule) {
24459
24496
  this.parent.dataOperation.updateWidthLeft(data);
24460
24497
  this.parent.dataOperation.calculateDuration(data);
24461
- this.parent.setRecordValue('autoStartDate', ganttProp.startDate, ganttProp, true);
24462
- this.parent.setRecordValue('autoEndDate', ganttProp.endDate, ganttProp, true);
24498
+ this.parent.setRecordValue('autoStartDate', ganttProp.autoStartDate, ganttProp, true);
24499
+ this.parent.setRecordValue('autoEndDate', ganttProp.autoEndDate, ganttProp, true);
24463
24500
  this.parent.setRecordValue('autoDuration', this.parent.dataOperation.calculateAutoDuration(data), ganttProp, true);
24464
24501
  this.parent.dataOperation.updateAutoWidthLeft(data);
24465
24502
  }
@@ -24684,7 +24721,6 @@ class Edit$2 {
24684
24721
  }
24685
24722
  if (childRecords.length) {
24686
24723
  this.parent.dataOperation.updateParentItems(ganttRecord, true);
24687
- this.parent.dataOperation.updateGanttData();
24688
24724
  }
24689
24725
  }
24690
24726
  /**
@@ -24896,8 +24932,8 @@ class Edit$2 {
24896
24932
  }
24897
24933
  }
24898
24934
  if (this.parent.isConnectorLineUpdate && !isNullOrUndefined(this.parent.connectorLineEditModule)) {
24899
- this.parent.updatedConnectorLineCollection = [];
24900
- this.parent.connectorLineIds = [];
24935
+ // this.parent.updatedConnectorLineCollection = [];
24936
+ // this.parent.connectorLineIds = [];
24901
24937
  this.parent.connectorLineEditModule.refreshEditedRecordConnectorLine(this.parent.editedRecords);
24902
24938
  this.updateScheduleDatesOnEditing(args);
24903
24939
  }
@@ -26411,7 +26447,6 @@ class Edit$2 {
26411
26447
  let args = {};
26412
26448
  args = this.constructTaskAddedEventArgs(cAddedRecord, this.parent.editedRecords, 'beforeAdd');
26413
26449
  this.parent.trigger('actionBegin', args, (args) => {
26414
- this.parent.previousRecords = {};
26415
26450
  if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
26416
26451
  this.parent.showMaskRow();
26417
26452
  }
@@ -28953,7 +28988,7 @@ class NonWorkingDay {
28953
28988
  this.nonworkingContainer = createElement('div', {
28954
28989
  className: nonworkingContainer
28955
28990
  });
28956
- this.parent.ganttChartModule.chartBodyContent.appendChild(this.nonworkingContainer);
28991
+ this.parent.ganttChartModule.chartBodyContent.insertBefore(this.nonworkingContainer, this.parent.ganttChartModule.chartBodyContent.lastChild);
28957
28992
  }
28958
28993
  }
28959
28994
  /**
@@ -29102,7 +29137,7 @@ class NonWorkingDay {
29102
29137
  }
29103
29138
  updateHolidayLabelHeight() {
29104
29139
  const height = this.parent.getContentHeight();
29105
- let gantttable = this.parent.element;
29140
+ let gantttable = document.getElementById("ganttContainer");
29106
29141
  // eslint-disable-next-line
29107
29142
  let toolbarHeight = 0;
29108
29143
  if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {
@@ -29290,9 +29325,12 @@ class DayMarkers {
29290
29325
  }
29291
29326
  }
29292
29327
  refreshMarkers() {
29293
- this.eventMarkerRender.renderEventMarkers();
29294
29328
  this.nonworkingDayRender.renderWeekends();
29295
29329
  this.nonworkingDayRender.renderHolidays();
29330
+ if (this.parent.gridLines === 'Vertical' || this.parent.gridLines === 'Both') {
29331
+ this.parent['renderChartVerticalLines']();
29332
+ }
29333
+ this.eventMarkerRender.renderEventMarkers();
29296
29334
  }
29297
29335
  updateHeight() {
29298
29336
  this.nonworkingDayRender.updateContainerHeight();
@@ -30054,11 +30092,8 @@ class CriticalPath {
30054
30092
  }
30055
30093
  if (element && (this.parent.viewType === 'ProjectView' || (this.parent.viewType === 'ResourceView' &&
30056
30094
  !criticalData.hasChildRecords))) {
30057
- if (element.getElementsByClassName('e-milestone-top')[0]) {
30058
- addClass(element.querySelectorAll('.e-milestone-top'), criticalMilestoneTop);
30059
- }
30060
- if (element.getElementsByClassName('e-milestone-bottom')[0]) {
30061
- addClass(element.querySelectorAll('.e-milestone-bottom'), criticalMilestoneBottom);
30095
+ if (element.getElementsByClassName('e-gantt-milestone')[0]) {
30096
+ addClass(element.querySelectorAll('.e-gantt-milestone'), criticalMilestone);
30062
30097
  }
30063
30098
  if (element.getElementsByClassName('e-gantt-child-taskbar-inner-div').length > 0) {
30064
30099
  addClass(element.querySelectorAll('.e-gantt-child-taskbar-inner-div'), criticalChildTaskBarInnerDiv);
@@ -30094,11 +30129,9 @@ class CriticalPath {
30094
30129
  currentdata['taskid'] + 'child' + checkint);
30095
30130
  if (lineElement.length > 0) {
30096
30131
  addClass(this.parent.element.querySelectorAll('#ConnectorLineparent' + currentdata['taskid'] + 'child' +
30097
- checkint)[0].querySelectorAll('.e-line'), criticalConnectorLine);
30098
- addClass(this.parent.element.querySelectorAll('#ConnectorLineparent' + currentdata['taskid'] + 'child' +
30099
- checkint)[0].querySelectorAll('.e-connector-line-right-arrow'), criticalConnectorLineRightArrow);
30132
+ checkint)[0].querySelectorAll('.e-connector-line'), criticalConnectorLineSVG);
30100
30133
  addClass(this.parent.element.querySelectorAll('#ConnectorLineparent' + currentdata['taskid'] + 'child' +
30101
- checkint)[0].querySelectorAll('.e-connector-line-left-arrow'), criticalConnectorLineLeftArrow);
30134
+ checkint)[0].querySelectorAll('.e-connector-line-arrow'), criticalConnectorArrowSVG);
30102
30135
  }
30103
30136
  }
30104
30137
  }
@@ -30397,7 +30430,7 @@ class ContextMenu$2 {
30397
30430
  splitTaskDuration = Math.ceil(currentTaskDifference / this.parent.timelineSettings.timelineUnitSize);
30398
30431
  splitTaskDuration -= 1;
30399
30432
  }
30400
- const contextMenuClickDate = this.parent.dataOperation.getEndDate(startDate, splitTaskDuration, (this.parent.timelineSettings.bottomTier.unit !== "None") ? this.parent.timelineSettings.bottomTier.unit.toLocaleLowerCase() : this.parent.timelineSettings.topTier.unit.toLocaleLowerCase(), this.rowData, false);
30433
+ const contextMenuClickDate = this.parent.dataOperation.getEndDate(startDate, splitTaskDuration, (this.parent.timelineModule.customTimelineSettings.bottomTier.unit !== "None") ? this.parent.timelineModule.customTimelineSettings.bottomTier.unit.toLocaleLowerCase() : this.parent.timelineModule.customTimelineSettings.topTier.unit.toLocaleLowerCase(), this.rowData, false);
30401
30434
  return contextMenuClickDate;
30402
30435
  }
30403
30436
  contextMenuBeforeOpen(args) {
@@ -30406,7 +30439,7 @@ class ContextMenu$2 {
30406
30439
  this.parent.ganttChartModule.targetElement;
30407
30440
  // Closed edited cell before opening context menu
30408
30441
  // eslint-disable-next-line
30409
- if (!isNullOrUndefined(this.parent.editModule) && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit && target.parentElement.classList.contains('e-row') || target.parentElement.classList.contains('e-treecolumn-container')) {
30442
+ if (!isNullOrUndefined(this.parent.editModule) && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit && target.parentElement.classList.contains('e-row')) {
30410
30443
  this.parent.treeGrid.closeEdit();
30411
30444
  }
30412
30445
  if (!isNullOrUndefined(args.element) && args.element.id === this.parent.element.id + '_contextmenu') {
@@ -34101,6 +34134,7 @@ class ExportHelper {
34101
34134
  predecessor.type = data.type;
34102
34135
  predecessor.milestoneParent = data.milestoneParent;
34103
34136
  predecessor.milestoneChild = data.milestoneChild;
34137
+ predecessor.parentEndPoint = data.parentEndPoint;
34104
34138
  predecessor.lineWidth = this.parent.connectorLineWidth > 5 ? pixelToPoint(5) : pixelToPoint(this.parent.connectorLineWidth);
34105
34139
  if (data.isCritical) {
34106
34140
  predecessor.connectorLineColor = this.ganttStyle.criticalConnectorLineColor;
@@ -35086,22 +35120,11 @@ class PdfGanttPredecessor {
35086
35120
  this.parent = parent;
35087
35121
  this.pdfGantt = pdfGantt;
35088
35122
  }
35089
- findindex(num, pdfExportProperties) {
35123
+ findindex(num) {
35090
35124
  var dataindex;
35091
- if (pdfExportProperties.exportType === 'CurrentViewData') {
35092
- this.parent.currentViewData.map(function (data, index) {
35093
- if (data.index == num) {
35094
- dataindex = index;
35095
- }
35096
- });
35097
- }
35098
- else {
35099
- this.parent.flatData.map(function (data, index) {
35100
- if (data.index == num) {
35101
- dataindex = index;
35102
- }
35103
- });
35104
- }
35125
+ this.parent.currentViewData.map((data, index) => { if (data.index == num) {
35126
+ dataindex = index;
35127
+ } });
35105
35128
  return dataindex;
35106
35129
  }
35107
35130
  /**
@@ -35111,11 +35134,11 @@ class PdfGanttPredecessor {
35111
35134
  * @returns {void}
35112
35135
  * @private
35113
35136
  */
35114
- drawPredecessor(pdfGantt, pdfExportProperties) {
35137
+ drawPredecessor(pdfGantt) {
35115
35138
  this.pdfGantt = pdfGantt;
35116
35139
  const pages = pdfGantt.result.page.section.getPages();
35117
- const parentTask = pdfGantt.taskbarCollection[this.findindex(this.parentIndex, pdfExportProperties)];
35118
- const childTask = pdfGantt.taskbarCollection[this.findindex(this.childIndex, pdfExportProperties)];
35140
+ const parentTask = pdfGantt.taskbarCollection[this.findindex(this.parentIndex)];
35141
+ const childTask = pdfGantt.taskbarCollection[this.findindex(this.childIndex)];
35119
35142
  let startPage = new PdfPage();
35120
35143
  let endPage = new PdfPage();
35121
35144
  let predecessorType = '';
@@ -35125,7 +35148,7 @@ class PdfGanttPredecessor {
35125
35148
  let childY = 0;
35126
35149
  switch (this.type) {
35127
35150
  case 'FS':
35128
- if ((!isNullOrUndefined(childTask) && childTask.startPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.endPage > -1)) {
35151
+ if (childTask.startPage > -1 && parentTask.endPage > -1) {
35129
35152
  startPage = pages[parentTask.endPage];
35130
35153
  endPage = pages[childTask.startPage];
35131
35154
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35152,7 +35175,7 @@ class PdfGanttPredecessor {
35152
35175
  }
35153
35176
  break;
35154
35177
  case 'SF':
35155
- if ((!isNullOrUndefined(childTask) && childTask.endPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.startPage > -1)) {
35178
+ if (childTask.endPage > -1 && parentTask.startPage > -1) {
35156
35179
  startPage = pages[parentTask.startPage];
35157
35180
  endPage = pages[childTask.endPage];
35158
35181
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35179,7 +35202,7 @@ class PdfGanttPredecessor {
35179
35202
  }
35180
35203
  break;
35181
35204
  case 'FF':
35182
- if ((!isNullOrUndefined(childTask) && childTask.endPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.endPage > -1)) {
35205
+ if (childTask.endPage > -1 && parentTask.endPage > -1) {
35183
35206
  startPage = pages[parentTask.endPage];
35184
35207
  endPage = pages[childTask.endPage];
35185
35208
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35206,7 +35229,7 @@ class PdfGanttPredecessor {
35206
35229
  }
35207
35230
  break;
35208
35231
  case 'SS':
35209
- if ((!isNullOrUndefined(childTask) && childTask.startPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.startPage > -1)) {
35232
+ if (childTask.startPage > -1 && parentTask.startPage > -1) {
35210
35233
  startPage = pages[parentTask.startPage];
35211
35234
  endPage = pages[childTask.startPage];
35212
35235
  parentPageData = pdfGantt.pdfPageDetail[parentTask.startPage - pdfGantt.chartPageIndex];
@@ -35533,12 +35556,12 @@ class PdfGantt extends PdfTreeGrid {
35533
35556
  }
35534
35557
  return this.taskbars;
35535
35558
  }
35536
- drawChart(result, pdfExportProperties) {
35559
+ drawChart(result) {
35537
35560
  this.result = result;
35538
35561
  this.totalPages = this.result.page.section.count;
35539
35562
  this.perColumnPages = this.totalPages / this.layouter.columnRanges.length;
35540
35563
  this.calculateRange();
35541
- this.drawGantttChart(pdfExportProperties);
35564
+ this.drawGantttChart();
35542
35565
  this.drawPageBorder();
35543
35566
  }
35544
35567
  //Calcualte the header range for each pdf page based on schedule start and end date.
@@ -35687,7 +35710,7 @@ class PdfGantt extends PdfTreeGrid {
35687
35710
  }
35688
35711
  }
35689
35712
  //Draw the gantt chart side
35690
- drawGantttChart(pdfExportProperties) {
35713
+ drawGantttChart() {
35691
35714
  let taskbarPoint = this.startPoint;
35692
35715
  const pagePoint = new PointF();
35693
35716
  let pageStartX = 0;
@@ -35761,7 +35784,7 @@ class PdfGantt extends PdfTreeGrid {
35761
35784
  // Draw predecessor line.
35762
35785
  for (let i = 0; i < this.predecessorCollection.length; i++) {
35763
35786
  const predecessor = this.predecessorCollection[i];
35764
- predecessor.drawPredecessor(this, pdfExportProperties);
35787
+ predecessor.drawPredecessor(this);
35765
35788
  }
35766
35789
  }
35767
35790
  }
@@ -35874,7 +35897,7 @@ class PdfExport {
35874
35897
  const format = new PdfTreeGridLayoutFormat();
35875
35898
  format.break = PdfLayoutBreakType.FitElement;
35876
35899
  const layouter = this.gantt.drawGrid(pdfPage, 0, 0, format);
35877
- this.gantt.drawChart(layouter, pdfExportProperties);
35900
+ this.gantt.drawChart(layouter);
35878
35901
  if (!isMultipleExport) {
35879
35902
  if (!this.isBlob) {
35880
35903
  // save the PDF