@syncfusion/ej2-gantt 21.2.9 → 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 +23 -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 +751 -715
  7. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  8. package/dist/es6/ej2-gantt.es5.js +790 -755
  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 +19 -18
  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 +9 -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 +10 -20
  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 +21 -18
  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 {
@@ -1557,7 +1541,15 @@ class DateProcessor {
1557
1541
  const segment = segments[i];
1558
1542
  const sDate = segment.startDate;
1559
1543
  const eDate = segment.endDate;
1560
- duration += Math.ceil(this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * 24));
1544
+ if (this.parent.timelineModule.bottomTier === "Hour") {
1545
+ duration += Math.ceil(this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60));
1546
+ }
1547
+ else if (this.parent.timelineModule.bottomTier === "Minutes") {
1548
+ duration += Math.ceil(this.getTimeDifference(sDate, eDate) / (1000 * 60));
1549
+ }
1550
+ else {
1551
+ duration += Math.ceil(this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * 24));
1552
+ }
1561
1553
  }
1562
1554
  return duration;
1563
1555
  }
@@ -1885,7 +1877,7 @@ class TaskProcessor extends DateProcessor {
1885
1877
  (this.parent.taskMode === 'Manual') ? false :
1886
1878
  data[taskSettings.manual] === true ? false : true;
1887
1879
  this.parent.setRecordValue('ganttProperties', ganttProperties, ganttData);
1888
- if (!isNullOrUndefined(data[taskSettings.id]) && (!((this.parent.viewType === "ResourceView" && level == 0))) || data[taskSettings.name] === "Unassigned Task") {
1880
+ if (!isNullOrUndefined(data[taskSettings.id])) {
1889
1881
  id = data[taskSettings.id];
1890
1882
  name = data[taskSettings.name];
1891
1883
  this.addTaskData(ganttData, data, isLoad);
@@ -2326,7 +2318,7 @@ class TaskProcessor extends DateProcessor {
2326
2318
  startDate = this.getDateFromFormat(data[taskSettings.startDate], true);
2327
2319
  endDate = this.getDateFromFormat(data[taskSettings.endDate], true);
2328
2320
  }
2329
- const segments = taskSettings.segments && (!isNullOrUndefined(data[taskSettings.segments]) || !isNullOrUndefined(ganttData.taskData)) ? (data[taskSettings.segments] ||
2321
+ const segments = taskSettings.segments ? (data[taskSettings.segments] ||
2330
2322
  ganttData.taskData[taskSettings.segments]) : null;
2331
2323
  const isMileStone = taskSettings.milestone ? data[taskSettings.milestone] ? true : false : false;
2332
2324
  const durationMapping = data[taskSettings.durationUnit] ? data[taskSettings.durationUnit] : '';
@@ -2948,7 +2940,7 @@ class TaskProcessor extends DateProcessor {
2948
2940
  const data = [];
2949
2941
  for (let k = 0; k < preTaskResources.length; k++) {
2950
2942
  resourceData.filter((resourceInfo) => {
2951
- if (resourceInfo[resourceSettings.id] === preTaskResources[k][resourceSettings.id]) {
2943
+ if (resourceInfo[resourceSettings.id] === preTaskResources[k][resourceSettings.id] && data.indexOf(preTaskResources[k]) === -1) {
2952
2944
  data.push(preTaskResources[k]);
2953
2945
  }
2954
2946
  });
@@ -3014,7 +3006,7 @@ class TaskProcessor extends DateProcessor {
3014
3006
  setDataSource(data) {
3015
3007
  let createData = [];
3016
3008
  let length = data.length;
3017
- for (var i = 0; i < length; i++) {
3009
+ for (let i = 0; i < length; i++) {
3018
3010
  let record = data[i];
3019
3011
  createData.push(record);
3020
3012
  if (!(isNullOrUndefined(data[i][this.parent.taskFields.child]))) {
@@ -3031,15 +3023,17 @@ class TaskProcessor extends DateProcessor {
3031
3023
  else {
3032
3024
  hierarchicalData = this.parent.dataSource;
3033
3025
  }
3034
- hierarchicalData.map((record) => {
3035
- if (task.ganttProperties.taskId === record[this.parent.taskFields.id]) {
3036
- if (!isNullOrUndefined(this.parent.taskFields.startDate)) {
3037
- task[this.parent.taskFields.startDate] = record[this.parent.taskFields.startDate];
3038
- }
3039
- if (!isNullOrUndefined(this.parent.taskFields.endDate)) {
3040
- 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
+ }
3041
3035
  }
3042
- }
3036
+ });
3043
3037
  });
3044
3038
  }
3045
3039
  getWorkInHour(work, workUnit) {
@@ -3149,9 +3143,6 @@ class TaskProcessor extends DateProcessor {
3149
3143
  return resourceIdCollection;
3150
3144
  }
3151
3145
  resourceIdCollection = data[this.parent.taskFields.resourceInfo];
3152
- if (resourceIdCollection != "" && typeof resourceIdCollection == "string") {
3153
- resourceIdCollection = resourceIdCollection.split(',');
3154
- }
3155
3146
  let resourceData;
3156
3147
  if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.dialogModule)
3157
3148
  && this.parent.editModule.dialogModule.isAddNewResource) {
@@ -3161,7 +3152,6 @@ class TaskProcessor extends DateProcessor {
3161
3152
  resourceData = this.parent.resources;
3162
3153
  }
3163
3154
  const resourceIDMapping = this.parent.resourceFields.id;
3164
- const resourceNameMapping = this.parent.resourceFields.name;
3165
3155
  const resourceUnitMapping = this.parent.resourceFields.unit;
3166
3156
  const resourceGroup = this.parent.resourceFields.group;
3167
3157
  const resources = [];
@@ -3172,7 +3162,7 @@ class TaskProcessor extends DateProcessor {
3172
3162
  return true;
3173
3163
  }
3174
3164
  else {
3175
- return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]) || (resourceIdCollection[count] === resourceInfo[resourceNameMapping]);
3165
+ return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]);
3176
3166
  }
3177
3167
  });
3178
3168
  const ganttDataResource = extend({}, resource[0]);
@@ -3226,7 +3216,9 @@ class TaskProcessor extends DateProcessor {
3226
3216
  if (resourceUnit !== 100) {
3227
3217
  resName += '[' + resourceUnit + '%' + ']';
3228
3218
  }
3229
- resourceName.push(resName);
3219
+ if (!isNullOrUndefined(resName)) {
3220
+ resourceName.push(resName);
3221
+ }
3230
3222
  if (data.taskData) {
3231
3223
  const mapping = taskMapping.resourceInfo;
3232
3224
  // eslint-disable-next-line
@@ -3727,7 +3719,8 @@ class TaskProcessor extends DateProcessor {
3727
3719
  if (!isNullOrUndefined(ganttRecord.segments) && ganttRecord.segments.length > 0) {
3728
3720
  const segments = ganttRecord.segments;
3729
3721
  let fixedWidth = true;
3730
- const totalTaskWidth = this.splitTasksDuration(segments) * this.parent.perDayWidth;
3722
+ const totalTaskWidth = this.splitTasksDuration(segments) * ((this.parent.timelineModule.bottomTier === "Hour" || this.parent.timelineModule.bottomTier === "Minutes") ? this.parent.timelineSettings.timelineUnitSize : this.parent.perDayWidth);
3723
+
3731
3724
  let totalProgressWidth = this.parent.dataOperation.getProgressWidth(totalTaskWidth, ganttRecord.progress);
3732
3725
  for (let i = 0; i < segments.length; i++) {
3733
3726
  const segment = segments[i];
@@ -3775,6 +3768,8 @@ class TaskProcessor extends DateProcessor {
3775
3768
  const ganttRecord = data.ganttProperties;
3776
3769
  this.parent.setRecordValue('autoWidth', this.calculateWidth(data, true), ganttRecord, true);
3777
3770
  this.parent.setRecordValue('autoLeft', this.calculateLeft(ganttRecord, true), ganttRecord, true);
3771
+ this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth((ganttRecord.isAutoSchedule ||
3772
+ !data.hasChildRecords ? ganttRecord.width : ganttRecord.autoWidth), ganttRecord.progress), ganttRecord, true);
3778
3773
  }
3779
3774
  /**
3780
3775
  * To calculate parent progress value
@@ -3999,15 +3994,10 @@ const childTaskBarInnerDiv = 'e-gantt-child-taskbar-inner-div';
3999
3994
  const childProgressBarInnerDiv = 'e-gantt-child-progressbar-inner-div';
4000
3995
  const criticalChildTaskBarInnerDiv = 'e-gantt-child-critical-taskbar-inner-div';
4001
3996
  const criticalChildProgressBarInnerDiv = 'e-gantt-child-critical-progressbar-inner-div';
4002
- const milestoneTop = 'e-milestone-top';
4003
- const milestoneBottom = 'e-milestone-bottom';
4004
- const criticalMilestoneTop = 'e-critical-milestone-top';
4005
- const criticalMilestoneBottom = 'e-critical-milestone-bottom';
3997
+ const criticalMilestone = 'e-critical-milestone';
4006
3998
  const baselineBar = 'e-baseline-bar';
4007
3999
  const baselineMilestoneContainer = 'e-baseline-gantt-milestone-container';
4008
- const baselineMilestoneDiv = 'e-baseline-gantt-milestone';
4009
- const baselineMilestoneTop = 'e-baseline-milestone-top';
4010
- const baselineMilestoneBottom = 'e-baseline-milestone-bottom';
4000
+
4011
4001
  const chartRowCell = 'e-chart-row-cell';
4012
4002
  const chartRow = 'e-chart-row';
4013
4003
  const rowExpand = 'e-row-expand';
@@ -4021,15 +4011,11 @@ const progressBarHandlerAfter = 'e-progressbar-handler-after';
4021
4011
  const icon = 'e-icon';
4022
4012
  const traceMilestone = 'e-gantt-milestone';
4023
4013
  const parentMilestone = 'e-gantt-parent-milestone';
4024
- const parentMilestoneTop = 'e-parent-milestone-top';
4025
- const parentMilestoneBottom = 'e-parent-milestone-bottom';
4026
4014
  const traceChildTaskBar = 'e-gantt-child-taskbar';
4027
4015
  const traceChildProgressBar = 'e-gantt-child-progressbar';
4028
4016
  const manualParentMainContainer = 'e-manualparent-main-container';
4029
4017
  const manualParentTaskBar = 'e-gantt-manualparenttaskbar';
4030
4018
  const manualParentMilestone = 'e-gantt-manualparent-milestone';
4031
- const manualParentMilestoneTop = 'e-manualparent-milestone-top';
4032
- const manualParentMilestoneBottom = 'e-manualparent-milestone-bottom';
4033
4019
  const manualChildTaskBar = 'e-gantt-child-manualtaskbar';
4034
4020
  const manualChildProgressBar = 'e-gantt-child-manualprogressbar';
4035
4021
  const manualParentRightResizer = 'e-gantt-manualparenttaskbar-right';
@@ -4060,25 +4046,29 @@ const weekend = 'e-weekend';
4060
4046
  const unscheduledTaskbarLeft = 'e-gantt-unscheduled-taskbar-left';
4061
4047
  const unscheduledTaskbarRight = 'e-gantt-unscheduled-taskbar-right';
4062
4048
  const unscheduledTaskbar = 'e-gantt-unscheduled-taskbar';
4063
- const unscheduledMilestoneTop = 'e-unscheduled-milestone-top';
4064
- const unscheduledMilestoneBottom = 'e-unscheduled-milestone-bottom';
4049
+
4050
+
4065
4051
  //Connector Line
4066
4052
  const dependencyViewContainer = 'e-gantt-dependency-view-container';
4067
4053
  const connectorLineContainer = 'e-connector-line-container';
4068
- const connectorLine = 'e-line';
4069
- const criticalConnectorLine = 'e-criticalconnector-line';
4070
- const criticalConnectorLineRightArrow = 'e-criticalconnector-line-right-arrow';
4071
- const criticalConnectorLineLeftArrow = 'e-criticalconnector-line-left-arrow';
4072
- const connectorLineRightArrow = 'e-connector-line-right-arrow';
4073
- 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
+
4074
4064
  const connectorLineZIndex = 'e-connector-line-z-index';
4075
- const connectorLineHover = 'e-connector-line-hover';
4076
- const criticalConnectorLineHover = 'e-critical-connector-line-hover';
4077
- const connectorLineHoverZIndex = 'e-connector-line-hover-z-index';
4078
- const connectorLineRightArrowHover = 'e-connector-line-right-arrow-hover';
4079
- const connectorLineLeftArrowHover = 'e-connector-line-left-arrow-hover';
4080
- const criticalConnectorLineRightArrowHover = 'e-critical-connector-line-right-arrow-hover';
4081
- const criticalConnectorLineLeftArrowHover = 'e-critical-connector-line-left-arrow-hover';
4065
+
4066
+
4067
+
4068
+
4069
+
4070
+
4071
+
4082
4072
 
4083
4073
  const connectorPointLeft = 'e-connectorpoint-left';
4084
4074
  const connectorPointRight = 'e-connectorpoint-right';
@@ -4806,6 +4796,16 @@ class GanttChart {
4806
4796
  if (this.parent.isDestroyed || e.which === 3) {
4807
4797
  return;
4808
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
+ }
4809
4809
  let isTaskbarEdited = false;
4810
4810
  if (this.parent.editSettings.allowTaskbarEditing &&
4811
4811
  getValue('editModule.taskbarEditModule.isMouseDragged', this.parent) &&
@@ -5364,7 +5364,72 @@ class GanttChart {
5364
5364
  /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
5365
5365
  $target.closest('.e-chart-row') ? $target.closest('.e-chart-row').rowIndex : -1;
5366
5366
  const isTab = (e.action === 'tab') ? true : false;
5367
- 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
+ }
5368
5433
  this.tempNextElement = nextElement;
5369
5434
  if (!isNullOrUndefined(nextElement) && !isNullOrUndefined(nextElement['cellIndex'])) {
5370
5435
  if (this.parent.allowRowDragAndDrop) {
@@ -5388,7 +5453,7 @@ class GanttChart {
5388
5453
  }
5389
5454
  if (typeof nextElement !== 'string') {
5390
5455
  if ($target.classList.contains('e-rowcell') || $target.closest('.e-chart-row-cell') ||
5391
- $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')) {
5392
5457
  e.preventDefault();
5393
5458
  }
5394
5459
  if (isTab && $target.classList.contains('e-rowdragdrop')) {
@@ -5424,11 +5489,21 @@ class GanttChart {
5424
5489
  }
5425
5490
  }
5426
5491
  else {
5427
- 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
+ }
5428
5500
  }
5429
5501
  }
5430
5502
  else {
5431
- 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
+ }
5432
5507
  }
5433
5508
  }
5434
5509
  if (!(this.parent.editModule && this.parent.editModule.cellEditModule
@@ -5440,7 +5515,8 @@ class GanttChart {
5440
5515
  else {
5441
5516
  this.manageFocus($target, 'remove', true);
5442
5517
  }
5443
- 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')) {
5444
5520
  if (!$target.classList.contains('e-rowcell')) {
5445
5521
  this.parent.treeGrid.grid.notify('key-pressed', e);
5446
5522
  const fmodule = getValue('focusModule', this.parent.treeGrid.grid);
@@ -5452,7 +5528,17 @@ class GanttChart {
5452
5528
  this.manageFocus(nextElement, 'add', false);
5453
5529
  }
5454
5530
  else {
5455
- 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
+ }
5456
5542
  }
5457
5543
  this.parent.focusModule.setActiveElement(nextElement);
5458
5544
  }
@@ -5539,6 +5625,17 @@ class GanttChart {
5539
5625
  const childElement = this.getChildElement(rowElement, isTab);
5540
5626
  return childElement;
5541
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
+ }
5542
5639
  }
5543
5640
  return null;
5544
5641
  }
@@ -8045,7 +8142,7 @@ class GanttTreeGrid {
8045
8142
  }
8046
8143
  } // eslint-disable-next-line
8047
8144
  durationValueAccessor(field, data, column) {
8048
- const ganttProp = (!isNullOrUndefined(data)) ? data.ganttProperties : null;
8145
+ const ganttProp = data.ganttProperties;
8049
8146
  if (!isNullOrUndefined(ganttProp)) {
8050
8147
  return this.parent.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);
8051
8148
  }
@@ -8671,7 +8768,7 @@ class ChartRows extends DateProcessor {
8671
8768
  createChartTable() {
8672
8769
  this.taskTable = createElement('table', {
8673
8770
  className: taskTable + ' ' + zeroSpacing, id: 'GanttTaskTable' + this.parent.element.id,
8674
- styles: 'z-index: 2;position: absolute;width:' + this.parent.timelineModule.totalTimelineWidth + 'px;',
8771
+ styles: 'position: absolute;width:' + this.parent.timelineModule.totalTimelineWidth + 'px;',
8675
8772
  attrs: { cellspacing: '0.25px' }
8676
8773
  });
8677
8774
  const colgroup = createElement('colgroup');
@@ -8755,7 +8852,7 @@ class ChartRows extends DateProcessor {
8755
8852
  taskbarInnerDiv = this.createDivElement('<div class="' + childTaskBarInnerDiv + ' ' + traceChildTaskBar +
8756
8853
  ' ' + (data.ganttProperties.isAutoSchedule ? '' : manualChildTaskBar) + '"' +
8757
8854
  'style="width:' + data.ganttProperties.width + 'px;height:' +
8758
- (this.taskBarHeight) + 'px;"></div>');
8855
+ (this.taskBarHeight) + 'px; margin-top :-1px"></div>');
8759
8856
  progressDiv = this.createDivElement('<div class="' + childProgressBarInnerDiv + ' ' +
8760
8857
  traceChildProgressBar + ' ' + (data.ganttProperties.isAutoSchedule ?
8761
8858
  '' : manualChildProgressBar) + '"' +
@@ -9234,15 +9331,8 @@ class ChartRows extends DateProcessor {
9234
9331
  milestoneNode = this.milestoneTemplateFunction(extend({ index: i }, data), this.parent, 'MilestoneTemplate', this.getTemplateID('MilestoneTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);
9235
9332
  }
9236
9333
  else {
9237
- const template = '<div class="' + traceMilestone + '" style="position:absolute;">' +
9238
- '<div class="' + milestoneTop + ' ' + ((!data.ganttProperties.startDate && !data.ganttProperties.endDate) ?
9239
- unscheduledMilestoneTop : '') + '" style="border-right-width:' +
9240
- this.milesStoneRadius + 'px;border-left-width:' + this.milesStoneRadius + 'px;border-bottom-width:' +
9241
- this.milesStoneRadius + 'px;"></div>' +
9242
- '<div class="' + milestoneBottom + ' ' + ((!data.ganttProperties.startDate && !data.ganttProperties.endDate) ?
9243
- unscheduledMilestoneBottom : '') + '" style="top:' +
9244
- (this.milesStoneRadius) + 'px;border-right-width:' + this.milesStoneRadius + 'px; border-left-width:' +
9245
- 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>';
9246
9336
  milestoneNode = this.createDivElement(template);
9247
9337
  }
9248
9338
  return milestoneNode;
@@ -9270,25 +9360,9 @@ class ChartRows extends DateProcessor {
9270
9360
  getMilestoneBaselineNode() {
9271
9361
  const data = this.templateData;
9272
9362
  let baselineMilestoneHeight = this.parent.renderBaseline ? 5 : 2;
9273
- const template = '<div class="' + baselineMilestoneContainer + ' ' + '" style="' +
9274
- (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.baselineLeft - this.milesStoneRadius) + 'px;' +
9275
- 'margin-top:' + (-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + baselineMilestoneHeight) +
9276
- 'px">' + '<div class="' + baselineMilestoneDiv + '">' + '<div class="' + baselineMilestoneDiv +
9277
- ' ' + baselineMilestoneTop + '" ' +
9278
- 'style="top:' + (-this.milestoneHeight) + 'px;border-right:' + this.milesStoneRadius +
9279
- 'px solid transparent;border-left:' + this.milesStoneRadius +
9280
- 'px solid transparent;border-top:0px' +
9281
- 'solid transparent;border-bottom-width:' + this.milesStoneRadius + 'px;' +
9282
- 'border-bottom-style: solid;' + (this.baselineColor ? 'border-bottom-color: ' + this.baselineColor + ';' : '') +
9283
- '"></div>' +
9284
- '<div class="' + baselineMilestoneDiv + ' ' + baselineMilestoneBottom + '" ' +
9285
- 'style="top:' + (this.milesStoneRadius - this.milestoneHeight) + 'px;border-right:' + this.milesStoneRadius +
9286
- 'px solid transparent;border-left:' + this.milesStoneRadius +
9287
- 'px solid transparent;border-bottom:0px' +
9288
- 'solid transparent;border-top-width:' + this.milesStoneRadius + 'px;' +
9289
- 'border-top-style: solid;' +
9290
- (this.baselineColor ? 'border-top-color: ' + this.baselineColor + ';' : '') + '"></div>' +
9291
- '</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>';
9292
9366
  return this.createDivElement(template);
9293
9367
  }
9294
9368
  /**
@@ -9414,16 +9488,8 @@ class ChartRows extends DateProcessor {
9414
9488
  (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.width - Math.floor(((taskbarHeight / 5) + 8) / 5)) + 'px;height:' +
9415
9489
  ((taskbarHeight / 5) + 8) + 'px;border-right-width:' + taskbarHeight / 5 + 'px;border-bottom:' +
9416
9490
  taskbarHeight / 5 + 'px solid transparent;>' + '</div></div>' : '');
9417
- const milestoneTemplate = '<div class="' + manualParentMilestone + '" style="position:absolute;' +
9418
- (this.parent.enableRtl ? 'right:' : 'left:') +
9419
- (data.ganttProperties.left - data.ganttProperties.autoLeft - (this.milestoneHeight / 2)) +
9420
- 'px;width:' + (this.milesStoneRadius * 2) +
9421
- 'px;">' + '<div class="' + manualParentMilestoneTop + '" style="border-right-width:' +
9422
- this.milesStoneRadius + 'px;border-left-width:' + this.milesStoneRadius + 'px;border-bottom-width:' +
9423
- this.milesStoneRadius + 'px;"></div>' +
9424
- '<div class="' + manualParentMilestoneBottom + '" style="top:' +
9425
- (this.milesStoneRadius) + 'px;border-right-width:' + this.milesStoneRadius + 'px; border-left-width:' +
9426
- 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>';
9427
9493
  return this.createDivElement(data.ganttProperties.duration !== 0 ? template : milestoneTemplate);
9428
9494
  }
9429
9495
  /**
@@ -9448,8 +9514,8 @@ class ChartRows extends DateProcessor {
9448
9514
  this.getExpandClass(data) + ' ' + traceParentTaskBar + '"' +
9449
9515
  ' style="width:' + (data.ganttProperties.isAutoSchedule ? data.ganttProperties.width :
9450
9516
  data.ganttProperties.autoWidth) + 'px;height:' + (data.ganttProperties.isAutoSchedule ? this.taskBarHeight :
9451
- (tHeight * 3)) + 'px;margin-top:' + (data.ganttProperties.isAutoSchedule ? '' :
9452
- (tHeight * 2)) + 'px;">' +
9517
+ (tHeight * 3)) + 'px;margin-top:' + (data.ganttProperties.isAutoSchedule ? -1 :
9518
+ (tHeight * 2)) + 'px; ">' +
9453
9519
  '</div>');
9454
9520
  const progressBarInnerDiv = this.createDivElement('<div class="' + parentProgressBarInnerDiv + ' ' +
9455
9521
  this.getExpandClass(data) + ' ' + traceParentProgressBar + '"' +
@@ -9514,13 +9580,8 @@ class ChartRows extends DateProcessor {
9514
9580
  parentLabel && !parentLabel['elementRef'] && div.innerHTML !== '')
9515
9581
  progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent = parentLabel;
9516
9582
  }
9517
- const milestoneTemplate = '<div class="' + parentMilestone + '" style="position:absolute;">' +
9518
- '<div class="' + parentMilestoneTop + '" style="border-right-width:' +
9519
- this.milesStoneRadius + 'px;border-left-width:' + this.milesStoneRadius + 'px;border-bottom-width:' +
9520
- this.milesStoneRadius + 'px;"></div>' +
9521
- '<div class="' + parentMilestoneBottom + '" style="top:' +
9522
- (this.milesStoneRadius) + 'px;border-right-width:' + this.milesStoneRadius + 'px; border-left-width:' +
9523
- 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>';
9524
9585
  template[0].appendChild([].slice.call(progressBarInnerDiv)[0]);
9525
9586
  parentTaskbarNode = data.ganttProperties.isMilestone ?
9526
9587
  this.createDivElement(data.ganttProperties.isAutoSchedule ? milestoneTemplate : '') : template;
@@ -9897,8 +9958,8 @@ class ChartRows extends DateProcessor {
9897
9958
  this.milestoneMarginTop = Math.floor((this.parent.rowHeight - this.milestoneHeight) / 2);
9898
9959
  this.milesStoneRadius = Math.floor((this.milestoneHeight) / 2);
9899
9960
  this.baselineTop = -(Math.floor((this.parent.rowHeight - (this.taskBarHeight + this.taskBarMarginTop))) - 4);
9900
- this.connectorPointWidth = this.parent.isAdaptive ? Math.round(this.taskBarHeight / 2) : 8;
9901
- 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;
9902
9963
  }
9903
9964
  /**
9904
9965
  * Function used to refresh Gantt rows.
@@ -9966,7 +10027,6 @@ class ChartRows extends DateProcessor {
9966
10027
  const tempTemplateData = this.parent.currentViewData[i];
9967
10028
  if (this.parent.viewType === 'ResourceView') {
9968
10029
  if (this.parent.editModule && this.parent.editModule.isResourceTaskDeleted || this.parent.isFromOnPropertyChange) {
9969
- this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();
9970
10030
  this.parent.editModule.isResourceTaskDeleted = false;
9971
10031
  }
9972
10032
  if (!tempTemplateData.expanded && this.parent.enableMultiTaskbar) {
@@ -9985,11 +10045,12 @@ class ChartRows extends DateProcessor {
9985
10045
  }
9986
10046
  }
9987
10047
  this.ganttChartTableBody.replaceChildren(...dupChartBody.childNodes);
10048
+ this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();
9988
10049
  }
9989
10050
  this.parent.renderTemplates();
9990
10051
  this.triggerQueryTaskbarInfo();
9991
10052
  this.parent.modifiedRecords = [];
9992
- if (this.parent.viewType === 'ResourceView' && this.parent.showOverAllocation) {
10053
+ if (this.parent.viewType == 'ResourceView' && this.parent.showOverAllocation) {
9993
10054
  this.updateOverlapped();
9994
10055
  }
9995
10056
  if (collapsedResourceRecord.length) {
@@ -10062,7 +10123,7 @@ class ChartRows extends DateProcessor {
10062
10123
  else if (this.templateData.ganttProperties.isMilestone) {
10063
10124
  const milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);
10064
10125
  if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {
10065
- taskbarContainerNode[0].appendChild([].slice.call(milestoneTemplateNode)[0]);
10126
+ append(milestoneTemplateNode, taskbarContainerNode[0]);
10066
10127
  }
10067
10128
  if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&
10068
10129
  this.templateData.ganttProperties.baselineEndDate) {
@@ -10238,9 +10299,9 @@ class ChartRows extends DateProcessor {
10238
10299
  const classCollections = this.getClassName(args);
10239
10300
  if (args.taskbarType === 'Milestone') {
10240
10301
  args.milestoneColor = taskbarElement.querySelector(classCollections[0]) ?
10241
- getComputedStyle(taskbarElement.querySelector(classCollections[0])).borderBottomColor : null;
10302
+ getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor : null;
10242
10303
  args.baselineColor = trElement.querySelector(classCollections[1]) ?
10243
- getComputedStyle(trElement.querySelector(classCollections[1])).borderBottomColor :
10304
+ getComputedStyle(trElement.querySelector(classCollections[1])).backgroundColor :
10244
10305
  (trElement.querySelector('.' + baselineBar) ? getComputedStyle(trElement.querySelector('.' + baselineBar)).backgroundColor : null);
10245
10306
  }
10246
10307
  else if (taskbarElement) {
@@ -10308,14 +10369,12 @@ class ChartRows extends DateProcessor {
10308
10369
  }
10309
10370
  if (args.taskbarType === 'Milestone') {
10310
10371
  if (taskbarElement.querySelector(classCollections[0]) &&
10311
- getComputedStyle(taskbarElement.querySelector(classCollections[0])).borderBottomColor !== args.milestoneColor) {
10312
- taskbarElement.querySelector(classCollections[0]).style.borderBottomColor = args.milestoneColor;
10313
- 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;
10314
10374
  }
10315
10375
  if (trElement.querySelector(classCollections[1]) &&
10316
- getComputedStyle(trElement.querySelector(classCollections[1])).borderTopColor !== args.baselineColor) {
10317
- trElement.querySelector(classCollections[1]).style.borderBottomColor = args.baselineColor;
10318
- 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;
10319
10378
  }
10320
10379
  if (trElement.querySelector('.' + baselineBar) &&
10321
10380
  getComputedStyle(trElement.querySelector('.' + baselineBar)).borderTopColor !== args.baselineColor) {
@@ -10396,9 +10455,9 @@ class ChartRows extends DateProcessor {
10396
10455
  getClassName(args) {
10397
10456
  const classCollection = [];
10398
10457
  classCollection.push('.' + (args.taskbarType === 'ParentTask' ?
10399
- traceParentTaskBar : args.taskbarType === 'ChildTask' ? traceChildTaskBar : milestoneTop));
10458
+ traceParentTaskBar : args.taskbarType === 'ChildTask' ? traceChildTaskBar : traceMilestone));
10400
10459
  classCollection.push('.' + (args.taskbarType === 'ParentTask' ?
10401
- traceParentProgressBar : args.taskbarType === 'ChildTask' ? traceChildProgressBar : baselineMilestoneTop));
10460
+ traceParentProgressBar : args.taskbarType === 'ChildTask' ? traceChildProgressBar : baselineMilestoneContainer));
10402
10461
  return classCollection;
10403
10462
  }
10404
10463
  /**
@@ -10411,7 +10470,7 @@ class ChartRows extends DateProcessor {
10411
10470
  templateCompiler(template) {
10412
10471
  if (!isNullOrUndefined(template) && template !== '') {
10413
10472
  try {
10414
- if (document.querySelectorAll(template).length) {
10473
+ if (typeof template !== 'function' && document.querySelectorAll(template).length) {
10415
10474
  return compile(document.querySelector(template).innerHTML.trim(), this.parent);
10416
10475
  }
10417
10476
  else {
@@ -11561,11 +11620,28 @@ class Dependency {
11561
11620
  */
11562
11621
  class ConnectorLine {
11563
11622
  constructor(ganttObj) {
11623
+ this.transform = '';
11624
+ this.connectorLinePath = '';
11625
+ this.arrowPath = '';
11564
11626
  this.expandedRecords = [];
11565
11627
  this.parent = ganttObj;
11566
11628
  this.dependencyViewContainer =
11567
- 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);
11568
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%');
11569
11645
  }
11570
11646
  /**
11571
11647
  * To get connector line gap.
@@ -11594,7 +11670,7 @@ class ConnectorLine {
11594
11670
  }
11595
11671
  getTaskbarMidpoint(isMilestone) {
11596
11672
  return Math.floor(isMilestone ?
11597
- (this.parent.chartRowsModule.milestoneMarginTop + (this.parent.chartRowsModule.milestoneHeight / 2)) :
11673
+ (this.parent.chartRowsModule.milestoneMarginTop + (this.parent.chartRowsModule.milestoneHeight / 2)) + 1 :
11598
11674
  (this.parent.chartRowsModule.taskBarMarginTop + (this.parent.chartRowsModule.taskBarHeight / 2))) + 1;
11599
11675
  }
11600
11676
  /**
@@ -11643,6 +11719,10 @@ class ConnectorLine {
11643
11719
  connectorObj.connectorLineId = 'parent' + parentId + 'child' + childId;
11644
11720
  connectorObj.milestoneParent = parentGanttRecord.isMilestone ? true : false;
11645
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;
11646
11726
  if (isNullOrUndefined(isScheduledTask(parentGanttRecord)) || isNullOrUndefined(isScheduledTask(childGanttRecord))) {
11647
11727
  return null;
11648
11728
  }
@@ -11665,8 +11745,8 @@ class ConnectorLine {
11665
11745
  connectorLine$$1 = connectorLine$$1 + this.getConnectorLineTemplate(connectorLinesCollection[index]);
11666
11746
  ariaConnector.push(connectorLinesCollection[index]);
11667
11747
  }
11668
- this.dependencyViewContainer.innerHTML = connectorLine$$1;
11669
- const childNodes = this.parent.connectorLineModule.dependencyViewContainer.childNodes;
11748
+ this.svgObject.innerHTML = connectorLine$$1;
11749
+ const childNodes = this.parent.connectorLineModule.svgObject.childNodes;
11670
11750
  for (let i = 0; i < childNodes.length; i++) {
11671
11751
  const innerChild = childNodes[i].childNodes;
11672
11752
  for (let j = 0; j < innerChild.length; j++) {
@@ -11674,9 +11754,10 @@ class ConnectorLine {
11674
11754
  innerChild[j].setAttribute('aria-label', ariaString);
11675
11755
  }
11676
11756
  }
11677
- this.parent.ganttChartModule.chartBodyContent.appendChild(this.dependencyViewContainer);
11678
- for (let i = 0; i < this.dependencyViewContainer.children.length; i++) {
11679
- 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');
11680
11761
  }
11681
11762
  }
11682
11763
  /**
@@ -11934,16 +12015,15 @@ class ConnectorLine {
11934
12015
  const height = this.getHeightValue(data);
11935
12016
  const isMilestoneParent = data.milestoneParent ? true : false;
11936
12017
  const isMilestone = data.milestoneChild ? true : false;
11937
- let connectorContainer = '';
11938
12018
  const isVirtual = this.parent.virtualScrollModule && this.parent.enableVirtualization;
11939
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;
11940
12022
  let isMilestoneValue = 0;
11941
12023
  if (this.parent.renderBaseline) {
11942
12024
  isMilestoneValue = (data.milestoneParent && data.milestoneChild) ? 0 : data.milestoneParent ? -5 : data.milestoneChild ? 5 : 0;
11943
12025
  }
11944
12026
  let heightValue = isVirtual ? connectorLine$$1.height : (height + isMilestoneValue);
11945
- let borderTopWidth = 0;
11946
- let addTop = 0;
11947
12027
  let parentOverlapTopValue = 0;
11948
12028
  let childOverlapTopValue = 0;
11949
12029
  let count = 0;
@@ -11980,454 +12060,318 @@ class ConnectorLine {
11980
12060
  }
11981
12061
  if (isValid) {
11982
12062
  if (((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {
11983
- addTop = -11;
12063
+
11984
12064
  }
11985
12065
  else if (!((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {
11986
12066
  if (data.childIndex > data.parentIndex) {
11987
- if (!fromRecordIsParent && toRecordIsParent) {
11988
- borderTopWidth = -11;
11989
- }
11990
- else {
11991
- borderTopWidth = 11;
11992
- addTop = -11;
11993
- }
12067
+
11994
12068
  }
11995
12069
  else {
11996
- if ((fromRecordIsParent && !toRecordIsParent)) {
11997
- borderTopWidth = -11;
11998
- }
11999
- else {
12000
- borderTopWidth = 11;
12001
- addTop = -11;
12002
- }
12070
+
12003
12071
  }
12004
12072
  }
12005
12073
  if (this.parent.currentViewData[data.parentIndex].ganttProperties.isMilestone) {
12006
12074
  if (data.parentIndex > data.childIndex) {
12007
- addTop = -5;
12008
- borderTopWidth = 10;
12075
+
12009
12076
  }
12010
12077
  else if (data.type === 'SS' || data.type === 'FF') {
12011
- addTop = -5;
12078
+
12012
12079
  }
12013
12080
  }
12014
12081
  else if (this.parent.currentViewData[data.childIndex].ganttProperties.isMilestone) {
12015
12082
  if (data.parentIndex > data.childIndex) {
12016
- addTop = 5;
12017
- borderTopWidth = -10;
12083
+
12018
12084
  }
12019
12085
  else if (data.type === 'SS' || data.type === 'FF') {
12020
- addTop = 5;
12086
+
12021
12087
  }
12022
12088
  }
12023
12089
  }
12024
12090
  }
12025
12091
  if (this.getParentPosition(data)) {
12026
- connectorContainer = '<div id="ConnectorLine' + data.connectorLineId + '" style="background-color:black">';
12027
- let div = '<div class="' + connectorLineContainer +
12028
- '" tabindex="-1" style="';
12029
- let direction = this.parent.enableRtl ? 'right:' : 'left:';
12030
- const eLine = '<div class="' + connectorLine + '" style="' +
12031
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
12032
- let rightArrow;
12033
- let leftArrow;
12034
- if (this.parent.enableRtl) {
12035
- leftArrow = '<div class="' + connectorLineRightArrow + '" style="' +
12036
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
12037
- rightArrow = '<div class="' + connectorLineLeftArrow + '" style="' +
12038
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
12039
- }
12040
- else {
12041
- rightArrow = '<div class="' + connectorLineRightArrow + '" style="' +
12042
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
12043
- leftArrow = '<div class="' + connectorLineLeftArrow + '" style="' +
12044
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
12045
- }
12046
- const duplicateStingOne = leftArrow + (isMilestone ? (this.parent.enableRtl ? 'right:0px;' : 'left:0px;') : '') +
12047
- this.getBorderStyles((this.parent.enableRtl ? 'left' : 'right'), 10) +
12048
- 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
12049
- 'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
12050
- const duplicateStingTwo = this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
12051
- 'top:' + (-6) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
12052
- 'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
12053
- const duplicateStingThree = this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>' + eLine +
12054
- 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12055
- this.getBorderStyles('top', (heightValue + borderTopWidth - (this.lineStroke - 1))) + 'position:relative;"></div>';
12056
- const duplicateStingFour = leftArrow + (this.parent.enableRtl ? 'right:' : 'left:') +
12057
- (((data.childLeft + data.childWidth) - (data.parentLeft)) + 10) + 'px;' +
12058
- this.getBorderStyles((this.parent.enableRtl ? 'left' : 'right'), 10);
12059
- const duplicateStingFive = 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;' +
12060
- 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);
12061
12116
  if (this.getParentPosition(data) === 'FSType1') {
12062
- div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12063
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12064
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType1">';
12065
- div = div + eLine;
12066
- div = div + direction + (isMilestoneParent ? -1 : 0) + 'px;width:' + (isMilestoneParent ?
12067
- ((((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10) + 1) :
12068
- (((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10)) + 'px;' +
12069
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12070
- div = div + eLine;
12071
- div = div + direction + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;' +
12072
- 'width:0px;' + this.getBorderStyles('right', this.lineStroke) +
12073
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
12074
- div = div + eLine;
12075
- div = div + direction + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;width:10px;' +
12076
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12077
- div = div + rightArrow;
12078
- div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
12079
- this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
12080
- '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";
12081
12129
  }
12082
12130
  if (this.getParentPosition(data) === 'FSType2') {
12083
- div = div + direction + data.parentLeft + 'px;top:' + (isVirtual ? connectorLine$$1.top : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop +
12084
- this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12085
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType2">';
12086
- div = div + eLine;
12087
- div = div + direction + (isMilestoneParent ? data.parentWidth - 1 : data.parentWidth) + 'px;width:' +
12088
- (isMilestoneParent ? 11 : 10) + 'px;' +
12089
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12090
- div = div + eLine;
12091
- div = div + direction + (data.parentWidth + 10 - this.lineStroke) + 'px;' +
12092
- this.getBorderStyles('left', this.lineStroke) + 'width:0px;' +
12093
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
12094
- div = div + eLine;
12095
- div = div + direction + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 20)) + 'px;' +
12096
- 'width:' + (((data.parentLeft + data.parentWidth) - data.childLeft) + 30) + 'px;' +
12097
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12098
- div = div + eLine;
12099
- div = div + direction + (data.parentWidth - (((data.parentLeft +
12100
- data.parentWidth) - data.childLeft) + 20)) + 'px;width:0px;' +
12101
- this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) +
12102
- this.getBorderStyles('left', this.lineStroke) + 'position:relative;"></div>';
12103
- div = div + eLine;
12104
- div = div + direction + (data.parentWidth - (((data.parentLeft +
12105
- data.parentWidth) - data.childLeft) + 20)) + 'px;width:10px;' +
12106
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12107
- div = div + rightArrow;
12108
- div = div + direction + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 10)) + 'px;' +
12109
- this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
12110
- 'border-top-width:' + (5 + this.lineStroke) + 'px;top:' + (-6 - this.lineStroke) +
12111
- '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";
12112
12147
  }
12113
12148
  if (this.getParentPosition(data) === 'FSType3') {
12114
- div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12115
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12116
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType3">';
12117
- div = div + rightArrow;
12118
- div = div + direction + '10px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
12119
- 'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' + (5 + this.lineStroke) + 'px;' +
12120
- 'top:' + (-6) + 'px;width:0;height:0;position:relative;"></div>';
12121
- div = div + eLine;
12122
- div = div + 'width:10px;' + this.getBorderStyles('top', this.lineStroke) +
12123
- 'position:relative;top:' + (-(6 + (5 + this.lineStroke) + Math.round(this.lineStroke / 2))) + 'px;"></div>';
12124
- div = div + eLine;
12125
- div = div + 'width:' + this.lineStroke + 'px;' + this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke + 1)) +
12126
- 'position:relative;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
12127
- div = div + eLine;
12128
- div = div + 'width:' + (((data.parentLeft + data.parentWidth) - data.childLeft) + 30) + 'px;' +
12129
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;top:' +
12130
- (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
12131
- div = div + eLine;
12132
- div = div + direction + (((data.parentLeft + data.parentWidth) - data.childLeft) + (30 - this.lineStroke)) +
12133
- 'px;width:0px;' + 'height:' + (this.getconnectorLineGap(data) - this.lineStroke) + 'px;' +
12134
- this.getBorderStyles('left', this.lineStroke) + 'position:relative;' +
12135
- 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
12136
- div = div + eLine;
12137
- div = div + (isMilestoneParent ? direction + (((data.parentLeft +
12138
- data.parentWidth) - data.childLeft) + (18 - this.lineStroke)) + 'px;width:' + (12 + this.lineStroke) + 'px;' : direction +
12139
- (((data.parentLeft + data.parentWidth) - data.childLeft) + 20) + 'px;width:10px;') +
12140
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;top:' +
12141
- (-(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";
12142
12164
  }
12143
12165
  if (this.getParentPosition(data) === 'FSType4') {
12144
- div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12145
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12146
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType4">';
12147
- div = div + rightArrow;
12148
- div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
12149
- this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6) + 'px;' +
12150
- 'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
12151
- (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
12152
- div = div + eLine;
12153
- div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth) - 20) +
12154
- 'px;top:' + (-(6 + (5 + this.lineStroke) + Math.round(this.lineStroke / 2))) + 'px;width:10px;' +
12155
- this.getBorderStyles('top', this.lineStroke) +
12156
- 'position:relative;"></div>';
12157
- div = div + eLine;
12158
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' + direction +
12159
- (data.childLeft - (data.parentLeft + data.parentWidth) - 20) + 'px;width:0px;' +
12160
- this.getBorderStyles('left', this.lineStroke) +
12161
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
12162
- div = div + eLine;
12163
- div = div + (isMilestoneParent ? direction + '-1px;' : '') + 'top:' +
12164
- (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
12165
- (isMilestoneParent ? ((data.childLeft - (data.parentLeft + data.parentWidth + 20) + 1) + this.lineStroke) :
12166
- ((data.childLeft - (data.parentLeft + data.parentWidth + 20)) + this.lineStroke)) + 'px;' +
12167
- 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";
12168
12179
  }
12169
12180
  if (this.getParentPosition(data) === 'SSType4') {
12170
- div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12171
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12172
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType4">';
12173
- div = div + rightArrow;
12174
- div = div + direction + (data.childLeft - data.parentLeft) + 'px;' + duplicateStingTwo;
12175
- div = div + eLine;
12176
- div = div + 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;width:' +
12177
- (data.childLeft - data.parentLeft) + 'px;' + duplicateStingThree;
12178
- div = div + eLine;
12179
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:10px;' +
12180
- 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";
12181
12195
  }
12182
12196
  if (this.getParentPosition(data) === 'SSType3') {
12183
- div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12184
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12185
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType3">';
12186
- div = div + rightArrow;
12187
- div = div + direction + '10px;' + duplicateStingTwo;
12188
- div = div + eLine;
12189
- div = div + 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;width:10px;' + duplicateStingThree;
12190
- div = div + eLine;
12191
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
12192
- (data.parentLeft - data.childLeft + 21) + 'px;' +
12193
- 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";
12194
12210
  }
12195
12211
  if (this.getParentPosition(data) === 'SSType2') {
12196
- div = div + direction + setInnerElementLeftSSType2 + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12197
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12198
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType2">';
12199
- div = div + eLine;
12200
- div = div + 'width:' + (setInnerChildWidthSSType2 + 1) + 'px;' +
12201
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12202
- div = div + eLine;
12203
- div = div + 'width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12204
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
12205
- div = div + eLine;
12206
- div = div + 'width:' + setInnerElementWidthSSType2 + 'px;' +
12207
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12208
- div = div + rightArrow;
12209
- div = div + direction + setInnerElementWidthSSType2 + 'px;' +
12210
- this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
12211
- 'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
12212
- (5 + this.lineStroke) + 'px;width:0;' +
12213
- '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";
12214
12225
  }
12215
12226
  if (this.getParentPosition(data) === 'SSType1') {
12216
- div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12217
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop +
12218
- this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12219
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType1">';
12220
- div = div + eLine;
12221
- div = div + 'width:' + (data.parentLeft - data.childLeft + 21) + 'px;' +
12222
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12223
- div = div + eLine;
12224
- div = div + 'width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12225
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
12226
- div = div + eLine;
12227
- div = div + 'width:10px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12228
- div = div + rightArrow;
12229
- div = div + direction + '10px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
12230
- 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
12231
- '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";
12232
12240
  }
12233
12241
  if (this.getParentPosition(data) === 'FFType1') {
12234
- div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12235
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12236
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType1">';
12237
- div = div + eLine;
12238
- div = div + direction + (isMilestoneParent ? (((data.parentLeft + data.parentWidth) -
12239
- (data.childLeft + data.childWidth)) - 1) : ((data.parentLeft + data.parentWidth) -
12240
- (data.childLeft + data.childWidth))) + 'px;' +
12241
- 'width:' + (isMilestoneParent ? (21 + this.lineStroke) : (20 + this.lineStroke)) + 'px;' +
12242
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12243
- div = div + eLine;
12244
- div = div + direction + (((data.parentLeft + data.parentWidth) -
12245
- (data.childLeft + data.childWidth)) + 20) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12246
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
12247
- div = div + eLine;
12248
- div = div + direction + (isMilestone ? 4 : 10) + 'px;width:' + (isMilestone ?
12249
- (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + (16 + this.lineStroke)) :
12250
- (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + (10 + this.lineStroke))) + 'px;' +
12251
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12252
- div = div + leftArrow;
12253
- div = div + (isMilestone ? direction + '0px;' : '') + this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) +
12254
- 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
12255
- '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";
12256
12256
  }
12257
12257
  if (this.getParentPosition(data) === 'FFType2') {
12258
- div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12259
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12260
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType2">';
12261
- div = div + eLine;
12262
- div = div + (isMilestoneParent ? direction + '-1px;' : '') + 'width:' +
12263
- (isMilestoneParent ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) +
12264
- (21 + this.lineStroke)) : (((data.childLeft + data.childWidth) -
12265
- (data.parentLeft + data.parentWidth)) + (20 + this.lineStroke))) + 'px;' +
12266
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12267
- div = div + eLine;
12268
- div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 20) +
12269
- 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12270
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) +
12271
- 'position:relative;"></div>';
12272
- div = div + eLine;
12273
- div = div + direction + (isMilestone ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 4) :
12274
- (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 10)) + 'px;' +
12275
- 'width:' + (isMilestone ? (16 + this.lineStroke) : (10 + this.lineStroke)) + 'px;' +
12276
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12277
- div = div + leftArrow;
12278
- div = div + direction + ((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 'px;' +
12279
- this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
12280
- 'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' + (5 + this.lineStroke) +
12281
- '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";
12282
12271
  }
12283
12272
  if (this.getParentPosition(data) === 'FFType3') {
12284
- div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12285
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12286
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType3">';
12287
- div = div + duplicateStingOne;
12288
- div = div + eLine;
12289
- div = div + (isMilestone ? (direction + '4px;width:' +
12290
- (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + 16)) :
12291
- (direction + '10px;width:' + (((data.parentLeft + data.parentWidth) -
12292
- (data.childLeft + data.childWidth)) + 10))) + 'px;top:' + (-(6 + (5 + this.lineStroke) +
12293
- (this.lineStroke / 2))) + 'px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12294
- div = div + eLine;
12295
- div = div + direction + (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + 20) +
12296
- 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
12297
- 'width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12298
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
12299
- div = div + eLine;
12300
- div = div + (isMilestoneParent ? (direction + (((data.parentLeft + data.parentWidth) -
12301
- (data.childLeft + data.childWidth)) - 1) + 'px;width:21') : (direction + ((data.parentLeft + data.parentWidth) -
12302
- (data.childLeft + data.childWidth)) + 'px;width:20')) +
12303
- 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
12304
- 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";
12305
12287
  }
12306
12288
  if (this.getParentPosition(data) === 'FFType4') {
12307
- div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12308
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12309
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType4">';
12310
- div = div + leftArrow;
12311
- div = div + (direction + ((data.childLeft + data.childWidth) -
12312
- (data.parentLeft + data.parentWidth))) + 'px;' +
12313
- this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
12314
- 'border-bottom-width:' + (5 + this.lineStroke) +
12315
- 'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;' +
12316
- 'position:relative;"></div>';
12317
- div = div + eLine;
12318
- div = div + (isMilestone ? (direction + (((data.childLeft + data.childWidth) -
12319
- (data.parentLeft + data.parentWidth)) + 4) +
12320
- 'px;width:' + (16 + this.lineStroke)) : (direction + (((data.childLeft + data.childWidth) -
12321
- (data.parentLeft + data.parentWidth)) + 10) + 'px;width:' + (10 + this.lineStroke))) +
12322
- 'px;' + duplicateStingFive;
12323
- div = div + eLine;
12324
- div = div + direction + (((data.childLeft + data.childWidth) -
12325
- (data.parentLeft + data.parentWidth)) + 20) + 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) +
12326
- 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12327
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
12328
- div = div + eLine;
12329
- div = div + (isMilestoneParent ? (direction + '-1px;width:' + (((data.childLeft + data.childWidth) -
12330
- (data.parentLeft + data.parentWidth)) + (21 + this.lineStroke))) : ('width:' + (((data.childLeft + data.childWidth) -
12331
- (data.parentLeft + data.parentWidth)) + (20 + this.lineStroke)))) + 'px;top:' +
12332
- (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
12333
- 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";
12334
12302
  }
12335
12303
  if (this.getParentPosition(data) === 'SFType4') {
12336
- div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12337
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;width:1px;' +
12338
- 'height:' + heightValue + 'px;position:absolute" data-connectortype="SFType4">';
12339
- div = div + duplicateStingFour + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
12340
- 'border-bottom-width:' + (5 + this.lineStroke) +
12341
- 'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;' +
12342
- 'position:relative;"></div>';
12343
- div = div + eLine;
12344
- div = div + direction + (isMilestone ? ((((data.childLeft + data.childWidth) - (data.parentLeft)) + (14 + this.lineStroke)) +
12345
- 'px;width:16') : ((((data.childLeft + data.childWidth) - (data.parentLeft)) + 20) + 'px;width:' +
12346
- (10 + this.lineStroke))) + 'px;' + duplicateStingFive;
12347
- div = div + eLine;
12348
- div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) + 'px;top:' +
12349
- (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12350
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - (this.lineStroke - 1))) + 'position:relative;"></div>';
12351
- div = div + eLine;
12352
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
12353
- (((data.childLeft + data.childWidth) - (data.parentLeft)) + (30 + this.lineStroke)) + 'px;' +
12354
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12355
- div = div + eLine;
12356
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' +
12357
- this.getBorderStyles('left', this.lineStroke) +
12358
- this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
12359
- div = div + eLine;
12360
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:11px;' +
12361
- 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";
12362
12321
  }
12363
12322
  if (this.getParentPosition(data) === 'SFType3') {
12364
- div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12365
- ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12366
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType3">';
12367
- div = div + duplicateStingOne;
12368
- div = div + eLine;
12369
- div = div + (isMilestone ? direction + '4px;width:' + (16 + this.lineStroke) : direction + '10px;width:' +
12370
- (10 + this.lineStroke)) + 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2) - 1)) + 'px;' +
12371
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12372
- div = div + eLine;
12373
- div = div + direction + '20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' +
12374
- this.getBorderStyles('left', this.lineStroke) +
12375
- this.getBorderStyles('top', (heightValue + borderTopWidth - (this.lineStroke - 1))) + 'position:relative;"></div>';
12376
- div = div + eLine;
12377
- div = div + direction + '20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
12378
- ((data.parentLeft - (data.childLeft + data.childWidth + 20)) + this.lineStroke) + 'px;' +
12379
- 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";
12380
12338
  }
12381
12339
  if (this.getParentPosition(data) === 'SFType1') {
12382
- div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12383
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12384
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType1">';
12385
- div = div + eLine;
12386
- div = div + 'width:11px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12387
- div = div + eLine;
12388
- div = div + 'width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12389
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
12390
- div = div + eLine;
12391
- div = div + 'width:' + (((data.childLeft + data.childWidth) - (data.parentLeft)) + (30 + this.lineStroke)) + 'px;' +
12392
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12393
- div = div + eLine;
12394
- div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) +
12395
- 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12396
- this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
12397
- div = div + eLine;
12398
- div = div + (isMilestone ? (direction + (((data.childLeft + data.childWidth) -
12399
- (data.parentLeft)) + 15) + 'px;width:' + (15 + this.lineStroke)) : (direction +
12400
- (((data.childLeft + data.childWidth) - (data.parentLeft)) + 20) + 'px;width:' + (10 + this.lineStroke))) + 'px;' +
12401
- this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12402
- div = div + duplicateStingFour + 'top:' + (-6 - this.lineStroke) + 'px;' +
12403
- 'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
12404
- (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";
12405
12356
  }
12406
12357
  if (this.getParentPosition(data) === 'SFType2') {
12407
- div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
12408
- ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
12409
- 'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType2">';
12410
- div = div + eLine;
12411
- div = div + direction + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
12412
- 'px;width:11px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12413
- div = div + eLine;
12414
- div = div + direction + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
12415
- 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
12416
- this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
12417
- div = div + eLine;
12418
- div = div + (isMilestone ? (direction + '4px;width:' + (((data.parentLeft) - (data.childLeft + data.childWidth))
12419
- - (14 - this.lineStroke))) : (direction + '10px;width:' + (((data.parentLeft) -
12420
- (data.childLeft + data.childWidth)) - (20 - this.lineStroke)))) +
12421
- 'px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
12422
- div = div + leftArrow;
12423
- div = div + direction + '0px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
12424
- 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
12425
- 'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
12426
- }
12427
- connectorContainer += div;
12428
- connectorContainer += '</div>';
12429
- }
12430
- 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;
12431
12375
  }
12432
12376
  /**
12433
12377
  * @param {IConnectorLineObject} data .
@@ -12493,10 +12437,10 @@ class ConnectorLine {
12493
12437
  * @private
12494
12438
  */
12495
12439
  getConnectorLineTooltipInnerTd(fromTaskName, fromPredecessorText, toTaskName, toPredecessorText) {
12496
- let innerTd = '<tr id="fromPredecessor"><td >' + this.parent.localeObj.getConstant('from') + '</td><td> ';
12497
- innerTd = innerTd + fromTaskName + ' </td><td> ' + this.parent.localeObj.getConstant(fromPredecessorText) + ' </td> </tr>';
12498
- innerTd = innerTd + '<tr id="toPredecessor"><td>' + this.parent.localeObj.getConstant('to') + '</td><td> ' + toTaskName;
12499
- 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>';
12500
12444
  return innerTd;
12501
12445
  }
12502
12446
  /**
@@ -13006,7 +12950,7 @@ class Tooltip$1 {
13006
12950
  * @param {IGanttData} ganttData .
13007
12951
  * @param {Gantt} parent .
13008
12952
  * @param {TooltipEventArgs} args .
13009
- * @returns {string} .
12953
+ * @returns {string | Function} .
13010
12954
  */
13011
12955
  getTooltipContent(elementType, ganttData, parent, args) {
13012
12956
  let content$$1;
@@ -13038,8 +12982,11 @@ class Tooltip$1 {
13038
12982
  let sDate = !isNullOrUndefined(milestoneStartDate) ? '<tr><td class = "e-gantt-tooltip-label"> Date</td><td>:</td>' +
13039
12983
  '<td class = "e-gantt-tooltip-value">' +
13040
12984
  sDateValue + '</td></tr>' : '';
13041
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
13042
- 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);
13043
12990
  break;
13044
12991
  }
13045
12992
  case 'taskbar':
@@ -13057,19 +13004,22 @@ class Tooltip$1 {
13057
13004
  }
13058
13005
  let startDate = data.startDate ? '<tr><td class = "e-gantt-tooltip-label">' +
13059
13006
  this.parent.localeObj.getConstant(scheduledTask ? 'startDate' : 'subTasksStartDate') +
13060
- '</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>' : '';
13061
13008
  let endDate = data.endDate ? '<tr><td class = "e-gantt-tooltip-label">' +
13062
13009
  this.parent.localeObj.getConstant(scheduledTask ? 'endDate' : 'subTasksEndDate') +
13063
- '</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>' : '';
13064
13011
  let duration = !isNullOrUndefined(data.duration) ? '<tr><td class = "e-gantt-tooltip-label">' +
13065
- this.parent.localeObj.getConstant('duration') + '</td><td>:</td>' +
13012
+ this.parent.localeObj.getConstant('duration') + '</td><td style="padding: 2px;">:</td>' +
13066
13013
  '<td class = "e-gantt-tooltip-value"> ' + durationValue +
13067
13014
  '</td></tr>' : '';
13068
13015
  let progress = !isNullOrUndefined(data.progress) ? '<tr><td class = "e-gantt-tooltip-label">' +
13069
- this.parent.localeObj.getConstant('progress') + '</td><td>:</td><td>' + progressValue +
13016
+ this.parent.localeObj.getConstant('progress') + '</td><td style="padding: 2px;">:</td><td>' + progressValue +
13070
13017
  '</td></tr>' : '';
13071
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
13072
- 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);
13073
13023
  break;
13074
13024
  }
13075
13025
  case 'baseline':
@@ -13080,13 +13030,16 @@ class Tooltip$1 {
13080
13030
  baselineStartDateValue = typeof (baselineStartDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(baselineStartDateValue) : baselineStartDateValue;
13081
13031
  baselineEndDateValue = typeof (baselineEndDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(baselineEndDateValue) : baselineEndDateValue;
13082
13032
  }
13083
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
13084
- taskName + '<tr><td class = "e-gantt-tooltip-label">' +
13085
- this.parent.localeObj.getConstant('baselineStartDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
13086
- baselineStartDateValue + '</td></tr><tr>' +
13087
- '<td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('baselineEndDate') +
13088
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
13089
- 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);
13090
13043
  break;
13091
13044
  }
13092
13045
  case 'marker':
@@ -13098,8 +13051,11 @@ class Tooltip$1 {
13098
13051
  markerLabel = typeof (markerLabel) === 'string' ? SanitizeHtmlHelper.sanitize(markerLabel) : markerLabel;
13099
13052
  markerTooltipElementValue = typeof (markerTooltipElementValue) === 'string' ? SanitizeHtmlHelper.sanitize(markerTooltipElementValue) : markerTooltipElementValue;
13100
13053
  }
13101
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody><tr><td>' +
13102
- 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);
13103
13059
  break;
13104
13060
  }
13105
13061
  case 'connectorLine':
@@ -13118,16 +13074,19 @@ class Tooltip$1 {
13118
13074
  linkTextValue = typeof (linkTextValue) === 'string' ? SanitizeHtmlHelper.sanitize(linkTextValue) : linkTextValue;
13119
13075
  offsetStringValue = typeof (offsetStringValue) === 'string' ? SanitizeHtmlHelper.sanitize(offsetStringValue) : offsetStringValue;
13120
13076
  }
13121
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody><tr><td class = "e-gantt-tooltip-label">' +
13122
- this.parent.localeObj.getConstant('from') + '</td><td>:</td>' +
13123
- '<td class = "e-gantt-tooltip-value">' + (this.parent.disableHtmlEncode ? fromNameValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : fromNameValue) + ' (' +
13124
- (this.parent.disableHtmlEncode ? (typeof (fromIdValue) === 'string' ? fromIdValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : fromIdValue) : fromIdValue) + ')' + '</td></tr><tr><td class = "e-gantt-tooltip-label">' +
13125
- this.parent.localeObj.getConstant('to') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
13126
- (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') +
13127
- '</td><td>:</td><td class = "e-gantt-tooltip-value"> ' + linkTextValue +
13128
- '</td></tr><tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('lag') +
13129
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
13130
- 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);
13131
13090
  break;
13132
13091
  }
13133
13092
  case 'indicator':
@@ -13136,7 +13095,10 @@ class Tooltip$1 {
13136
13095
  if (this.parent.enableHtmlSanitizer && typeof (titleValue) === 'string') {
13137
13096
  titleValue = SanitizeHtmlHelper.sanitize(titleValue);
13138
13097
  }
13139
- 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);
13140
13102
  }
13141
13103
  break;
13142
13104
  case 'timeline':
@@ -13144,7 +13106,10 @@ class Tooltip$1 {
13144
13106
  if (this.parent.enableHtmlSanitizer && typeof (timlineTitleValue) === 'string') {
13145
13107
  timlineTitleValue = SanitizeHtmlHelper.sanitize(timlineTitleValue);
13146
13108
  }
13147
- 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);
13148
13113
  break;
13149
13114
  case 'manualtaskbar':
13150
13115
  {
@@ -13176,8 +13141,11 @@ class Tooltip$1 {
13176
13141
  let manualEndDate = data.endDate ? '<tr><td class = "e-gantt-tooltip-label">' +
13177
13142
  this.parent.localeObj.getConstant('endDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
13178
13143
  manualEndDateValue + '</td></tr>' : '';
13179
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
13180
- 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);
13181
13149
  break;
13182
13150
  }
13183
13151
  case 'manualmilestone':
@@ -13199,8 +13167,11 @@ class Tooltip$1 {
13199
13167
  let date = '<tr><td class = "e-gantt-tooltip-label"> Date</td><td>:</td>' +
13200
13168
  '<td class = "e-gantt-tooltip-value">' +
13201
13169
  dateValue + '</tr>';
13202
- content$$1 = '<table class = "e-gantt-tooltiptable"><tbody>' +
13203
- 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);
13204
13175
  break;
13205
13176
  }
13206
13177
  }
@@ -13226,7 +13197,7 @@ class Tooltip$1 {
13226
13197
  * @private
13227
13198
  */
13228
13199
  getPredecessorTooltipData(args) {
13229
- let predeceesorParent = args.target.parentElement.id;
13200
+ let predeceesorParent = args.target.id;
13230
13201
  if (this.parent.enableHtmlSanitizer && typeof (predeceesorParent) === 'string') {
13231
13202
  predeceesorParent = SanitizeHtmlHelper.sanitize(predeceesorParent);
13232
13203
  }
@@ -13259,7 +13230,7 @@ class Tooltip$1 {
13259
13230
  /**
13260
13231
  * To compile template string.
13261
13232
  *
13262
- * @param {string} template .
13233
+ * @param {string | Function} template .
13263
13234
  * @param {Gantt} parent .
13264
13235
  * @param {IGanttData|PredecessorTooltip} data .
13265
13236
  * @param {string} propName .
@@ -14321,19 +14292,17 @@ let Gantt = class Gantt extends Component {
14321
14292
  this.notify('initPredessorDialog', {});
14322
14293
  }
14323
14294
  this.splitterModule.updateSplitterPosition();
14324
- if (this.gridLines === 'Vertical' || this.gridLines === 'Both') {
14325
- this.renderChartVerticalLines();
14326
- }
14295
+ // if (this.gridLines === 'Vertical' || this.gridLines === 'Both') {
14296
+ // this.renderChartVerticalLines();
14297
+ // }
14327
14298
  }
14328
14299
  removeCriticalPathStyles() {
14329
14300
  const ganttChartElement = this.ganttChartModule.chartElement;
14330
14301
  removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-taskbar-inner-div'), criticalChildTaskBarInnerDiv);
14331
14302
  removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-progressbar-inner-div'), criticalChildProgressBarInnerDiv);
14332
- removeClass(ganttChartElement.querySelectorAll('.e-milestone-top'), criticalMilestoneTop);
14333
- removeClass(ganttChartElement.querySelectorAll('.e-milestone-bottom'), criticalMilestoneBottom);
14334
- removeClass(this.element.querySelectorAll('.e-line'), criticalConnectorLine);
14335
- removeClass(this.element.querySelectorAll('.e-connector-line-right-arrow'), criticalConnectorLineRightArrow);
14336
- 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);
14337
14306
  }
14338
14307
  wireEvents() {
14339
14308
  if (this.allowKeyboard) {
@@ -14345,6 +14314,15 @@ let Gantt = class Gantt extends Component {
14345
14314
  }
14346
14315
  /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
14347
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
+ }
14348
14326
  }
14349
14327
  /**
14350
14328
  * Method trigger while user perform window resize.
@@ -15445,9 +15423,9 @@ let Gantt = class Gantt extends Component {
15445
15423
  if (!this.element.contains(this.chartVerticalLineContainer)) {
15446
15424
  this.chartVerticalLineContainer = createElement('div', {
15447
15425
  id: this.element.id + 'line-container',
15448
- styles: 'position:absolute;height:100%;z-index:1'
15426
+ styles: 'position:absolute;height:100%;'
15449
15427
  });
15450
- this.ganttChartModule.chartBodyContent.appendChild(this.chartVerticalLineContainer);
15428
+ this.ganttChartModule.chartBodyContent.insertBefore(this.chartVerticalLineContainer, this.ganttChartModule.chartBodyContent.lastChild);
15451
15429
  }
15452
15430
  this.chartVerticalLineContainer.innerHTML = '';
15453
15431
  let headerTable = this.element.getElementsByClassName('e-timeline-header-table-container')[1];
@@ -15836,9 +15814,6 @@ let Gantt = class Gantt extends Component {
15836
15814
  this.timelineModule.updateChartByNewTimeline();
15837
15815
  this.ganttChartModule.chartBodyContent.style.width = formatUnit(this.timelineModule.totalTimelineWidth);
15838
15816
  this.ganttChartModule.updateLastRowBottomWidth();
15839
- if (this.gridLines === 'Vertical' || this.gridLines === 'Both') {
15840
- this.renderChartVerticalLines();
15841
- }
15842
15817
  if (this.taskFields.dependency) {
15843
15818
  this.ganttChartModule.reRenderConnectorLines();
15844
15819
  }
@@ -18068,23 +18043,23 @@ class EditTooltip {
18068
18043
  let duration;
18069
18044
  if (!isNullOrUndefined(editRecord.startDate)) {
18070
18045
  startDate = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('startDate') +
18071
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
18046
+ '</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' +
18072
18047
  instance.formatDate(editRecord.startDate, { format: this.parent.getDateFormat() }) + '</td></tr>';
18073
18048
  }
18074
18049
  if (!isNullOrUndefined(editRecord.endDate)) {
18075
18050
  endDate = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('endDate') +
18076
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
18051
+ '</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' +
18077
18052
  instance.formatDate(editRecord.endDate, { format: this.parent.getDateFormat() }) + '</td></tr>';
18078
18053
  }
18079
18054
  if (!isNullOrUndefined(editRecord.duration)) {
18080
18055
  duration = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('duration') +
18081
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
18056
+ '</td><td style="padding: 2px;">:</td><td class = "e-gantt-tooltip-value">' +
18082
18057
  this.parent.getDurationString(editRecord.duration, editRecord.durationUnit) + '</td></tr>';
18083
18058
  }
18084
18059
  switch (this.taskbarEdit.taskBarEditAction) {
18085
18060
  case 'ProgressResizing':
18086
18061
  const progress = '<tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('progress') +
18087
- '</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>';
18088
18063
  tooltipString = '<table class = "e-gantt-tooltiptable"><tbody>' +
18089
18064
  progress + '</tbody></table>';
18090
18065
  break;
@@ -18341,8 +18316,7 @@ class TaskbarEdit extends DateProcessor {
18341
18316
  || target.classList.contains(manualParentTaskBar)) {
18342
18317
  element = parentsUntil$1(target, manualParentMainContainer);
18343
18318
  }
18344
- else if (target.classList.contains(manualParentMilestoneTop) || target.classList.contains(manualParentMilestoneBottom)
18345
- || target.classList.contains(manualParentMilestone)) {
18319
+ else if (target.classList.contains(manualParentMilestone)) {
18346
18320
  element = parentsUntil$1(target, manualParentMilestone);
18347
18321
  }
18348
18322
  else {
@@ -18358,18 +18332,60 @@ class TaskbarEdit extends DateProcessor {
18358
18332
  if (this.parent.editSettings.allowTaskbarEditing && element) {
18359
18333
  this.showHideTaskBarEditingElements(element, this.taskBarEditElement);
18360
18334
  this.editElement = element;
18361
- this.taskBarEditElement = element;
18362
- const index = this.taskBarEditElement.getAttribute('data-segment-index');
18335
+ this.realTaskbarElement = this.editElement;
18336
+ const index = this.editElement.getAttribute('data-segment-index');
18363
18337
  if (!isNullOrUndefined(index)) {
18364
18338
  this.segmentIndex = Number(index);
18365
18339
  }
18366
18340
  else {
18367
18341
  this.segmentIndex = -1;
18368
18342
  }
18369
- this.taskBarEditRecord = this.parent.ganttChartModule.getRecordByTaskBar(this.taskBarEditElement);
18343
+ this.taskBarEditRecord = this.parent.ganttChartModule.getRecordByTaskBar(this.editElement);
18370
18344
  if (e.type === 'mousedown' || e.type === 'touchstart' || e.type === 'click') {
18371
- this.roundOffDuration = true;
18372
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;
18373
18389
  if ((this.taskBarEditAction === 'ConnectorPointLeftDrag' || this.taskBarEditAction === 'ConnectorPointRightDrag') &&
18374
18390
  isNullOrUndefined(this.parent.taskFields.dependency)) {
18375
18391
  this.taskBarEditAction = null;
@@ -18400,7 +18416,7 @@ class TaskbarEdit extends DateProcessor {
18400
18416
  this.initPublicProp();
18401
18417
  }
18402
18418
  else {
18403
- this.showHideTaskBarEditingElements(element, this.taskBarEditElement);
18419
+ this.showHideTaskBarEditingElements(element, this.editElement);
18404
18420
  }
18405
18421
  }
18406
18422
  }
@@ -18435,9 +18451,10 @@ class TaskbarEdit extends DateProcessor {
18435
18451
  addClass([element.querySelector('.' + taskBarLeftResizer)], [leftResizeGripper]);
18436
18452
  addClass([element.querySelector('.' + taskBarRightResizer)], [rightResizeGripper]);
18437
18453
  if (isShowProgressResizer) {
18438
- const progresElement = !isNullOrUndefined(element.querySelector('.' + childProgressResizer)) ? true : false;
18439
- if (progresElement) {
18440
- addClass([element.querySelector('.' + childProgressResizer)], [progressResizeGripper]);
18454
+ const progressElement = element.querySelector('.' + childProgressResizer);
18455
+ if (!isNullOrUndefined(progressElement)) {
18456
+ addClass([progressElement], [progressResizeGripper]);
18457
+ progressElement.style.top = '3px';
18441
18458
  }
18442
18459
  }
18443
18460
  }
@@ -18518,9 +18535,6 @@ class TaskbarEdit extends DateProcessor {
18518
18535
  }
18519
18536
  else if (mouseDownElement.classList.contains(manualParentTaskBar) ||
18520
18537
  mouseDownElement.classList.contains(manualParentMainContainer) ||
18521
- mouseDownElement.classList.contains(manualParentMilestone) ||
18522
- mouseDownElement.classList.contains(manualParentMilestoneTop) ||
18523
- mouseDownElement.classList.contains(manualParentMilestoneBottom) ||
18524
18538
  mouseDownElement.classList.contains(manualParentMilestone)) {
18525
18539
  action = 'ManualParentDrag';
18526
18540
  }
@@ -18616,6 +18630,21 @@ class TaskbarEdit extends DateProcessor {
18616
18630
  this.dragMouseLeave = false;
18617
18631
  this.isMouseDragCheck();
18618
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
+ }
18619
18648
  const args = {
18620
18649
  cancel: false,
18621
18650
  requestType: 'taskbarediting',
@@ -18721,16 +18750,6 @@ class TaskbarEdit extends DateProcessor {
18721
18750
  merge(this.taskBarEditRecord.ganttProperties, arg.previousData);
18722
18751
  }
18723
18752
  });
18724
- this.parent.flatData.map((data) => {
18725
- if ((!isNullOrUndefined(this.taskBarEditRecord.parentItem)) && data.ganttProperties.taskId === this.taskBarEditRecord.parentItem.taskId) {
18726
- data.childRecords.map((s) => {
18727
- if (isNullOrUndefined(s.ganttProperties.startDate) || isNullOrUndefined(s.ganttProperties.endDate) ||
18728
- isNullOrUndefined(s.ganttProperties.duration)) {
18729
- this.parent.dataOperation.updateGanttData();
18730
- }
18731
- });
18732
- }
18733
- });
18734
18753
  }
18735
18754
  }
18736
18755
  /**
@@ -19535,6 +19554,15 @@ class TaskbarEdit extends DateProcessor {
19535
19554
  * @private
19536
19555
  */
19537
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
+ }
19538
19566
  const item = this.taskBarEditRecord.ganttProperties;
19539
19567
  let position = this.parent.enableRtl ? "right" : "left";
19540
19568
  const segment = !isNullOrUndefined(item.segments) ? item.segments[this.segmentIndex] : null;
@@ -19544,13 +19572,10 @@ class TaskbarEdit extends DateProcessor {
19544
19572
  if (!isNullOrUndefined(segment)) {
19545
19573
  rightResizer = this.parent.isAdaptive ? (segment.width - 2) : (segment.width - 10);
19546
19574
  }
19547
- 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)
19548
19577
  .querySelector('.' + taskBarMainContainer) : this.taskBarEditElement;
19549
19578
  const segmentedTaskBarContainer = this.taskBarEditElement.classList.contains('e-segmented-taskbar');
19550
- const leftLabelContainer$$1 = closest(this.taskBarEditElement, 'tr.' + chartRow)
19551
- .querySelector('.' + leftLabelContainer);
19552
- const rightLabelContainer$$1 = closest(this.taskBarEditElement, 'tr.' + chartRow)
19553
- .querySelector('.' + rightLabelContainer);
19554
19579
  const traceChildProgressBar$$1 = this.taskBarEditElement.querySelector('.' + traceChildProgressBar);
19555
19580
  const traceChildTaskBar$$1 = this.taskBarEditElement.querySelector('.' + traceChildTaskBar);
19556
19581
  const childProgressResizer$$1 = this.taskBarEditElement.querySelector('.' + childProgressResizer);
@@ -19562,34 +19587,45 @@ class TaskbarEdit extends DateProcessor {
19562
19587
  const manualTaskbar = this.taskBarEditElement.querySelector('.' + manualParentTaskBar);
19563
19588
  const manualParentRight = this.taskBarEditElement.querySelector('.' + manualParentRightResizer);
19564
19589
  const manualParentLeft = this.taskBarEditElement.querySelector('.' + manualParentLeftResizer);
19590
+ const resizeLine = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-taskbar-resize-div');
19565
19591
  if (this.taskBarEditAction !== 'ConnectorPointRightDrag' &&
19566
19592
  this.taskBarEditAction !== 'ConnectorPointLeftDrag') {
19567
19593
  if (this.taskBarEditAction !== 'ParentResizing' && this.taskBarEditAction !== 'ManualParentDrag') {
19568
19594
  if (segmentedTaskBarContainer && !isNullOrUndefined(item.segments)
19569
19595
  && (this.taskBarEditAction === 'RightResizing' || this.segmentIndex !== 0)) {
19596
+ if (!isNullOrUndefined(resizeLine)) {
19597
+ resizeLine.style.width = (segment.width) + "px";
19598
+ }
19570
19599
  this.taskBarEditElement.style.width = (segment.width) + 'px';
19571
19600
  if (this.parent.enableRtl) {
19572
19601
  this.taskBarEditElement.style.right = (segment.left) + 'px';
19573
19602
  }
19574
19603
  else {
19575
19604
  this.taskBarEditElement.style.left = (segment.left) + 'px';
19605
+ if (!isNullOrUndefined(resizeLine)) {
19606
+ resizeLine.style.left = (segment.left + this.editElement.parentElement.offsetLeft) + "px";
19607
+ }
19576
19608
  }
19577
19609
  }
19578
- taskBarMainContainer$$1.style.width = (width) + 'px';
19579
- leftLabelContainer$$1.style.width = (item.left) + 'px';
19580
19610
  taskBarMainContainer$$1.style.setProperty(position, (item.left) + 'px');
19611
+ taskBarMainContainer$$1.style.width = (width) + 'px';
19581
19612
  if (this.parent.viewType === 'ResourceView' && this.parent.allowTaskbarDragAndDrop && this.parent.rowDragAndDropModule &&
19582
19613
  (this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'MilestoneDrag')) {
19583
19614
  taskBarMainContainer$$1.style.setProperty('top', (this.topValue) + 'px');
19584
19615
  taskBarMainContainer$$1.style.zIndex = '4';
19585
19616
  }
19586
19617
  if (this.taskBarEditAction === 'LeftResizing' && this.segmentIndex === 0) {
19618
+ this.taskBarEditElement.style.setProperty("opacity", '.75');
19587
19619
  const parent = this.taskBarEditElement.parentElement;
19588
19620
  const segmentedTasks = parent.getElementsByClassName('e-segmented-taskbar');
19589
19621
  for (let i = 0; i < item.segments.length; i++) {
19590
19622
  const segment = item.segments[i];
19591
19623
  const segmentElement = segmentedTasks[i];
19592
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
+ }
19593
19629
  if (this.parent.enableRtl) {
19594
19630
  segmentElement.style.right = (segment.left) + 'px';
19595
19631
  }
@@ -19598,8 +19634,10 @@ class TaskbarEdit extends DateProcessor {
19598
19634
  }
19599
19635
  }
19600
19636
  }
19601
- if (!isNullOrUndefined(rightLabelContainer$$1)) {
19602
- 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');
19603
19641
  }
19604
19642
  }
19605
19643
  if (traceConnectorPointRight) {
@@ -19612,10 +19650,8 @@ class TaskbarEdit extends DateProcessor {
19612
19650
  }
19613
19651
  if (this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone) {
19614
19652
  taskBarMainContainer$$1.style.setProperty(position, (item.left - (width / 2)) + 'px');
19615
- leftLabelContainer$$1.style.width = (item.left - (width / 2)) + 'px';
19616
- if (!isNullOrUndefined(rightLabelContainer$$1)) {
19617
- rightLabelContainer$$1.style.setProperty(position, (item.left + (width / 2)) + 'px');
19618
- }
19653
+ resizeLine.style.left = (item.left - (width / 2)) + 'px';
19654
+ resizeLine.style.width = (width) + "px";
19619
19655
  }
19620
19656
  else if (this.taskBarEditAction === 'ProgressResizing') {
19621
19657
  if (this.segmentIndex === -1) {
@@ -19638,6 +19674,7 @@ class TaskbarEdit extends DateProcessor {
19638
19674
  }
19639
19675
  }
19640
19676
  else if (this.taskBarEditAction === 'RightResizing' && !isNullOrUndefined(traceChildTaskBar$$1)) {
19677
+ resizeLine.style.width = (width) + 'px';
19641
19678
  traceChildTaskBar$$1.style.width = (width) + 'px';
19642
19679
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
19643
19680
  traceChildProgressBar$$1.style.width = (item.progressWidth) + 'px';
@@ -19648,23 +19685,36 @@ class TaskbarEdit extends DateProcessor {
19648
19685
  }
19649
19686
  }
19650
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';
19651
19691
  if (!isNullOrUndefined(traceParentTaskBar$$1)) {
19652
19692
  traceParentTaskBar$$1.style.width = (width) + 'px';
19693
+ resizeLine.style.width = (item.width) + 'px';
19653
19694
  }
19654
19695
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
19655
19696
  traceParentProgressBar$$1.style.width = (item.progressWidth) + 'px';
19656
19697
  }
19657
19698
  }
19658
19699
  else if (this.taskBarEditAction === 'ParentResizing') {
19700
+ resizeLine.style.width = (item.width) + 'px';
19701
+ resizeLine.style.left = item.left + 'px';
19659
19702
  manualParentTaskbar.style.width = manualTaskbar.style.width = (item.width) + 'px';
19660
19703
  manualParentRight.style.setProperty(position, item.width - manualParentLeft.offsetLeft + 'px');
19661
19704
  }
19662
19705
  else if (this.taskBarEditAction === 'ManualParentDrag') {
19706
+ resizeLine.style.width = (item.width) + 'px';
19707
+ resizeLine.style.left = item.left + 'px';
19663
19708
  manualParentTaskbar.style.setProperty(position, item.left - item.autoLeft + 'px');
19664
19709
  }
19665
19710
  else {
19666
19711
  if (!isNullOrUndefined(traceChildTaskBar$$1) && !segmentedTaskBarContainer) {
19667
- 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";
19668
19718
  }
19669
19719
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
19670
19720
  taskBarRightResizer$$1.style.setProperty(position, rightResizer + 'px');
@@ -20060,21 +20110,21 @@ class TaskbarEdit extends DateProcessor {
20060
20110
  if ((this.parent.virtualScrollModule && this.parent.enableVirtualization &&
20061
20111
  !this.elementOffsetLeft) || !this.parent.enableVirtualization) {
20062
20112
  if (!this.parent.allowParentDependency) {
20063
- this.elementOffsetLeft = this.taskBarEditElement.offsetLeft;
20064
- this.elementOffsetTop = this.taskBarEditElement.offsetTop + scrollTop;
20113
+ this.elementOffsetLeft = this.realTaskbarElement.offsetLeft;
20114
+ this.elementOffsetTop = this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 + scrollTop;
20065
20115
  }
20066
20116
  else {
20067
20117
  if (this.taskBarEditElement.children[0].classList.contains('e-manualparent-main-container')) {
20068
- this.elementOffsetLeft = this.taskBarEditElement.children[0]['offsetLeft'] + this.taskBarEditElement.offsetLeft;
20069
- 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;
20070
20120
  }
20071
20121
  else {
20072
- this.elementOffsetLeft = this.taskBarEditElement.offsetLeft;
20073
- this.elementOffsetTop = this.taskBarEditElement.offsetTop + scrollTop;
20122
+ this.elementOffsetLeft = this.realTaskbarElement.offsetLeft;
20123
+ this.elementOffsetTop = this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 + scrollTop;
20074
20124
  }
20075
20125
  }
20076
- this.elementOffsetWidth = this.taskBarEditElement.offsetWidth;
20077
- this.elementOffsetHeight = this.taskBarEditElement.offsetHeight;
20126
+ this.elementOffsetWidth = this.realTaskbarElement.offsetWidth;
20127
+ this.elementOffsetHeight = this.realTaskbarElement.offsetHeight;
20078
20128
  }
20079
20129
  this.showHideTaskBarEditingElements(element, this.highlightedSecondElement, true);
20080
20130
  }
@@ -22609,10 +22659,11 @@ class ConnectorLineEdit {
22609
22659
  * @private
22610
22660
  */
22611
22661
  getConnectorLineHoverElement(target) {
22612
- const isOnLine = parentsUntil$1(target, connectorLine);
22613
- const isOnRightArrow = parentsUntil$1(target, connectorLineRightArrow);
22614
- const isOnLeftArrow = parentsUntil$1(target, connectorLineLeftArrow);
22615
- 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) {
22616
22667
  return parentsUntil$1(target, connectorLineContainer);
22617
22668
  }
22618
22669
  else {
@@ -22646,16 +22697,13 @@ class ConnectorLineEdit {
22646
22697
  */
22647
22698
  addHighlight(element) {
22648
22699
  this.connectorLineElement = element;
22649
- addClass([element], [connectorLineHoverZIndex]);
22650
- if (element.querySelectorAll('.' + connectorLine)[0].classList.contains('e-criticalconnector-line')) {
22651
- addClass(element.querySelectorAll('.' + connectorLine), [criticalConnectorLineHover]);
22652
- addClass(element.querySelectorAll('.' + connectorLineRightArrow), [criticalConnectorLineRightArrowHover]);
22653
- 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');
22654
22704
  }
22655
22705
  else {
22656
- addClass(element.querySelectorAll('.' + connectorLine), [connectorLineHover]);
22657
- addClass(element.querySelectorAll('.' + connectorLineRightArrow), [connectorLineRightArrowHover]);
22658
- addClass(element.querySelectorAll('.' + connectorLineLeftArrow), [connectorLineLeftArrowHover]);
22706
+ criticalElement.setAttribute('stroke-width', '2');
22659
22707
  }
22660
22708
  }
22661
22709
  /**
@@ -22665,17 +22713,14 @@ class ConnectorLineEdit {
22665
22713
  * @private
22666
22714
  */
22667
22715
  removeHighlight() {
22668
- if (!isNullOrUndefined(this.connectorLineElement)) {
22669
- removeClass([this.connectorLineElement], [connectorLineHoverZIndex]);
22670
- if (this.connectorLineElement.querySelectorAll('.' + connectorLine)[0].classList.contains(criticalConnectorLineHover)) {
22671
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLine), [criticalConnectorLineHover]);
22672
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLineRightArrow), [criticalConnectorLineRightArrowHover]);
22673
- 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');
22674
22721
  }
22675
22722
  else {
22676
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLine), [connectorLineHover]);
22677
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLineRightArrow), [connectorLineRightArrowHover]);
22678
- removeClass(this.connectorLineElement.querySelectorAll('.' + connectorLineLeftArrow), [connectorLineLeftArrowHover]);
22723
+ criticalElement.setAttribute('stroke-width', '1');
22679
22724
  }
22680
22725
  this.connectorLineElement = null;
22681
22726
  }
@@ -22742,8 +22787,8 @@ class ConnectorLineEdit {
22742
22787
  this.parent.connectorLineModule.expandedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?
22743
22788
  this.parent.updatedRecords : this.parent.getExpandedRecords(this.parent.updatedRecords);
22744
22789
  const editedConnectorLineString = this.getEditedConnectorLineString(editedRecord);
22745
- this.parent.connectorLineModule.dependencyViewContainer.innerHTML =
22746
- this.parent.connectorLineModule.dependencyViewContainer.innerHTML + editedConnectorLineString;
22790
+ this.parent.connectorLineModule.svgObject.innerHTML =
22791
+ this.parent.connectorLineModule.svgObject.innerHTML + editedConnectorLineString;
22747
22792
  }
22748
22793
  idFromPredecessor(pre) {
22749
22794
  const preArray = pre.split(',');
@@ -23363,9 +23408,9 @@ class ConnectorLineEdit {
23363
23408
  validateTypes(ganttRecord, data) {
23364
23409
  const predecessor = this.parent.predecessorModule.getValidPredecessor(ganttRecord);
23365
23410
  let parentGanttRecord;
23366
- let ganttTaskData;
23367
23411
  this.validationPredecessor = [];
23368
23412
  let violatedParent;
23413
+ let ganttTaskData;
23369
23414
  let violateType;
23370
23415
  const startDate = this.parent.predecessorModule.getPredecessorDate(ganttRecord, predecessor);
23371
23416
  if (data) {
@@ -24438,6 +24483,10 @@ class Edit$2 {
24438
24483
  if (data.hasChildRecords && ganttProp.isAutoSchedule) {
24439
24484
  this.parent.setRecordValue('startDate', ganttProp.autoStartDate, ganttProp, true);
24440
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);
24441
24490
  this.parent.setRecordValue('width', this.parent.dataOperation.calculateWidth(data, true), ganttProp, true);
24442
24491
  this.parent.setRecordValue('left', this.parent.dataOperation.calculateLeft(ganttProp, true), ganttProp, true);
24443
24492
  this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth(ganttProp.width, ganttProp.progress), ganttProp, true);
@@ -24446,8 +24495,8 @@ class Edit$2 {
24446
24495
  else if (data.hasChildRecords && !ganttProp.isAutoSchedule) {
24447
24496
  this.parent.dataOperation.updateWidthLeft(data);
24448
24497
  this.parent.dataOperation.calculateDuration(data);
24449
- this.parent.setRecordValue('autoStartDate', ganttProp.startDate, ganttProp, true);
24450
- 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);
24451
24500
  this.parent.setRecordValue('autoDuration', this.parent.dataOperation.calculateAutoDuration(data), ganttProp, true);
24452
24501
  this.parent.dataOperation.updateAutoWidthLeft(data);
24453
24502
  }
@@ -24672,7 +24721,6 @@ class Edit$2 {
24672
24721
  }
24673
24722
  if (childRecords.length) {
24674
24723
  this.parent.dataOperation.updateParentItems(ganttRecord, true);
24675
- this.parent.dataOperation.updateGanttData();
24676
24724
  }
24677
24725
  }
24678
24726
  /**
@@ -24884,8 +24932,8 @@ class Edit$2 {
24884
24932
  }
24885
24933
  }
24886
24934
  if (this.parent.isConnectorLineUpdate && !isNullOrUndefined(this.parent.connectorLineEditModule)) {
24887
- this.parent.updatedConnectorLineCollection = [];
24888
- this.parent.connectorLineIds = [];
24935
+ // this.parent.updatedConnectorLineCollection = [];
24936
+ // this.parent.connectorLineIds = [];
24889
24937
  this.parent.connectorLineEditModule.refreshEditedRecordConnectorLine(this.parent.editedRecords);
24890
24938
  this.updateScheduleDatesOnEditing(args);
24891
24939
  }
@@ -26254,6 +26302,7 @@ class Edit$2 {
26254
26302
  this.parent.treeGrid.parentData = [];
26255
26303
  this.parent.addDeleteRecord = true;
26256
26304
  this.parent.selectedRowIndex = 0;
26305
+ this.parent.treeGrid['isAddedFromGantt'] = true;
26257
26306
  this.parent.treeGrid.refresh();
26258
26307
  if (this.parent.enableImmutableMode) {
26259
26308
  this.parent.modifiedRecords = args.modifiedRecords;
@@ -26398,7 +26447,6 @@ class Edit$2 {
26398
26447
  let args = {};
26399
26448
  args = this.constructTaskAddedEventArgs(cAddedRecord, this.parent.editedRecords, 'beforeAdd');
26400
26449
  this.parent.trigger('actionBegin', args, (args) => {
26401
- this.parent.previousRecords = {};
26402
26450
  if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
26403
26451
  this.parent.showMaskRow();
26404
26452
  }
@@ -28940,7 +28988,7 @@ class NonWorkingDay {
28940
28988
  this.nonworkingContainer = createElement('div', {
28941
28989
  className: nonworkingContainer
28942
28990
  });
28943
- this.parent.ganttChartModule.chartBodyContent.appendChild(this.nonworkingContainer);
28991
+ this.parent.ganttChartModule.chartBodyContent.insertBefore(this.nonworkingContainer, this.parent.ganttChartModule.chartBodyContent.lastChild);
28944
28992
  }
28945
28993
  }
28946
28994
  /**
@@ -29089,7 +29137,7 @@ class NonWorkingDay {
29089
29137
  }
29090
29138
  updateHolidayLabelHeight() {
29091
29139
  const height = this.parent.getContentHeight();
29092
- let gantttable = this.parent.element;
29140
+ let gantttable = document.getElementById("ganttContainer");
29093
29141
  // eslint-disable-next-line
29094
29142
  let toolbarHeight = 0;
29095
29143
  if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {
@@ -29277,9 +29325,12 @@ class DayMarkers {
29277
29325
  }
29278
29326
  }
29279
29327
  refreshMarkers() {
29280
- this.eventMarkerRender.renderEventMarkers();
29281
29328
  this.nonworkingDayRender.renderWeekends();
29282
29329
  this.nonworkingDayRender.renderHolidays();
29330
+ if (this.parent.gridLines === 'Vertical' || this.parent.gridLines === 'Both') {
29331
+ this.parent['renderChartVerticalLines']();
29332
+ }
29333
+ this.eventMarkerRender.renderEventMarkers();
29283
29334
  }
29284
29335
  updateHeight() {
29285
29336
  this.nonworkingDayRender.updateContainerHeight();
@@ -30041,11 +30092,8 @@ class CriticalPath {
30041
30092
  }
30042
30093
  if (element && (this.parent.viewType === 'ProjectView' || (this.parent.viewType === 'ResourceView' &&
30043
30094
  !criticalData.hasChildRecords))) {
30044
- if (element.getElementsByClassName('e-milestone-top')[0]) {
30045
- addClass(element.querySelectorAll('.e-milestone-top'), criticalMilestoneTop);
30046
- }
30047
- if (element.getElementsByClassName('e-milestone-bottom')[0]) {
30048
- addClass(element.querySelectorAll('.e-milestone-bottom'), criticalMilestoneBottom);
30095
+ if (element.getElementsByClassName('e-gantt-milestone')[0]) {
30096
+ addClass(element.querySelectorAll('.e-gantt-milestone'), criticalMilestone);
30049
30097
  }
30050
30098
  if (element.getElementsByClassName('e-gantt-child-taskbar-inner-div').length > 0) {
30051
30099
  addClass(element.querySelectorAll('.e-gantt-child-taskbar-inner-div'), criticalChildTaskBarInnerDiv);
@@ -30081,11 +30129,9 @@ class CriticalPath {
30081
30129
  currentdata['taskid'] + 'child' + checkint);
30082
30130
  if (lineElement.length > 0) {
30083
30131
  addClass(this.parent.element.querySelectorAll('#ConnectorLineparent' + currentdata['taskid'] + 'child' +
30084
- checkint)[0].querySelectorAll('.e-line'), criticalConnectorLine);
30085
- addClass(this.parent.element.querySelectorAll('#ConnectorLineparent' + currentdata['taskid'] + 'child' +
30086
- checkint)[0].querySelectorAll('.e-connector-line-right-arrow'), criticalConnectorLineRightArrow);
30132
+ checkint)[0].querySelectorAll('.e-connector-line'), criticalConnectorLineSVG);
30087
30133
  addClass(this.parent.element.querySelectorAll('#ConnectorLineparent' + currentdata['taskid'] + 'child' +
30088
- checkint)[0].querySelectorAll('.e-connector-line-left-arrow'), criticalConnectorLineLeftArrow);
30134
+ checkint)[0].querySelectorAll('.e-connector-line-arrow'), criticalConnectorArrowSVG);
30089
30135
  }
30090
30136
  }
30091
30137
  }
@@ -30384,7 +30430,7 @@ class ContextMenu$2 {
30384
30430
  splitTaskDuration = Math.ceil(currentTaskDifference / this.parent.timelineSettings.timelineUnitSize);
30385
30431
  splitTaskDuration -= 1;
30386
30432
  }
30387
- 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);
30388
30434
  return contextMenuClickDate;
30389
30435
  }
30390
30436
  contextMenuBeforeOpen(args) {
@@ -30393,7 +30439,7 @@ class ContextMenu$2 {
30393
30439
  this.parent.ganttChartModule.targetElement;
30394
30440
  // Closed edited cell before opening context menu
30395
30441
  // eslint-disable-next-line
30396
- 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')) {
30397
30443
  this.parent.treeGrid.closeEdit();
30398
30444
  }
30399
30445
  if (!isNullOrUndefined(args.element) && args.element.id === this.parent.element.id + '_contextmenu') {
@@ -34088,6 +34134,7 @@ class ExportHelper {
34088
34134
  predecessor.type = data.type;
34089
34135
  predecessor.milestoneParent = data.milestoneParent;
34090
34136
  predecessor.milestoneChild = data.milestoneChild;
34137
+ predecessor.parentEndPoint = data.parentEndPoint;
34091
34138
  predecessor.lineWidth = this.parent.connectorLineWidth > 5 ? pixelToPoint(5) : pixelToPoint(this.parent.connectorLineWidth);
34092
34139
  if (data.isCritical) {
34093
34140
  predecessor.connectorLineColor = this.ganttStyle.criticalConnectorLineColor;
@@ -35073,22 +35120,11 @@ class PdfGanttPredecessor {
35073
35120
  this.parent = parent;
35074
35121
  this.pdfGantt = pdfGantt;
35075
35122
  }
35076
- findindex(num, pdfExportProperties) {
35123
+ findindex(num) {
35077
35124
  var dataindex;
35078
- if (pdfExportProperties.exportType === 'CurrentViewData') {
35079
- this.parent.currentViewData.map(function (data, index) {
35080
- if (data.index == num) {
35081
- dataindex = index;
35082
- }
35083
- });
35084
- }
35085
- else {
35086
- this.parent.flatData.map(function (data, index) {
35087
- if (data.index == num) {
35088
- dataindex = index;
35089
- }
35090
- });
35091
- }
35125
+ this.parent.currentViewData.map((data, index) => { if (data.index == num) {
35126
+ dataindex = index;
35127
+ } });
35092
35128
  return dataindex;
35093
35129
  }
35094
35130
  /**
@@ -35098,11 +35134,11 @@ class PdfGanttPredecessor {
35098
35134
  * @returns {void}
35099
35135
  * @private
35100
35136
  */
35101
- drawPredecessor(pdfGantt, pdfExportProperties) {
35137
+ drawPredecessor(pdfGantt) {
35102
35138
  this.pdfGantt = pdfGantt;
35103
35139
  const pages = pdfGantt.result.page.section.getPages();
35104
- const parentTask = pdfGantt.taskbarCollection[this.findindex(this.parentIndex, pdfExportProperties)];
35105
- 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)];
35106
35142
  let startPage = new PdfPage();
35107
35143
  let endPage = new PdfPage();
35108
35144
  let predecessorType = '';
@@ -35112,7 +35148,7 @@ class PdfGanttPredecessor {
35112
35148
  let childY = 0;
35113
35149
  switch (this.type) {
35114
35150
  case 'FS':
35115
- if ((!isNullOrUndefined(childTask) && childTask.startPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.endPage > -1)) {
35151
+ if (childTask.startPage > -1 && parentTask.endPage > -1) {
35116
35152
  startPage = pages[parentTask.endPage];
35117
35153
  endPage = pages[childTask.startPage];
35118
35154
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35139,7 +35175,7 @@ class PdfGanttPredecessor {
35139
35175
  }
35140
35176
  break;
35141
35177
  case 'SF':
35142
- if ((!isNullOrUndefined(childTask) && childTask.endPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.startPage > -1)) {
35178
+ if (childTask.endPage > -1 && parentTask.startPage > -1) {
35143
35179
  startPage = pages[parentTask.startPage];
35144
35180
  endPage = pages[childTask.endPage];
35145
35181
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35166,7 +35202,7 @@ class PdfGanttPredecessor {
35166
35202
  }
35167
35203
  break;
35168
35204
  case 'FF':
35169
- if ((!isNullOrUndefined(childTask) && childTask.endPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.endPage > -1)) {
35205
+ if (childTask.endPage > -1 && parentTask.endPage > -1) {
35170
35206
  startPage = pages[parentTask.endPage];
35171
35207
  endPage = pages[childTask.endPage];
35172
35208
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35193,7 +35229,7 @@ class PdfGanttPredecessor {
35193
35229
  }
35194
35230
  break;
35195
35231
  case 'SS':
35196
- if ((!isNullOrUndefined(childTask) && childTask.startPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.startPage > -1)) {
35232
+ if (childTask.startPage > -1 && parentTask.startPage > -1) {
35197
35233
  startPage = pages[parentTask.startPage];
35198
35234
  endPage = pages[childTask.startPage];
35199
35235
  parentPageData = pdfGantt.pdfPageDetail[parentTask.startPage - pdfGantt.chartPageIndex];
@@ -35520,12 +35556,12 @@ class PdfGantt extends PdfTreeGrid {
35520
35556
  }
35521
35557
  return this.taskbars;
35522
35558
  }
35523
- drawChart(result, pdfExportProperties) {
35559
+ drawChart(result) {
35524
35560
  this.result = result;
35525
35561
  this.totalPages = this.result.page.section.count;
35526
35562
  this.perColumnPages = this.totalPages / this.layouter.columnRanges.length;
35527
35563
  this.calculateRange();
35528
- this.drawGantttChart(pdfExportProperties);
35564
+ this.drawGantttChart();
35529
35565
  this.drawPageBorder();
35530
35566
  }
35531
35567
  //Calcualte the header range for each pdf page based on schedule start and end date.
@@ -35674,7 +35710,7 @@ class PdfGantt extends PdfTreeGrid {
35674
35710
  }
35675
35711
  }
35676
35712
  //Draw the gantt chart side
35677
- drawGantttChart(pdfExportProperties) {
35713
+ drawGantttChart() {
35678
35714
  let taskbarPoint = this.startPoint;
35679
35715
  const pagePoint = new PointF();
35680
35716
  let pageStartX = 0;
@@ -35748,7 +35784,7 @@ class PdfGantt extends PdfTreeGrid {
35748
35784
  // Draw predecessor line.
35749
35785
  for (let i = 0; i < this.predecessorCollection.length; i++) {
35750
35786
  const predecessor = this.predecessorCollection[i];
35751
- predecessor.drawPredecessor(this, pdfExportProperties);
35787
+ predecessor.drawPredecessor(this);
35752
35788
  }
35753
35789
  }
35754
35790
  }
@@ -35861,7 +35897,7 @@ class PdfExport {
35861
35897
  const format = new PdfTreeGridLayoutFormat();
35862
35898
  format.break = PdfLayoutBreakType.FitElement;
35863
35899
  const layouter = this.gantt.drawGrid(pdfPage, 0, 0, format);
35864
- this.gantt.drawChart(layouter, pdfExportProperties);
35900
+ this.gantt.drawChart(layouter);
35865
35901
  if (!isMultipleExport) {
35866
35902
  if (!this.isBlob) {
35867
35903
  // save the PDF