@syncfusion/ej2-gantt 22.2.5 → 22.2.7

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 (58) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/ej2-gantt.min.js +2 -2
  3. package/dist/ej2-gantt.umd.min.js +2 -2
  4. package/dist/ej2-gantt.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-gantt.es2015.js +216 -174
  6. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  7. package/dist/es6/ej2-gantt.es5.js +216 -174
  8. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  9. package/dist/global/ej2-gantt.min.js +2 -2
  10. package/dist/global/ej2-gantt.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +10 -10
  13. package/src/gantt/actions/critical-path.js +14 -3
  14. package/src/gantt/actions/edit.js +5 -2
  15. package/src/gantt/actions/taskbar-edit.js +10 -1
  16. package/src/gantt/base/gantt-chart.js +3 -0
  17. package/src/gantt/base/interface.d.ts +0 -2
  18. package/src/gantt/base/task-processor.js +1 -0
  19. package/src/gantt/base/tree-grid.js +20 -4
  20. package/src/gantt/renderer/chart-rows.js +13 -6
  21. package/src/gantt/renderer/connector-line.d.ts +0 -2
  22. package/src/gantt/renderer/connector-line.js +130 -153
  23. package/src/gantt/renderer/timeline.js +1 -2
  24. package/styles/bootstrap-dark.css +1 -1
  25. package/styles/bootstrap.css +1 -1
  26. package/styles/bootstrap4.css +1 -1
  27. package/styles/bootstrap5-dark.css +1 -1
  28. package/styles/bootstrap5.css +1 -1
  29. package/styles/fabric-dark.css +1 -1
  30. package/styles/fabric.css +1 -1
  31. package/styles/fluent-dark.css +1 -1
  32. package/styles/fluent.css +1 -1
  33. package/styles/gantt/_layout.scss +1 -1
  34. package/styles/gantt/bootstrap-dark.css +1 -1
  35. package/styles/gantt/bootstrap.css +1 -1
  36. package/styles/gantt/bootstrap4.css +1 -1
  37. package/styles/gantt/bootstrap5-dark.css +1 -1
  38. package/styles/gantt/bootstrap5.css +1 -1
  39. package/styles/gantt/fabric-dark.css +1 -1
  40. package/styles/gantt/fabric.css +1 -1
  41. package/styles/gantt/fluent-dark.css +1 -1
  42. package/styles/gantt/fluent.css +1 -1
  43. package/styles/gantt/highcontrast-light.css +1 -1
  44. package/styles/gantt/highcontrast.css +1 -1
  45. package/styles/gantt/material-dark.css +1 -1
  46. package/styles/gantt/material.css +1 -1
  47. package/styles/gantt/material3-dark.css +1 -1
  48. package/styles/gantt/material3.css +1 -1
  49. package/styles/gantt/tailwind-dark.css +1 -1
  50. package/styles/gantt/tailwind.css +1 -1
  51. package/styles/highcontrast-light.css +1 -1
  52. package/styles/highcontrast.css +1 -1
  53. package/styles/material-dark.css +1 -1
  54. package/styles/material.css +1 -1
  55. package/styles/material3-dark.css +1 -1
  56. package/styles/material3.css +1 -1
  57. package/styles/tailwind-dark.css +1 -1
  58. package/styles/tailwind.css +1 -1
@@ -3952,6 +3952,7 @@ class TaskProcessor extends DateProcessor {
3952
3952
  this.parent.setRecordValue('progress', Math.floor(parentProgress), parentProp, true);
3953
3953
  this.parent.setRecordValue('totalProgress', totalProgress, parentProp, true);
3954
3954
  this.parent.setRecordValue('totalDuration', totalDuration, parentProp, true);
3955
+ this.parent.setRecordValue('autoDuration', parentProp.duration, parentProp, true);
3955
3956
  if (!parentProp.isAutoSchedule) {
3956
3957
  this.parent.setRecordValue('autoDuration', this.calculateAutoDuration(parentProp), parentProp, true);
3957
3958
  this.updateAutoWidthLeft(parentData);
@@ -4505,6 +4506,9 @@ class GanttChart {
4505
4506
  }
4506
4507
  this.updateWidthAndHeight();
4507
4508
  this.parent.notify('selectRowByIndex', {});
4509
+ if (this.parent.timelineModule.isZoomToFit) {
4510
+ this.parent.timelineModule.processZoomToFit();
4511
+ }
4508
4512
  }
4509
4513
  /**
4510
4514
  * @param {IGanttData[]} records .
@@ -6110,8 +6114,7 @@ class Timeline {
6110
6114
  this.parent.showSpinner();
6111
6115
  }
6112
6116
  this.changeTimelineSettings(newTimeline);
6113
- this.isZoomToFit = false;
6114
- this.parent.isTimelineRoundOff = this.isZoomToFit ? false : isNullOrUndefined(this.parent.projectStartDate) ? true : false;
6117
+ this.parent.isTimelineRoundOff = isNullOrUndefined(this.parent.projectStartDate) ? true : false;
6115
6118
  }
6116
6119
  bottomTierCellWidthCalc(mode, zoomLevel, date) {
6117
6120
  let convertedMilliSeconds;
@@ -8003,8 +8006,16 @@ class GanttTreeGrid {
8003
8006
  this.parent.getDateFormat().toLowerCase().indexOf('hh') !== -1 ? 'datetimepickeredit' : 'datepickeredit';
8004
8007
  column.format = column.format ? column.format : { type: 'date', format: this.parent.getDateFormat() };
8005
8008
  column.width = column.width ? column.width : 150;
8006
- if (!column.edit || (column.edit && !column.edit.create)) {
8007
- column.edit = { params: { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) } };
8009
+ if (column.edit && column.edit.params) {
8010
+ column.edit.params['renderDayCell'] = this.parent.renderWorkingDayCell.bind(this.parent);
8011
+ }
8012
+ else {
8013
+ if (column.edit) {
8014
+ column.edit.params = { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) };
8015
+ }
8016
+ else {
8017
+ column.edit = { params: { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) } };
8018
+ }
8008
8019
  }
8009
8020
  }
8010
8021
  else if (taskSettings.endDate === column.field) {
@@ -8018,8 +8029,16 @@ class GanttTreeGrid {
8018
8029
  column.editType = column.editType ? column.editType :
8019
8030
  this.parent.getDateFormat().toLowerCase().indexOf('hh') !== -1 ? 'datetimepickeredit' : 'datepickeredit';
8020
8031
  column.width = column.width ? column.width : 150;
8021
- if (!column.edit || (column.edit && !column.edit.create)) {
8022
- column.edit = { params: { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) } };
8032
+ if (column.edit && column.edit.params) {
8033
+ column.edit.params['renderDayCell'] = this.parent.renderWorkingDayCell.bind(this.parent);
8034
+ }
8035
+ else {
8036
+ if (column.edit) {
8037
+ column.edit.params = { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) };
8038
+ }
8039
+ else {
8040
+ column.edit = { params: { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) } };
8041
+ }
8023
8042
  }
8024
8043
  }
8025
8044
  else if (taskSettings.duration === column.field) {
@@ -9064,7 +9083,7 @@ class ChartRows extends DateProcessor {
9064
9083
  childTaskbarNode = this.createDivElement(template);
9065
9084
  }
9066
9085
  }
9067
- if (this.parent.enableRtl && childTaskbarNode[0] && childTaskbarNode[0].querySelector('.e-task-label')) {
9086
+ if (this.parent.enableRtl && !isNullOrUndefined(childTaskbarNode) && childTaskbarNode[0] && childTaskbarNode[0].querySelector('.e-task-label')) {
9068
9087
  childTaskbarNode[0].querySelector('.e-task-label').style.marginLeft = '15px';
9069
9088
  childTaskbarNode[0].querySelector('.e-task-label').style.marginRight = '8px';
9070
9089
  if (childTaskbarNode[0].querySelector('.e-gantt-child-progressbar')) {
@@ -9446,8 +9465,8 @@ class ChartRows extends DateProcessor {
9446
9465
  milestoneNode = this.milestoneTemplateFunction(extend({ index: i }, data), this.parent, 'MilestoneTemplate', this.getTemplateID('MilestoneTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);
9447
9466
  }
9448
9467
  else {
9449
- const template = '<div class="' + traceMilestone + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight - 3 : this.taskBarHeight - 7)) + 'px;height:' +
9450
- ((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>';
9468
+ const template = '<div class="' + traceMilestone + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight : this.taskBarHeight - 6)) + 'px;height:' +
9469
+ ((this.parent.renderBaseline ? this.taskBarHeight : this.taskBarHeight - 6)) + 'px;position:absolute;transform: rotate(45deg);top:' + (this.parent.rowHeight > 40 ? 0 : 1) + 'px;left:' + 1 + 'px;"> </div>';
9451
9470
  milestoneNode = this.createDivElement(template);
9452
9471
  }
9453
9472
  return milestoneNode;
@@ -9475,9 +9494,9 @@ class ChartRows extends DateProcessor {
9475
9494
  getMilestoneBaselineNode() {
9476
9495
  const data = this.templateData;
9477
9496
  let baselineMilestoneHeight = this.parent.renderBaseline ? 5 : 2;
9478
- const template = '<div class="' + baselineMilestoneContainer + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight - 5 : this.taskBarHeight - 10) + 2) + 'px;height:' +
9479
- ((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 -
9480
- (this.milestoneHeight / 2) + 3) : (data.ganttProperties.baselineLeft - (this.milestoneHeight / 2) + 2)) + 'px;' + (this.baselineColor ? 'background-color: ' + this.baselineColor + ';' : '') + 'margin-top:' + ((-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + baselineMilestoneHeight) + 3) + 'px"> </div>';
9497
+ const template = '<div class="' + baselineMilestoneContainer + '" style="width:' + ((this.parent.renderBaseline ? this.taskBarHeight : this.taskBarHeight - 10)) + 'px;height:' +
9498
+ ((this.parent.renderBaseline ? this.taskBarHeight : this.taskBarHeight - 10)) + 'px;position:absolute;transform:rotate(45deg);' + (this.parent.enableRtl ? 'right:' : 'left:') + (this.parent.enableRtl ? (data.ganttProperties.left -
9499
+ (this.milestoneHeight / 2) + 3) : (data.ganttProperties.left - (this.milestoneHeight / 2) + 1)) + 'px;' + (this.baselineColor ? 'background-color: ' + this.baselineColor + ';' : '') + 'margin-top:' + ((-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + baselineMilestoneHeight) + 2) + 'px"> </div>';
9481
9500
  return this.createDivElement(template);
9482
9501
  }
9483
9502
  /**
@@ -10162,6 +10181,12 @@ class ChartRows extends DateProcessor {
10162
10181
  this.ganttChartTableBody.replaceChildren(...dupChartBody.childNodes);
10163
10182
  this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();
10164
10183
  }
10184
+ if (this.parent.enableCriticalPath && this.parent.criticalPathModule) {
10185
+ var criticalModule = this.parent.criticalPathModule;
10186
+ if (criticalModule.criticalPathCollection) {
10187
+ this.parent.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);
10188
+ }
10189
+ }
10165
10190
  this.parent.renderTemplates();
10166
10191
  this.triggerQueryTaskbarInfo();
10167
10192
  this.parent.modifiedRecords = [];
@@ -10176,6 +10201,7 @@ class ChartRows extends DateProcessor {
10176
10201
  }
10177
10202
  }
10178
10203
  }
10204
+ this.parent.isGanttChartRendered = true;
10179
10205
  this.parent.renderTemplates();
10180
10206
  }
10181
10207
  /**
@@ -11840,8 +11866,6 @@ class ConnectorLine {
11840
11866
  connectorObj.connectorLineId = 'parent' + parentId + 'child' + childId;
11841
11867
  connectorObj.milestoneParent = parentGanttRecord.isMilestone ? true : false;
11842
11868
  connectorObj.milestoneChild = childGanttRecord.isMilestone ? true : false;
11843
- connectorObj.isManualParent = (!(this.parent.flatData[parentIndex].ganttProperties.isAutoSchedule) && this.parent.flatData[parentIndex].hasChildRecords);
11844
- connectorObj.isManualChild = (!(this.parent.flatData[childIndex].ganttProperties.isAutoSchedule) && this.parent.flatData[childIndex].hasChildRecords);
11845
11869
  connectorObj.parentEndPoint = connectorObj.parentLeft + connectorObj.parentWidth;
11846
11870
  connectorObj.childEndPoint = connectorObj.childLeft + connectorObj.childWidth;
11847
11871
  if (isNullOrUndefined(isScheduledTask(parentGanttRecord)) || isNullOrUndefined(isScheduledTask(childGanttRecord))) {
@@ -12145,6 +12169,8 @@ class ConnectorLine {
12145
12169
  isMilestoneValue = (data.milestoneParent && data.milestoneChild) ? 0 : data.milestoneParent ? -5 : data.milestoneChild ? 5 : 0;
12146
12170
  }
12147
12171
  let heightValue = isVirtual ? connectorLine$$1.height : (height + isMilestoneValue);
12172
+ let borderTopWidth = 0;
12173
+ let addTop = 0;
12148
12174
  let parentOverlapTopValue = 0;
12149
12175
  let childOverlapTopValue = 0;
12150
12176
  let count = 0;
@@ -12181,30 +12207,56 @@ class ConnectorLine {
12181
12207
  }
12182
12208
  if (isValid) {
12183
12209
  if (((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {
12184
-
12210
+ addTop = -11;
12185
12211
  }
12186
12212
  else if (!((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {
12187
12213
  if (data.childIndex > data.parentIndex) {
12188
-
12214
+ if (!fromRecordIsParent && toRecordIsParent) {
12215
+ borderTopWidth = -11;
12216
+ }
12217
+ else {
12218
+ borderTopWidth = 11;
12219
+ addTop = -11;
12220
+ }
12189
12221
  }
12190
12222
  else {
12191
-
12223
+ if ((fromRecordIsParent && !toRecordIsParent)) {
12224
+ borderTopWidth = -11;
12225
+ }
12226
+ else {
12227
+ borderTopWidth = 11;
12228
+ addTop = -11;
12229
+ }
12192
12230
  }
12193
12231
  }
12194
12232
  if (this.parent.currentViewData[data.parentIndex].ganttProperties.isMilestone) {
12195
12233
  if (data.parentIndex > data.childIndex) {
12196
-
12234
+ addTop = -11;
12235
+ borderTopWidth = 12;
12197
12236
  }
12198
12237
  else if (data.type === 'SS' || data.type === 'FF') {
12199
-
12238
+ addTop = -5;
12200
12239
  }
12201
12240
  }
12202
12241
  else if (this.parent.currentViewData[data.childIndex].ganttProperties.isMilestone) {
12203
12242
  if (data.parentIndex > data.childIndex) {
12204
-
12243
+ addTop = 5;
12244
+ borderTopWidth = -10;
12205
12245
  }
12206
- else if (data.type === 'SS' || data.type === 'FF') {
12207
-
12246
+ else if (data.parentIndex < data.childIndex) {
12247
+ if (data.type === 'SS' || data.type === 'FF') {
12248
+ addTop = -10;
12249
+ }
12250
+ }
12251
+ }
12252
+ else {
12253
+ if (data.parentIndex < data.childIndex && fromRecordIsManual && !toRecordIsManual) {
12254
+ addTop = 0;
12255
+ borderTopWidth = -11;
12256
+ }
12257
+ else if (data.childIndex < data.parentIndex && !fromRecordIsManual && toRecordIsManual) {
12258
+ addTop = 0;
12259
+ borderTopWidth = -11;
12208
12260
  }
12209
12261
  }
12210
12262
  }
@@ -12237,127 +12289,110 @@ class ConnectorLine {
12237
12289
  if (this.getParentPosition(data) === 'FSType1') {
12238
12290
  this.taskLineValue = data.milestoneChild ? 1 : 0;
12239
12291
  this.x1 = data.parentEndPoint + (data.milestoneParent ? -1 : (data.milestoneChild ? -1 : 0));
12240
- this.x2 = data.milestoneParent ? ((((data.childLeft - (data.parentEndPoint + 10)) + 1) - 10) + 1) : (((data.childLeft - (data.parentEndPoint + 10))) - 10);
12241
- this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12242
- this.y2 = heightValue + this.taskLineValue;
12243
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12244
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12245
- 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) +
12246
- " L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.y2);
12247
- this.arrowPath = "M " + (this.x1 + this.x2 + 18) + " " + (this.y1 + this.y2 + this.manualChild) +
12248
- " L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +
12249
- " L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12292
+ this.x2 = data.milestoneParent ? ((((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10) + 1) : (((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10);
12293
+ this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue));
12294
+ this.y2 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;
12295
+ this.connectorLinePath = "M " + this.x1 + " " + (this.y1) + " L " + (this.x1 + this.x2) + " " + (this.y1) + " L " + (this.x1 + this.x2) + " " + (this.y1 + this.y2) +
12296
+ " L " + (this.x1 + this.x2 + 12) + " " + (this.y1 + this.y2);
12297
+ this.arrowPath = "M " + (this.x1 + this.x2 + 20) + " " + (this.y1 + this.y2) +
12298
+ " L " + (this.x1 + this.x2 + 12) + " " + (this.y1 + this.y2 - (4 + this.lineStroke)) +
12299
+ " L " + (this.x1 + this.x2 + 12) + " " + (this.y1 + this.y2 + 4) + " Z";
12250
12300
  }
12251
12301
  if (this.getParentPosition(data) === 'FSType2') {
12252
- this.taskLineValue = data.milestoneChild ? 1 : 0;
12253
- this.x1 = data.parentLeft + (data.milestoneChild ? -1 : 0);
12254
- this.x2 = data.parentWidth + (data.milestoneParent ? 1 : 0);
12302
+ this.x1 = data.parentLeft;
12303
+ this.x2 = data.parentWidth + (data.milestoneParent ? -1 : 0);
12255
12304
  this.x3 = this.x2 + (data.milestoneParent ? 11 : 10);
12256
12305
  this.x4 = data.parentWidth - ((data.parentEndPoint - data.childLeft) + 20);
12257
- this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12258
- this.y2 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;
12306
+ this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue));
12307
+ this.y2 = heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke;
12259
12308
  this.y3 = this.getconnectorLineGap(data);
12260
- this.y4 = this.y1 + this.y2 - ((this.y1 + this.y2) % data.rowHeight);
12261
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12262
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12263
- 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 +
12264
- " 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);
12265
- this.arrowPath = "M " + (this.x1 + this.x4 + 18) + " " + (this.y1 + this.y2 + this.y3 + this.manualChild) +
12266
- " L " + (this.x1 + this.x4 + 11) + " " + (this.y1 + this.y2 + this.y3 - (4 + this.lineStroke) + this.manualChild) +
12267
- " L " + (this.x1 + this.x4 + 11) + " " + (this.y1 + this.y2 + this.y3 + 4 + this.lineStroke + this.manualChild) + " Z";
12309
+ this.y4 = (!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (this.y1 + this.y2 - ((this.y1 + this.y2) % data.rowHeight)));
12310
+ this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1) + " " + " L " + (this.x1 + this.x3) + " " + (this.y1) + " L " + (this.x1 + this.x3) + " " + this.y4 +
12311
+ " L " + (this.x1 + this.x4) + " " + this.y4 + " L " + (this.x1 + this.x4) + " " + (this.y1 + this.y2 + this.y3) + " L " + (this.x1 + this.x4 + 12) + " " + (this.y1 + this.y2 + this.y3);
12312
+ this.arrowPath = "M " + (this.x1 + this.x4 + 20) + " " + (this.y1 + this.y2 + this.y3) +
12313
+ " L " + (this.x1 + this.x4 + 12) + " " + (this.y1 + this.y2 + this.y3 - (4 + this.lineStroke)) +
12314
+ " L " + (this.x1 + this.x4 + 12) + " " + (this.y1 + this.y2 + this.y3 + 4 + this.lineStroke) + " Z";
12268
12315
  }
12269
12316
  if (this.getParentPosition(data) === 'FSType3') {
12270
12317
  this.taskLineValue = data.milestoneChild ? 1 : 0;
12271
- this.point1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
12318
+ this.point1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue));
12272
12319
  this.x1 = (data.childLeft + (data.milestoneChild ? -1 : 0) + (data.milestoneParent ? 1 : 0)) - 20;
12273
12320
  this.x2 = (data.parentEndPoint - data.childLeft) + 30;
12274
- this.y1 = this.point1 + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12275
- this.y2 = this.point1 + heightValue - this.getconnectorLineGap(data) + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneChild ? -10 : 0) : 0);
12276
- this.y3 = this.getconnectorLineGap(data) + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12321
+ this.y1 = this.point1 + (this.parent.renderBaseline ? (data.milestoneChild && !(data.milestoneParent) ? 11 : data.milestoneParent && !(data.milestoneChild) ? -12 : 0) : 0);
12322
+ this.y2 = this.point1 + heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke + this.taskLineValue;
12323
+ this.y3 = this.getconnectorLineGap(data);
12277
12324
  this.y4 = this.y2 - (this.y2 % data.rowHeight);
12278
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12279
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12280
- 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 +
12325
+ this.connectorLinePath = "M " + (this.x1 + 12) + " " + (this.y1) + " L " + this.x1 + " " + (this.y1) + " L " + this.x1 + " " + this.y4 +
12281
12326
  " 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);
12282
- this.arrowPath = "M " + (this.x1 + 18) + " " + (this.y1 + this.manualChild) +
12283
- " L " + (this.x1 + 11) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12284
- " L " + (this.x1 + 11) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12327
+ this.arrowPath = "M " + (this.x1 + 20) + " " + (this.y1) +
12328
+ " L " + (this.x1 + 12) + " " + (this.y1 - (4 + this.lineStroke)) +
12329
+ " L " + (this.x1 + 12) + " " + (this.y1 + 4 + this.lineStroke) + " Z";
12285
12330
  }
12286
12331
  if (this.getParentPosition(data) === 'FSType4') {
12287
- this.point1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
12332
+ this.point1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));
12288
12333
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12289
12334
  this.x1 = data.parentEndPoint + (data.milestoneChild ? -1 : 0) + (data.milestoneParent ? 1 : 0);
12290
12335
  this.x2 = data.childLeft - data.parentEndPoint - 20;
12291
- this.y1 = this.point1 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12292
- this.y2 = this.point1 + heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12293
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12294
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12295
- 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 +
12336
+ this.y1 = this.point1 + (data.milestoneChild ? -1 : 0);
12337
+ this.y2 = this.point1 + heightValue + borderTopWidth - this.lineStroke + 1 + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneChild && !(data.milestoneParent) ? -12 : data.milestoneParent && !(data.milestoneChild) ? 11 : 0) : 0);
12338
+ this.connectorLinePath = "M " + (this.x1 + this.x2 + 12) + " " + (this.y1) + " L " + (this.x1 + this.x2) + " " + (this.y1) + " L " + (this.x1 + this.x2) + " " + this.y2 +
12296
12339
  " L " + this.x1 + " " + this.y2;
12297
- this.arrowPath = "M " + (this.x1 + this.x2 + 18) + " " + (this.y1 + this.manualChild) +
12298
- " L " + (this.x1 + this.x2 + 11) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12299
- " L " + (this.x1 + this.x2 + 11) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12340
+ this.arrowPath = "M " + (this.x1 + this.x2 + 20) + " " + (this.y1) +
12341
+ " L " + (this.x1 + this.x2 + 12) + " " + (this.y1 - (4 + this.lineStroke)) +
12342
+ " L " + (this.x1 + this.x2 + 12) + " " + (this.y1 + 4 + this.lineStroke) + " Z";
12300
12343
  }
12301
12344
  if (this.getParentPosition(data) === 'SSType4') {
12302
12345
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12303
- this.point1 = heightValue + this.taskLineValue;
12304
- this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
12305
- this.x1 = data.parentLeft - 8;
12346
+ this.point1 = heightValue + this.taskLineValue + borderTopWidth;
12347
+ this.point2 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));
12348
+ this.x1 = data.parentLeft - 10;
12306
12349
  this.x2 = data.childLeft - data.parentLeft;
12307
- this.y1 = this.point2 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12308
- this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12309
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12310
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12311
- this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) +
12350
+ this.y1 = this.point2 + (data.milestoneChild ? 1 : 0);
12351
+ this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneParent && !(data.milestoneChild) ? 10 : data.milestoneChild && !(data.milestoneParent) ? -13 : 0) : 0);
12352
+ this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1) + " L " + this.x1 + " " + (this.y1) +
12312
12353
  " L " + this.x1 + " " + this.y2 + " L " + (this.x1 + 10) + " " + this.y2;
12313
- this.arrowPath = "M " + (this.x1 + this.x2 + 8) + " " + (this.y1 + this.manualChild) +
12314
- " L " + (this.x1 + this.x2) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12315
- " L " + (this.x1 + this.x2) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12354
+ this.arrowPath = "M " + (this.x1 + this.x2 + 8) + " " + (this.y1) +
12355
+ " L " + (this.x1 + this.x2) + " " + (this.y1 - (4 + this.lineStroke)) +
12356
+ " L " + (this.x1 + this.x2) + " " + (this.y1 + 4 + this.lineStroke) + " Z";
12316
12357
  }
12317
12358
  if (this.getParentPosition(data) === 'SSType3') {
12318
12359
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
12319
- this.point1 = heightValue + this.taskLineValue;
12360
+ this.point1 = heightValue + this.taskLineValue + borderTopWidth - (this.lineStroke - 1);
12320
12361
  this.x1 = data.childLeft - 20;
12321
- 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);
12362
+ this.y1 = (data.milestoneChild ? 1 : 0) + (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));
12322
12363
  this.x2 = data.parentLeft - data.childLeft + 21;
12323
- this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild ? -11 : data.milestoneParent ? 10 : 0) : 0);
12324
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12325
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12326
- this.connectorLinePath = "M " + (this.x1 + 12) + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x1 + " " + (this.y1 + this.manualParent + this.manualChild) +
12364
+ this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild && !(data.milestoneParent) ? -11 : data.milestoneParent && !(data.milestoneChild) ? 10 : 0) : 0);
12365
+ this.connectorLinePath = "M " + (this.x1 + 12) + " " + (this.y1) + " L " + this.x1 + " " + (this.y1) +
12327
12366
  " L " + this.x1 + " " + this.y2 + " L " + (this.x1 + this.x2) + " " + this.y2;
12328
- this.arrowPath = "M " + (this.x1 + 20) + " " + (this.y1 + this.manualChild) +
12329
- " L " + (this.x1 + 12) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12330
- " L " + (this.x1 + 12) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12367
+ this.arrowPath = "M " + (this.x1 + 20) + " " + (this.y1) +
12368
+ " L " + (this.x1 + 12) + " " + (this.y1 - (4 + this.lineStroke)) +
12369
+ " L " + (this.x1 + 12) + " " + (this.y1 + 4 + this.lineStroke) + " Z";
12331
12370
  }
12332
12371
  if (this.getParentPosition(data) === 'SSType2') {
12333
12372
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
12334
- this.point1 = heightValue + this.taskLineValue;
12373
+ this.point1 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;
12335
12374
  this.x1 = setInnerElementLeftSSType2;
12336
12375
  this.x2 = setInnerChildWidthSSType2 + 1;
12337
- this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12376
+ this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1)));
12338
12377
  this.y2 = this.y1 + this.point1;
12339
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12340
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12341
- 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 +
12378
+ this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1) + " L " + this.x1 + " " + (this.y1) + " L " + this.x1 + " " + this.y2 +
12342
12379
  " L " + (this.x1 + setInnerElementWidthSSType2) + " " + this.y2;
12343
- this.arrowPath = "M " + (this.x1 + setInnerElementWidthSSType2 + 8) + " " + (this.y2 + this.manualChild) +
12344
- " L " + (this.x1 + setInnerElementWidthSSType2) + " " + (this.y2 - (4 + this.lineStroke) + this.manualChild) +
12345
- " L " + (this.x1 + setInnerElementWidthSSType2) + " " + (this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12380
+ this.arrowPath = "M " + (this.x1 + setInnerElementWidthSSType2 + 8) + " " + (this.y2) +
12381
+ " L " + (this.x1 + setInnerElementWidthSSType2) + " " + (this.y2 - (4 + this.lineStroke)) +
12382
+ " L " + (this.x1 + setInnerElementWidthSSType2) + " " + (this.y2 + 4 + this.lineStroke) + " Z";
12346
12383
  }
12347
12384
  if (this.getParentPosition(data) === 'SSType1') {
12348
12385
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
12349
- this.point1 = heightValue + this.taskLineValue;
12386
+ this.point1 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;
12350
12387
  this.x1 = data.childLeft - 20;
12351
12388
  this.x2 = data.parentLeft - data.childLeft + 21;
12352
- this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);
12389
+ this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1)));
12353
12390
  this.y2 = this.y1 + this.point1;
12354
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12355
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12356
- 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 +
12391
+ this.connectorLinePath = "M " + (this.x1 + this.x2) + " " + (this.y1) + " L " + this.x1 + " " + (this.y1) + " L " + this.x1 + " " + this.y2 +
12357
12392
  " L " + (this.x1 + 12) + " " + this.y2;
12358
- this.arrowPath = "M " + (this.x1 + 20) + " " + (this.y2 + this.manualChild) +
12359
- " L " + (this.x1 + 12) + " " + (this.y2 - (4 + this.lineStroke) + this.manualChild) +
12360
- " L " + (this.x1 + 12) + " " + (this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12393
+ this.arrowPath = "M " + (this.x1 + 20) + " " + (this.y2) +
12394
+ " L " + (this.x1 + 12) + " " + (this.y2 - (4 + this.lineStroke)) +
12395
+ " L " + (this.x1 + 12) + " " + (this.y2 + 4 + this.lineStroke) + " Z";
12361
12396
  }
12362
12397
  if (this.getParentPosition(data) === 'FFType1') {
12363
12398
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? 1 : 0);
@@ -12365,30 +12400,26 @@ class ConnectorLine {
12365
12400
  this.x2 = data.parentEndPoint + (data.milestoneParent ? -1 : 0);
12366
12401
  this.x3 = data.milestoneParent ? 22 : 21;
12367
12402
  this.x4 = data.milestoneChild ? 4 : 8;
12368
- this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12369
- this.y2 = heightValue + this.taskLineValue;
12370
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12371
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12372
- 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) +
12403
+ this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1)));
12404
+ this.y2 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;
12405
+ this.connectorLinePath = "M " + this.x2 + " " + (this.y1) + " L " + (this.x2 + this.x3) + " " + (this.y1) + " L " + (this.x2 + this.x3) + " " + (this.y1 + this.y2) +
12373
12406
  " L " + (this.x1 + this.x4) + " " + (this.y1 + this.y2);
12374
- this.arrowPath = "M " + this.x1 + " " + (this.y1 + this.y2 + this.manualChild) +
12375
- " L " + (this.x1 + 8) + " " + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +
12376
- " L " + (this.x1 + 8) + " " + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12407
+ this.arrowPath = "M " + this.x1 + " " + (this.y1 + this.y2) +
12408
+ " L " + (this.x1 + 8) + " " + (this.y1 + this.y2 - (4 + this.lineStroke)) +
12409
+ " L " + (this.x1 + 8) + " " + (this.y1 + this.y2 + 4 + this.lineStroke) + " Z";
12377
12410
  }
12378
12411
  if (this.getParentPosition(data) === 'FFType2') {
12379
12412
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? 1 : 0);
12380
12413
  this.x1 = data.parentEndPoint;
12381
12414
  this.x2 = data.childEndPoint + (data.milestoneParent ? 22 : 21);
12382
12415
  this.x3 = data.childEndPoint + (data.milestoneChild ? 9 : 8);
12383
- this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12384
- this.y2 = heightValue + this.taskLineValue;
12385
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12386
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12387
- 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) +
12416
+ this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(data.milestoneParent) - (this.lineStroke - 1)));
12417
+ this.y2 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;
12418
+ this.connectorLinePath = "M " + this.x1 + " " + (this.y1) + " L " + this.x2 + " " + (this.y1) + " L " + this.x2 + " " + (this.y1 + this.y2) +
12388
12419
  " L " + this.x3 + " " + (this.y1 + this.y2);
12389
- this.arrowPath = "M " + (this.x3 - 8) + " " + (this.y1 + this.y2 + this.manualChild) +
12390
- " L " + this.x3 + " " + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +
12391
- " L " + this.x3 + " " + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12420
+ this.arrowPath = "M " + (this.x3 - 8) + " " + (this.y1 + this.y2) +
12421
+ " L " + this.x3 + " " + (this.y1 + this.y2 - (4 + this.lineStroke)) +
12422
+ " L " + this.x3 + " " + (this.y1 + this.y2 + 4 + this.lineStroke) + " Z";
12392
12423
  }
12393
12424
  if (this.getParentPosition(data) === 'FFType3') {
12394
12425
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
@@ -12396,98 +12427,86 @@ class ConnectorLine {
12396
12427
  this.x2 = this.x1 + (data.milestoneChild ? 4 : 8);
12397
12428
  this.x3 = data.parentEndPoint - data.childEndPoint + (data.milestoneChild ? 16 : 10);
12398
12429
  this.x4 = data.parentEndPoint + (data.milestoneParent ? -1 : 0);
12399
- this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12400
- this.y2 = heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12401
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12402
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12403
- 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) +
12430
+ this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));
12431
+ this.y2 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke + (this.parent.renderBaseline ? (data.milestoneParent && !(data.milestoneChild) ? 10 : data.milestoneChild && !(data.milestoneParent) ? -11 : 0) : 0);
12432
+ this.connectorLinePath = "M " + this.x2 + " " + (this.y1) + " L " + (this.x2 + this.x3) + " " + (this.y1) + " L " + (this.x2 + this.x3) + " " + (this.y1 + this.y2) +
12404
12433
  " L " + this.x4 + " " + (this.y1 + this.y2);
12405
- this.arrowPath = "M " + this.x1 + " " + (this.y1 + this.manualChild) +
12406
- " L " + (this.x1 + 8) + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12407
- " L " + (this.x1 + 8) + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12434
+ this.arrowPath = "M " + this.x1 + " " + (this.y1) +
12435
+ " L " + (this.x1 + 8) + " " + (this.y1 - (4 + this.lineStroke)) +
12436
+ " L " + (this.x1 + 8) + " " + (this.y1 + 4 + this.lineStroke) + " Z";
12408
12437
  }
12409
12438
  if (this.getParentPosition(data) === 'FFType4') {
12410
12439
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12411
12440
  this.x1 = data.parentEndPoint;
12412
12441
  this.x2 = data.childEndPoint + (data.milestoneChild ? 7 : 8);
12413
12442
  this.x3 = this.x2 + (data.milestoneChild ? 12 : 11);
12414
- this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12415
- this.y2 = heightValue + this.taskLineValue + +(this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12416
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12417
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12418
- 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) +
12443
+ this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));
12444
+ this.y2 = heightValue + this.taskLineValue + borderTopWidth + (this.parent.renderBaseline ? (data.milestoneParent && !(data.milestoneChild) ? 10 : data.milestoneChild && !(data.milestoneParent) ? -12 : 0) : 0) - this.lineStroke + 1;
12445
+ this.connectorLinePath = "M " + this.x2 + " " + (this.y1) + " L " + this.x3 + " " + (this.y1) + " L " + this.x3 + " " + (this.y1 + this.y2) +
12419
12446
  " L " + this.x1 + " " + (this.y1 + this.y2);
12420
- this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1 + this.manualChild) +
12421
- " L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12422
- " L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12447
+ this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1) +
12448
+ " L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke)) +
12449
+ " L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke) + " Z";
12423
12450
  }
12424
12451
  if (this.getParentPosition(data) === 'SFType4') {
12425
12452
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? -1 : 0);
12426
- this.point1 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;
12427
- this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
12453
+ this.point1 = (this.taskLineValue + heightValue + borderTopWidth - this.getconnectorLineGap(data) - (this.lineStroke - 1));
12454
+ this.point2 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue));
12428
12455
  this.x1 = data.parentLeft - 10;
12429
12456
  this.x2 = this.x1 + ((data.childEndPoint - data.parentLeft) + 18);
12430
12457
  this.x3 = this.x2 + (data.milestoneChild ? 16 : 11);
12431
- this.y1 = this.point2 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12432
- this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild ? -11 : 0) : 0);
12433
- this.y3 = this.getconnectorLineGap(data) + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12458
+ this.y1 = this.point2 + (data.milestoneChild ? 2 : 0) + (this.parent.renderBaseline ? (data.milestoneParent ? -5 : 0) : 0);
12459
+ this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild && !(data.milestoneParent) ? -9 : data.milestoneParent && !(data.milestoneChild) ? 9 : 0) : 0);
12460
+ this.y3 = this.getconnectorLineGap(data);
12434
12461
  this.y4 = this.y2 - (this.y2 % data.rowHeight);
12435
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12436
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12437
- 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 +
12462
+ this.connectorLinePath = "M " + this.x2 + " " + (this.y1) + " L " + this.x3 + " " + (this.y1) + " L " + this.x3 + " " + this.y4 + " L " + this.x1 + " " + this.y4 +
12438
12463
  " L " + this.x1 + " " + (this.y2 + this.y3) + " L " + (this.x1 + 11) + " " + (this.y2 + this.y3);
12439
- this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1 + this.manualChild) +
12440
- " L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12441
- " L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12464
+ this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1) +
12465
+ " L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke)) +
12466
+ " L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke) + " Z";
12442
12467
  }
12443
12468
  if (this.getParentPosition(data) === 'SFType3') {
12444
12469
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12445
- this.point1 = (data.parentLeft - (data.childEndPoint + (data.milestoneParent ? 25 : 20))) + 1 + (this.parent.renderBaseline ? (data.milestoneParent ? 5 : 0) : 0);
12446
- this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));
12470
+ this.point1 = (data.parentLeft - (data.childEndPoint + (data.milestoneParent ? 23 : 20))) + 1;
12471
+ this.point2 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));
12447
12472
  this.x1 = data.childEndPoint;
12448
12473
  this.x2 = this.x1 + (data.milestoneChild ? 9 : 8);
12449
12474
  this.x3 = this.x2 + (data.milestoneChild ? 17 : 11);
12450
- this.y1 = this.point2 + ((data.isManualParent && data.isManualChild) ? -10 : 0);
12451
- this.y2 = this.y1 + heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);
12452
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12453
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12454
- this.connectorLinePath = "M " + this.x2 + " " + (this.y1 + this.manualParent + this.manualChild) + " L " + this.x3 + " " + (this.y1 + this.manualParent + this.manualChild) +
12475
+ this.y1 = this.point2;
12476
+ this.y2 = this.y1 + heightValue + borderTopWidth - (this.lineStroke - 1) + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneChild && !(data.milestoneParent) ? -12 : data.milestoneParent && !(data.milestoneChild) ? 10 : 0) : 0);
12477
+ this.connectorLinePath = "M " + this.x2 + " " + (this.y1) + " L " + this.x3 + " " + (this.y1) +
12455
12478
  " L " + this.x3 + " " + this.y2 + " L " + (this.x3 + this.point1) + " " + this.y2;
12456
- this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1 + this.manualChild) +
12457
- " L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke) + this.manualChild) +
12458
- " L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke + this.manualChild) + " Z";
12479
+ this.arrowPath = "M " + (this.x2 - 8) + " " + (this.y1) +
12480
+ " L " + this.x2 + " " + (this.y1 - (4 + this.lineStroke)) +
12481
+ " L " + this.x2 + " " + (this.y1 + 4 + this.lineStroke) + " Z";
12459
12482
  }
12460
12483
  if (this.getParentPosition(data) === 'SFType1') {
12461
12484
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;
12462
- this.point1 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;
12485
+ this.point1 = heightValue + borderTopWidth - this.getconnectorLineGap(data) + this.taskLineValue - this.lineStroke;
12463
12486
  this.point2 = this.getconnectorLineGap(data);
12464
12487
  this.x1 = data.parentLeft - 10;
12465
- this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);
12488
+ this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue));
12466
12489
  this.x2 = (data.childEndPoint - data.parentLeft) + 31;
12467
12490
  this.y2 = this.y1 + this.point1;
12468
12491
  this.x3 = (data.childEndPoint - data.parentLeft) + 18;
12469
12492
  this.y3 = this.y2 - (this.y2 % data.rowHeight);
12470
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12471
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12472
- 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 +
12493
+ this.connectorLinePath = "M " + (this.x1 + 11) + " " + (this.y1) + " L " + this.x1 + " " + (this.y1) + " L " + this.x1 + " " + this.y3 +
12473
12494
  " 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);
12474
- this.arrowPath = "M " + (this.x1 + this.x3 - 8) + " " + (this.y2 + this.point2 + this.manualChild) +
12475
- " L " + (this.x1 + this.x3) + " " + (this.y2 + this.point2 - (4 + this.lineStroke) + this.manualChild) +
12476
- " L " + (this.x1 + this.x3) + " " + (this.y2 + this.point2 + 4 + this.lineStroke + this.manualChild) + " Z";
12495
+ this.arrowPath = "M " + (this.x1 + this.x3 - 8) + " " + (this.y2 + this.point2) +
12496
+ " L " + (this.x1 + this.x3) + " " + (this.y2 + this.point2 - (4 + this.lineStroke)) +
12497
+ " L " + (this.x1 + this.x3) + " " + (this.y2 + this.point2 + 4 + this.lineStroke) + " Z";
12477
12498
  }
12478
12499
  if (this.getParentPosition(data) === 'SFType2') {
12479
12500
  this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;
12480
12501
  this.x1 = data.childEndPoint;
12481
- this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);
12502
+ this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1)));
12482
12503
  this.x2 = (data.parentLeft - data.childEndPoint);
12483
- this.y2 = this.y1 + heightValue + this.taskLineValue;
12484
- this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);
12485
- this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);
12486
- 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) +
12504
+ this.y2 = this.y1 + heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;
12505
+ this.connectorLinePath = "M " + (this.x1 + this.x2 + 1) + " " + (this.y1) + " L " + (this.x1 + this.x2 - 10) + " " + (this.y1) +
12487
12506
  " L " + (this.x1 + this.x2 - 10) + " " + this.y2 + " L " + (this.x1 + 8) + " " + this.y2;
12488
- this.arrowPath = "M " + this.x1 + " " + (this.y2 + this.manualChild) +
12489
- " L " + (this.x1 + 8) + " " + (this.y2 - (4 + this.lineStroke) + this.manualChild) +
12490
- " L " + (this.x1 + 8) + " " + (this.y2 + 4 + this.lineStroke + this.manualChild) + " Z";
12507
+ this.arrowPath = "M " + this.x1 + " " + (this.y2) +
12508
+ " L " + (this.x1 + 8) + " " + (this.y2 - (4 + this.lineStroke)) +
12509
+ " L " + (this.x1 + 8) + " " + (this.y2 + 4 + this.lineStroke) + " Z";
12491
12510
  }
12492
12511
  this.connectorPath.setAttribute("d", this.connectorLinePath);
12493
12512
  this.arrowlinePath.setAttribute("d", this.arrowPath);
@@ -19312,7 +19331,16 @@ class TaskbarEdit extends DateProcessor {
19312
19331
  }
19313
19332
  else {
19314
19333
  if (this.mouseMoveX < (item.left + segment.left)) {
19315
- segment.width = this.parent.perDayWidth;
19334
+ var segmentWidth = (this.parent.timelineModule.isSingleTier &&
19335
+ (this.parent.timelineModule.customTimelineSettings.bottomTier.unit === "Hour" ||
19336
+ this.parent.timelineModule.customTimelineSettings.topTier.unit === "Hour" ||
19337
+ this.parent.timelineModule.customTimelineSettings.bottomTier.unit === "Minutes" ||
19338
+ this.parent.timelineModule.customTimelineSettings.topTier.unit === "Minutes")) ||
19339
+ (this.parent.timelineModule.customTimelineSettings.bottomTier.unit === "Hour" ||
19340
+ this.parent.timelineModule.customTimelineSettings.bottomTier.unit === "Minutes") ?
19341
+ this.parent.timelineModule.customTimelineSettings.timelineUnitSize :
19342
+ this.parent.perDayWidth;
19343
+ segment.width = segmentWidth;
19316
19344
  }
19317
19345
  }
19318
19346
  }
@@ -26611,7 +26639,7 @@ class Edit$2 {
26611
26639
  /* tslint:disable-next-line */
26612
26640
  const query = this.parent.query instanceof Query ? this.parent.query : new Query();
26613
26641
  const adaptor = data.adaptor;
26614
- if (!(adaptor instanceof WebApiAdaptor && adaptor instanceof ODataAdaptor) || data.dataSource.batchUrl) {
26642
+ if (!(adaptor instanceof WebApiAdaptor && adaptor instanceof ODataAdaptor && adaptor instanceof ODataV4Adaptor) || data.dataSource.batchUrl) {
26615
26643
  /* tslint:disable-next-line */
26616
26644
  const crud = data.saveChanges(updatedData, this.parent.taskFields.id, null, query);
26617
26645
  crud.then((e) => {
@@ -26746,6 +26774,9 @@ class Edit$2 {
26746
26774
  else if (ganttColumns[i].field === 'taskType') {
26747
26775
  tempRecord[fieldName] = this.parent.taskType;
26748
26776
  }
26777
+ else if (ganttColumns[i].field === taskSettingsFields.milestone) {
26778
+ tempRecord[fieldName] = null;
26779
+ }
26749
26780
  else {
26750
26781
  tempRecord[this.parent.ganttColumns[i].field] = '';
26751
26782
  }
@@ -30124,7 +30155,7 @@ class CriticalPath {
30124
30155
  }
30125
30156
  const predecessorLength = flatRecords[index].ganttProperties.predecessor;
30126
30157
  const noSlackValue = 0 + ' ' + flatRecords[index].ganttProperties.durationUnit;
30127
- for (let i = 0; i < predecessorLength.length; i++) {
30158
+ for (let i = predecessorLength.length - 1; i >= 0; i--) {
30128
30159
  let toID;
30129
30160
  if (this.parent.viewType === 'ProjectView') {
30130
30161
  toID = this.parent.ids.indexOf(predecessorLength[i].to);
@@ -30135,8 +30166,19 @@ class CriticalPath {
30135
30166
  let dateDifference;
30136
30167
  const currentData = flatRecords[index].ganttProperties;
30137
30168
  if (predecessorLength[i].type === 'FS') {
30138
- /* eslint-disable-next-line */
30139
- dateDifference = this.parent.dataOperation.getDuration(currentData.endDate, flatRecords[toID].ganttProperties.startDate, currentData.durationUnit, currentData.isAutoSchedule, currentData.isMilestone);
30169
+ if (predecessorLength[i].to != currentData.taskId.toString() || this.parent.viewType === 'ResourceView') {
30170
+ /* eslint-disable-next-line */
30171
+ dateDifference = this.parent.dataOperation.getDuration(currentData.endDate, flatRecords[toID].ganttProperties.startDate, currentData.durationUnit, currentData.isAutoSchedule, currentData.isMilestone);
30172
+ }
30173
+ else {
30174
+ toID = this.parent.ids.indexOf(predecessorLength[i].from);
30175
+ /* eslint-disable-next-line */
30176
+ dateDifference = this.parent.dataOperation.getDuration(flatRecords[toID].ganttProperties.endDate, currentData.startDate, currentData.durationUnit, currentData.isAutoSchedule, currentData.isMilestone);
30177
+ if (dateDifference === 0 && index !== toID && flatRecords[index].slack == noSlackValue) {
30178
+ flatRecords[toID].slack = flatRecords[index].slack;
30179
+ flatRecords[toID].ganttProperties.slack = flatRecords[index].slack;
30180
+ }
30181
+ }
30140
30182
  if (dateDifference === 0 && index !== toID && flatRecords[index].slack !== noSlackValue) {
30141
30183
  flatRecords[index].slack = flatRecords[toID].slack;
30142
30184
  flatRecords[index].ganttProperties.slack = flatRecords[toID].slack;