@syncfusion/ej2-gantt 20.3.61 → 20.4.40

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 (107) hide show
  1. package/.eslintrc.json +16 -1
  2. package/CHANGELOG.md +19 -0
  3. package/README.md +64 -52
  4. package/dist/ej2-gantt.min.js +2 -2
  5. package/dist/ej2-gantt.umd.min.js +2 -2
  6. package/dist/ej2-gantt.umd.min.js.map +1 -1
  7. package/dist/es6/ej2-gantt.es2015.js +1522 -511
  8. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  9. package/dist/es6/ej2-gantt.es5.js +1548 -519
  10. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  11. package/dist/global/ej2-gantt.min.js +2 -2
  12. package/dist/global/ej2-gantt.min.js.map +1 -1
  13. package/dist/global/index.d.ts +1 -1
  14. package/package.json +21 -23
  15. package/src/gantt/actions/chart-scroll.d.ts +5 -1
  16. package/src/gantt/actions/chart-scroll.js +39 -1
  17. package/src/gantt/actions/connector-line-edit.js +2 -0
  18. package/src/gantt/actions/context-menu.js +36 -5
  19. package/src/gantt/actions/critical-path.d.ts +2 -2
  20. package/src/gantt/actions/critical-path.js +23 -16
  21. package/src/gantt/actions/dependency.js +5 -2
  22. package/src/gantt/actions/dialog-edit.js +37 -14
  23. package/src/gantt/actions/edit.d.ts +1 -0
  24. package/src/gantt/actions/edit.js +156 -34
  25. package/src/gantt/actions/excel-export.js +13 -0
  26. package/src/gantt/actions/filter.js +3 -0
  27. package/src/gantt/actions/keyboard.js +1 -0
  28. package/src/gantt/actions/pdf-export.js +12 -0
  29. package/src/gantt/actions/rowdragdrop.js +8 -2
  30. package/src/gantt/actions/taskbar-edit.js +140 -43
  31. package/src/gantt/actions/toolbar.js +21 -1
  32. package/src/gantt/base/date-processor.js +1 -1
  33. package/src/gantt/base/gantt-chart.js +31 -3
  34. package/src/gantt/base/gantt-model.d.ts +25 -2
  35. package/src/gantt/base/gantt.d.ts +64 -21
  36. package/src/gantt/base/gantt.js +405 -29
  37. package/src/gantt/base/interface.d.ts +0 -4
  38. package/src/gantt/base/splitter.js +12 -2
  39. package/src/gantt/base/task-processor.js +21 -6
  40. package/src/gantt/base/tree-grid.js +37 -0
  41. package/src/gantt/base/utils.js +1 -0
  42. package/src/gantt/export/pdf-connector-line.js +185 -187
  43. package/src/gantt/models/loading-indicator-model.d.ts +20 -0
  44. package/src/gantt/models/loading-indicator.d.ts +18 -0
  45. package/src/gantt/models/loading-indicator.js +34 -0
  46. package/src/gantt/models/models.d.ts +2 -0
  47. package/src/gantt/models/models.js +1 -0
  48. package/src/gantt/renderer/chart-rows.js +153 -56
  49. package/src/gantt/renderer/connector-line.js +100 -97
  50. package/src/gantt/renderer/edit-tooltip.js +22 -3
  51. package/src/gantt/renderer/event-marker.js +15 -2
  52. package/src/gantt/renderer/nonworking-day.js +4 -2
  53. package/src/gantt/renderer/timeline.js +22 -2
  54. package/src/gantt/renderer/tooltip.js +1 -0
  55. package/styles/bootstrap-dark.css +179 -12
  56. package/styles/bootstrap.css +179 -12
  57. package/styles/bootstrap4.css +179 -11
  58. package/styles/bootstrap5-dark.css +178 -10
  59. package/styles/bootstrap5.css +178 -10
  60. package/styles/fabric-dark.css +179 -12
  61. package/styles/fabric.css +179 -12
  62. package/styles/fluent-dark.css +180 -10
  63. package/styles/fluent.css +180 -10
  64. package/styles/gantt/_bootstrap-dark-definition.scss +6 -2
  65. package/styles/gantt/_bootstrap-definition.scss +6 -3
  66. package/styles/gantt/_bootstrap4-definition.scss +6 -3
  67. package/styles/gantt/_bootstrap5-definition.scss +6 -3
  68. package/styles/gantt/_fabric-dark-definition.scss +6 -3
  69. package/styles/gantt/_fabric-definition.scss +6 -3
  70. package/styles/gantt/_fluent-definition.scss +6 -3
  71. package/styles/gantt/_fusionnew-definition.scss +6 -3
  72. package/styles/gantt/_highcontrast-definition.scss +7 -4
  73. package/styles/gantt/_highcontrast-light-definition.scss +6 -3
  74. package/styles/gantt/_layout.scss +234 -21
  75. package/styles/gantt/_material-dark-definition.scss +6 -3
  76. package/styles/gantt/_material-definition.scss +6 -3
  77. package/styles/gantt/_material3-definition.scss +6 -3
  78. package/styles/gantt/_tailwind-definition.scss +6 -3
  79. package/styles/gantt/_theme.scss +17 -8
  80. package/styles/gantt/bootstrap-dark.css +179 -12
  81. package/styles/gantt/bootstrap.css +179 -12
  82. package/styles/gantt/bootstrap4.css +179 -11
  83. package/styles/gantt/bootstrap5-dark.css +178 -10
  84. package/styles/gantt/bootstrap5.css +178 -10
  85. package/styles/gantt/fabric-dark.css +179 -12
  86. package/styles/gantt/fabric.css +179 -12
  87. package/styles/gantt/fluent-dark.css +180 -10
  88. package/styles/gantt/fluent.css +180 -10
  89. package/styles/gantt/highcontrast-light.css +178 -10
  90. package/styles/gantt/highcontrast.css +179 -12
  91. package/styles/gantt/icons/_bootstrap-dark.scss +1 -1
  92. package/styles/gantt/icons/_bootstrap.scss +1 -1
  93. package/styles/gantt/icons/_fabric-dark.scss +1 -1
  94. package/styles/gantt/icons/_fabric.scss +1 -1
  95. package/styles/gantt/icons/_highcontrast.scss +1 -1
  96. package/styles/gantt/icons/_material-dark.scss +1 -1
  97. package/styles/gantt/icons/_material.scss +1 -1
  98. package/styles/gantt/material-dark.css +177 -12
  99. package/styles/gantt/material.css +179 -12
  100. package/styles/gantt/tailwind-dark.css +178 -10
  101. package/styles/gantt/tailwind.css +178 -10
  102. package/styles/highcontrast-light.css +178 -10
  103. package/styles/highcontrast.css +179 -12
  104. package/styles/material-dark.css +177 -12
  105. package/styles/material.css +179 -12
  106. package/styles/tailwind-dark.css +178 -10
  107. package/styles/tailwind.css +178 -10
@@ -149,6 +149,7 @@ function updateDates(record, parent) {
149
149
  function formatString(str, args) {
150
150
  let regx;
151
151
  for (let i = 0; i < args.length; i++) {
152
+ // eslint-disable-next-line detect-non-literal-regexp
152
153
  regx = new RegExp('\\{' + (i) + '\\}', 'gm');
153
154
  str = str.replace(regx, args[i].toString());
154
155
  }
@@ -487,7 +488,7 @@ class DateProcessor {
487
488
  tDuration = this.parent.editModule.taskbarEditModule.sumOfDuration(ganttProperties.segments);
488
489
  }
489
490
  else {
490
- if (!isNullOrUndefined(ganttProperties.startDate) && !isNullOrUndefined(ganttProperties.endDate) &&
491
+ if ((!isNullOrUndefined(this.parent.taskFields.milestone)) && (!isNullOrUndefined(ganttProperties.startDate)) && !isNullOrUndefined(ganttProperties.endDate) &&
491
492
  (ganttProperties.startDate).getTime() === (ganttProperties.endDate).getTime() && !isNullOrUndefined(ganttData.taskData[this.parent.taskFields.milestone])) {
492
493
  tDuration = 1;
493
494
  }
@@ -1850,7 +1851,6 @@ class TaskProcessor extends DateProcessor {
1850
1851
  this.parent.setRecordValue('parentId', data[taskSettings.parentID], ganttProperties, true);
1851
1852
  }
1852
1853
  this.addCustomFieldValue(data, ganttData);
1853
- ganttData.checkboxState = 'uncheck';
1854
1854
  this.parent.setRecordValue('isAutoSchedule', autoSchedule, ganttProperties, true);
1855
1855
  this.parent.setRecordValue('resourceInfo', this.setResourceInfo(data), ganttProperties, true);
1856
1856
  this.parent.setRecordValue('isMilestone', false, ganttProperties, true);
@@ -2041,8 +2041,10 @@ class TaskProcessor extends DateProcessor {
2041
2041
  taskData.push(this.setSegmentTaskData(segment, segments[i]));
2042
2042
  }
2043
2043
  this.parent.setRecordValue('duration', sumOfDuration, data.ganttProperties, true);
2044
- this.parent.setRecordValue('endDate', ganttSegments[ganttSegments.length - 1].endDate, data.ganttProperties, true);
2045
- if (!isNullOrUndefined(taskSettings.endDate)) {
2044
+ if (!isNullOrUndefined(ganttSegments[ganttSegments.length - 1])) {
2045
+ this.parent.setRecordValue('endDate', ganttSegments[ganttSegments.length - 1].endDate, data.ganttProperties, true);
2046
+ }
2047
+ if (!isNullOrUndefined(taskSettings.endDate) && !isNullOrUndefined(ganttSegments[ganttSegments.length - 1])) {
2046
2048
  this.parent.setRecordValue(this.parent.taskFields.endDate, ganttSegments[ganttSegments.length - 1].endDate, data, true);
2047
2049
  }
2048
2050
  this.parent.setRecordValue('taskData.' + this.parent.taskFields.segments, taskData, data);
@@ -2539,7 +2541,7 @@ class TaskProcessor extends DateProcessor {
2539
2541
  }
2540
2542
  else if (endDate) {
2541
2543
  sDate = new Date(endDate.getTime());
2542
- milestone = true;
2544
+ milestone = isNullOrUndefined(startDate) && this.parent.allowUnscheduledTasks ? false : true;
2543
2545
  }
2544
2546
  else {
2545
2547
  sDate = this.getValidStartDate(ganttProp);
@@ -2662,6 +2664,9 @@ class TaskProcessor extends DateProcessor {
2662
2664
  else if (isMilestone && this.getSecondsInDecimal(date) === this.parent.defaultEndTime) {
2663
2665
  date.setHours(24);
2664
2666
  }
2667
+ else if (this.getSecondsInDecimal(date) === this.parent.defaultEndTime && this.parent.allowUnscheduledTasks) {
2668
+ date.setHours(22);
2669
+ }
2665
2670
  }
2666
2671
  const timelineStartDate = this.parent.timelineModule.timelineStartDate;
2667
2672
  if (timelineStartDate) {
@@ -3635,7 +3640,12 @@ class TaskProcessor extends DateProcessor {
3635
3640
  durationInDay = (childGanttRecord.ganttProperties.duration / (this.parent.secondsPerDay / 60));
3636
3641
  break;
3637
3642
  default:
3638
- durationInDay = childGanttRecord.ganttProperties.duration;
3643
+ if (childGanttRecord.ganttProperties.duration < 1) {
3644
+ durationInDay = (childGanttRecord.ganttProperties.duration / (this.parent.secondsPerDay / 3600));
3645
+ }
3646
+ else {
3647
+ durationInDay = childGanttRecord.ganttProperties.duration;
3648
+ }
3639
3649
  }
3640
3650
  if (childGanttRecord.hasChildRecords) {
3641
3651
  setValue('totalProgress', childGanttRecord.ganttProperties.totalProgress, progressValues);
@@ -3712,7 +3722,13 @@ class TaskProcessor extends DateProcessor {
3712
3722
  if (!childData.ganttProperties.isMilestone && isScheduledTask(childData.ganttProperties)) {
3713
3723
  progressValues = this.getParentProgress(childData);
3714
3724
  totalProgress += getValue('totalProgress', progressValues);
3715
- totalDuration += getValue('totalDuration', progressValues);
3725
+ if (childData[this.parent.taskFields.duration] < 1) {
3726
+ totalDuration += getValue('totalDuration', progressValues);
3727
+ totalDuration = Number(totalDuration.toFixed(4));
3728
+ }
3729
+ else {
3730
+ totalDuration += getValue('totalDuration', progressValues);
3731
+ }
3716
3732
  }
3717
3733
  else {
3718
3734
  milestoneCount++;
@@ -3959,6 +3975,8 @@ class ChartScroll {
3959
3975
  addEventListeners() {
3960
3976
  this.parent.on('grid-scroll', this.gridScrollHandler, this);
3961
3977
  EventHandler.add(this.element, 'scroll', this.onScroll, this);
3978
+ this.parent.treeGrid.grid.on('showGanttShimmer', this.updateShimmer, this);
3979
+ this.parent.treeGrid.grid.on('removeGanttShimmer', this.removeShimmer, this);
3962
3980
  }
3963
3981
  /**
3964
3982
  * Unbind events
@@ -3968,6 +3986,8 @@ class ChartScroll {
3968
3986
  removeEventListeners() {
3969
3987
  EventHandler.remove(this.element, 'scroll', this.onScroll);
3970
3988
  this.parent.off('grid-scroll', this.gridScrollHandler);
3989
+ this.parent.treeGrid.grid.off('showGanttShimmer', this.updateShimmer);
3990
+ this.parent.treeGrid.grid.off('removeGanttShimmer', this.removeShimmer);
3971
3991
  }
3972
3992
  /**
3973
3993
  *
@@ -4013,6 +4033,27 @@ class ChartScroll {
4013
4033
  this.parent.chartVerticalLineContainer.style.top = formatUnit(scrollTop);
4014
4034
  }
4015
4035
  }
4036
+ removeShimmer() {
4037
+ let parent = this.parent;
4038
+ setTimeout(function () {
4039
+ parent.hideMaskRow();
4040
+ }, 0);
4041
+ }
4042
+ ;
4043
+ updateShimmer() {
4044
+ let parent = this.parent;
4045
+ setTimeout(function () {
4046
+ parent.showMaskRow();
4047
+ }, 0);
4048
+ }
4049
+ updateSpinner() {
4050
+ let parent = this.parent;
4051
+ this.parent.showSpinner();
4052
+ window.clearTimeout(this.isScrolling);
4053
+ this.isScrolling = setTimeout(function () {
4054
+ parent.hideSpinner();
4055
+ }, 200);
4056
+ }
4016
4057
  /**
4017
4058
  * Scroll event handler
4018
4059
  *
@@ -4038,6 +4079,16 @@ class ChartScroll {
4038
4079
  scrollArgs.scrollDirection = 'Horizontal';
4039
4080
  scrollArgs.action = 'HorizontalScroll';
4040
4081
  }
4082
+ if ((scrollArgs.scrollDirection != 'Horizontal' && !isNullOrUndefined(scrollArgs.scrollDirection)) && this.parent.enableVirtualization === true && (this.parent.isToolBarClick
4083
+ || isNullOrUndefined(this.parent.isToolBarClick))) {
4084
+ this.parent.isVirtualScroll = true;
4085
+ if (this.parent.showIndicator || isNullOrUndefined(this.parent.showIndicator)) {
4086
+ if (!this.parent.enableVirtualMaskRow && this.parent.enableVirtualization && this.parent.loadingIndicator.indicatorType === "Spinner") {
4087
+ this.updateSpinner();
4088
+ }
4089
+ }
4090
+ }
4091
+ this.parent.isToolBarClick = true;
4041
4092
  scrollArgs.requestType = 'scroll';
4042
4093
  this.parent.trigger('actionComplete', scrollArgs);
4043
4094
  }
@@ -4078,7 +4129,10 @@ class ChartScroll {
4078
4129
  * @param {number} scrollLeft - To set scroll left for scroll container
4079
4130
  * @returns {void} .
4080
4131
  */
4081
- setScrollLeft(scrollLeft) {
4132
+ setScrollLeft(scrollLeft, leftSign) {
4133
+ if (leftSign) {
4134
+ scrollLeft = leftSign == -1 && this.parent.enableRtl ? -scrollLeft : scrollLeft;
4135
+ }
4082
4136
  this.element.scrollLeft = scrollLeft;
4083
4137
  this.parent.ganttChartModule.chartTimelineContainer.scrollLeft = this.element.scrollLeft;
4084
4138
  this.previousScroll.left = this.element.scrollLeft;
@@ -4225,6 +4279,21 @@ class GanttChart {
4225
4279
  this.parent.predecessorModule.createConnectorLinesCollection();
4226
4280
  }
4227
4281
  this.parent.connectorLineModule.renderConnectorLines(this.parent.updatedConnectorLineCollection);
4282
+ for (let i = 0; i < this.parent.chartRowsModule.ganttChartTableBody.children.length; i++) {
4283
+ if (this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[4]) {
4284
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[1].setAttribute('tabindex', '-1');
4285
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[2].setAttribute('tabindex', '-1');
4286
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[4].setAttribute('tabindex', '-1');
4287
+ }
4288
+ else {
4289
+ if (this.parent.viewType === 'ProjectView') {
4290
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[1].setAttribute('tabindex', '-1');
4291
+ }
4292
+ else if (this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[0]) {
4293
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[0].setAttribute('tabindex', '-1');
4294
+ }
4295
+ }
4296
+ }
4228
4297
  if (this.parent.enableCriticalPath) {
4229
4298
  let crtiticalModule = this.parent.criticalPathModule;
4230
4299
  this.parent.criticalPathModule.criticalConnectorLine(crtiticalModule.criticalPathCollection, crtiticalModule.detailPredecessorCollection, this.parent.enableCriticalPath, crtiticalModule.predecessorCollectionTaskIds);
@@ -4288,13 +4357,15 @@ class GanttChart {
4288
4357
  for (let i = 0; i < rangeCollection.length; i++) {
4289
4358
  const height = this.getRangeHeight(currentRecord);
4290
4359
  const leftDiv = createElement('div', {
4291
- className: rangeChildContainer + ' ' + 'e-leftarc', styles: `left:${rangeCollection[i].left}px;
4360
+ className: rangeChildContainer + ' ' + 'e-leftarc', styles: (this.parent.enableRtl ? 'right:' : 'left:') +
4361
+ `${(this.parent.enableRtl ? rangeCollection[i].left + rangeCollection[i].width - 5 : rangeCollection[i].left)}px;
4292
4362
  top: ${Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2)}px;
4293
4363
  height: ${height + 1}px; border-right: 0px`
4294
4364
  });
4295
4365
  const rightDiv = createElement('div', {
4296
4366
  className: rangeChildContainer + ' ' + 'e-rightarc',
4297
- styles: `left:${rangeCollection[i].left + rangeCollection[i].width - 5}px;
4367
+ styles: (this.parent.enableRtl ? 'right:' : 'left:') + `${(this.parent.enableRtl ? rangeCollection[i].left :
4368
+ rangeCollection[i].left + rangeCollection[i].width - 5)}px;
4298
4369
  top: ${Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2)}px; height: ${height + 1}px;
4299
4370
  border-left: 0px`
4300
4371
  });
@@ -4311,6 +4382,10 @@ class GanttChart {
4311
4382
  renderTimelineContainer() {
4312
4383
  this.chartTimelineContainer =
4313
4384
  createElement('div', { className: timelineHeaderContainer });
4385
+ if (this.parent.enableRtl) {
4386
+ this.chartTimelineContainer.style.borderLeftWidth = '1px';
4387
+ this.chartTimelineContainer.style.borderRightWidth = '0px';
4388
+ }
4314
4389
  this.chartTimelineContainer.setAttribute("role", "presentation");
4315
4390
  this.chartElement.appendChild(this.chartTimelineContainer);
4316
4391
  }
@@ -4483,7 +4558,7 @@ class GanttChart {
4483
4558
  scrollLeft = this.scrollElement.scrollWidth <= scrollLeft ? this.scrollElement.scrollWidth : scrollLeft;
4484
4559
  if ((this.scrollElement.offsetWidth + this.parent.ganttChartModule.scrollElement.scrollLeft) < scrollLeft
4485
4560
  || (this.scrollElement.scrollLeft > scrollLeft)) {
4486
- this.scrollObject.setScrollLeft(scrollLeft - 50);
4561
+ this.scrollObject.setScrollLeft(scrollLeft - 50, this.parent.enableRtl ? -1 : 0);
4487
4562
  }
4488
4563
  // this.parent.ganttChartModule.scrollObject.updateLeftPosition();
4489
4564
  }
@@ -4541,6 +4616,13 @@ class GanttChart {
4541
4616
  }
4542
4617
  this.parent.notify('chartMouseUp', e);
4543
4618
  if (this.parent.showActiveElement) {
4619
+ this.parent.showIndicator = true;
4620
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
4621
+ this.parent.hideMaskRow();
4622
+ }
4623
+ else {
4624
+ this.parent.hideSpinner();
4625
+ }
4544
4626
  if (this.focusedElement && !e.target.classList.contains('e-split-bar')) {
4545
4627
  this.focusedElement.tabIndex = this.focusedElement.tabIndex === 0 ? -1 : this.focusedElement.tabIndex;
4546
4628
  removeClass([this.focusedElement], 'e-active-container');
@@ -4787,7 +4869,7 @@ class GanttChart {
4787
4869
  this.parent.predecessorModule.createConnectorLinesCollection();
4788
4870
  this.parent.connectorLineModule.renderConnectorLines(this.parent.updatedConnectorLineCollection);
4789
4871
  if (this.parent.enableCriticalPath && this.parent.criticalPathModule) {
4790
- let criticalModule = this.parent.criticalPathModule;
4872
+ const criticalModule = this.parent.criticalPathModule;
4791
4873
  criticalModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);
4792
4874
  }
4793
4875
  }
@@ -5447,7 +5529,7 @@ class Timeline {
5447
5529
  this.totalTimelineWidth = 0;
5448
5530
  this.customTimelineSettings = null;
5449
5531
  this.parent.isTimelineRoundOff = this.isZoomToFit ? false : isNullOrUndefined(this.parent.projectStartDate) ? true : false;
5450
- if (this.parent.enablePersistence) {
5532
+ if (this.parent.enablePersistence && this.parent.isLoad) {
5451
5533
  this.parent.timelineSettings = this.parent.currentZoomingLevel;
5452
5534
  }
5453
5535
  }
@@ -5546,6 +5628,12 @@ class Timeline {
5546
5628
  cancel: false
5547
5629
  };
5548
5630
  this.parent.trigger('actionBegin', args);
5631
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
5632
+ this.parent.showMaskRow();
5633
+ }
5634
+ else {
5635
+ this.parent.showSpinner();
5636
+ }
5549
5637
  if (!args.cancel) {
5550
5638
  newTimeline = args.timeline;
5551
5639
  this.changeTimelineSettings(newTimeline);
@@ -5586,6 +5674,12 @@ class Timeline {
5586
5674
  timeline: this.parent.currentZoomingLevel
5587
5675
  };
5588
5676
  this.parent.trigger('actionComplete', args);
5677
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
5678
+ this.parent.hideMaskRow();
5679
+ }
5680
+ else {
5681
+ this.parent.hideSpinner();
5682
+ }
5589
5683
  }
5590
5684
  }
5591
5685
  /**
@@ -5651,6 +5745,12 @@ class Timeline {
5651
5745
  this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin', this.parent.controlId + '_zoomout'], true);
5652
5746
  }
5653
5747
  this.parent.trigger('actionBegin', args);
5748
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
5749
+ this.parent.showMaskRow();
5750
+ }
5751
+ else {
5752
+ this.parent.showSpinner();
5753
+ }
5654
5754
  this.changeTimelineSettings(newTimeline);
5655
5755
  }
5656
5756
  bottomTierCellWidthCalc(mode, zoomLevel, date) {
@@ -6757,7 +6857,9 @@ class Timeline {
6757
6857
  const validStartLeft = this.parent.dataOperation.getTaskLeft(validStartDate, false);
6758
6858
  const validEndLeft = this.parent.dataOperation.getTaskLeft(validEndDate, false);
6759
6859
  let isChanged;
6760
- if (!isNullOrUndefined(maxStartLeft) && ((minStartDate < this.timelineStartDate) || (!isNullOrUndefined(this.parent.editModule.taskbarEditModule)) && (!isNullOrUndefined(this.parent.editModule.taskbarEditModule.taskBarEditAction))) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
6860
+ if (!isNullOrUndefined(maxStartLeft) && ((minStartDate < this.timelineStartDate) ||
6861
+ (!isNullOrUndefined(this.parent.editModule.taskbarEditModule)) &&
6862
+ (!isNullOrUndefined(this.parent.editModule.taskbarEditModule.taskBarEditAction))) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
6761
6863
  isChanged = 'prevTimeSpan';
6762
6864
  minStartDate = minStartDate > this.timelineStartDate ? this.timelineStartDate : minStartDate;
6763
6865
  }
@@ -6996,9 +7098,12 @@ class GanttTreeGrid {
6996
7098
  this.parent.treeGrid.showColumnMenu = this.parent.showColumnMenu;
6997
7099
  this.parent.treeGrid.enableCollapseAll = this.parent.collapseAllParentTasks;
6998
7100
  this.parent.treeGrid.columnMenuItems = this.parent.columnMenuItems;
7101
+ this.parent.treeGrid.enableRtl = this.parent.enableRtl;
6999
7102
  this.parent.treeGrid.childMapping = isNullOrUndefined(this.parent.taskFields.child) ? '' : this.parent.taskFields.child;
7000
7103
  this.parent.treeGrid.treeColumnIndex = this.parent.treeColumnIndex;
7001
7104
  this.parent.treeGrid.columns = this.treeGridColumns;
7105
+ this.parent.treeGrid.loadingIndicator = this.parent.loadingIndicator;
7106
+ this.parent.treeGrid.enableVirtualMaskRow = this.parent.enableVirtualMaskRow;
7002
7107
  if (this.parent.dataSource instanceof Object && isCountRequired(this.parent)) {
7003
7108
  // In order to bind the observable data at load time, hasChildMapping is necessary to be mapped.
7004
7109
  this.parent.treeGrid.hasChildMapping = 'isParent';
@@ -7092,6 +7197,14 @@ class GanttTreeGrid {
7092
7197
  dataBound(args) {
7093
7198
  this.ensureScrollBar();
7094
7199
  this.parent.treeDataBound(args);
7200
+ if (this.parent.isVirtualScroll) {
7201
+ if ((this.parent.enableVirtualMaskRow && this.parent.enableVirtualization) ||
7202
+ (this.parent.enableVirtualization && !this.parent.enableVirtualMaskRow && this.parent.loadingIndicator.indicatorType === "Shimmer") ||
7203
+ (this.parent.loadingIndicator.indicatorType === "Shimmer")) {
7204
+ this.parent.hideMaskRow();
7205
+ }
7206
+ this.parent.isVirtualScroll = false;
7207
+ }
7095
7208
  this.prevCurrentView = extend([], [], this.parent.currentViewData, true);
7096
7209
  }
7097
7210
  dataStateChange(args) {
@@ -7126,6 +7239,12 @@ class GanttTreeGrid {
7126
7239
  const collapsedArgs = this.createExpandCollapseArgs(args);
7127
7240
  this.parent.ganttChartModule.collapsedGanttRow(collapsedArgs);
7128
7241
  }
7242
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
7243
+ this.parent.hideMaskRow();
7244
+ }
7245
+ else {
7246
+ this.parent.hideSpinner();
7247
+ }
7129
7248
  }
7130
7249
  expanded(args) {
7131
7250
  if (!this.parent.ganttChartModule.isExpandCollapseFromChart && !this.parent.isExpandCollapseLevelMethod) {
@@ -7134,6 +7253,12 @@ class GanttTreeGrid {
7134
7253
  this.parent.ganttChartModule.expandedGanttRow(expandedArgs);
7135
7254
  }
7136
7255
  }
7256
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
7257
+ this.parent.hideMaskRow();
7258
+ }
7259
+ else {
7260
+ this.parent.hideSpinner();
7261
+ }
7137
7262
  }
7138
7263
  actionBegin(args) {
7139
7264
  this.parent.notify('actionBegin', args);
@@ -7142,6 +7267,14 @@ class GanttTreeGrid {
7142
7267
  setValue('doubleClickTarget', null, this.parent.treeGrid.editModule);
7143
7268
  }
7144
7269
  this.parent.trigger('actionBegin', args);
7270
+ if (args.requestType != "virtualscroll" && args.type != "edit" && args.requestType != "beginEdit") {
7271
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
7272
+ this.parent.showMaskRow();
7273
+ }
7274
+ else {
7275
+ this.parent.showSpinner();
7276
+ }
7277
+ }
7145
7278
  } // eslint-disable-next-line
7146
7279
  created(args) {
7147
7280
  this.updateKeyConfigSettings();
@@ -7210,6 +7343,12 @@ class GanttTreeGrid {
7210
7343
  this.parent.addDeleteRecord = false;
7211
7344
  }
7212
7345
  this.parent.trigger('actionComplete', updatedArgs);
7346
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
7347
+ this.parent.hideMaskRow();
7348
+ }
7349
+ else {
7350
+ this.parent.hideSpinner();
7351
+ }
7213
7352
  }
7214
7353
  updateKeyConfigSettings() {
7215
7354
  delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.delete;
@@ -7479,7 +7618,7 @@ class GanttTreeGrid {
7479
7618
  */
7480
7619
  composeIDColumn(column) {
7481
7620
  const isProjectView = this.parent.viewType === 'ProjectView';
7482
- let lengthDataSource = this.parent.dataSource['length'];
7621
+ const lengthDataSource = this.parent.dataSource['length'];
7483
7622
  let taskIDName;
7484
7623
  column.isPrimaryKey = isProjectView ? true : false;
7485
7624
  column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('id');
@@ -8092,6 +8231,21 @@ __decorate$16([
8092
8231
  Property(null)
8093
8232
  ], ResourceFields.prototype, "group", void 0);
8094
8233
 
8234
+ var __decorate$17 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
8235
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8236
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8237
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8238
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
8239
+ };
8240
+ /**
8241
+ * Configures the Loading Indicator of the Gantt.
8242
+ */
8243
+ class LoadingIndicator extends ChildProperty {
8244
+ }
8245
+ __decorate$17([
8246
+ Property('Spinner')
8247
+ ], LoadingIndicator.prototype, "indicatorType", void 0);
8248
+
8095
8249
  /**
8096
8250
  * Export all generated models for complex settings
8097
8251
  */
@@ -8190,7 +8344,7 @@ class ChartRows extends DateProcessor {
8190
8344
  getIndicatorNode(indicator) {
8191
8345
  const templateString = '<label class="' + label + ' ' + taskIndicatorDiv + '"style="line-height:'
8192
8346
  + (this.parent.rowHeight) + 'px;' +
8193
- 'left:' + this.getIndicatorleft(indicator.date) + 'px;"><i class="' + indicator.iconClass + '"></i> </label>';
8347
+ (this.parent.enableRtl ? 'right:' : 'left:') + this.getIndicatorleft(indicator.date) + 'px;"><i class="' + indicator.iconClass + '"></i> </label>';
8194
8348
  return this.createDivElement(templateString);
8195
8349
  }
8196
8350
  /**
@@ -8216,6 +8370,13 @@ class ChartRows extends DateProcessor {
8216
8370
  getChildTaskbarNode(i, rootElement) {
8217
8371
  let childTaskbarNode = null;
8218
8372
  const data = this.templateData;
8373
+ let direction;
8374
+ if (this.parent.enableRtl) {
8375
+ direction = 'right:';
8376
+ }
8377
+ else {
8378
+ direction = 'left:';
8379
+ }
8219
8380
  if (this.childTaskbarTemplateFunction) {
8220
8381
  childTaskbarNode = this.childTaskbarTemplateFunction(extend({ index: i }, data), this.parent, 'TaskbarTemplate', this.getTemplateID('TaskbarTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);
8221
8382
  }
@@ -8258,14 +8419,15 @@ class ChartRows extends DateProcessor {
8258
8419
  }
8259
8420
  if (isNaN(parseInt(labelString))) {
8260
8421
  taskLabel$$1 = '<span class="' + taskLabel + '" style="line-height:' +
8261
- (this.taskBarHeight - 1) + 'px; text-align: left;' +
8422
+ (this.taskBarHeight - 1) + 'px; text-align:' + (this.parent.enableRtl ? 'right;' : 'left;') +
8262
8423
  'display:' + 'inline-block;' +
8263
8424
  'width:' + (data.ganttProperties.width - 10) + 'px; height:' +
8264
8425
  this.taskBarHeight + 'px;">' + labelString + '</span>';
8265
8426
  }
8266
8427
  else {
8267
8428
  taskLabel$$1 = '<span class="' + taskLabel + '" style="line-height:' +
8268
- (this.taskBarHeight - 1) + 'px;' + (this.parent.viewType === 'ResourceView' ? 'text-align: left;' : '') +
8429
+ (this.taskBarHeight - 1) + 'px;' + (this.parent.viewType === 'ResourceView' ? ('text-align:' +
8430
+ (this.parent.enableRtl ? 'right;' : 'left;')) : '') +
8269
8431
  +(this.parent.viewType === 'ResourceView' ? 'display:inline-flex;' : '') +
8270
8432
  +(this.parent.viewType === 'ResourceView' ? (data.ganttProperties.width - 10) : '') + 'px; height:' +
8271
8433
  this.taskBarHeight + 'px;">' + labelString + '</span>';
@@ -8277,17 +8439,17 @@ class ChartRows extends DateProcessor {
8277
8439
  (data.ganttProperties.startDate && !data.ganttProperties.endDate && !data.ganttProperties.duration) ? ('<div class="' + childProgressBarInnerDiv + ' ' + traceChildTaskBar + ' ' +
8278
8440
  unscheduledTaskbarLeft + ' ' + (data.ganttProperties.isAutoSchedule ?
8279
8441
  '' : manualChildTaskBar) + '"' +
8280
- 'style="left:' + data.ganttProperties.left + 'px; height:' + this.taskBarHeight + 'px;"></div>') :
8442
+ 'style="' + direction + data.ganttProperties.left + 'px; height:' + this.taskBarHeight + 'px;"></div>') :
8281
8443
  (data.ganttProperties.endDate && !data.ganttProperties.startDate && !data.ganttProperties.duration) ?
8282
8444
  ('<div class="' + childProgressBarInnerDiv + ' ' + traceChildTaskBar + ' ' +
8283
8445
  unscheduledTaskbarRight + ' ' + (data.ganttProperties.isAutoSchedule ?
8284
8446
  '' : manualChildTaskBar) + '"' +
8285
- 'style="left:' + data.ganttProperties.left + 'px; height:' + this.taskBarHeight + 'px;"></div>') :
8447
+ 'style="' + direction + data.ganttProperties.left + 'px; height:' + this.taskBarHeight + 'px;"></div>') :
8286
8448
  (data.ganttProperties.duration && !data.ganttProperties.startDate && !data.ganttProperties.endDate) ?
8287
8449
  ('<div class="' + childProgressBarInnerDiv + ' ' + traceChildTaskBar + ' ' +
8288
8450
  unscheduledTaskbar + ' ' + (data.ganttProperties.isAutoSchedule ?
8289
8451
  '' : manualChildTaskBar) + '"' +
8290
- 'style="left:' + data.ganttProperties.left + 'px; width:' + data.ganttProperties.width + 'px;' +
8452
+ 'style="' + direction + data.ganttProperties.left + 'px; width:' + data.ganttProperties.width + 'px;' +
8291
8453
  ' height:' + this.taskBarHeight + 'px;"></div>') : '';
8292
8454
  if (data.ganttProperties.startDate && data.ganttProperties.endDate && data.ganttProperties.duration &&
8293
8455
  (isNullOrUndefined(data.ganttProperties.segments) || (!isNullOrUndefined(data.ganttProperties.segments) &&
@@ -8315,6 +8477,13 @@ class ChartRows extends DateProcessor {
8315
8477
  childTaskbarNode = this.createDivElement(template);
8316
8478
  }
8317
8479
  }
8480
+ if (this.parent.enableRtl && childTaskbarNode[0] && childTaskbarNode[0].querySelector('.e-task-label')) {
8481
+ childTaskbarNode[0].querySelector('.e-task-label').style.marginLeft = '15px';
8482
+ childTaskbarNode[0].querySelector('.e-task-label').style.marginRight = '8px';
8483
+ if (childTaskbarNode[0].querySelector('.e-gantt-child-progressbar')) {
8484
+ childTaskbarNode[0].querySelector('.e-gantt-child-progressbar').style.textAlign = 'left';
8485
+ }
8486
+ }
8318
8487
  return childTaskbarNode;
8319
8488
  }
8320
8489
  splitTaskbar(data, labelString) {
@@ -8334,7 +8503,7 @@ class ChartRows extends DateProcessor {
8334
8503
  //split taskbar
8335
8504
  '<div class="' + childTaskBarInnerDiv + ' ' + segmentPosition + ' ' + traceChildTaskBar + ' ' +
8336
8505
  ' e-segmented-taskbar' +
8337
- '"style="width:' + segment.width + 'px;position: absolute; left:' + segment.left + 'px;height:' +
8506
+ '"style="width:' + segment.width + 'px;position: absolute;' + (this.parent.enableRtl ? 'right:' : 'left:') + segment.left + 'px;height:' +
8338
8507
  (this.taskBarHeight) + 'px; overflow:' + progressBarVisible + ';" data-segment-index = "' + i + '" aria-label = "' +
8339
8508
  this.generateSpiltTaskAriaLabel(segment, data.ganttProperties) + '"> ' +
8340
8509
  this.getSplitTaskbarLeftResizerNode() +
@@ -8342,7 +8511,7 @@ class ChartRows extends DateProcessor {
8342
8511
  '<div class="' + childProgressBarInnerDiv + ' ' + traceChildProgressBar + ' ' +
8343
8512
  '" style="border-style:' + (segment.progressWidth ? 'solid;' : 'none;') +
8344
8513
  'display:' + (segment.progressWidth >= 0 ? 'block;' : 'none;') +
8345
- 'width:' + segment.progressWidth + 'px;height:100%;' +
8514
+ 'width:' + segment.progressWidth + 'px;height:100%;' + 'text-align:' + (this.parent.enableRtl ? 'left;' : 'right;') +
8346
8515
  'border-top-right-radius:' + this.getSplitTaskBorderRadius(segment) + 'px;' +
8347
8516
  'border-bottom-right-radius:' + this.getSplitTaskBorderRadius(segment) + 'px;">' +
8348
8517
  // progress label
@@ -8359,19 +8528,20 @@ class ChartRows extends DateProcessor {
8359
8528
  getSplitTaskbarLeftResizerNode() {
8360
8529
  const lResizerLeft = -(this.parent.isAdaptive ? 12 : 2);
8361
8530
  const template = '<div class="' + taskBarLeftResizer + ' ' + icon + '"' +
8362
- ' style="left:' + lResizerLeft + 'px;height:' + (this.taskBarHeight) + 'px;"></div>';
8531
+ ' style="' + (this.parent.enableRtl ? 'right:' : 'left:') + lResizerLeft + 'px;height:' + (this.taskBarHeight) + 'px;"></div>';
8363
8532
  return template;
8364
8533
  }
8365
8534
  getSplitTaskbarRightResizerNode(segment) {
8366
8535
  const rResizerLeft = this.parent.isAdaptive ? -2 : -10;
8367
8536
  const template = '<div class="' + taskBarRightResizer + ' ' + icon + '"' +
8368
- ' style="left:' + (segment.width + rResizerLeft) + 'px;' +
8537
+ ' style="' + (this.parent.enableRtl ? 'right:' : 'left:') + (segment.width + rResizerLeft) + 'px;' +
8369
8538
  'height:' + (this.taskBarHeight) + 'px;"></div>';
8370
8539
  return template;
8371
8540
  }
8372
8541
  getSplitProgressResizerNode(segment) {
8542
+ let width = this.parent.enableRtl ? (segment.progressWidth + 8) : (segment.progressWidth - 6);
8373
8543
  const template = '<div class="' + childProgressResizer + '"' +
8374
- ' style="left:' + (segment.progressWidth - 6) + 'px;margin-top:' +
8544
+ ' style="' + (this.parent.enableRtl ? 'right:' : 'left:') + width + 'px;margin-top:' +
8375
8545
  (this.taskBarHeight - 4) + 'px;"><div class="' + progressBarHandler + '"' +
8376
8546
  '><div class="' + progressHandlerElement + '"></div>' +
8377
8547
  '<div class="' + progressBarHandlerAfter + '"></div></div>';
@@ -8501,6 +8671,12 @@ class ChartRows extends DateProcessor {
8501
8671
  }
8502
8672
  }
8503
8673
  this.parent.trigger('actionComplete', args);
8674
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
8675
+ this.parent.hideMaskRow();
8676
+ }
8677
+ else {
8678
+ this.parent.hideSpinner();
8679
+ }
8504
8680
  setValue('isEdit', false, this.parent.contextMenuModule);
8505
8681
  setValue('isEdit', false, this.parent);
8506
8682
  }
@@ -8705,7 +8881,7 @@ class ChartRows extends DateProcessor {
8705
8881
  getTaskBaselineNode() {
8706
8882
  const data = this.templateData;
8707
8883
  const template = '<div class="' + baselineBar + ' ' + '" role="term" style="margin-top:' + this.baselineTop +
8708
- 'px;left:' + data.ganttProperties.baselineLeft + 'px;' +
8884
+ 'px;' + (this.parent.enableRtl ? 'right:' : 'left:') + data.ganttProperties.baselineLeft + 'px;' +
8709
8885
  'width:' + data.ganttProperties.baselineWidth + 'px;height:' +
8710
8886
  this.baselineHeight + 'px;' + (this.baselineColor ? 'background-color: ' + this.baselineColor + ';' : '') + '"></div>';
8711
8887
  return this.createDivElement(template);
@@ -8720,7 +8896,7 @@ class ChartRows extends DateProcessor {
8720
8896
  const data = this.templateData;
8721
8897
  let baselineMilestoneHeight = this.parent.renderBaseline ? 5 : 2;
8722
8898
  const template = '<div class="' + baselineMilestoneContainer + ' ' + '" style="' +
8723
- 'left:' + (data.ganttProperties.baselineLeft - this.milesStoneRadius) + 'px;' +
8899
+ (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.baselineLeft - this.milesStoneRadius) + 'px;' +
8724
8900
  'margin-top:' + (-Math.floor(this.parent.rowHeight - this.milestoneMarginTop) + baselineMilestoneHeight) +
8725
8901
  'px">' + '<div class="' + baselineMilestoneDiv + '">' + '<div class="' + baselineMilestoneDiv +
8726
8902
  ' ' + baselineMilestoneTop + '" ' +
@@ -8770,6 +8946,10 @@ class ChartRows extends DateProcessor {
8770
8946
  }
8771
8947
  leftLabelNode[0].appendChild([].slice.call(leftLabelTemplateNode)[0]);
8772
8948
  }
8949
+ if (this.parent.enableRtl) {
8950
+ leftLabelNode[0].style.paddingLeft = '25px';
8951
+ leftLabelNode[0].style.paddingRight = '0px';
8952
+ }
8773
8953
  return leftLabelNode;
8774
8954
  }
8775
8955
  getLableText(labelString, labelDiv) {
@@ -8816,6 +8996,10 @@ class ChartRows extends DateProcessor {
8816
8996
  }
8817
8997
  rightLabelNode[0].appendChild([].slice.call(rightLabelTemplateNode)[0]);
8818
8998
  }
8999
+ if (this.parent.enableRtl) {
9000
+ rightLabelNode[0].style.marginLeft = '0px';
9001
+ rightLabelNode[0].style.paddingRight = '25px';
9002
+ }
8819
9003
  return rightLabelNode;
8820
9004
  }
8821
9005
  getManualTaskbar() {
@@ -8835,17 +9019,18 @@ class ChartRows extends DateProcessor {
8835
9019
  taskbarHeight * 2 + 'px;border-left-width:' + taskbarHeight / 5 +
8836
9020
  'px; border-bottom:' + taskbarHeight / 5 + 'px solid transparent;"></div>');
8837
9021
  const template = '<div class="' + manualParentMainContainer + '"' +
8838
- 'style=left:' + (data.ganttProperties.left - data.ganttProperties.autoLeft) + 'px;' +
9022
+ 'style=' + (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.left - data.ganttProperties.autoLeft) + 'px;' +
8839
9023
  'width:' + data.ganttProperties.width + 'px;' +
8840
9024
  'height:' + taskbarHeight + 'px;>' + innerDiv + ((data.ganttProperties.startDate && data.ganttProperties.endDate &&
8841
9025
  data.ganttProperties.duration) || data.ganttProperties.duration ? '<div class="e-gantt-manualparenttaskbar-left" style=' +
8842
- '"height:' + taskbarHeight + 'px;border-left-width:' + taskbarHeight / 5 +
9026
+ (this.parent.enableRtl ? 'margin-right:0px;' : '') + '"height:' + taskbarHeight + 'px;border-left-width:' + taskbarHeight / 5 +
8843
9027
  'px; border-bottom:' + taskbarHeight / 5 + 'px solid transparent;"></div>' +
8844
- '<div class="e-gantt-manualparenttaskbar-right" style=' +
8845
- 'left:' + (data.ganttProperties.width - taskbarHeight / 5) + 'px;height:' +
9028
+ '<div class="e-gantt-manualparenttaskbar-right" style=' + (this.parent.enableRtl ? 'margin-right:-8px;' : '') +
9029
+ (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.width - taskbarHeight / 5) + 'px;height:' +
8846
9030
  (taskbarHeight) + 'px;border-right-width:' + taskbarHeight / 5 + 'px;border-bottom:' +
8847
9031
  taskbarHeight / 5 + 'px solid transparent;>' + '</div></div>' : '');
8848
- const milestoneTemplate = '<div class="' + manualParentMilestone + '" style="position:absolute;left:' +
9032
+ const milestoneTemplate = '<div class="' + manualParentMilestone + '" style="position:absolute;' +
9033
+ (this.parent.enableRtl ? 'right:' : 'left:') +
8849
9034
  (data.ganttProperties.left - data.ganttProperties.autoLeft - (this.milestoneHeight / 2)) +
8850
9035
  'px;width:' + (this.milesStoneRadius * 2) +
8851
9036
  'px;">' + '<div class="' + manualParentMilestoneTop + '" style="border-right-width:' +
@@ -8906,7 +9091,7 @@ class ChartRows extends DateProcessor {
8906
9091
  }
8907
9092
  if (isNaN(parseInt(labelString))) {
8908
9093
  labelDiv = '<span class="' + taskLabel + '" style="line-height:' +
8909
- (this.taskBarHeight - 1) + 'px; text-align: left;' +
9094
+ (this.taskBarHeight - 1) + 'px; text-align:' + (this.parent.enableRtl ? 'right;' : 'left;') +
8910
9095
  'display:' + 'inline-block;' +
8911
9096
  'width:' + (data.ganttProperties.width - 10) + 'px; height:' +
8912
9097
  this.taskBarHeight + 'px;">' + labelString + '</span>';
@@ -8944,6 +9129,13 @@ class ChartRows extends DateProcessor {
8944
9129
  parentTaskbarNode = data.ganttProperties.isMilestone ?
8945
9130
  this.createDivElement(data.ganttProperties.isAutoSchedule ? milestoneTemplate : '') : template;
8946
9131
  }
9132
+ if (this.parent.enableRtl && parentTaskbarNode[0] && parentTaskbarNode[0].querySelector('.e-task-label')) {
9133
+ parentTaskbarNode[0].querySelector('.e-task-label').style.marginLeft = '15px';
9134
+ parentTaskbarNode[0].querySelector('.e-task-label').style.marginRight = '8px';
9135
+ if (parentTaskbarNode[0].querySelector('.e-gantt-parent-progressbar')) {
9136
+ parentTaskbarNode[0].querySelector('.e-gantt-parent-progressbar').style.textAlign = 'left';
9137
+ }
9138
+ }
8947
9139
  return parentTaskbarNode;
8948
9140
  }
8949
9141
  /**
@@ -9039,35 +9231,36 @@ class ChartRows extends DateProcessor {
9039
9231
  ((data.ganttProperties.cssClass) ? data.ganttProperties.cssClass : '') + '" ' +
9040
9232
  ' tabindex="-1" role="term" style="' + ((data.ganttProperties.isMilestone && !manualParent) ?
9041
9233
  ('width:' + this.milestoneHeight + 'px;height:' +
9042
- this.milestoneHeight + 'px;margin-top:' + this.milestoneMarginTop + 'px;left:' + (data.ganttProperties.left -
9234
+ this.milestoneHeight + 'px;margin-top:' + this.milestoneMarginTop + 'px;' + (this.parent.enableRtl ? 'right:' : 'left:') + (data.ganttProperties.left -
9043
9235
  (this.milestoneHeight / 2)) + 'px;') : ('width:' + data.ganttProperties.width +
9044
- 'px;margin-top:' + this.taskBarMarginTop + 'px;left:' + (!data.hasChildRecords || data.ganttProperties.isAutoSchedule ?
9236
+ 'px;margin-top:' + this.taskBarMarginTop + 'px;' + (this.parent.enableRtl ? 'right:' : 'left:') + (!data.hasChildRecords || data.ganttProperties.isAutoSchedule ?
9045
9237
  data.ganttProperties.left : data.ganttProperties.autoLeft) + 'px;height:' +
9046
9238
  this.taskBarHeight + 'px;cursor:' + (data.ganttProperties.isAutoSchedule ? 'move;' : 'auto;'))) + '"></div>';
9047
9239
  return this.createDivElement(template);
9048
9240
  }
9049
9241
  rightLabelContainer() {
9050
9242
  const template = '<div class="' + ((this.rightTaskLabelTemplateFunction) ? rightLabelTempContainer :
9051
- rightLabelContainer) + '" ' + ' tabindex="-1" role="term" style="left:' + this.getRightLabelLeft(this.templateData) + 'px; height:'
9243
+ rightLabelContainer) + '" ' + ' tabindex="-1" role="term" style="' + (this.parent.enableRtl ? 'right:' : 'left:') + this.getRightLabelLeft(this.templateData) + 'px; height:'
9052
9244
  + (this.parent.rowHeight - 2) + 'px;"></div>';
9053
9245
  return this.createDivElement(template);
9054
9246
  }
9055
9247
  childTaskbarLeftResizer() {
9056
9248
  const lResizerLeft = -(this.parent.isAdaptive ? 12 : 2);
9057
9249
  const template = '<div class="' + taskBarLeftResizer + ' ' + icon + '"' +
9058
- 'style="left:' + lResizerLeft + 'px;height:' + (this.taskBarHeight) + 'px;"></div>';
9250
+ 'style="' + (this.parent.enableRtl ? 'right:' : 'left:') + lResizerLeft + 'px;height:' + (this.taskBarHeight) + 'px;"></div>';
9059
9251
  return this.createDivElement(template);
9060
9252
  }
9061
9253
  childTaskbarRightResizer() {
9062
9254
  const rResizerLeft = this.parent.isAdaptive ? -2 : -10;
9063
9255
  const template = '<div class="' + taskBarRightResizer + ' ' + icon + '"' +
9064
- 'style="left:' + (this.templateData.ganttProperties.width + rResizerLeft) + 'px;' +
9256
+ 'style="' + (this.parent.enableRtl ? 'right:' : 'left:') + (this.templateData.ganttProperties.width + rResizerLeft) + 'px;' +
9065
9257
  'height:' + (this.taskBarHeight) + 'px;"></div>';
9066
9258
  return this.createDivElement(template);
9067
9259
  }
9068
9260
  childTaskbarProgressResizer() {
9261
+ let width = this.parent.enableRtl ? (this.templateData.ganttProperties.progressWidth + 8) : (this.templateData.ganttProperties.progressWidth - 6);
9069
9262
  const template = '<div class="' + childProgressResizer + '"' +
9070
- 'style="left:' + (this.templateData.ganttProperties.progressWidth - 6) + 'px;margin-top:' +
9263
+ 'style="' + (this.parent.enableRtl ? 'right:' : 'left:') + width + 'px;margin-top:' +
9071
9264
  (this.taskBarHeight - 4) + 'px;"><div class="' + progressBarHandler + '"' +
9072
9265
  '><div class="' + progressHandlerElement + '"></div>' +
9073
9266
  '<div class="' + progressBarHandlerAfter + '"></div></div>';
@@ -9089,7 +9282,7 @@ class ChartRows extends DateProcessor {
9089
9282
  ((data.ganttProperties.isMilestone) ? ('margin-top:' + pointerTop + 'px;left:' + mileStoneLeft +
9090
9283
  'px;') : (marginTop + ';left:' + pointerLeft + 'px;')) + '">' +
9091
9284
  '<div class="' + connectorPointLeft + ' ' + this.parent.getUnscheduledTaskClass(data.ganttProperties) +
9092
- '" style="width: ' + this.connectorPointWidth + 'px;' +
9285
+ '" style="width: ' + this.connectorPointWidth + 'px;' + (this.parent.enableRtl ? 'margin-right:2px;' : '') +
9093
9286
  'height: ' + this.connectorPointWidth + 'px;">' + this.touchLeftConnectorpoint + '</div></div>';
9094
9287
  return this.createDivElement(template);
9095
9288
  }
@@ -9322,6 +9515,7 @@ class ChartRows extends DateProcessor {
9322
9515
  }
9323
9516
  this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);
9324
9517
  }
9518
+ this.parent.ganttChartModule.updateLastRowBottomWidth();
9325
9519
  }
9326
9520
  /**
9327
9521
  * To render taskbars.
@@ -9362,8 +9556,14 @@ class ChartRows extends DateProcessor {
9362
9556
  else {
9363
9557
  for (let i = 0; i < this.parent.currentViewData.length; i++) {
9364
9558
  const tempTemplateData = this.parent.currentViewData[i];
9365
- if (this.parent.viewType === 'ResourceView' && !tempTemplateData.expanded && this.parent.enableMultiTaskbar) {
9366
- collapsedResourceRecord.push(tempTemplateData);
9559
+ if (this.parent.viewType === 'ResourceView') {
9560
+ if (this.parent.editModule && this.parent.editModule.isResourceTaskDeleted) {
9561
+ this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();
9562
+ this.parent.editModule.isResourceTaskDeleted = false;
9563
+ }
9564
+ if (!tempTemplateData.expanded && this.parent.enableMultiTaskbar) {
9565
+ collapsedResourceRecord.push(tempTemplateData);
9566
+ }
9367
9567
  }
9368
9568
  const tRow = this.getGanttChartRow(i, tempTemplateData);
9369
9569
  this.ganttChartTableBody.appendChild(tRow);
@@ -9407,7 +9607,7 @@ class ChartRows extends DateProcessor {
9407
9607
  taskbarContainerNode[0].setAttribute('aria-label', this.generateAriaLabel(this.templateData));
9408
9608
  taskbarContainerNode[0].setAttribute('rowUniqueId', this.templateData.ganttProperties.rowUniqueID);
9409
9609
  const connectorLineLeftNode = this.getLeftPointNode();
9410
- if ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType == 'ProjectView') || !this.templateData.hasChildRecords) {
9610
+ if ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType === 'ProjectView') || !this.templateData.hasChildRecords) {
9411
9611
  taskbarContainerNode[0].appendChild([].slice.call(connectorLineLeftNode)[0]);
9412
9612
  }
9413
9613
  if (this.templateData.hasChildRecords) {
@@ -9424,9 +9624,9 @@ class ChartRows extends DateProcessor {
9424
9624
  }
9425
9625
  if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&
9426
9626
  this.templateData.ganttProperties.baselineEndDate) {
9427
- taskBaselineTemplateNode = ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))
9627
+ taskBaselineTemplateNode = ((this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.baselineEndDate.getTime()) || ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))
9428
9628
  && (!isNullOrUndefined(this.templateData.ganttProperties.baselineEndDate) && !isNullOrUndefined(this.templateData.ganttProperties.endDate) && (this.templateData.ganttProperties.baselineEndDate.toLocaleDateString() === this.templateData.ganttProperties.endDate.toLocaleDateString())) &&
9429
- this.templateData.ganttProperties.isMilestone)
9629
+ this.templateData.ganttProperties.isMilestone))
9430
9630
  ? this.getMilestoneBaselineNode() : this.getTaskBaselineNode();
9431
9631
  }
9432
9632
  }
@@ -9437,9 +9637,9 @@ class ChartRows extends DateProcessor {
9437
9637
  }
9438
9638
  if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&
9439
9639
  this.templateData.ganttProperties.baselineEndDate) {
9440
- taskBaselineTemplateNode = ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))
9640
+ taskBaselineTemplateNode = ((this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.baselineEndDate.getTime()) || ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))
9441
9641
  && (!isNullOrUndefined(this.templateData.ganttProperties.baselineEndDate) && !isNullOrUndefined(this.templateData.ganttProperties.endDate) && (this.templateData.ganttProperties.baselineEndDate.toLocaleDateString() === this.templateData.ganttProperties.endDate.toLocaleDateString())) &&
9442
- this.templateData.ganttProperties.isMilestone)
9642
+ this.templateData.ganttProperties.isMilestone))
9443
9643
  ? this.getMilestoneBaselineNode() : this.getTaskBaselineNode();
9444
9644
  }
9445
9645
  }
@@ -9485,13 +9685,13 @@ class ChartRows extends DateProcessor {
9485
9685
  }
9486
9686
  if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&
9487
9687
  this.templateData.ganttProperties.baselineEndDate) {
9488
- taskBaselineTemplateNode = ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))
9688
+ taskBaselineTemplateNode = ((this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.baselineEndDate.getTime()) || ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))
9489
9689
  && (!isNullOrUndefined(this.templateData.ganttProperties.baselineEndDate) && !isNullOrUndefined(this.templateData.ganttProperties.endDate) && (this.templateData.ganttProperties.baselineEndDate.toLocaleDateString() === this.templateData.ganttProperties.endDate.toLocaleDateString())) &&
9490
- this.templateData.ganttProperties.isMilestone)
9690
+ this.templateData.ganttProperties.isMilestone))
9491
9691
  ? this.getMilestoneBaselineNode() : this.getTaskBaselineNode();
9492
9692
  }
9493
9693
  }
9494
- if ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType == 'ProjectView') || !this.templateData.hasChildRecords) {
9694
+ if ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType === 'ProjectView') || !this.templateData.hasChildRecords) {
9495
9695
  const connectorLineRightNode = this.getRightPointNode();
9496
9696
  taskbarContainerNode[0].appendChild([].slice.call(connectorLineRightNode)[0]);
9497
9697
  }
@@ -9586,6 +9786,10 @@ class ChartRows extends DateProcessor {
9586
9786
  const taskbarElement = !isNullOrUndefined(data.ganttProperties.segments) && data.ganttProperties.segments.length > 0 ? trElement :
9587
9787
  trElement.querySelector('.' + taskBarMainContainer);
9588
9788
  let rowElement;
9789
+ let segmentRowElement;
9790
+ if (data.ganttProperties.segments && data.ganttProperties.segments.length > 0) {
9791
+ segmentRowElement = trElement.parentElement.parentElement.parentElement;
9792
+ }
9589
9793
  let triggerTaskbarElement;
9590
9794
  const args = {
9591
9795
  data: data,
@@ -9598,7 +9802,8 @@ class ChartRows extends DateProcessor {
9598
9802
  args.milestoneColor = taskbarElement.querySelector(classCollections[0]) ?
9599
9803
  getComputedStyle(taskbarElement.querySelector(classCollections[0])).borderBottomColor : null;
9600
9804
  args.baselineColor = trElement.querySelector(classCollections[1]) ?
9601
- getComputedStyle(trElement.querySelector(classCollections[1])).borderBottomColor : null;
9805
+ getComputedStyle(trElement.querySelector(classCollections[1])).borderBottomColor :
9806
+ (trElement.querySelector('.' + baselineBar) ? getComputedStyle(trElement.querySelector('.' + baselineBar)).backgroundColor : null);
9602
9807
  }
9603
9808
  else {
9604
9809
  const childTask = taskbarElement.querySelector(classCollections[0]);
@@ -9615,17 +9820,33 @@ class ChartRows extends DateProcessor {
9615
9820
  getComputedStyle(taskbarElement.querySelector(classCollections[1])).backgroundColor;
9616
9821
  // args.progressBarBorderColor = taskbarElement.querySelector(progressBarClass) ?
9617
9822
  // getComputedStyle(taskbarElement.querySelector(progressBarClass)).borderColor : null;
9618
- args.baselineColor = trElement.querySelector('.' + baselineBar) ?
9619
- getComputedStyle(trElement.querySelector('.' + baselineBar)).backgroundColor : null;
9823
+ if (segmentRowElement) {
9824
+ args.baselineColor = segmentRowElement.querySelector('.' + baselineBar) ?
9825
+ getComputedStyle(segmentRowElement.querySelector('.' + baselineBar)).backgroundColor : null;
9826
+ }
9827
+ else {
9828
+ args.baselineColor = trElement.querySelector('.' + baselineBar) ?
9829
+ getComputedStyle(trElement.querySelector('.' + baselineBar)).backgroundColor : null;
9830
+ }
9620
9831
  args.taskLabelColor = taskbarElement.querySelector('.' + taskLabel) ?
9621
9832
  getComputedStyle(taskbarElement.querySelector('.' + taskLabel)).color : null;
9622
9833
  }
9623
- args.rightLabelColor = trElement.querySelector('.' + rightLabelContainer) &&
9624
- (trElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label) ?
9625
- getComputedStyle((trElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label)).color : null;
9626
- args.leftLabelColor = trElement.querySelector('.' + leftLabelContainer) &&
9627
- (trElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label) ?
9628
- getComputedStyle((trElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label)).color : null;
9834
+ if (segmentRowElement) {
9835
+ args.rightLabelColor = segmentRowElement.querySelector('.' + rightLabelContainer) &&
9836
+ (segmentRowElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label) ?
9837
+ getComputedStyle((segmentRowElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label)).color : null;
9838
+ args.leftLabelColor = segmentRowElement.querySelector('.' + leftLabelContainer) &&
9839
+ (segmentRowElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label) ?
9840
+ getComputedStyle((segmentRowElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label)).color : null;
9841
+ }
9842
+ else {
9843
+ args.rightLabelColor = trElement.querySelector('.' + rightLabelContainer) &&
9844
+ (trElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label) ?
9845
+ getComputedStyle((trElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label)).color : null;
9846
+ args.leftLabelColor = trElement.querySelector('.' + leftLabelContainer) &&
9847
+ (trElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label) ?
9848
+ getComputedStyle((trElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label)).color : null;
9849
+ }
9629
9850
  this.parent.trigger('queryTaskbarInfo', args, (taskbarArgs) => {
9630
9851
  this.updateQueryTaskbarInfoArgs(taskbarArgs, rowElement, triggerTaskbarElement);
9631
9852
  });
@@ -9643,6 +9864,10 @@ class ChartRows extends DateProcessor {
9643
9864
  const trElement = args.rowElement;
9644
9865
  const taskbarElement = args.taskbarElement;
9645
9866
  const classCollections = this.getClassName(args);
9867
+ let segmentRowElement;
9868
+ if (args.data.ganttProperties.segments && args.data.ganttProperties.segments.length > 0) {
9869
+ segmentRowElement = trElement.parentElement.parentElement.parentElement;
9870
+ }
9646
9871
  if (args.taskbarType === 'Milestone') {
9647
9872
  if (taskbarElement.querySelector(classCollections[0]) &&
9648
9873
  getComputedStyle(taskbarElement.querySelector(classCollections[0])).borderBottomColor !== args.milestoneColor) {
@@ -9654,6 +9879,10 @@ class ChartRows extends DateProcessor {
9654
9879
  trElement.querySelector(classCollections[1]).style.borderBottomColor = args.baselineColor;
9655
9880
  trElement.querySelector('.' + baselineMilestoneBottom).style.borderTopColor = args.baselineColor;
9656
9881
  }
9882
+ if (trElement.querySelector('.' + baselineBar) &&
9883
+ getComputedStyle(trElement.querySelector('.' + baselineBar)).borderTopColor !== args.baselineColor) {
9884
+ trElement.querySelector('.' + baselineBar).style.backgroundColor = args.baselineColor;
9885
+ }
9657
9886
  }
9658
9887
  else {
9659
9888
  if (taskbarElement.querySelector(classCollections[0]) &&
@@ -9688,20 +9917,42 @@ class ChartRows extends DateProcessor {
9688
9917
  getComputedStyle(taskbarElement.querySelector('.' + taskLabel)).color !== args.taskLabelColor) {
9689
9918
  taskbarElement.querySelector('.' + taskLabel).style.color = args.taskLabelColor;
9690
9919
  }
9691
- if (trElement.querySelector('.' + baselineBar) &&
9692
- getComputedStyle(trElement.querySelector('.' + baselineBar)).backgroundColor !== args.baselineColor) {
9693
- trElement.querySelector('.' + baselineBar).style.backgroundColor = args.baselineColor;
9920
+ if (segmentRowElement) {
9921
+ if (segmentRowElement.querySelector('.' + baselineBar) &&
9922
+ getComputedStyle(segmentRowElement.querySelector('.' + baselineBar)).backgroundColor !== args.baselineColor) {
9923
+ segmentRowElement.querySelector('.' + baselineBar).style.backgroundColor = args.baselineColor;
9924
+ }
9925
+ }
9926
+ else {
9927
+ if (trElement.querySelector('.' + baselineBar) &&
9928
+ getComputedStyle(trElement.querySelector('.' + baselineBar)).backgroundColor !== args.baselineColor) {
9929
+ trElement.querySelector('.' + baselineBar).style.backgroundColor = args.baselineColor;
9930
+ }
9694
9931
  }
9695
9932
  }
9696
- if (trElement.querySelector('.' + leftLabelContainer) &&
9697
- (trElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label) &&
9698
- getComputedStyle((trElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label)).color !== args.leftLabelColor) {
9699
- (trElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label).style.color = args.leftLabelColor;
9933
+ if (segmentRowElement) {
9934
+ if (segmentRowElement.querySelector('.' + leftLabelContainer) &&
9935
+ (segmentRowElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label) &&
9936
+ getComputedStyle((segmentRowElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label)).color !== args.leftLabelColor) {
9937
+ (segmentRowElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label).style.color = args.leftLabelColor;
9938
+ }
9939
+ if (segmentRowElement.querySelector('.' + rightLabelContainer) &&
9940
+ (segmentRowElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label) &&
9941
+ getComputedStyle((segmentRowElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label)).color !== args.rightLabelColor) {
9942
+ (segmentRowElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label).style.color = args.rightLabelColor;
9943
+ }
9700
9944
  }
9701
- if (trElement.querySelector('.' + rightLabelContainer) &&
9702
- (trElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label) &&
9703
- getComputedStyle((trElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label)).color !== args.rightLabelColor) {
9704
- (trElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label).style.color = args.rightLabelColor;
9945
+ else {
9946
+ if (trElement.querySelector('.' + leftLabelContainer) &&
9947
+ (trElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label) &&
9948
+ getComputedStyle((trElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label)).color !== args.leftLabelColor) {
9949
+ (trElement.querySelector('.' + leftLabelContainer)).querySelector('.' + label).style.color = args.leftLabelColor;
9950
+ }
9951
+ if (trElement.querySelector('.' + rightLabelContainer) &&
9952
+ (trElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label) &&
9953
+ getComputedStyle((trElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label)).color !== args.rightLabelColor) {
9954
+ (trElement.querySelector('.' + rightLabelContainer)).querySelector('.' + label).style.color = args.rightLabelColor;
9955
+ }
9705
9956
  }
9706
9957
  }
9707
9958
  getClassName(args) {
@@ -10310,9 +10561,9 @@ class Dependency {
10310
10561
  const flatData = this.parent.flatData;
10311
10562
  const totLength = this.parent.flatData.length;
10312
10563
  for (let count = 0; count < totLength; count++) {
10313
- if (flatData[count].ganttProperties.predecessor) {
10564
+ if (flatData[count].ganttProperties.predecessorsName) {
10314
10565
  this.validatePredecessorDates(flatData[count]);
10315
- if (flatData[count].hasChildRecords && this.parent.editModule) {
10566
+ if (flatData[count].hasChildRecords && this.parent.editModule && !this.parent.allowUnscheduledTasks) {
10316
10567
  this.parent.editModule['updateChildItems'](flatData[count]);
10317
10568
  }
10318
10569
  }
@@ -10324,6 +10575,9 @@ class Dependency {
10324
10575
  for (let i = parentPredecessorLength - 1; i >= 0; i--) {
10325
10576
  let item = this.parentPredecessors[i];
10326
10577
  this.validatePredecessorDates(item);
10578
+ if (item.ganttProperties.startDate) {
10579
+ this.parent.editModule['updateChildItems'](item);
10580
+ }
10327
10581
  }
10328
10582
  }
10329
10583
  }
@@ -10777,19 +11031,8 @@ class ConnectorLine {
10777
11031
  */
10778
11032
  createConnectorLineObject(parentGanttData, childGanttData, predecessor) {
10779
11033
  const connectorObj = {};
10780
- let updatedRecords;
10781
- if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport) {
10782
- if (this.parent.pdfExportModule['helper']['exportProps'].exportType &&
10783
- this.parent.pdfExportModule['helper']['exportProps'].exportType === 'CurrentViewData') {
10784
- updatedRecords = this.expandedRecords;
10785
- }
10786
- else {
10787
- updatedRecords = this.parent.flatData;
10788
- }
10789
- }
10790
- else {
10791
- updatedRecords = this.expandedRecords;
10792
- }
11034
+ const updatedRecords = this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport ?
11035
+ this.parent.flatData : this.expandedRecords;
10793
11036
  const parentIndex = updatedRecords.indexOf(parentGanttData);
10794
11037
  const childIndex = updatedRecords.indexOf(childGanttData);
10795
11038
  const parentGanttRecord = parentGanttData.ganttProperties;
@@ -10855,6 +11098,9 @@ class ConnectorLine {
10855
11098
  }
10856
11099
  }
10857
11100
  this.parent.ganttChartModule.chartBodyContent.appendChild(this.dependencyViewContainer);
11101
+ for (let i = 0; i < this.dependencyViewContainer.children.length; i++) {
11102
+ this.dependencyViewContainer.children[i].children[0].setAttribute('tabindex', '-1');
11103
+ }
10858
11104
  }
10859
11105
  /**
10860
11106
  * To get parent position.
@@ -11173,85 +11419,96 @@ class ConnectorLine {
11173
11419
  connectorContainer = '<div id="ConnectorLine' + data.connectorLineId + '" style="background-color:black">';
11174
11420
  let div = '<div class="' + connectorLineContainer +
11175
11421
  '" tabindex="-1" style="';
11422
+ let direction = this.parent.enableRtl ? 'right:' : 'left:';
11176
11423
  const eLine = '<div class="' + connectorLine + '" style="' +
11177
11424
  (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11178
- const rightArrow = '<div class="' + connectorLineRightArrow + '" style="' +
11179
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11180
- const leftArrow = '<div class="' + connectorLineLeftArrow + '" style="' +
11181
- (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11182
- const duplicateStingOne = leftArrow + (isMilestone ? 'left:0px;' : '') +
11183
- this.getBorderStyles('right', 10) +
11425
+ let rightArrow;
11426
+ let leftArrow;
11427
+ if (this.parent.enableRtl) {
11428
+ leftArrow = '<div class="' + connectorLineRightArrow + '" style="' +
11429
+ (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11430
+ rightArrow = '<div class="' + connectorLineLeftArrow + '" style="' +
11431
+ (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11432
+ }
11433
+ else {
11434
+ rightArrow = '<div class="' + connectorLineRightArrow + '" style="' +
11435
+ (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11436
+ leftArrow = '<div class="' + connectorLineLeftArrow + '" style="' +
11437
+ (!isNullOrUndefined(this.lineColor) ? 'outline-color:' + this.lineColor + ';' : '');
11438
+ }
11439
+ const duplicateStingOne = leftArrow + (isMilestone ? (this.parent.enableRtl ? 'right:0px;' : 'left:0px;') : '') +
11440
+ this.getBorderStyles((this.parent.enableRtl ? 'left' : 'right'), 10) +
11184
11441
  'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11185
11442
  'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
11186
- const duplicateStingTwo = this.getBorderStyles('left', 10) +
11443
+ const duplicateStingTwo = this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
11187
11444
  'top:' + (-6) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11188
11445
  'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
11189
11446
  const duplicateStingThree = this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>' + eLine +
11190
11447
  'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11191
11448
  this.getBorderStyles('top', (heightValue + borderTopWidth - (this.lineStroke - 1))) + 'position:relative;"></div>';
11192
- const duplicateStingFour = leftArrow + 'left:' +
11449
+ const duplicateStingFour = leftArrow + (this.parent.enableRtl ? 'right:' : 'left:') +
11193
11450
  (((data.childLeft + data.childWidth) - (data.parentLeft)) + 10) + 'px;' +
11194
- this.getBorderStyles('right', 10);
11451
+ this.getBorderStyles((this.parent.enableRtl ? 'left' : 'right'), 10);
11195
11452
  const duplicateStingFive = 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;' +
11196
11453
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11197
11454
  if (this.getParentPosition(data) === 'FSType1') {
11198
- div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11455
+ div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11199
11456
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11200
11457
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType1">';
11201
11458
  div = div + eLine;
11202
- div = div + 'left:' + (isMilestoneParent ? -1 : 0) + 'px;width:' + (isMilestoneParent ?
11459
+ div = div + direction + (isMilestoneParent ? -1 : 0) + 'px;width:' + (isMilestoneParent ?
11203
11460
  ((((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10) + 1) :
11204
11461
  (((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10)) + 'px;' +
11205
11462
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11206
11463
  div = div + eLine;
11207
- div = div + 'left:' + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;' +
11464
+ div = div + direction + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;' +
11208
11465
  'width:0px;' + this.getBorderStyles('right', this.lineStroke) +
11209
11466
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
11210
11467
  div = div + eLine;
11211
- div = div + 'left:' + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;width:10px;' +
11468
+ div = div + direction + ((data.childLeft - (data.parentLeft + data.parentWidth + 10)) - 10) + 'px;width:10px;' +
11212
11469
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11213
11470
  div = div + rightArrow;
11214
- div = div + 'left:' + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
11215
- this.getBorderStyles('left', 10) + 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
11471
+ div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
11472
+ this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
11216
11473
  'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
11217
11474
  }
11218
11475
  if (this.getParentPosition(data) === 'FSType2') {
11219
- div = div + 'left:' + data.parentLeft + 'px;top:' + (isVirtual ? connectorLine$$1.top : ((data.parentIndex * data.rowHeight) + addTop +
11476
+ div = div + direction + data.parentLeft + 'px;top:' + (isVirtual ? connectorLine$$1.top : ((data.parentIndex * data.rowHeight) + addTop +
11220
11477
  this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11221
11478
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType2">';
11222
11479
  div = div + eLine;
11223
- div = div + 'left:' + (isMilestoneParent ? data.parentWidth - 1 : data.parentWidth) + 'px;width:' +
11480
+ div = div + direction + (isMilestoneParent ? data.parentWidth - 1 : data.parentWidth) + 'px;width:' +
11224
11481
  (isMilestoneParent ? 11 : 10) + 'px;' +
11225
11482
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11226
11483
  div = div + eLine;
11227
- div = div + 'left:' + (data.parentWidth + 10 - this.lineStroke) + 'px;' +
11484
+ div = div + direction + (data.parentWidth + 10 - this.lineStroke) + 'px;' +
11228
11485
  this.getBorderStyles('left', this.lineStroke) + 'width:0px;' +
11229
11486
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
11230
11487
  div = div + eLine;
11231
- div = div + 'left:' + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 20)) + 'px;' +
11488
+ div = div + direction + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 20)) + 'px;' +
11232
11489
  'width:' + (((data.parentLeft + data.parentWidth) - data.childLeft) + 30) + 'px;' +
11233
11490
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11234
11491
  div = div + eLine;
11235
- div = div + 'left:' + (data.parentWidth - (((data.parentLeft +
11492
+ div = div + direction + (data.parentWidth - (((data.parentLeft +
11236
11493
  data.parentWidth) - data.childLeft) + 20)) + 'px;width:0px;' +
11237
11494
  this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) +
11238
11495
  this.getBorderStyles('left', this.lineStroke) + 'position:relative;"></div>';
11239
11496
  div = div + eLine;
11240
- div = div + 'left:' + (data.parentWidth - (((data.parentLeft +
11497
+ div = div + direction + (data.parentWidth - (((data.parentLeft +
11241
11498
  data.parentWidth) - data.childLeft) + 20)) + 'px;width:10px;' +
11242
11499
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11243
11500
  div = div + rightArrow;
11244
- div = div + 'left:' + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 10)) + 'px;' +
11245
- this.getBorderStyles('left', 10) + 'border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11501
+ div = div + direction + (data.parentWidth - (((data.parentLeft + data.parentWidth) - data.childLeft) + 10)) + 'px;' +
11502
+ this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11246
11503
  'border-top-width:' + (5 + this.lineStroke) + 'px;top:' + (-6 - this.lineStroke) +
11247
11504
  'px;width:0;height:0;position:relative;"></div></div>';
11248
11505
  }
11249
11506
  if (this.getParentPosition(data) === 'FSType3') {
11250
- div = div + 'left:' + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11507
+ div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11251
11508
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11252
11509
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType3">';
11253
11510
  div = div + rightArrow;
11254
- div = div + 'left:10px;' + this.getBorderStyles('left', 10) +
11511
+ div = div + direction + '10px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
11255
11512
  'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' + (5 + this.lineStroke) + 'px;' +
11256
11513
  'top:' + (-6) + 'px;width:0;height:0;position:relative;"></div>';
11257
11514
  div = div + eLine;
@@ -11265,49 +11522,49 @@ class ConnectorLine {
11265
11522
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;top:' +
11266
11523
  (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
11267
11524
  div = div + eLine;
11268
- div = div + 'left:' + (((data.parentLeft + data.parentWidth) - data.childLeft) + (30 - this.lineStroke)) +
11525
+ div = div + direction + (((data.parentLeft + data.parentWidth) - data.childLeft) + (30 - this.lineStroke)) +
11269
11526
  'px;width:0px;' + 'height:' + (this.getconnectorLineGap(data) - this.lineStroke) + 'px;' +
11270
11527
  this.getBorderStyles('left', this.lineStroke) + 'position:relative;' +
11271
11528
  'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div>';
11272
11529
  div = div + eLine;
11273
- div = div + (isMilestoneParent ? 'left:' + (((data.parentLeft +
11274
- data.parentWidth) - data.childLeft) + (18 - this.lineStroke)) + 'px;width:' + (12 + this.lineStroke) + 'px;' : 'left:' +
11530
+ div = div + (isMilestoneParent ? direction + (((data.parentLeft +
11531
+ data.parentWidth) - data.childLeft) + (18 - this.lineStroke)) + 'px;width:' + (12 + this.lineStroke) + 'px;' : direction +
11275
11532
  (((data.parentLeft + data.parentWidth) - data.childLeft) + 20) + 'px;width:10px;') +
11276
11533
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;top:' +
11277
11534
  (-(13 + ((this.lineStroke - 1) * 2))) + 'px;"></div></div>';
11278
11535
  }
11279
11536
  if (this.getParentPosition(data) === 'FSType4') {
11280
- div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11537
+ div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11281
11538
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11282
11539
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FSType4">';
11283
11540
  div = div + rightArrow;
11284
- div = div + 'left:' + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
11285
- this.getBorderStyles('left', 10) + 'top:' + (-6) + 'px;' +
11541
+ div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth + 10)) + 'px;' +
11542
+ this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6) + 'px;' +
11286
11543
  'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
11287
11544
  (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div>';
11288
11545
  div = div + eLine;
11289
- div = div + 'left:' + (data.childLeft - (data.parentLeft + data.parentWidth) - 20) +
11546
+ div = div + direction + (data.childLeft - (data.parentLeft + data.parentWidth) - 20) +
11290
11547
  'px;top:' + (-(6 + (5 + this.lineStroke) + Math.round(this.lineStroke / 2))) + 'px;width:10px;' +
11291
11548
  this.getBorderStyles('top', this.lineStroke) +
11292
11549
  'position:relative;"></div>';
11293
11550
  div = div + eLine;
11294
- div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;left:' +
11551
+ div = div + 'top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' + direction +
11295
11552
  (data.childLeft - (data.parentLeft + data.parentWidth) - 20) + 'px;width:0px;' +
11296
11553
  this.getBorderStyles('left', this.lineStroke) +
11297
11554
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
11298
11555
  div = div + eLine;
11299
- div = div + (isMilestoneParent ? 'left:-1px;' : '') + 'top:' +
11556
+ div = div + (isMilestoneParent ? direction + '-1px;' : '') + 'top:' +
11300
11557
  (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
11301
11558
  (isMilestoneParent ? ((data.childLeft - (data.parentLeft + data.parentWidth + 20) + 1) + this.lineStroke) :
11302
11559
  ((data.childLeft - (data.parentLeft + data.parentWidth + 20)) + this.lineStroke)) + 'px;' +
11303
11560
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11304
11561
  }
11305
11562
  if (this.getParentPosition(data) === 'SSType4') {
11306
- div = div + 'left:' + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11563
+ div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11307
11564
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11308
11565
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType4">';
11309
11566
  div = div + rightArrow;
11310
- div = div + 'left:' + (data.childLeft - data.parentLeft) + 'px;' + duplicateStingTwo;
11567
+ div = div + direction + (data.childLeft - data.parentLeft) + 'px;' + duplicateStingTwo;
11311
11568
  div = div + eLine;
11312
11569
  div = div + 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;width:' +
11313
11570
  (data.childLeft - data.parentLeft) + 'px;' + duplicateStingThree;
@@ -11316,11 +11573,11 @@ class ConnectorLine {
11316
11573
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11317
11574
  }
11318
11575
  if (this.getParentPosition(data) === 'SSType3') {
11319
- div = div + 'left:' + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11576
+ div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11320
11577
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11321
11578
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType3">';
11322
11579
  div = div + rightArrow;
11323
- div = div + 'left:10px;' + duplicateStingTwo;
11580
+ div = div + direction + '10px;' + duplicateStingTwo;
11324
11581
  div = div + eLine;
11325
11582
  div = div + 'top:' + (-(6 + (5 + this.lineStroke) + (this.lineStroke / 2))) + 'px;width:10px;' + duplicateStingThree;
11326
11583
  div = div + eLine;
@@ -11329,7 +11586,7 @@ class ConnectorLine {
11329
11586
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11330
11587
  }
11331
11588
  if (this.getParentPosition(data) === 'SSType2') {
11332
- div = div + 'left:' + setInnerElementLeftSSType2 + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11589
+ div = div + direction + setInnerElementLeftSSType2 + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11333
11590
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11334
11591
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType2">';
11335
11592
  div = div + eLine;
@@ -11342,14 +11599,14 @@ class ConnectorLine {
11342
11599
  div = div + 'width:' + setInnerElementWidthSSType2 + 'px;' +
11343
11600
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11344
11601
  div = div + rightArrow;
11345
- div = div + 'left:' + setInnerElementWidthSSType2 + 'px;' +
11346
- this.getBorderStyles('left', 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
11602
+ div = div + direction + setInnerElementWidthSSType2 + 'px;' +
11603
+ this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
11347
11604
  'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' +
11348
11605
  (5 + this.lineStroke) + 'px;width:0;' +
11349
11606
  'height:0;position:relative;"></div></div>';
11350
11607
  }
11351
11608
  if (this.getParentPosition(data) === 'SSType1') {
11352
- div = div + 'left:' + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11609
+ div = div + direction + (data.childLeft - 20) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11353
11610
  ((data.parentIndex * data.rowHeight) + addTop +
11354
11611
  this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11355
11612
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SSType1">';
@@ -11362,114 +11619,114 @@ class ConnectorLine {
11362
11619
  div = div + eLine;
11363
11620
  div = div + 'width:10px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11364
11621
  div = div + rightArrow;
11365
- div = div + 'left:10px;' + this.getBorderStyles('left', 10) +
11622
+ div = div + direction + '10px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
11366
11623
  'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11367
11624
  'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
11368
11625
  }
11369
11626
  if (this.getParentPosition(data) === 'FFType1') {
11370
- div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11627
+ div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11371
11628
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11372
11629
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType1">';
11373
11630
  div = div + eLine;
11374
- div = div + 'left:' + (isMilestoneParent ? (((data.parentLeft + data.parentWidth) -
11631
+ div = div + direction + (isMilestoneParent ? (((data.parentLeft + data.parentWidth) -
11375
11632
  (data.childLeft + data.childWidth)) - 1) : ((data.parentLeft + data.parentWidth) -
11376
11633
  (data.childLeft + data.childWidth))) + 'px;' +
11377
11634
  'width:' + (isMilestoneParent ? (21 + this.lineStroke) : (20 + this.lineStroke)) + 'px;' +
11378
11635
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11379
11636
  div = div + eLine;
11380
- div = div + 'left:' + (((data.parentLeft + data.parentWidth) -
11637
+ div = div + direction + (((data.parentLeft + data.parentWidth) -
11381
11638
  (data.childLeft + data.childWidth)) + 20) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11382
11639
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
11383
11640
  div = div + eLine;
11384
- div = div + 'left:' + (isMilestone ? 4 : 10) + 'px;width:' + (isMilestone ?
11641
+ div = div + direction + (isMilestone ? 4 : 10) + 'px;width:' + (isMilestone ?
11385
11642
  (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + (16 + this.lineStroke)) :
11386
11643
  (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + (10 + this.lineStroke))) + 'px;' +
11387
11644
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11388
11645
  div = div + leftArrow;
11389
- div = div + (isMilestone ? 'left:0px;' : '') + this.getBorderStyles('right', 10) +
11646
+ div = div + (isMilestone ? direction + '0px;' : '') + this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) +
11390
11647
  'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) + 'px;' +
11391
11648
  'border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
11392
11649
  }
11393
11650
  if (this.getParentPosition(data) === 'FFType2') {
11394
- div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11651
+ div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11395
11652
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11396
11653
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType2">';
11397
11654
  div = div + eLine;
11398
- div = div + (isMilestoneParent ? 'left:-1px;' : '') + 'width:' +
11655
+ div = div + (isMilestoneParent ? direction + '-1px;' : '') + 'width:' +
11399
11656
  (isMilestoneParent ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) +
11400
11657
  (21 + this.lineStroke)) : (((data.childLeft + data.childWidth) -
11401
11658
  (data.parentLeft + data.parentWidth)) + (20 + this.lineStroke))) + 'px;' +
11402
11659
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11403
11660
  div = div + eLine;
11404
- div = div + 'left:' + (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 20) +
11661
+ div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 20) +
11405
11662
  'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11406
11663
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) +
11407
11664
  'position:relative;"></div>';
11408
11665
  div = div + eLine;
11409
- div = div + 'left:' + (isMilestone ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 4) :
11666
+ div = div + direction + (isMilestone ? (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 4) :
11410
11667
  (((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 10)) + 'px;' +
11411
11668
  'width:' + (isMilestone ? (16 + this.lineStroke) : (10 + this.lineStroke)) + 'px;' +
11412
11669
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11413
11670
  div = div + leftArrow;
11414
- div = div + 'left:' + ((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 'px;' +
11415
- this.getBorderStyles('right', 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
11671
+ div = div + direction + ((data.childLeft + data.childWidth) - (data.parentLeft + data.parentWidth)) + 'px;' +
11672
+ this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-6 - this.lineStroke) + 'px;' +
11416
11673
  'border-bottom-width:' + (5 + this.lineStroke) + 'px;border-top-width:' + (5 + this.lineStroke) +
11417
11674
  'px;width:0;height:0;position:relative;"></div></div>';
11418
11675
  }
11419
11676
  if (this.getParentPosition(data) === 'FFType3') {
11420
- div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11677
+ div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11421
11678
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11422
11679
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType3">';
11423
11680
  div = div + duplicateStingOne;
11424
11681
  div = div + eLine;
11425
- div = div + (isMilestone ? ('left:4px;width:' +
11682
+ div = div + (isMilestone ? (direction + '4px;width:' +
11426
11683
  (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + 16)) :
11427
- ('left:10px;width:' + (((data.parentLeft + data.parentWidth) -
11684
+ (direction + '10px;width:' + (((data.parentLeft + data.parentWidth) -
11428
11685
  (data.childLeft + data.childWidth)) + 10))) + 'px;top:' + (-(6 + (5 + this.lineStroke) +
11429
11686
  (this.lineStroke / 2))) + 'px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11430
11687
  div = div + eLine;
11431
- div = div + 'left:' + (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + 20) +
11688
+ div = div + direction + (((data.parentLeft + data.parentWidth) - (data.childLeft + data.childWidth)) + 20) +
11432
11689
  'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
11433
11690
  'width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11434
11691
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
11435
11692
  div = div + eLine;
11436
- div = div + (isMilestoneParent ? ('left:' + (((data.parentLeft + data.parentWidth) -
11437
- (data.childLeft + data.childWidth)) - 1) + 'px;width:21') : ('left:' + ((data.parentLeft + data.parentWidth) -
11693
+ div = div + (isMilestoneParent ? (direction + (((data.parentLeft + data.parentWidth) -
11694
+ (data.childLeft + data.childWidth)) - 1) + 'px;width:21') : (direction + ((data.parentLeft + data.parentWidth) -
11438
11695
  (data.childLeft + data.childWidth)) + 'px;width:20')) +
11439
11696
  'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
11440
11697
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11441
11698
  }
11442
11699
  if (this.getParentPosition(data) === 'FFType4') {
11443
- div = div + 'left:' + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11700
+ div = div + direction + (data.parentLeft + data.parentWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11444
11701
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11445
11702
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="FFType4">';
11446
11703
  div = div + leftArrow;
11447
- div = div + ('left:' + ((data.childLeft + data.childWidth) -
11704
+ div = div + (direction + ((data.childLeft + data.childWidth) -
11448
11705
  (data.parentLeft + data.parentWidth))) + 'px;' +
11449
- this.getBorderStyles('right', 10) + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
11706
+ this.getBorderStyles((!this.parent.enableRtl ? 'right' : 'left'), 10) + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
11450
11707
  'border-bottom-width:' + (5 + this.lineStroke) +
11451
11708
  'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;' +
11452
11709
  'position:relative;"></div>';
11453
11710
  div = div + eLine;
11454
- div = div + (isMilestone ? ('left:' + (((data.childLeft + data.childWidth) -
11711
+ div = div + (isMilestone ? (direction + (((data.childLeft + data.childWidth) -
11455
11712
  (data.parentLeft + data.parentWidth)) + 4) +
11456
- 'px;width:' + (16 + this.lineStroke)) : ('left:' + (((data.childLeft + data.childWidth) -
11713
+ 'px;width:' + (16 + this.lineStroke)) : (direction + (((data.childLeft + data.childWidth) -
11457
11714
  (data.parentLeft + data.parentWidth)) + 10) + 'px;width:' + (10 + this.lineStroke))) +
11458
11715
  'px;' + duplicateStingFive;
11459
11716
  div = div + eLine;
11460
- div = div + 'left:' + (((data.childLeft + data.childWidth) -
11717
+ div = div + direction + (((data.childLeft + data.childWidth) -
11461
11718
  (data.parentLeft + data.parentWidth)) + 20) + 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) +
11462
11719
  'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11463
11720
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke + 1)) + 'position:relative;"></div>';
11464
11721
  div = div + eLine;
11465
- div = div + (isMilestoneParent ? ('left:-1px;width:' + (((data.childLeft + data.childWidth) -
11722
+ div = div + (isMilestoneParent ? (direction + '-1px;width:' + (((data.childLeft + data.childWidth) -
11466
11723
  (data.parentLeft + data.parentWidth)) + (21 + this.lineStroke))) : ('width:' + (((data.childLeft + data.childWidth) -
11467
11724
  (data.parentLeft + data.parentWidth)) + (20 + this.lineStroke)))) + 'px;top:' +
11468
11725
  (-(13 + ((this.lineStroke - 1) * 2))) + 'px;' +
11469
11726
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11470
11727
  }
11471
11728
  if (this.getParentPosition(data) === 'SFType4') {
11472
- div = div + 'left:' + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11729
+ div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11473
11730
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;width:1px;' +
11474
11731
  'height:' + heightValue + 'px;position:absolute" data-connectortype="SFType4">';
11475
11732
  div = div + duplicateStingFour + 'top:' + (-5 - this.lineStroke + (this.lineStroke - 1)) + 'px;' +
@@ -11477,11 +11734,11 @@ class ConnectorLine {
11477
11734
  'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;' +
11478
11735
  'position:relative;"></div>';
11479
11736
  div = div + eLine;
11480
- div = div + 'left:' + (isMilestone ? ((((data.childLeft + data.childWidth) - (data.parentLeft)) + (14 + this.lineStroke)) +
11737
+ div = div + direction + (isMilestone ? ((((data.childLeft + data.childWidth) - (data.parentLeft)) + (14 + this.lineStroke)) +
11481
11738
  'px;width:16') : ((((data.childLeft + data.childWidth) - (data.parentLeft)) + 20) + 'px;width:' +
11482
11739
  (10 + this.lineStroke))) + 'px;' + duplicateStingFive;
11483
11740
  div = div + eLine;
11484
- div = div + 'left:' + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) + 'px;top:' +
11741
+ div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) + 'px;top:' +
11485
11742
  (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11486
11743
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.getconnectorLineGap(data) - (this.lineStroke - 1))) + 'position:relative;"></div>';
11487
11744
  div = div + eLine;
@@ -11497,25 +11754,25 @@ class ConnectorLine {
11497
11754
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11498
11755
  }
11499
11756
  if (this.getParentPosition(data) === 'SFType3') {
11500
- div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11757
+ div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11501
11758
  ((data.childIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11502
11759
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType3">';
11503
11760
  div = div + duplicateStingOne;
11504
11761
  div = div + eLine;
11505
- div = div + (isMilestone ? 'left:4px;width:' + (16 + this.lineStroke) : 'left:10px;width:' +
11762
+ div = div + (isMilestone ? direction + '4px;width:' + (16 + this.lineStroke) : direction + '10px;width:' +
11506
11763
  (10 + this.lineStroke)) + 'px;top:' + (-(13 + ((this.lineStroke - 1) * 2) - 1)) + 'px;' +
11507
11764
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11508
11765
  div = div + eLine;
11509
- div = div + 'left:20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' +
11766
+ div = div + direction + '20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:0px;' +
11510
11767
  this.getBorderStyles('left', this.lineStroke) +
11511
11768
  this.getBorderStyles('top', (heightValue + borderTopWidth - (this.lineStroke - 1))) + 'position:relative;"></div>';
11512
11769
  div = div + eLine;
11513
- div = div + 'left:20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
11770
+ div = div + direction + '20px;top:' + (-(13 + ((this.lineStroke - 1) * 2))) + 'px;width:' +
11514
11771
  ((data.parentLeft - (data.childLeft + data.childWidth + 20)) + this.lineStroke) + 'px;' +
11515
11772
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div></div>';
11516
11773
  }
11517
11774
  if (this.getParentPosition(data) === 'SFType1') {
11518
- div = div + 'left:' + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11775
+ div = div + direction + (data.parentLeft - 10) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11519
11776
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11520
11777
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType1">';
11521
11778
  div = div + eLine;
@@ -11527,12 +11784,12 @@ class ConnectorLine {
11527
11784
  div = div + 'width:' + (((data.childLeft + data.childWidth) - (data.parentLeft)) + (30 + this.lineStroke)) + 'px;' +
11528
11785
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11529
11786
  div = div + eLine;
11530
- div = div + 'left:' + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) +
11787
+ div = div + direction + (((data.childLeft + data.childWidth) - (data.parentLeft)) + 30) +
11531
11788
  'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11532
11789
  this.getBorderStyles('top', (this.getconnectorLineGap(data) - this.lineStroke)) + 'position:relative;"></div>';
11533
11790
  div = div + eLine;
11534
- div = div + (isMilestone ? ('left:' + (((data.childLeft + data.childWidth) -
11535
- (data.parentLeft)) + 15) + 'px;width:' + (15 + this.lineStroke)) : ('left:' +
11791
+ div = div + (isMilestone ? (direction + (((data.childLeft + data.childWidth) -
11792
+ (data.parentLeft)) + 15) + 'px;width:' + (15 + this.lineStroke)) : (direction +
11536
11793
  (((data.childLeft + data.childWidth) - (data.parentLeft)) + 20) + 'px;width:' + (10 + this.lineStroke))) + 'px;' +
11537
11794
  this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11538
11795
  div = div + duplicateStingFour + 'top:' + (-6 - this.lineStroke) + 'px;' +
@@ -11540,23 +11797,23 @@ class ConnectorLine {
11540
11797
  (5 + this.lineStroke) + 'px;position:relative;"></div></div>';
11541
11798
  }
11542
11799
  if (this.getParentPosition(data) === 'SFType2') {
11543
- div = div + 'left:' + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11800
+ div = div + direction + (data.childLeft + data.childWidth) + 'px;top:' + (isVirtual ? connectorLine$$1.top :
11544
11801
  ((data.parentIndex * data.rowHeight) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue)) + 'px;' +
11545
11802
  'width:1px;height:' + heightValue + 'px;position:absolute" data-connectortype="SFType2">';
11546
11803
  div = div + eLine;
11547
- div = div + 'left:' + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
11804
+ div = div + direction + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
11548
11805
  'px;width:11px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11549
11806
  div = div + eLine;
11550
- div = div + 'left:' + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
11807
+ div = div + direction + (((data.parentLeft) - (data.childLeft + data.childWidth)) - 10) +
11551
11808
  'px;width:0px;' + this.getBorderStyles('left', this.lineStroke) +
11552
11809
  this.getBorderStyles('top', (heightValue + borderTopWidth - this.lineStroke)) + 'position:relative;"></div>';
11553
11810
  div = div + eLine;
11554
- div = div + (isMilestone ? ('left:4px;width:' + (((data.parentLeft) - (data.childLeft + data.childWidth))
11555
- - (14 - this.lineStroke))) : ('left:10px;width:' + (((data.parentLeft) -
11811
+ div = div + (isMilestone ? (direction + '4px;width:' + (((data.parentLeft) - (data.childLeft + data.childWidth))
11812
+ - (14 - this.lineStroke))) : (direction + '10px;width:' + (((data.parentLeft) -
11556
11813
  (data.childLeft + data.childWidth)) - (20 - this.lineStroke)))) +
11557
11814
  'px;' + this.getBorderStyles('top', this.lineStroke) + 'position:relative;"></div>';
11558
11815
  div = div + leftArrow;
11559
- div = div + 'left:0px;' + this.getBorderStyles('right', 10) +
11816
+ div = div + direction + '0px;' + this.getBorderStyles((this.parent.enableRtl ? 'right' : 'left'), 10) +
11560
11817
  'top:' + (-6 - this.lineStroke) + 'px;border-bottom-width:' + (5 + this.lineStroke) +
11561
11818
  'px;border-top-width:' + (5 + this.lineStroke) + 'px;width:0;height:0;position:relative;"></div></div>';
11562
11819
  }
@@ -11743,12 +12000,19 @@ class Splitter$1 {
11743
12000
  this.parent.splitterElement = createElement('div', { className: splitter });
11744
12001
  this.parent.treeGridPane = createElement('div', { className: treeGridPane });
11745
12002
  this.parent.chartPane = createElement('div', { className: ganttChartPane });
11746
- this.parent.splitterElement.appendChild(this.parent.treeGridPane);
11747
- this.parent.splitterElement.appendChild(this.parent.chartPane);
12003
+ if (this.parent.enableRtl) {
12004
+ this.parent.splitterElement.appendChild(this.parent.chartPane);
12005
+ this.parent.splitterElement.appendChild(this.parent.treeGridPane);
12006
+ }
12007
+ else {
12008
+ this.parent.splitterElement.appendChild(this.parent.treeGridPane);
12009
+ this.parent.splitterElement.appendChild(this.parent.chartPane);
12010
+ }
11748
12011
  this.splitterObject = new Splitter({
11749
12012
  height: null,
11750
12013
  width: this.parent.ganttWidth.toString(),
11751
12014
  enablePersistence: this.parent.enablePersistence,
12015
+ enableRtl: this.parent.enableRtl,
11752
12016
  separatorSize: this.parent.splitterSettings.separatorSize,
11753
12017
  paneSettings: [
11754
12018
  {
@@ -11762,6 +12026,9 @@ class Splitter$1 {
11762
12026
  ],
11763
12027
  orientation: 'Horizontal',
11764
12028
  resizeStart: (args) => {
12029
+ if (this.parent.contextMenuModule && this.parent.contextMenuModule.isOpen) {
12030
+ this.parent.contextMenuModule.contextMenu.close();
12031
+ }
11765
12032
  const leftPane = args.pane[0];
11766
12033
  const rightPane = args.pane[1];
11767
12034
  this.splitterPreviousPositionGrid = leftPane.scrollWidth + 1 + 'px';
@@ -11923,6 +12190,7 @@ class Tooltip$1 {
11923
12190
  '.e-taskbar-left-resizer, .e-taskbar-right-resizer, .e-baseline-gantt-milestone, .e-gantt-manualparenttaskbar';
11924
12191
  this.toolTipObj.position = 'BottomCenter';
11925
12192
  this.toolTipObj.openDelay = 700;
12193
+ this.toolTipObj.enableRtl = this.parent.enableRtl;
11926
12194
  this.toolTipObj.enableHtmlSanitizer = false;
11927
12195
  this.toolTipObj.cssClass = ganttTooltip;
11928
12196
  this.toolTipObj.animation = { open: { effect: 'None', delay: 0 }, close: { effect: 'None', delay: 0 } };
@@ -12562,6 +12830,7 @@ class FocusModule {
12562
12830
  const top = containerPosition.top + (containerPosition.height / 2);
12563
12831
  const left = containerPosition.left + (containerPosition.width / 2);
12564
12832
  this.setActiveElement(e.target);
12833
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
12565
12834
  contextMenu.open(top, left);
12566
12835
  e.preventDefault();
12567
12836
  break;
@@ -12651,6 +12920,8 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
12651
12920
  let Gantt = class Gantt extends Component {
12652
12921
  constructor(options, element) {
12653
12922
  super(options, element);
12923
+ this.showIndicator = true;
12924
+ this.singleTier = 0;
12654
12925
  /** @hidden */
12655
12926
  this.isCancelled = false;
12656
12927
  /** @hidden */
@@ -12845,7 +13116,7 @@ let Gantt = class Gantt extends Component {
12845
13116
  /**
12846
13117
  * To check whether the date is in DST.
12847
13118
  *
12848
- * @param {Date} date .
13119
+ * @param {Date} date - Defines the date to check whether it is DST.
12849
13120
  * @returns {boolean} .
12850
13121
  * @private
12851
13122
  */
@@ -12936,9 +13207,348 @@ let Gantt = class Gantt extends Component {
12936
13207
  }
12937
13208
  this.splitterModule.renderSplitter();
12938
13209
  this.notify('renderPanels', null);
12939
- this.showSpinner();
13210
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
13211
+ this.showMaskRow();
13212
+ }
13213
+ else {
13214
+ this.showSpinner();
13215
+ }
12940
13216
  this.dataOperation.checkDataBinding();
12941
13217
  }
13218
+ hideMaskRow() {
13219
+ let isTablePresent = this.element.querySelectorAll('.e-masked-table').length;
13220
+ if (!isNullOrUndefined(this.contentMaskTable) && isTablePresent != 0) {
13221
+ const maskTable = this.contentMaskTable;
13222
+ remove(maskTable);
13223
+ this.contentMaskTable = null;
13224
+ }
13225
+ isTablePresent = this.element.querySelectorAll('.e-masked-table').length;
13226
+ if (!isNullOrUndefined(this.headerMaskTable) && isTablePresent != 0) {
13227
+ const maskTable = this.headerMaskTable;
13228
+ remove(maskTable);
13229
+ this.headerMaskTable = null;
13230
+ }
13231
+ while ((this.element.querySelectorAll('.e-table-background')).length != 0) {
13232
+ this.element.querySelectorAll('.e-table-background')[0].remove();
13233
+ }
13234
+ while ((this.element.querySelectorAll('.e-temp-timeline')).length != 0) {
13235
+ this.element.querySelectorAll('.e-temp-timeline')[0].remove();
13236
+ }
13237
+ if (this.element.querySelectorAll('.' + timelineHeaderTableContainer).length != 0) {
13238
+ for (var i = 0; i < this.singleTier; i++) {
13239
+ if (!isNullOrUndefined(this.element.querySelectorAll('.' + timelineHeaderTableContainer)[i])) {
13240
+ this.element.querySelectorAll('.' + timelineHeaderTableContainer)[i]['style'].visibility = "visible";
13241
+ }
13242
+ }
13243
+ }
13244
+ if (!isNullOrUndefined(this.element.querySelector('.' + timelineHeaderContainer))) {
13245
+ this.element.querySelector('.' + timelineHeaderContainer)['style'].position = "relative";
13246
+ }
13247
+ if (!isNullOrUndefined(this.element.getElementsByClassName(chartBodyContent)[0])) {
13248
+ this.element.getElementsByClassName(chartBodyContent)[0]['style'].visibility = "visible";
13249
+ }
13250
+ }
13251
+ showMaskRow() {
13252
+ const ganttHeader = this.chartPane.childNodes[0].childNodes[0];
13253
+ this.scrollLeftValue = this.chartPane.childNodes[0].childNodes[0]['scrollLeft'];
13254
+ const ganttContent = this.chartPane.childNodes[0].childNodes[1];
13255
+ if (!this.contentMaskTable) {
13256
+ if (ganttContent) {
13257
+ let content$$1 = ganttContent;
13258
+ this.renderBackGround(content$$1);
13259
+ if (this.element.querySelectorAll('.' + timelineHeaderTableContainer).length != 0) {
13260
+ this.singleTier = this.timelineModule.isSingleTier ? 1 : 2;
13261
+ for (var i = 0; i < this.singleTier; i++) {
13262
+ this.element.querySelectorAll('.' + timelineHeaderTableContainer)[i]['style'].visibility = "hidden";
13263
+ }
13264
+ }
13265
+ if (this.singleTier === 0) {
13266
+ this.singleTier = 2;
13267
+ }
13268
+ this.element.getElementsByClassName(chartBodyContent)[0]['style'].visibility = "hidden";
13269
+ this.contentMaskTable = this.contentMaskTable = this.createMaskTable(content$$1);
13270
+ }
13271
+ if (ganttHeader) {
13272
+ this.element.querySelector('.' + timelineHeaderContainer)['style'].position = "static";
13273
+ let content$$1 = ganttHeader;
13274
+ this.renderHeaderBackground(content$$1);
13275
+ this.headerMaskTable = this.headerMaskTable = this.createMaskTable(content$$1);
13276
+ }
13277
+ }
13278
+ }
13279
+ renderHeaderBackground(element) {
13280
+ const parentElement = element;
13281
+ const timelineHeight = element.getBoundingClientRect().height;
13282
+ const header = closest(parentElement, '.' + timelineHeaderContainer) ? true : false;
13283
+ if (header) {
13284
+ const div = this.createElement('div', { className: 'e-table-background' });
13285
+ const tempRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
13286
+ style: 'height: ' + timelineHeight + 'px;'
13287
+ } });
13288
+ let backgroundLines = 0;
13289
+ let containerWidth = Math.round(element.getBoundingClientRect().width);
13290
+ for (let i = 0; i < 3; i++) {
13291
+ if (this.enableRtl) {
13292
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
13293
+ style: 'left: ' + (containerWidth -= ((160))) + 'px; top:0px;'
13294
+ } }));
13295
+ }
13296
+ else {
13297
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
13298
+ style: 'left: ' + (backgroundLines += ((160))) + 'px; top:0px;'
13299
+ } }));
13300
+ }
13301
+ }
13302
+ parentElement.insertBefore(div, parentElement.firstChild);
13303
+ }
13304
+ }
13305
+ renderBackGround(element) {
13306
+ const parentElement = element;
13307
+ const timelineHeight = element.getBoundingClientRect().height;
13308
+ const content$$1 = closest(parentElement, '.' + chartBodyContainer) ? true : false;
13309
+ if (content$$1) {
13310
+ const div = this.createElement('div', { className: 'e-table-background' });
13311
+ const tempRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
13312
+ style: 'height: ' + timelineHeight + 'px;'
13313
+ } });
13314
+ let backgroundLines = 0;
13315
+ let containerWidth = Math.round(element.getBoundingClientRect().width);
13316
+ for (let i = 0; i < 3; i++) {
13317
+ if (this.enableRtl) {
13318
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
13319
+ style: 'left: ' + (containerWidth -= (160)) + 'px;z-index:1;'
13320
+ } }));
13321
+ }
13322
+ else {
13323
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
13324
+ style: 'left: ' + (backgroundLines += (160)) + 'px;z-index:1;'
13325
+ } }));
13326
+ }
13327
+ }
13328
+ parentElement.insertBefore(div, parentElement.firstChild);
13329
+ }
13330
+ }
13331
+ createMaskTable(element) {
13332
+ const parentElement = element;
13333
+ const shimmerContainerHeight = element.getBoundingClientRect().height;
13334
+ const header = closest(parentElement, '.' + timelineHeaderContainer) ? true : false;
13335
+ let maskTable;
13336
+ if (header) {
13337
+ maskTable = this.createEmptyTimeLineTable(shimmerContainerHeight);
13338
+ maskTable.style.position = 'sticky';
13339
+ maskTable.style.left = 0 + 'px';
13340
+ if (this.enableRtl) {
13341
+ maskTable.style.removeProperty('left');
13342
+ }
13343
+ }
13344
+ else {
13345
+ maskTable = this.createEmptyMaskTable(shimmerContainerHeight);
13346
+ maskTable.style.position = 'absolute';
13347
+ maskTable.style.zIndex = 1;
13348
+ }
13349
+ if (!header) {
13350
+ maskTable.style.height = element.getBoundingClientRect().height + 'px';
13351
+ parentElement.insertBefore(maskTable, parentElement.firstChild);
13352
+ }
13353
+ else {
13354
+ maskTable.style.height = element.getBoundingClientRect().height + 'px';
13355
+ let div = this.createElement('div', { className: 'e-temp-timeline' });
13356
+ div.style.width = 614 + 'px';
13357
+ div.style.position = 'sticky';
13358
+ if (this.enableRtl) {
13359
+ div.style['margin-right'] = Math.abs(this.scrollLeftValue) + 'px';
13360
+ }
13361
+ else {
13362
+ div.style['margin-left'] = this.scrollLeftValue + 'px';
13363
+ }
13364
+ div.appendChild(maskTable);
13365
+ parentElement.insertBefore(div, parentElement.firstChild);
13366
+ }
13367
+ return maskTable;
13368
+ }
13369
+ createEmptyTimeLineTable(timelineHeight) {
13370
+ const table = this.createElement('table', { className: 'e-table e-masked-table' });
13371
+ const tbody = this.createElement('tbody', { className: 'e-masked-tbody' });
13372
+ let row = [];
13373
+ const duplicateRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
13374
+ style: 'height: ' + timelineHeight / 2 + 'px;'
13375
+ } });
13376
+ for (let i = 0; i < this.singleTier; i++) {
13377
+ row.push(duplicateRow.cloneNode(true));
13378
+ }
13379
+ this.topBottomHeader = 0;
13380
+ for (let i = 0; i < row.length; i++) {
13381
+ tbody.appendChild(this.applyTimelineMaskRow(row[i]));
13382
+ this.topBottomHeader = this.topBottomHeader + 1;
13383
+ }
13384
+ table.appendChild(tbody);
13385
+ table.style.width = 100 + '%';
13386
+ return table;
13387
+ }
13388
+ applyTimelineMaskRow(row) {
13389
+ const maskRow = row;
13390
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13391
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13392
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13393
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13394
+ for (let i = 0; i < maskRow.childNodes.length - 1; i++) {
13395
+ maskRow.childNodes[i]['style']['width'] = 166 + 'px';
13396
+ }
13397
+ const maskCells = [].slice.call(maskRow.childNodes);
13398
+ for (let i = 0; i < maskCells.length; i++) {
13399
+ const maskCell = maskCells[i];
13400
+ switch (this.topBottomHeader) {
13401
+ case 0:
13402
+ if (this.enableRtl) {
13403
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-timelineHeader"></span>';
13404
+ maskCell.children[0]['style'].left = -20 + 'px';
13405
+ }
13406
+ else {
13407
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-timelineHeader"></span>';
13408
+ }
13409
+ break;
13410
+ case 1:
13411
+ maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13412
+ maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13413
+ maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
13414
+ const innerMaskCells = [].slice.call(maskCell.childNodes);
13415
+ for (let i = 0; i < innerMaskCells.length; i++) {
13416
+ const htmlInner = innerMaskCells[i];
13417
+ if (i === 0) {
13418
+ if (this.enableRtl) {
13419
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML"></span>';
13420
+ htmlInner.children[0]['style'].left = -14 + 'px';
13421
+ }
13422
+ else {
13423
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML"></span>';
13424
+ }
13425
+ }
13426
+ else if (i === 1) {
13427
+ if (this.enableRtl) {
13428
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML1"></span>';
13429
+ htmlInner.children[0]['style'].left = -30 + 'px';
13430
+ }
13431
+ else {
13432
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML1"></span>';
13433
+ }
13434
+ }
13435
+ else {
13436
+ if (this.enableRtl) {
13437
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML2"></span>';
13438
+ htmlInner.children[0]['style'].left = -60 + 'px';
13439
+ }
13440
+ else {
13441
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML2"></span>';
13442
+ }
13443
+ }
13444
+ }
13445
+ break;
13446
+ }
13447
+ }
13448
+ return maskRow;
13449
+ }
13450
+ createEmptyMaskTable(timelineHeight) {
13451
+ const table = this.createElement('table', { className: 'e-table e-masked-table' });
13452
+ const tbody = this.createElement('tbody', { className: 'e-masked-tbody' });
13453
+ let row = [];
13454
+ const duplicateRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
13455
+ style: 'height: ' + timelineHeight / 7 + 'px;'
13456
+ } });
13457
+ this.columnLoop = 0;
13458
+ for (let i = 0; i < 6; i++) {
13459
+ row.push(duplicateRow.cloneNode(true));
13460
+ }
13461
+ for (let j = 0; j < row.length; j++) {
13462
+ if (this.columnLoop < 4) {
13463
+ this.columnLoop = this.columnLoop + 1;
13464
+ }
13465
+ else if (this.columnLoop === 4) {
13466
+ this.columnLoop = 1;
13467
+ }
13468
+ tbody.appendChild(this.applyMaskRow(row[j]));
13469
+ }
13470
+ table.appendChild(tbody);
13471
+ table.style.width = 100 + '%';
13472
+ let div = this.createElement('div', { className: 'e-temp-container' });
13473
+ div.style.width = 'calc(100% - ' + 17 + 'px)';
13474
+ div.style.overflow = 'hidden';
13475
+ div.appendChild(table);
13476
+ return div;
13477
+ }
13478
+ applyMaskRow(row) {
13479
+ const maskRow = row;
13480
+ if (this.columnLoop < 4) {
13481
+ maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));
13482
+ maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));
13483
+ }
13484
+ else {
13485
+ maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));
13486
+ }
13487
+ const maskCells = [].slice.call(maskRow.childNodes);
13488
+ for (let i = 0; i < maskCells.length; i++) {
13489
+ const maskCell = maskCells[i];
13490
+ switch (this.columnLoop) {
13491
+ case 1:
13492
+ if (i === 0) {
13493
+ if (this.enableRtl) {
13494
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell01"></span>';
13495
+ maskCell.children[0]['style'].left = -14 + 'px';
13496
+ }
13497
+ else {
13498
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell01"></span>';
13499
+ }
13500
+ }
13501
+ else {
13502
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell02"></span>';
13503
+ }
13504
+ break;
13505
+ case 2:
13506
+ if (i === 0) {
13507
+ if (this.enableRtl) {
13508
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell03"></span>';
13509
+ maskCell.children[0]['style'].left = -14 + 'px';
13510
+ }
13511
+ else {
13512
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell03"></span>';
13513
+ }
13514
+ }
13515
+ else {
13516
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell04"></span>';
13517
+ }
13518
+ break;
13519
+ case 3:
13520
+ if (i === 0) {
13521
+ if (this.enableRtl) {
13522
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell05"></span>';
13523
+ maskCell.children[0]['style'].left = -64 + 'px';
13524
+ }
13525
+ else {
13526
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell05"></span>';
13527
+ }
13528
+ }
13529
+ else {
13530
+ if (this.enableRtl) {
13531
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell06"></span>';
13532
+ maskCell.children[0]['style'].left = -192 + 'px';
13533
+ }
13534
+ else {
13535
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell06"></span>';
13536
+ }
13537
+ }
13538
+ break;
13539
+ case 4:
13540
+ if (this.enableRtl) {
13541
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell07"></span>';
13542
+ maskCell.children[0]['style'].left = -388 + 'px';
13543
+ }
13544
+ else {
13545
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell07"></span>';
13546
+ }
13547
+ break;
13548
+ }
13549
+ }
13550
+ return maskRow;
13551
+ }
12942
13552
  /**
12943
13553
  * Method used to show spinner.
12944
13554
  *
@@ -12964,7 +13574,7 @@ let Gantt = class Gantt extends Component {
12964
13574
  this.timelineModule.calculateZoomingLevelsPerDayWidth(); // To calculate the perDaywidth
12965
13575
  }
12966
13576
  /**
12967
- * @param {boolean} isChange .
13577
+ * @param {boolean} isChange -Defines whether task data is changed.
12968
13578
  * @returns {void} .
12969
13579
  * @private
12970
13580
  */
@@ -13064,7 +13674,7 @@ let Gantt = class Gantt extends Component {
13064
13674
  /**
13065
13675
  * Method for updating row height value in connector line collections
13066
13676
  *
13067
- * @param {IConnectorLineObject[]} collection .
13677
+ * @param {IConnectorLineObject[]} collection -Defines the CollectorLine collection.
13068
13678
  * @returns {void} .
13069
13679
  * @private
13070
13680
  */
@@ -13100,7 +13710,7 @@ let Gantt = class Gantt extends Component {
13100
13710
  this.currentViewData = this.treeGrid.getCurrentViewRecords().slice();
13101
13711
  }
13102
13712
  /**
13103
- * @param {IGanttData} records .
13713
+ * @param {IGanttData} records -Defines the delete record collections.
13104
13714
  * @returns {IGanttData} .
13105
13715
  * @private
13106
13716
  */
@@ -13112,7 +13722,7 @@ let Gantt = class Gantt extends Component {
13112
13722
  return updatedRecord;
13113
13723
  }
13114
13724
  /**
13115
- * @param {object} args .
13725
+ * @param {object} args -Update the gantt element content height.
13116
13726
  * @returns {void} .
13117
13727
  * @private
13118
13728
  */
@@ -13463,7 +14073,12 @@ let Gantt = class Gantt extends Component {
13463
14073
  this.treeGrid.height = '100%';
13464
14074
  this.notify('tree-grid-created', {});
13465
14075
  this.createGanttPopUpElement();
13466
- this.hideSpinner();
14076
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
14077
+ this.hideMaskRow();
14078
+ }
14079
+ else {
14080
+ this.hideSpinner();
14081
+ }
13467
14082
  setValue('isGanttCreated', true, args);
13468
14083
  this.renderComplete();
13469
14084
  }
@@ -13475,6 +14090,11 @@ let Gantt = class Gantt extends Component {
13475
14090
  this.criticalPathModule.showCriticalPath(this.enableCriticalPath);
13476
14091
  }
13477
14092
  this.notify('recordsUpdated', {});
14093
+ for (let i = 0; i < document.getElementsByClassName('e-timeline-header-table-container').length; i++) {
14094
+ for (let j = 0; j < document.getElementsByClassName('e-timeline-header-table-container')[i].children[0].children[0].children.length; j++) {
14095
+ document.getElementsByClassName('e-timeline-header-table-container')[i].children[0].children[0].children[j].children[0].setAttribute('tabindex', '-1');
14096
+ }
14097
+ }
13478
14098
  if (this.enableCriticalPath && this.criticalPathModule) {
13479
14099
  let criticalModule = this.criticalPathModule;
13480
14100
  this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);
@@ -13506,8 +14126,8 @@ let Gantt = class Gantt extends Component {
13506
14126
  /**
13507
14127
  * Called internally, if any of the property value changed.
13508
14128
  *
13509
- * @param {GanttModel} newProp .
13510
- * @param {GanttModel} oldProp .
14129
+ * @param {GanttModel} newProp - Defines the New GanttModel.
14130
+ * @param {GanttModel} oldProp - Defines the old GanttModel.
13511
14131
  * @returns {void} .
13512
14132
  * @private
13513
14133
  */
@@ -13569,6 +14189,12 @@ let Gantt = class Gantt extends Component {
13569
14189
  this.dataOperation.checkDataBinding(true);
13570
14190
  break;
13571
14191
  case 'enableCriticalPath':
14192
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
14193
+ this.hideMaskRow();
14194
+ }
14195
+ else {
14196
+ this.hideSpinner();
14197
+ }
13572
14198
  if (this.enableCriticalPath && this.criticalPathModule) {
13573
14199
  this.criticalPathModule.showCriticalPath(this.enableCriticalPath);
13574
14200
  let criticalModule = this.criticalPathModule;
@@ -14115,7 +14741,7 @@ let Gantt = class Gantt extends Component {
14115
14741
  thWidth = thElements[n].style.width;
14116
14742
  const divElement = createElement('div', {
14117
14743
  className: 'e-line-container-cell',
14118
- styles: 'left:' + leftPos + 'px'
14744
+ styles: (this.enableRtl ? 'right:' + (leftPos + 1) : 'left:' + leftPos) + 'px'
14119
14745
  });
14120
14746
  containerDiv.appendChild(divElement);
14121
14747
  }
@@ -14250,12 +14876,18 @@ let Gantt = class Gantt extends Component {
14250
14876
  }
14251
14877
  /**
14252
14878
  *
14253
- * @param {object} args .
14879
+ * @param {object} args -Defines the edited event args.
14254
14880
  * @returns {void} .
14255
14881
  * @private
14256
14882
  */
14257
14883
  actionBeginTask(args) {
14258
14884
  this.trigger('actionBegin', args);
14885
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
14886
+ this.showMaskRow();
14887
+ }
14888
+ else {
14889
+ this.showSpinner();
14890
+ }
14259
14891
  }
14260
14892
  /**
14261
14893
  * To move horizontal scroll bar of Gantt to specific date.
@@ -14291,7 +14923,7 @@ let Gantt = class Gantt extends Component {
14291
14923
  if (!isNullOrUndefined(left)) {
14292
14924
  left = this.ganttChartModule.scrollElement.scrollWidth <= left ?
14293
14925
  this.ganttChartModule.scrollElement.scrollWidth : left;
14294
- this.ganttChartModule.scrollObject.setScrollLeft(left);
14926
+ this.ganttChartModule.scrollObject.setScrollLeft(left, this.enableRtl ? -1 : 0);
14295
14927
  }
14296
14928
  if (!isNullOrUndefined(top)) {
14297
14929
  top = this.ganttChartModule.scrollElement.scrollHeight <= top ? this.ganttChartModule.scrollElement.scrollHeight : top;
@@ -14324,8 +14956,8 @@ let Gantt = class Gantt extends Component {
14324
14956
  /**
14325
14957
  * Get parent task by clone parent item.
14326
14958
  *
14327
- * @param {IGanttData} ganttRecord .
14328
- * @param {number} level .
14959
+ * @param {IGanttData} ganttRecord -Defines the Gantt record.
14960
+ * @param {number} level -Defines the selected record level.
14329
14961
  * @returns {IGanttData} .
14330
14962
  * @hidden
14331
14963
  */
@@ -14438,7 +15070,7 @@ let Gantt = class Gantt extends Component {
14438
15070
  /**
14439
15071
  * To update timeline at start point with one unit.
14440
15072
  *
14441
- * @param {string} mode .
15073
+ * @param {string} mode - Render previous span of Timeline.
14442
15074
  * @returns {void} .
14443
15075
  * @public
14444
15076
  */
@@ -14448,7 +15080,7 @@ let Gantt = class Gantt extends Component {
14448
15080
  /**
14449
15081
  * To update timeline at end point with one unit.
14450
15082
  *
14451
- * @param {string} mode .
15083
+ * @param {string} mode - Render next span of Timeline.
14452
15084
  * @returns {void} .
14453
15085
  * @public
14454
15086
  */
@@ -14522,7 +15154,7 @@ let Gantt = class Gantt extends Component {
14522
15154
  /**
14523
15155
  * Method to clear edited collections in gantt set edit flag value
14524
15156
  *
14525
- * @param {boolean} isStart .
15157
+ * @param {boolean} isStart -Defines whether to initiate edit action.
14526
15158
  * @returns {void} .
14527
15159
  * @private
14528
15160
  */
@@ -14541,18 +15173,24 @@ let Gantt = class Gantt extends Component {
14541
15173
  */
14542
15174
  /* eslint-disable-next-line */
14543
15175
  setRecordValue(field, value, record, isTaskData) {
15176
+ value = isUndefined(value) ? null : value;
14544
15177
  if (this.isOnEdit || this.isOnDelete) {
14545
15178
  this.makeCloneData(field, record, isTaskData);
14546
- const id = isTaskData ? record.rowUniqueID : record.ganttProperties.rowUniqueID;
15179
+ const ganttData = isTaskData ? record : record.ganttProperties;
15180
+ const id = ganttData.rowUniqueID;
14547
15181
  const task = this.getRecordByID(id);
14548
- if (task && this.editedRecords.indexOf(task) === -1) {
15182
+ let isValid = false;
15183
+ if (isNullOrUndefined(value) || (!isNullOrUndefined(value) && !isNullOrUndefined(ganttData[field]) && (value instanceof Date ? value.getTime() !==
15184
+ ganttData[field].getTime() : ganttData[field] !== value))) {
15185
+ isValid = true;
15186
+ }
15187
+ if (task && ((this.editedRecords.indexOf(task) === -1 && isValid) || this.editedRecords.length === 0)) {
14549
15188
  this.editedRecords.push(task);
14550
15189
  if (this.enableImmutableMode) {
14551
15190
  this.modifiedRecords.push(task);
14552
15191
  }
14553
15192
  }
14554
15193
  }
14555
- value = isUndefined(value) ? null : value;
14556
15194
  setValue(field, value, record);
14557
15195
  }
14558
15196
  makeCloneData(field, record, isTaskData) {
@@ -14795,8 +15433,8 @@ let Gantt = class Gantt extends Component {
14795
15433
  /**
14796
15434
  * To update existing taskId with new unique Id.
14797
15435
  *
14798
- * @param {number | string} currentId .
14799
- * @param {number | string} newId .
15436
+ * @param {number | string} currentId - Defines the current Id of the record.
15437
+ * @param {number | string} newId - Defines the new Id of the record.
14800
15438
  * @returns {void} .
14801
15439
  */
14802
15440
  updateTaskId(currentId, newId) {
@@ -14898,9 +15536,9 @@ let Gantt = class Gantt extends Component {
14898
15536
  /**
14899
15537
  * Reorder the rows based on given indexes and position
14900
15538
  *
14901
- * @param {number[]} fromIndexes .
14902
- * @param {number} toIndex .
14903
- * @param {string} position .
15539
+ * @param {number[]} fromIndexes - Defines the Dragged record index.
15540
+ * @param {number} toIndex - Defines the Dropped record index.
15541
+ * @param {string} position -Defines the position of the dropped row.
14904
15542
  * @returns {void} .
14905
15543
  */
14906
15544
  reorderRows(fromIndexes, toIndex, position) {
@@ -15075,7 +15713,7 @@ let Gantt = class Gantt extends Component {
15075
15713
  /**
15076
15714
  * Method to get class name for unscheduled tasks
15077
15715
  *
15078
- * @param {ITaskData} ganttProp .
15716
+ * @param {ITaskData} ganttProp -Defines the Gantt propertie.
15079
15717
  * @returns {boolean} .
15080
15718
  * @private
15081
15719
  */
@@ -15149,7 +15787,7 @@ let Gantt = class Gantt extends Component {
15149
15787
  const clientTop = document.documentElement.clientTop || document.body.clientTop || 0;
15150
15788
  const clientLeft = document.documentElement.clientLeft || document.body.clientLeft || 0;
15151
15789
  const top = box.top + scrollTop - clientTop;
15152
- const left = box.left + scrollLeft - clientLeft;
15790
+ const left = this.enableRtl ? box.right + scrollLeft - clientLeft : box.left + scrollLeft - clientLeft;
15153
15791
  return { top: Math.round(top), left: Math.round(left), width: box.width, height: box.height };
15154
15792
  }
15155
15793
  /**
@@ -15421,7 +16059,7 @@ let Gantt = class Gantt extends Component {
15421
16059
  /**
15422
16060
  * To change the mode of a record.
15423
16061
  *
15424
- * @param {object} data .
16062
+ * @param {object} data - Use to change the TaskMode either manual, auto or custom.
15425
16063
  * @returns {void} .
15426
16064
  */
15427
16065
  changeTaskMode(data) {
@@ -15493,6 +16131,12 @@ __decorate([
15493
16131
  __decorate([
15494
16132
  Property(true)
15495
16133
  ], Gantt.prototype, "disableHtmlEncode", void 0);
16134
+ __decorate([
16135
+ Complex({}, LoadingIndicator)
16136
+ ], Gantt.prototype, "loadingIndicator", void 0);
16137
+ __decorate([
16138
+ Property(true)
16139
+ ], Gantt.prototype, "enableVirtualMaskRow", void 0);
15496
16140
  __decorate([
15497
16141
  Property(true)
15498
16142
  ], Gantt.prototype, "autoFocusTasks", void 0);
@@ -16518,6 +17162,7 @@ class EditTooltip {
16518
17162
  this.toolTipObj = new Tooltip({
16519
17163
  opensOn: opensOn,
16520
17164
  position: 'TopRight',
17165
+ enableRtl: this.parent.enableRtl,
16521
17166
  mouseTrail: mouseTrail,
16522
17167
  cssClass: ganttTooltip,
16523
17168
  target: target ? target : null,
@@ -16567,12 +17212,15 @@ class EditTooltip {
16567
17212
  this.parent.tooltipModule.toolTipObj.close();
16568
17213
  this.updateTooltip(segmentIndex);
16569
17214
  if (this.taskbarEdit.connectorSecondAction === 'ConnectorPointLeftDrag') {
17215
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
16570
17216
  this.toolTipObj.open(this.taskbarEdit.connectorSecondElement.querySelector('.' + connectorPointLeft));
16571
17217
  }
16572
17218
  else if (this.taskbarEdit.connectorSecondAction === 'ConnectorPointRightDrag') {
17219
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
16573
17220
  this.toolTipObj.open(this.taskbarEdit.connectorSecondElement.querySelector('.' + connectorPointRight));
16574
17221
  }
16575
17222
  else {
17223
+ // eslint-disable-next-line security/detect-non-literal-fs-filename
16576
17224
  this.toolTipObj.open(this.taskbarEdit.taskBarEditElement);
16577
17225
  }
16578
17226
  }
@@ -16605,14 +17253,29 @@ class EditTooltip {
16605
17253
  this.toolTipObj.content = this.getTooltipText(segmentIndex);
16606
17254
  this.toolTipObj.refresh(this.taskbarEdit.taskBarEditElement);
16607
17255
  if (this.taskbarEdit.taskBarEditAction === 'LeftResizing') {
16608
- this.toolTipObj.offsetX = -taskWidth;
17256
+ if (this.parent.enableRtl) {
17257
+ this.toolTipObj.offsetX = 0;
17258
+ }
17259
+ else {
17260
+ this.toolTipObj.offsetX = -taskWidth;
17261
+ }
16609
17262
  }
16610
17263
  else if (this.taskbarEdit.taskBarEditAction === 'RightResizing' ||
16611
17264
  this.taskbarEdit.taskBarEditAction === 'ParentResizing') {
16612
- this.toolTipObj.offsetX = 0;
17265
+ if (this.parent.enableRtl) {
17266
+ this.toolTipObj.offsetX = -taskWidth;
17267
+ }
17268
+ else {
17269
+ this.toolTipObj.offsetX = 0;
17270
+ }
16613
17271
  }
16614
17272
  else if (this.taskbarEdit.taskBarEditAction === 'ProgressResizing') {
16615
- this.toolTipObj.offsetX = -(taskWidth - progressWidth);
17273
+ if (this.parent.enableRtl) {
17274
+ this.toolTipObj.offsetX = -(progressWidth);
17275
+ }
17276
+ else {
17277
+ this.toolTipObj.offsetX = -(taskWidth - progressWidth);
17278
+ }
16616
17279
  }
16617
17280
  else if (this.taskbarEdit.taskBarEditAction === 'MilestoneDrag') {
16618
17281
  this.toolTipObj.offsetX = -(this.parent.chartRowsModule.milestoneHeight / 2);
@@ -17118,8 +17781,14 @@ class TaskbarEdit extends DateProcessor {
17118
17781
  const e = this.getCoordinate(event);
17119
17782
  if (e.pageX || e.pageY) {
17120
17783
  const containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
17121
- this.mouseDownX = (e.pageX - containerPosition.left) +
17122
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
17784
+ if (this.parent.enableRtl) {
17785
+ this.mouseDownX = Math.abs(e.pageX - (containerPosition.left +
17786
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));
17787
+ }
17788
+ else {
17789
+ this.mouseDownX = (e.pageX - containerPosition.left) +
17790
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
17791
+ }
17123
17792
  this.tooltipPositionX = this.mouseDownX;
17124
17793
  this.mouseDownY = e.pageY - containerPosition.top +
17125
17794
  this.parent.ganttChartModule.scrollObject.previousScroll.top;
@@ -17163,8 +17832,14 @@ class TaskbarEdit extends DateProcessor {
17163
17832
  }
17164
17833
  const containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
17165
17834
  const e = this.getCoordinate(event);
17166
- this.mouseMoveX = e.pageX - containerPosition.left +
17167
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
17835
+ if (this.parent.enableRtl) {
17836
+ this.mouseMoveX = Math.abs(e.pageX - (containerPosition.left +
17837
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));
17838
+ }
17839
+ else {
17840
+ this.mouseMoveX = e.pageX - containerPosition.left +
17841
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
17842
+ }
17168
17843
  this.mouseMoveY = e.pageY - containerPosition.top +
17169
17844
  this.parent.ganttChartModule.scrollObject.previousScroll.top;
17170
17845
  this.dragMouseLeave = false;
@@ -17180,6 +17855,17 @@ class TaskbarEdit extends DateProcessor {
17180
17855
  args.requestType = 'mergeSegment';
17181
17856
  }
17182
17857
  this.parent.trigger('actionBegin', args, (arg) => {
17858
+ if (args.taskBarEditAction === "ConnectorPointRightDrag" || args.taskBarEditAction === "ConnectorPointLeftDrag"
17859
+ || args.taskBarEditAction === "LeftResizing" || args.taskBarEditAction === "RightResizing"
17860
+ || args.taskBarEditAction === "ProgressResizing" || args.taskBarEditAction === "ChildDrag" || args.taskBarEditAction === "ParentDrag" || args.taskBarEditAction === "MilestoneDrag" || args.taskBarEditAction === "ManualParentDrag") {
17861
+ this.parent.showIndicator = false;
17862
+ }
17863
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer" && this.parent.showIndicator) {
17864
+ this.parent.showMaskRow();
17865
+ }
17866
+ else if (this.parent.showIndicator) {
17867
+ this.parent.showSpinner();
17868
+ }
17183
17869
  if (arg.cancel === false) {
17184
17870
  this.taskBarEditingAction(event, false);
17185
17871
  }
@@ -17261,8 +17947,14 @@ class TaskbarEdit extends DateProcessor {
17261
17947
  const containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
17262
17948
  const e = this.getCoordinate(event);
17263
17949
  if (e.pageX || e.pageY) {
17264
- this.mouseMoveX = e.pageX - containerPosition.left +
17265
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
17950
+ if (this.parent.enableRtl) {
17951
+ this.mouseMoveX = Math.abs(e.pageX - (containerPosition.left +
17952
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));
17953
+ }
17954
+ else {
17955
+ this.mouseMoveX = e.pageX - containerPosition.left +
17956
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
17957
+ }
17266
17958
  this.tooltipPositionX = this.mouseMoveX;
17267
17959
  this.mouseMoveY = e.pageY - containerPosition.top +
17268
17960
  this.parent.ganttChartModule.scrollObject.previousScroll.top;
@@ -17273,8 +17965,15 @@ class TaskbarEdit extends DateProcessor {
17273
17965
  if ((this.taskBarEditRecord.ganttProperties.width > 3 && !(this.taskBarEditAction === 'ProgressResizing' &&
17274
17966
  (this.taskBarEditRecord.ganttProperties.progress === 0 || this.taskBarEditRecord.ganttProperties.progress === 100))) ||
17275
17967
  isConnectorLineEdit) {
17276
- const mouseX = this.mouseMoveX - this.parent.ganttChartModule.scrollObject.previousScroll.left +
17277
- containerPosition.left;
17968
+ let mouseX = 0;
17969
+ if (this.parent.enableRtl) {
17970
+ mouseX = Math.abs(Math.abs(this.mouseMoveX) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left) +
17971
+ containerPosition.left);
17972
+ }
17973
+ else {
17974
+ mouseX = this.mouseMoveX - this.parent.ganttChartModule.scrollObject.previousScroll.left +
17975
+ containerPosition.left;
17976
+ }
17278
17977
  const mouseY = this.mouseMoveY - this.parent.ganttChartModule.scrollObject.previousScroll.top +
17279
17978
  containerPosition.top;
17280
17979
  if ((mouseX + 20) >
@@ -17282,6 +17981,12 @@ class TaskbarEdit extends DateProcessor {
17282
17981
  this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;
17283
17982
  this.startScrollTimer('right');
17284
17983
  }
17984
+ else if ((mouseX + 40) >
17985
+ containerPosition.left + this.parent.ganttChartModule.chartBodyContainer.offsetWidth && this.parent.enableRtl && this.parent.ganttChartModule.scrollObject.previousScroll.left == 0) {
17986
+ this.parent.ganttChartModule.scrollObject.previousScroll.left = -1;
17987
+ this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;
17988
+ this.startScrollTimer('right');
17989
+ }
17285
17990
  else if ((mouseX - 20) < containerPosition.left) {
17286
17991
  this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;
17287
17992
  this.startScrollTimer('left');
@@ -17312,7 +18017,12 @@ class TaskbarEdit extends DateProcessor {
17312
18017
  */
17313
18018
  startScrollTimer(direction) {
17314
18019
  this.stopScrollTimer();
18020
+ let leftSign = 0;
17315
18021
  this.scrollTimer = window.setInterval(() => {
18022
+ if (Math.sign(this.timerCount) == -1) {
18023
+ leftSign = -1;
18024
+ this.timerCount = Math.abs(this.timerCount);
18025
+ }
17316
18026
  if (direction === 'right') {
17317
18027
  this.timerCount = (this.timerCount + 1) >= this.parent.timelineModule.totalTimelineWidth ?
17318
18028
  this.parent.timelineModule.totalTimelineWidth : (this.timerCount + 1);
@@ -17327,7 +18037,7 @@ class TaskbarEdit extends DateProcessor {
17327
18037
  this.parent.ganttChartModule.scrollObject.setScrollTop(this.timerCount);
17328
18038
  }
17329
18039
  else {
17330
- this.parent.ganttChartModule.scrollObject.setScrollLeft(this.timerCount);
18040
+ this.parent.ganttChartModule.scrollObject.setScrollLeft(this.timerCount, leftSign);
17331
18041
  }
17332
18042
  if (this.taskBarEditAction === 'ConnectorPointLeftDrag'
17333
18043
  || this.taskBarEditAction === 'ConnectorPointRightDrag') {
@@ -18023,6 +18733,7 @@ class TaskbarEdit extends DateProcessor {
18023
18733
  */
18024
18734
  setItemPosition() {
18025
18735
  const item = this.taskBarEditRecord.ganttProperties;
18736
+ let position = this.parent.enableRtl ? "right" : "left";
18026
18737
  const segment = !isNullOrUndefined(item.segments) ? item.segments[this.segmentIndex] : null;
18027
18738
  const width = this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone ?
18028
18739
  this.parent.chartRowsModule.milestoneHeight : item.width;
@@ -18054,11 +18765,16 @@ class TaskbarEdit extends DateProcessor {
18054
18765
  if (segmentedTaskBarContainer && !isNullOrUndefined(item.segments)
18055
18766
  && (this.taskBarEditAction === 'RightResizing' || this.segmentIndex !== 0)) {
18056
18767
  this.taskBarEditElement.style.width = (segment.width) + 'px';
18057
- this.taskBarEditElement.style.left = (segment.left) + 'px';
18768
+ if (this.parent.enableRtl) {
18769
+ this.taskBarEditElement.style.right = (segment.left) + 'px';
18770
+ }
18771
+ else {
18772
+ this.taskBarEditElement.style.left = (segment.left) + 'px';
18773
+ }
18058
18774
  }
18059
18775
  taskBarMainContainer$$1.style.width = (width) + 'px';
18060
- taskBarMainContainer$$1.style.left = (item.left) + 'px';
18061
18776
  leftLabelContainer$$1.style.width = (item.left) + 'px';
18777
+ taskBarMainContainer$$1.style.setProperty(position, (item.left) + 'px');
18062
18778
  if (this.taskBarEditAction === 'LeftResizing' && this.segmentIndex === 0) {
18063
18779
  const parent = this.taskBarEditElement.parentElement;
18064
18780
  const segmentedTasks = parent.getElementsByClassName('e-segmented-taskbar');
@@ -18066,31 +18782,42 @@ class TaskbarEdit extends DateProcessor {
18066
18782
  const segment = item.segments[i];
18067
18783
  const segmentElement = segmentedTasks[i];
18068
18784
  segmentElement.style.width = (segment.width) + 'px';
18069
- segmentElement.style.left = (segment.left) + 'px';
18785
+ if (this.parent.enableRtl) {
18786
+ segmentElement.style.right = (segment.left) + 'px';
18787
+ }
18788
+ else {
18789
+ segmentElement.style.left = (segment.left) + 'px';
18790
+ }
18070
18791
  }
18071
18792
  }
18072
18793
  if (!isNullOrUndefined(rightLabelContainer$$1)) {
18073
- rightLabelContainer$$1.style.left = (item.left + width) + 'px';
18794
+ rightLabelContainer$$1.style.setProperty(position, (item.left + width) + 'px');
18074
18795
  }
18075
18796
  }
18076
18797
  if (traceConnectorPointRight) {
18077
- traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width + 2)) + 'px';
18798
+ if (this.parent.enableRtl) {
18799
+ traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width - 2)) + 'px';
18800
+ }
18801
+ else {
18802
+ traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width + 2)) + 'px';
18803
+ }
18078
18804
  }
18079
18805
  if (this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone) {
18080
- taskBarMainContainer$$1.style.left = (item.left - (width / 2)) + 'px';
18806
+ taskBarMainContainer$$1.style.setProperty(position, (item.left - (width / 2)) + 'px');
18081
18807
  leftLabelContainer$$1.style.width = (item.left - (width / 2)) + 'px';
18082
18808
  if (!isNullOrUndefined(rightLabelContainer$$1)) {
18083
- rightLabelContainer$$1.style.left = (item.left + (width / 2)) + 'px';
18809
+ rightLabelContainer$$1.style.setProperty(position, (item.left + (width / 2)) + 'px');
18084
18810
  }
18085
18811
  }
18086
18812
  else if (this.taskBarEditAction === 'ProgressResizing') {
18087
18813
  if (this.segmentIndex === -1) {
18088
- traceChildTaskBar$$1.style.left = (item.left + item.progressWidth - 10) + 'px';
18814
+ traceChildTaskBar$$1.style.setProperty(position, (item.left + item.progressWidth - 10) + 'px');
18089
18815
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
18090
18816
  traceChildProgressBar$$1.style.width = item.progressWidth + 'px';
18091
18817
  traceChildProgressBar$$1.style.borderBottomRightRadius = this.progressBorderRadius + 'px';
18092
18818
  traceChildProgressBar$$1.style.borderTopRightRadius = this.progressBorderRadius + 'px';
18093
- childProgressResizer$$1.style.left = item.progressWidth - 8 + 'px';
18819
+ const width = this.parent.enableRtl ? item.progressWidth + 8 : item.progressWidth - 8;
18820
+ childProgressResizer$$1.style.setProperty(position, width + 'px');
18094
18821
  }
18095
18822
  }
18096
18823
  else {
@@ -18098,16 +18825,17 @@ class TaskbarEdit extends DateProcessor {
18098
18825
  traceChildProgressBar$$1.style.width = item.segments[this.segmentIndex].progressWidth + 'px';
18099
18826
  traceChildProgressBar$$1.style.borderBottomRightRadius = this.progressBorderRadius + 'px';
18100
18827
  traceChildProgressBar$$1.style.borderTopRightRadius = this.progressBorderRadius + 'px';
18101
- childProgressResizer$$1.style.left = item.segments[this.segmentIndex].progressWidth - 8 + 'px';
18828
+ const width = this.parent.enableRtl ? item.segments[this.segmentIndex].progressWidth + 8 : item.segments[this.segmentIndex].progressWidth - 8;
18829
+ childProgressResizer$$1.style.setProperty(position, width + 'px');
18102
18830
  }
18103
18831
  }
18104
18832
  else if (this.taskBarEditAction === 'RightResizing' && !isNullOrUndefined(traceChildTaskBar$$1)) {
18105
18833
  traceChildTaskBar$$1.style.width = (width) + 'px';
18106
18834
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
18107
18835
  traceChildProgressBar$$1.style.width = (item.progressWidth) + 'px';
18108
- taskBarRightResizer$$1.style.left = rightResizer + 'px';
18836
+ taskBarRightResizer$$1.style.setProperty(position, rightResizer + 'px');
18109
18837
  if (!isNullOrUndefined(childProgressResizer$$1)) {
18110
- childProgressResizer$$1.style.left = (item.progressWidth - 10) + 'px';
18838
+ childProgressResizer$$1.style.setProperty(position, item.progressWidth - 10 + 'px');
18111
18839
  }
18112
18840
  }
18113
18841
  }
@@ -18121,27 +18849,27 @@ class TaskbarEdit extends DateProcessor {
18121
18849
  }
18122
18850
  else if (this.taskBarEditAction === 'ParentResizing') {
18123
18851
  manualParentTaskbar.style.width = manualTaskbar.style.width = (item.width) + 'px';
18124
- manualParentRight.style.left = (item.width - manualParentLeft.offsetLeft) + 'px';
18852
+ manualParentRight.style.setProperty(position, item.width - manualParentLeft.offsetLeft + 'px');
18125
18853
  }
18126
18854
  else if (this.taskBarEditAction === 'ManualParentDrag') {
18127
- manualParentTaskbar.style.left = (item.left - item.autoLeft) + 'px';
18855
+ manualParentTaskbar.style.setProperty(position, item.left - item.autoLeft + 'px');
18128
18856
  }
18129
18857
  else {
18130
18858
  if (!isNullOrUndefined(traceChildTaskBar$$1) && !segmentedTaskBarContainer) {
18131
18859
  traceChildTaskBar$$1.style.width = (width) + 'px';
18132
18860
  }
18133
18861
  if (!isNullOrUndefined(traceChildProgressBar$$1)) {
18134
- taskBarRightResizer$$1.style.left = rightResizer + 'px';
18862
+ taskBarRightResizer$$1.style.setProperty(position, rightResizer + 'px');
18135
18863
  traceChildProgressBar$$1.style.width = (item.progressWidth) + 'px';
18136
18864
  if (!isNullOrUndefined(childProgressResizer$$1)) {
18137
- childProgressResizer$$1.style.left = item.progressWidth - 10 + 'px';
18865
+ childProgressResizer$$1.style.setProperty(position, item.progressWidth - 10 + 'px');
18138
18866
  }
18139
18867
  }
18140
18868
  if (segmentedTaskBarContainer) {
18141
- taskBarRightResizer$$1.style.left = rightResizer + 'px';
18869
+ taskBarRightResizer$$1.style.setProperty(position, rightResizer + 'px');
18142
18870
  traceChildProgressBar$$1.style.width = (segment.progressWidth) + 'px';
18143
18871
  if (!isNullOrUndefined(childProgressResizer$$1)) {
18144
- childProgressResizer$$1.style.left = segment.progressWidth - 10 + 'px';
18872
+ childProgressResizer$$1.style.setProperty(position, segment.progressWidth - 10 + 'px');
18145
18873
  }
18146
18874
  }
18147
18875
  }
@@ -18363,25 +19091,51 @@ class TaskbarEdit extends DateProcessor {
18363
19091
  const y2 = this.mouseMoveY;
18364
19092
  const length = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
18365
19093
  const angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;
18366
- const transform = 'rotate(' + angle + 'deg)';
19094
+ const transform = 'rotate(' + (this.parent.enableRtl ? -angle : angle) + 'deg)';
18367
19095
  let left;
19096
+ let width = 0;
19097
+ if (!isNullOrUndefined(document.querySelectorAll(".e-chart-row")[0])) {
19098
+ width = document.querySelectorAll(".e-chart-row")[0].offsetWidth;
19099
+ }
18368
19100
  if (this.taskBarEditAction === 'ConnectorPointLeftDrag') {
18369
- left = (this.elementOffsetLeft - (this.parent.chartRowsModule.connectorPointWidth / 2)) -
18370
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
19101
+ if (this.parent.enableRtl) {
19102
+ left = ((width - (this.elementOffsetLeft + (this.parent.chartRowsModule.connectorPointWidth / 2)))) -
19103
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);
19104
+ }
19105
+ else {
19106
+ left = (this.elementOffsetLeft - (this.parent.chartRowsModule.connectorPointWidth / 2)) -
19107
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
19108
+ }
18371
19109
  }
18372
19110
  if (this.taskBarEditAction === 'ConnectorPointRightDrag') {
18373
- left = (this.elementOffsetLeft + this.elementOffsetWidth) +
18374
- (this.parent.chartRowsModule.connectorPointWidth / 2) - this.parent.ganttChartModule.scrollObject.previousScroll.left;
19111
+ if (this.parent.enableRtl) {
19112
+ left = (width - (this.elementOffsetLeft + this.elementOffsetWidth +
19113
+ (this.parent.chartRowsModule.connectorPointWidth / 2))) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);
19114
+ }
19115
+ else {
19116
+ left = (this.elementOffsetLeft + this.elementOffsetWidth) +
19117
+ (this.parent.chartRowsModule.connectorPointWidth / 2) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);
19118
+ }
18375
19119
  }
18376
19120
  const top = ((this.elementOffsetTop) + (this.elementOffsetHeight / 2) +
18377
19121
  this.parent.ganttChartModule.chartBodyContainer.offsetTop) - this.parent.ganttChartModule.scrollObject.previousScroll.top;
18378
19122
  this.removeFalseLine(false);
18379
19123
  this.falseLine = createElement('div', {
18380
19124
  className: falseLine, id: 'ganttfalseline' + this.parent.element.id,
18381
- styles: 'transform-origin: 0% 100%;right: auto;position: absolute;transform:' + transform + ';' +
19125
+ styles: 'position: absolute;transform:' + transform + ';' +
18382
19126
  'border-top-width: 1px;border-top-style: dashed;z-index: 5;width:' + (length - 3) + 'px;' +
18383
- 'left:' + left + 'px;top:' + top + 'px;'
19127
+ 'top:' + top + 'px;'
18384
19128
  });
19129
+ if (this.parent.enableRtl) {
19130
+ this.falseLine.style.left = 'auto';
19131
+ this.falseLine.style.right = left + 'px';
19132
+ this.falseLine.style.transformOrigin = '100% 0%';
19133
+ }
19134
+ else {
19135
+ this.falseLine.style.right = 'auto';
19136
+ this.falseLine.style.left = left + 'px';
19137
+ this.falseLine.style.transformOrigin = '0% 100%';
19138
+ }
18385
19139
  this.parent.ganttChartModule.chartBodyContainer.appendChild(this.falseLine);
18386
19140
  }
18387
19141
  /**
@@ -18466,19 +19220,19 @@ class TaskbarEdit extends DateProcessor {
18466
19220
  const element = target;
18467
19221
  const uniqueId = this.parent.viewType === 'ResourceView' ? fromItem.taskId : fromItem.rowUniqueID;
18468
19222
  if (this.taskBarEditAction === 'ConnectorPointLeftDrag') {
18469
- predecessor = uniqueId + 'S';
19223
+ predecessor = uniqueId + (this.parent.enableRtl ? 'F' : 'S');
18470
19224
  }
18471
19225
  else if (this.taskBarEditAction === 'ConnectorPointRightDrag') {
18472
- predecessor = uniqueId + 'F';
19226
+ predecessor = uniqueId + (this.parent.enableRtl ? 'S' : 'F');
18473
19227
  }
18474
19228
  if (this.connectorSecondAction) {
18475
19229
  if (this.connectorSecondAction === 'ConnectorPointLeftDrag') {
18476
- predecessor += 'S';
18477
- currentTarget = 'start';
19230
+ predecessor += this.parent.enableRtl ? 'F' : 'S';
19231
+ currentTarget = this.parent.enableRtl ? 'finish' : 'start';
18478
19232
  }
18479
19233
  else if (this.connectorSecondAction === 'ConnectorPointRightDrag') {
18480
- predecessor += 'F';
18481
- currentTarget = 'finish';
19234
+ predecessor += this.parent.enableRtl ? 'S' : 'F';
19235
+ currentTarget = this.parent.enableRtl ? 'start' : 'finish';
18482
19236
  }
18483
19237
  }
18484
19238
  if (isNullOrUndefined(toItem)) {
@@ -18502,6 +19256,12 @@ class TaskbarEdit extends DateProcessor {
18502
19256
  args.isValidLink = isValidLink;
18503
19257
  args.requestType = 'ValidateDependency';
18504
19258
  this.parent.trigger('actionBegin', args);
19259
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer" && args.requestType != "ValidateDependency") {
19260
+ this.parent.showMaskRow();
19261
+ }
19262
+ else if (args.requestType != "ValidateDependency") {
19263
+ this.parent.showSpinner();
19264
+ }
18505
19265
  args.isValidLink = !isValidLink && args.isValidLink ? false : args.isValidLink;
18506
19266
  if (args.isValidLink) {
18507
19267
  if (!this.editTooltip.toolTipObj && !this.parent.isAdaptive) {
@@ -18895,18 +19655,18 @@ class DialogEdit {
18895
19655
  if (!isNullOrUndefined(taskId)) {
18896
19656
  if (!isNullOrUndefined(taskId['ganttProperties'])) {
18897
19657
  if (typeof taskId['ganttProperties']['taskId'] === 'string') {
18898
- this.numericOrString = "stringedit";
19658
+ this.numericOrString = 'stringedit';
18899
19659
  }
18900
19660
  else {
18901
- this.numericOrString = "numericedit";
19661
+ this.numericOrString = 'numericedit';
18902
19662
  }
18903
19663
  }
18904
19664
  if (isNullOrUndefined(taskId['ganttProperties']) && !isNullOrUndefined(taskId)) {
18905
19665
  if (isNaN(Number(taskId)) || this.parent.columnByField[this.parent.taskFields.id].editType === "stringedit") {
18906
- this.numericOrString = "stringedit";
19666
+ this.numericOrString = 'stringedit';
18907
19667
  }
18908
19668
  else {
18909
- this.numericOrString = "numericedit";
19669
+ this.numericOrString = 'numericedit';
18910
19670
  }
18911
19671
  }
18912
19672
  }
@@ -18948,6 +19708,7 @@ class DialogEdit {
18948
19708
  dialogModel.animationSettings = { effect: 'None' };
18949
19709
  dialogModel.header = this.localeObj.getConstant(this.isEdit ? 'editDialogTitle' : 'addDialogTitle');
18950
19710
  dialogModel.isModal = true;
19711
+ dialogModel.enableRtl = this.parent.enableRtl;
18951
19712
  dialogModel.allowDragging = this.parent.isAdaptive ? false : true;
18952
19713
  dialogModel.showCloseIcon = true;
18953
19714
  const position = this.parent.isAdaptive ? { X: 'top', Y: 'left' } : { X: 'center', Y: 'center' };
@@ -18958,8 +19719,8 @@ class DialogEdit {
18958
19719
  dialogModel.close = this.dialogClose.bind(this);
18959
19720
  dialogModel.closeOnEscape = true;
18960
19721
  dialogModel.beforeClose = function (args) {
18961
- if (args.closedBy == "escape") {
18962
- if (args.event.name == "key-pressed" && args.event.target.nodeName == 'INPUT') {
19722
+ if (args.closedBy === "escape") {
19723
+ if (args.event.name === "key-pressed" && args.event.target.nodeName === 'INPUT') {
18963
19724
  args.cancel = true;
18964
19725
  }
18965
19726
  }
@@ -19129,6 +19890,7 @@ class DialogEdit {
19129
19890
  const length = dialogSettings.length;
19130
19891
  tabModel.items = tabItems;
19131
19892
  tabModel.locale = this.parent.locale;
19893
+ tabModel.enableRtl = this.parent.enableRtl;
19132
19894
  this.beforeOpenArgs.tabModel = tabModel;
19133
19895
  let index = 0;
19134
19896
  if (length > 0) {
@@ -19208,6 +19970,12 @@ class DialogEdit {
19208
19970
  cancel: this.beforeOpenArgs.cancel
19209
19971
  };
19210
19972
  this.parent.trigger('actionBegin', this.beforeOpenArgs, (arg) => {
19973
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
19974
+ this.parent.showMaskRow();
19975
+ }
19976
+ else {
19977
+ this.parent.showSpinner();
19978
+ }
19211
19979
  this.renderTabItems();
19212
19980
  if (!arg.cancel) {
19213
19981
  tabModel.selected = this.tabSelectedEvent.bind(this);
@@ -19230,6 +19998,12 @@ class DialogEdit {
19230
19998
  cancel: false
19231
19999
  };
19232
20000
  this.parent.trigger('actionComplete', actionCompleteArgs, (actionCompleteArg) => {
20001
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
20002
+ this.parent.hideMaskRow();
20003
+ }
20004
+ else {
20005
+ this.parent.hideSpinner();
20006
+ }
19233
20007
  if (actionCompleteArg.cancel) {
19234
20008
  this.resetValues();
19235
20009
  }
@@ -19312,7 +20086,8 @@ class DialogEdit {
19312
20086
  {
19313
20087
  const checkboxModel = {
19314
20088
  label: column.headerText,
19315
- locale: locale
20089
+ locale: locale,
20090
+ enableRtl: this.parent.enableRtl
19316
20091
  };
19317
20092
  fieldsModel[column.field] = checkboxModel;
19318
20093
  break;
@@ -19321,6 +20096,7 @@ class DialogEdit {
19321
20096
  case 'stringedit':
19322
20097
  {
19323
20098
  const textBox = common;
20099
+ textBox.enableRtl = this.parent.enableRtl;
19324
20100
  if (column.field === ganttObj.columnMapping.duration || column.field === ganttObj.columnMapping.id || column.field === ganttObj.columnMapping.startDate ||
19325
20101
  column.field === ganttObj.columnMapping.endDate) {
19326
20102
  textBox.change = (args) => {
@@ -19333,6 +20109,7 @@ class DialogEdit {
19333
20109
  case 'numericedit':
19334
20110
  {
19335
20111
  const numeric = common;
20112
+ numeric.enableRtl = this.parent.enableRtl;
19336
20113
  if (taskSettings.progress === column.field) {
19337
20114
  numeric.min = 0;
19338
20115
  numeric.max = 100;
@@ -19349,6 +20126,7 @@ class DialogEdit {
19349
20126
  {
19350
20127
  const datePickerObj = common;
19351
20128
  datePickerObj.format = this.parent.getDateFormat();
20129
+ datePickerObj.enableRtl = this.parent.enableRtl;
19352
20130
  datePickerObj.strictMode = true;
19353
20131
  datePickerObj.firstDayOfWeek = ganttObj.timelineModule.customTimelineSettings.weekStartDay;
19354
20132
  if (column.field === ganttObj.columnMapping.startDate ||
@@ -19365,6 +20143,7 @@ class DialogEdit {
19365
20143
  {
19366
20144
  const dateTimePickerObj = common;
19367
20145
  dateTimePickerObj.format = this.parent.getDateFormat();
20146
+ dateTimePickerObj.enableRtl = this.parent.enableRtl;
19368
20147
  dateTimePickerObj.strictMode = true;
19369
20148
  dateTimePickerObj.firstDayOfWeek = ganttObj.timelineModule.customTimelineSettings.weekStartDay;
19370
20149
  if (column.field === ganttObj.columnMapping.startDate ||
@@ -19387,6 +20166,7 @@ class DialogEdit {
19387
20166
  common[dataKey] = types;
19388
20167
  common[fieldsKey] = { value: 'Value' };
19389
20168
  const dropDownListObj = common;
20169
+ dropDownListObj.enableRtl = this.parent.enableRtl;
19390
20170
  dropDownListObj.change = (args) => {
19391
20171
  if (column.field === taskSettings.manual) {
19392
20172
  this.editedRecord.ganttProperties.isAutoSchedule = !args.value;
@@ -19758,8 +20538,8 @@ class DialogEdit {
19758
20538
  break;
19759
20539
  case 'duration':
19760
20540
  gridColumn = {
19761
- field: fields[i], headerText: this.localeObj.getConstant(fields[i]), editType: 'stringedit', width: '100px',
19762
- edit: {
20541
+ field: fields[i], headerText: this.localeObj.getConstant(fields[i]), editType: 'stringedit',
20542
+ width: '100px', edit: {
19763
20543
  write: (args) => {
19764
20544
  let inputTextModel;
19765
20545
  if (!isNullOrUndefined(this.beforeOpenArgs[generalTabString])) {
@@ -19820,7 +20600,7 @@ class DialogEdit {
19820
20600
  inputValue = dialog.querySelector('#' + ganttId + 'SegmentsTabContainer' + columnName)
19821
20601
  .ej2_instances[0];
19822
20602
  }
19823
- if (inputValue.value.toString() !== tempValue.toString()) {
20603
+ if ((!isNullOrUndefined(inputValue.value)) && (inputValue.value.toString() !== tempValue.toString())) {
19824
20604
  inputValue.value = tempValue;
19825
20605
  inputValue.dataBind();
19826
20606
  }
@@ -20154,7 +20934,7 @@ class DialogEdit {
20154
20934
  break;
20155
20935
  }
20156
20936
  }
20157
- if (typeof (stringOrNumber) === "string") {
20937
+ if (typeof (stringOrNumber) === 'string') {
20158
20938
  disabled = false;
20159
20939
  }
20160
20940
  else {
@@ -20169,7 +20949,7 @@ class DialogEdit {
20169
20949
  }
20170
20950
  if (this.editedRecord.hasChildRecords) {
20171
20951
  if ((column.field === this.parent.taskFields.endDate && ((!isNullOrUndefined(this.editedRecord['isManual']) &&
20172
- this.editedRecord['isManual'] == false) || this.parent.taskMode == 'Auto')) || column.field === this.parent.taskFields.duration ||
20952
+ this.editedRecord['isManual'] === false) || this.parent.taskMode === 'Auto')) || column.field === this.parent.taskFields.duration ||
20173
20953
  column.field === this.parent.taskFields.progress || column.field === this.parent.taskFields.work ||
20174
20954
  column.field === this.parent.taskFields.type) {
20175
20955
  disabled = true;
@@ -20224,6 +21004,7 @@ class DialogEdit {
20224
21004
  dataSource: new DataManager(this.idCollection),
20225
21005
  popupHeight: '180px',
20226
21006
  allowCustom: false,
21007
+ enableRtl: this.parent.enableRtl,
20227
21008
  fields: { value: 'text' },
20228
21009
  value: args.rowData[field],
20229
21010
  change: (arg) => {
@@ -20491,7 +21272,7 @@ class DialogEdit {
20491
21272
  do {
20492
21273
  if (currentFlatData.parentItem) {
20493
21274
  currentFlatData = this.parent.flatData[this.parent.ids.indexOf(currentFlatData.parentItem.taskId)];
20494
- if (currentFlatData.uniqueID == this.beforeOpenArgs.rowData['uniqueID']) {
21275
+ if (currentFlatData.uniqueID === this.beforeOpenArgs.rowData['uniqueID']) {
20495
21276
  this.isValidData = false;
20496
21277
  break;
20497
21278
  }
@@ -20743,7 +21524,9 @@ class DialogEdit {
20743
21524
  }
20744
21525
  }
20745
21526
  if (this.isEdit) {
20746
- this.updateScheduleProperties(this.editedRecord, this.rowData);
21527
+ if (!isCustom) {
21528
+ this.updateScheduleProperties(this.editedRecord, this.rowData);
21529
+ }
20747
21530
  ganttObj.editModule.validateUpdateValues(tasksData, this.rowData, true);
20748
21531
  }
20749
21532
  }
@@ -21398,6 +22181,7 @@ class ConnectorLineEdit {
21398
22181
  const validationDialog = new Dialog({
21399
22182
  header: 'Validate Editing',
21400
22183
  isModal: true,
22184
+ enableRtl: this.parent.enableRtl,
21401
22185
  visible: false,
21402
22186
  width: '50%',
21403
22187
  showCloseIcon: true,
@@ -21769,6 +22553,7 @@ class ConnectorLineEdit {
21769
22553
  this.confirmPredecessorDialog = new Dialog({
21770
22554
  width: '320px',
21771
22555
  isModal: true,
22556
+ enableRtl: this.parent.enableRtl,
21772
22557
  content: this.parent.localeObj.getConstant('confirmPredecessorDelete'),
21773
22558
  buttons: [
21774
22559
  {
@@ -21816,6 +22601,7 @@ class Edit$2 {
21816
22601
  this.taskbarMoved = false;
21817
22602
  this.predecessorUpdated = false;
21818
22603
  this.isBreakLoop = false;
22604
+ this.isResourceTaskDeleted = false;
21819
22605
  /**
21820
22606
  * @private
21821
22607
  */
@@ -21890,6 +22676,7 @@ class Edit$2 {
21890
22676
  const editParam = {
21891
22677
  min: 0,
21892
22678
  decimals: 0,
22679
+ enableRtl: this.parent.enableRtl,
21893
22680
  validateDecimalOnType: true,
21894
22681
  format: 'n0',
21895
22682
  showSpinButton: false
@@ -21905,6 +22692,7 @@ class Edit$2 {
21905
22692
  updateProgessColumnEditParams(column) {
21906
22693
  const editParam = {
21907
22694
  min: 0,
22695
+ enableRtl: this.parent.enableRtl,
21908
22696
  decimals: 0,
21909
22697
  validateDecimalOnType: true,
21910
22698
  max: 100,
@@ -21962,6 +22750,7 @@ class Edit$2 {
21962
22750
  editor = new MultiSelect({
21963
22751
  dataSource: new DataManager(this.parent.resources),
21964
22752
  fields: { text: resourceSettings.name, value: resourceSettings.id },
22753
+ enableRtl: this.parent.enableRtl,
21965
22754
  mode: 'CheckBox',
21966
22755
  showDropDownIcon: true,
21967
22756
  popupHeight: '350px',
@@ -22022,6 +22811,7 @@ class Edit$2 {
22022
22811
  this.parent.treeGridModule.currentEditRow = {};
22023
22812
  editor = new DropDownList({
22024
22813
  dataSource: new DataManager(types),
22814
+ enableRtl: this.parent.enableRtl,
22025
22815
  fields: { value: 'Value' },
22026
22816
  popupHeight: '350px',
22027
22817
  value: getValue('taskType', args.rowData.ganttProperties)
@@ -22906,7 +23696,6 @@ class Edit$2 {
22906
23696
  * @private
22907
23697
  */
22908
23698
  initiateSaveAction(args) {
22909
- this.parent.showSpinner();
22910
23699
  let eventArgs = {};
22911
23700
  eventArgs.requestType = 'beforeSave';
22912
23701
  eventArgs.data = args.data;
@@ -22920,6 +23709,12 @@ class Edit$2 {
22920
23709
  eventArgs.action = 'DrawConnectorLine';
22921
23710
  }
22922
23711
  this.parent.trigger('actionBegin', eventArgs, (eventArg) => {
23712
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
23713
+ this.parent.showMaskRow();
23714
+ }
23715
+ else {
23716
+ this.parent.showSpinner();
23717
+ }
22923
23718
  if (eventArg.cancel) {
22924
23719
  this.reUpdatePreviousRecords();
22925
23720
  this.parent.chartRowsModule.refreshRecords([args.data]);
@@ -22953,6 +23748,52 @@ class Edit$2 {
22953
23748
  });
22954
23749
  }
22955
23750
  dmSuccess(e, args) {
23751
+ let eLength = e['length'];
23752
+ for (let i = 0; i < eLength; i++) {
23753
+ let rec = e[i];
23754
+ let _aLength = Object.keys(rec).length;
23755
+ for (let j = 0, _a = Object.keys(rec); j < _aLength; j++) {
23756
+ let key = _a[j];
23757
+ this.parent.editedRecords[i][key] = rec[key];
23758
+ this.parent.editedRecords[i].taskData[key] = rec[key];
23759
+ }
23760
+ if (this.parent.taskFields.id !== null) {
23761
+ this.parent.editedRecords[i].ganttProperties["taskId"] = rec[this.parent.taskFields.id];
23762
+ }
23763
+ if (this.parent.taskFields.name !== null) {
23764
+ this.parent.editedRecords[i].ganttProperties["taskName"] = rec[this.parent.taskFields.name];
23765
+ }
23766
+ if (this.parent.taskFields.startDate !== null) {
23767
+ this.parent.editedRecords[i].ganttProperties["startDate"] = rec[this.parent.taskFields.startDate];
23768
+ }
23769
+ if (this.parent.taskFields.endDate !== null) {
23770
+ this.parent.editedRecords[i].ganttProperties["endDate"] = rec[this.parent.taskFields.endDate];
23771
+ }
23772
+ if (this.parent.taskFields.duration !== null) {
23773
+ this.parent.editedRecords[i].ganttProperties["duration"] = parseInt(rec[this.parent.taskFields.duration]);
23774
+ }
23775
+ if (this.parent.taskFields.durationUnit !== null) {
23776
+ this.parent.editedRecords[i].ganttProperties["durationUnit"] = rec[this.parent.taskFields.durationUnit];
23777
+ }
23778
+ if (this.parent.taskFields.progress !== null) {
23779
+ this.parent.editedRecords[i].ganttProperties["progress"] = rec[this.parent.taskFields.progress];
23780
+ }
23781
+ if (this.parent.taskFields.dependency !== null) {
23782
+ this.parent.editedRecords[i].ganttProperties["dependency"] = rec[this.parent.taskFields.dependency];
23783
+ }
23784
+ if (this.parent.taskFields.parentID !== null) {
23785
+ this.parent.editedRecords[i].ganttProperties["parentID"] = rec[this.parent.taskFields.parentID];
23786
+ }
23787
+ if (this.parent.taskFields.baselineEndDate !== null) {
23788
+ this.parent.editedRecords[i].ganttProperties["baselineEndDate"] = rec[this.parent.taskFields.baselineEndDate];
23789
+ }
23790
+ if (this.parent.taskFields.baselineStartDate !== null) {
23791
+ this.parent.editedRecords[i].ganttProperties["baselineStartDate"] = rec[this.parent.taskFields.baselineStartDate];
23792
+ }
23793
+ if (this.parent.taskFields.resourceInfo !== null) {
23794
+ this.parent.editedRecords[i].ganttProperties["resources"] = rec[this.parent.taskFields.resourceInfo];
23795
+ }
23796
+ }
22956
23797
  this.saveSuccess(args);
22957
23798
  }
22958
23799
  dmFailure(e, args) {
@@ -22971,7 +23812,7 @@ class Edit$2 {
22971
23812
  const ids = data.ganttProperties.sharedTaskUniqueIds;
22972
23813
  for (let i = 0; i < ids.length; i++) {
22973
23814
  const editRecord = this.parent.flatData[this.parent.ids.indexOf(ids[i].toString())];
22974
- if (editRecord.uniqueID !== data.uniqueID) {
23815
+ if (editRecord && editRecord.uniqueID !== data.uniqueID) {
22975
23816
  this.updateGanttProperties(data, editRecord);
22976
23817
  this.parent.setRecordValue('taskData', data.taskData, editRecord, true);
22977
23818
  this.parent.dataOperation.updateTaskData(editRecord);
@@ -23045,6 +23886,12 @@ class Edit$2 {
23045
23886
  criticalModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);
23046
23887
  }
23047
23888
  this.parent.trigger('actionComplete', eventArgs);
23889
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
23890
+ this.parent.hideMaskRow();
23891
+ }
23892
+ else {
23893
+ this.parent.hideSpinner();
23894
+ }
23048
23895
  }
23049
23896
  else {
23050
23897
  this.taskbarEditModule.dependencyCancel = false;
@@ -23066,12 +23913,12 @@ class Edit$2 {
23066
23913
  for (let index = 0; index < currentLength; index++) {
23067
23914
  const recordIndex = [];
23068
23915
  let resourceID = parseInt(currentResource[index][this.parent.resourceFields.id], 10).toString();
23069
- if (resourceID === "NaN") {
23916
+ if (resourceID === 'NaN') {
23070
23917
  resourceID = currentResource[index][this.parent.resourceFields.id];
23071
23918
  }
23072
23919
  for (let i = 0; i < prevResource.length; i++) {
23073
23920
  let prevResourceID = parseInt(prevResource[i][this.parent.resourceFields.id], 10).toString();
23074
- if (prevResourceID === "NaN") {
23921
+ if (prevResourceID === 'NaN') {
23075
23922
  prevResourceID = prevResource[i][this.parent.resourceFields.id];
23076
23923
  }
23077
23924
  if (prevResourceID === resourceID) {
@@ -23132,12 +23979,6 @@ class Edit$2 {
23132
23979
  }
23133
23980
  if (!isNullOrUndefined(unassignedTasks)) {
23134
23981
  this.addNewRecord(updateRecord, unassignedTasks);
23135
- const updatedData = this.parent.currentViewData.filter((data) => {
23136
- return (data.ganttProperties.taskId === updateRecord.ganttProperties.taskId &&
23137
- (data.hasChildRecords === updateRecord.hasChildRecords));
23138
- })[0];
23139
- updateRecord.parentItem = updatedData.parentItem;
23140
- updateRecord.parentUniqueID = updatedData.parentUniqueID;
23141
23982
  }
23142
23983
  else {
23143
23984
  // Block for create the unassigned task.
@@ -23152,6 +23993,12 @@ class Edit$2 {
23152
23993
  const parentRecord = this.parent.flatData[this.parent.flatData.length - 1];
23153
23994
  this.addNewRecord(updateRecord, parentRecord);
23154
23995
  }
23996
+ const updatedData = this.parent.currentViewData.filter((data) => {
23997
+ return (data.ganttProperties.taskId === updateRecord.ganttProperties.taskId &&
23998
+ (data.hasChildRecords === updateRecord.hasChildRecords));
23999
+ })[0];
24000
+ updateRecord.parentItem = updatedData.parentItem;
24001
+ updateRecord.parentUniqueID = updatedData.parentUniqueID;
23155
24002
  }
23156
24003
  addRecordAsBottom(cAddedRecord) {
23157
24004
  const recordIndex1 = this.parent.flatData.length;
@@ -23358,6 +24205,7 @@ class Edit$2 {
23358
24205
  width: '320px',
23359
24206
  isModal: true,
23360
24207
  visible: false,
24208
+ enableRtl: this.parent.enableRtl,
23361
24209
  content: this.parent.localeObj.getConstant('confirmDelete'),
23362
24210
  buttons: [
23363
24211
  {
@@ -23410,15 +24258,17 @@ class Edit$2 {
23410
24258
  const deleteRecords = [];
23411
24259
  for (let i = 0; i < selectedRecords.length; i++) {
23412
24260
  if (selectedRecords[i].parentItem) {
23413
- const data = selectedRecords[i];
23414
- const ids = data.ganttProperties.sharedTaskUniqueIds;
23415
- for (let j = 0; j < ids.length; j++) {
23416
- if (this.parent.ids.indexOf(ids[j].toString()) !== -1) {
23417
- deleteRecords.push(this.parent.flatData[this.parent.ids.indexOf(ids[j].toString())]);
24261
+ if (selectedRecords[i].ganttProperties.sharedTaskUniqueIds.length === 1) {
24262
+ const data = selectedRecords[i];
24263
+ const ids = data.ganttProperties.sharedTaskUniqueIds;
24264
+ for (let j = 0; j < ids.length; j++) {
24265
+ if (this.parent.ids.indexOf(ids[j].toString()) !== -1) {
24266
+ deleteRecords.push(this.parent.flatData[this.parent.ids.indexOf(ids[j].toString())]);
24267
+ }
24268
+ }
24269
+ if (this.parent.ids.indexOf(data.ganttProperties.rowUniqueID) !== -1) {
24270
+ deleteRecords.push(this.parent.flatData[this.parent.ids.indexOf(data.ganttProperties.rowUniqueID)]);
23418
24271
  }
23419
- }
23420
- if (this.parent.ids.indexOf(data.ganttProperties.rowUniqueID) !== -1) {
23421
- deleteRecords.push(this.parent.flatData[this.parent.ids.indexOf(data.ganttProperties.rowUniqueID)]);
23422
24272
  }
23423
24273
  }
23424
24274
  else {
@@ -23544,8 +24394,9 @@ class Edit$2 {
23544
24394
  if (this.deletedTaskDetails.indexOf(deleteRecord) !== -1) {
23545
24395
  continue;
23546
24396
  }
24397
+ const parentTask = this.parent.getParentTask(deleteRecord.parentItem);
23547
24398
  if (deleteRecord.parentItem) {
23548
- const childRecord = this.parent.getParentTask(deleteRecord.parentItem).childRecords;
24399
+ const childRecord = parentTask.childRecords;
23549
24400
  const filteredRecord = childRecord.length === 1 ?
23550
24401
  childRecord : childRecord.filter((data) => {
23551
24402
  return !data.isDelete;
@@ -23555,7 +24406,12 @@ class Edit$2 {
23555
24406
  }
23556
24407
  }
23557
24408
  const predecessor = deleteRecord.ganttProperties.predecessor;
23558
- if (predecessor && predecessor.length) {
24409
+ let canDeletePredecessor = true;
24410
+ if (this.parent.viewType === 'ResourceView' && parentTask && parentTask.ganttProperties.taskName !==
24411
+ this.parent.localeObj.getConstant('unassignedTask')) {
24412
+ canDeletePredecessor = false;
24413
+ }
24414
+ if (predecessor && predecessor.length && canDeletePredecessor) {
23559
24415
  this.removePredecessorOnDelete(deleteRecord);
23560
24416
  }
23561
24417
  this.deletedTaskDetails.push(deleteRecord);
@@ -23704,7 +24560,13 @@ class Edit$2 {
23704
24560
  continue;
23705
24561
  }
23706
24562
  const predecessor = childRecord.ganttProperties.predecessor;
23707
- if (predecessor && predecessor.length) {
24563
+ let canDeletePredecessor = true;
24564
+ const parentTask = this.parent.getParentTask(childRecord.parentItem);
24565
+ if (this.parent.viewType === 'ResourceView' && parentTask && parentTask.ganttProperties.taskName !==
24566
+ this.parent.localeObj.getConstant('unassignedTask')) {
24567
+ canDeletePredecessor = false;
24568
+ }
24569
+ if (predecessor && predecessor.length && canDeletePredecessor) {
23708
24570
  this.removePredecessorOnDelete(childRecord);
23709
24571
  }
23710
24572
  this.deletedTaskDetails.push(childRecord);
@@ -23755,6 +24617,12 @@ class Edit$2 {
23755
24617
  eventArgs.modifiedRecords = args.updatedRecordCollection;
23756
24618
  eventArgs.modifiedTaskData = getTaskData(args.updatedRecordCollection, null, null, this.parent);
23757
24619
  this.parent.trigger('actionBegin', eventArgs, (eventArg) => {
24620
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
24621
+ this.parent.showMaskRow();
24622
+ }
24623
+ else {
24624
+ this.parent.showSpinner();
24625
+ }
23758
24626
  if (eventArg.cancel) {
23759
24627
  const deleteRecords = this.deletedTaskDetails;
23760
24628
  for (let d = 0; d < deleteRecords.length; d++) {
@@ -23833,6 +24701,14 @@ class Edit$2 {
23833
24701
  this.parent.ids.splice(flatIndex, 1);
23834
24702
  if (this.parent.viewType === 'ResourceView') {
23835
24703
  this.parent.getTaskIds().splice(flatIndex, 1);
24704
+ this.isResourceTaskDeleted = true;
24705
+ if (!deleteRecord.hasChildRecords) {
24706
+ deleteRecord.ganttProperties.resourceInfo = null;
24707
+ delete deleteRecord.ganttProperties.resourceNames;
24708
+ deleteRecord[this.parent.taskFields.resourceInfo] = null;
24709
+ deleteRecord.ganttProperties.sharedTaskUniqueIds = [];
24710
+ delete deleteRecord.taskData[this.parent.taskFields.resourceInfo];
24711
+ }
23836
24712
  }
23837
24713
  }
23838
24714
  if (deleteRecord.level === 0 && treeGridParentIndex !== -1) {
@@ -23881,9 +24757,12 @@ class Edit$2 {
23881
24757
  const unassignedTask = this.parent.flatData.filter((data) => {
23882
24758
  return data.ganttProperties.taskName === this.parent.localeObj.getConstant('unassignedTask');
23883
24759
  })[0];
23884
- const isDuplicate = unassignedTask.childRecords.filter((data) => {
23885
- return data.ganttProperties.taskId === updateUnAssignedResources[i].ganttProperties.taskId;
23886
- });
24760
+ let isDuplicate = [];
24761
+ if (unassignedTask) {
24762
+ isDuplicate = unassignedTask.childRecords.filter((data) => {
24763
+ return data.ganttProperties.taskId === updateUnAssignedResources[i].ganttProperties.taskId;
24764
+ });
24765
+ }
23887
24766
  const parentTask = this.parent.getParentTask(updateUnAssignedResources[i].parentItem);
23888
24767
  if (parentTask && parentTask.ganttProperties.taskName !==
23889
24768
  this.parent.localeObj.getConstant('unassignedTask') && isDuplicate.length === 0) {
@@ -23892,9 +24771,9 @@ class Edit$2 {
23892
24771
  this.parent.dataOperation.updateParentItems(updateUnAssignedResources[i].parentItem);
23893
24772
  }
23894
24773
  }
23895
- else if (!parentTask && isDuplicate.length === 0) {
24774
+ else if (!parentTask && (!isDuplicate || isDuplicate.length === 0)) {
23896
24775
  this.checkWithUnassignedTask(updateUnAssignedResources[i]);
23897
- if (updateUnAssignedResources[i].parentItem) {
24776
+ if (updateUnAssignedResources[i].parentItem && unassignedTask) {
23898
24777
  this.parent.dataOperation.updateParentItems(updateUnAssignedResources[i].parentItem);
23899
24778
  }
23900
24779
  }
@@ -23903,7 +24782,12 @@ class Edit$2 {
23903
24782
  this.parent.trigger('actionComplete', eventArgs);
23904
24783
  this.deletedTaskDetails = [];
23905
24784
  this.parent.initiateEditAction(false);
23906
- this.parent.hideSpinner();
24785
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
24786
+ this.parent.hideMaskRow();
24787
+ }
24788
+ else {
24789
+ this.parent.hideSpinner();
24790
+ }
23907
24791
  }
23908
24792
  /**
23909
24793
  *
@@ -24357,9 +25241,9 @@ class Edit$2 {
24357
25241
  for (let i = 0; i < this.parent.modifiedRecords.length; i++) {
24358
25242
  const originalData = this.parent.modifiedRecords[i];
24359
25243
  let treeIndex = this.parent.allowRowDragAndDrop ? 1 : 0;
24360
- let uniqueTaskID = this.parent.taskFields.id;
24361
- var originalIndex = this.parent.currentViewData.findIndex((data) => {
24362
- return (data[uniqueTaskID] == originalData[uniqueTaskID]);
25244
+ const uniqueTaskID = this.parent.taskFields.id;
25245
+ let originalIndex = this.parent.currentViewData.findIndex((data) => {
25246
+ return (data[uniqueTaskID] === originalData[uniqueTaskID]);
24363
25247
  });
24364
25248
  if (this.parent.treeGrid.getRows()[originalIndex]) {
24365
25249
  this.parent.treeGrid.renderModule.cellRender({
@@ -24479,8 +25363,13 @@ class Edit$2 {
24479
25363
  }
24480
25364
  let args = {};
24481
25365
  args = this.constructTaskAddedEventArgs(cAddedRecord, this.parent.editedRecords, 'beforeAdd');
24482
- this.parent.showSpinner();
24483
25366
  this.parent.trigger('actionBegin', args, (args) => {
25367
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
25368
+ this.parent.showMaskRow();
25369
+ }
25370
+ else {
25371
+ this.parent.showSpinner();
25372
+ }
24484
25373
  if (!isNullOrUndefined(args.data[tempTaskID])) {
24485
25374
  if (args.data[tempTaskID] != args.data['ganttProperties']['taskId']) {
24486
25375
  args.data['ganttProperties']['taskId'] = args.data[tempTaskID];
@@ -24684,7 +25573,7 @@ class Edit$2 {
24684
25573
  switch (rowPosition) {
24685
25574
  case 'Top':
24686
25575
  case 'Bottom':
24687
- if (this.parent.viewType === "ResourceView") {
25576
+ if (this.parent.viewType === 'ResourceView') {
24688
25577
  level = 1;
24689
25578
  }
24690
25579
  else {
@@ -24767,6 +25656,12 @@ class Edit$2 {
24767
25656
  this.parent.dataOperation.updateWorkWithDuration(cAddedRecord[0]);
24768
25657
  }
24769
25658
  this.parent.trigger('actionComplete', args);
25659
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
25660
+ this.parent.hideMaskRow();
25661
+ }
25662
+ else {
25663
+ this.parent.hideSpinner();
25664
+ }
24770
25665
  if (this.dialogModule.dialog && !this.dialogModule.dialogObj.isDestroyed) {
24771
25666
  this.dialogModule.dialogObj.hide();
24772
25667
  }
@@ -24925,6 +25820,12 @@ class Edit$2 {
24925
25820
  cancel: false
24926
25821
  };
24927
25822
  this.parent.trigger('actionBegin', actionArgs, (actionArg) => {
25823
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
25824
+ this.parent.showMaskRow();
25825
+ }
25826
+ else {
25827
+ this.parent.showSpinner();
25828
+ }
24928
25829
  if (!actionArg.cancel) {
24929
25830
  this.reArrangeRows(args, isByMethod);
24930
25831
  }
@@ -25096,6 +25997,12 @@ class Edit$2 {
25096
25997
  }
25097
25998
  }
25098
25999
  this.parent.trigger('actionComplete', args);
26000
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
26001
+ this.parent.hideMaskRow();
26002
+ }
26003
+ else {
26004
+ this.parent.hideSpinner();
26005
+ }
25099
26006
  this.parent.editedRecords = [];
25100
26007
  }
25101
26008
  refreshDataSource() {
@@ -25607,6 +26514,7 @@ class Filter$1 {
25607
26514
  const flValInput = createElement('input', { className: 'flm-input' });
25608
26515
  args.target.appendChild(flValInput);
25609
26516
  dropDateInstance = new DatePicker({ placeholder: this.parent.localeObj.getConstant('enterValue'), format: format });
26517
+ dropDateInstance.enableRtl = this.parent.enableRtl;
25610
26518
  dropDateInstance.appendTo(flValInput);
25611
26519
  },
25612
26520
  write: (args) => {
@@ -25629,6 +26537,7 @@ class Filter$1 {
25629
26537
  const flValInput = createElement('input', { className: 'flm-input' });
25630
26538
  args.target.appendChild(flValInput);
25631
26539
  dropInstance = new DateTimePicker({ placeholder: this.parent.localeObj.getConstant('enterValue'), format: format });
26540
+ dropInstance.enableRtl = this.parent.enableRtl;
25632
26541
  dropInstance.appendTo(flValInput);
25633
26542
  },
25634
26543
  write: (args) => {
@@ -25650,6 +26559,7 @@ class Filter$1 {
25650
26559
  flValInput.setAttribute('placeholder', this.parent.localeObj.getConstant('enterValue'));
25651
26560
  args.target.appendChild(flValInput);
25652
26561
  textBoxInstance = new TextBox();
26562
+ textBoxInstance.enableRtl = this.parent.enableRtl;
25653
26563
  textBoxInstance.appendTo(flValInput);
25654
26564
  },
25655
26565
  write: (args) => {
@@ -26438,6 +27348,14 @@ class Toolbar$3 {
26438
27348
  this.parent.localeObj.getConstant('tasks') : ''),
26439
27349
  align: this.parent.isAdaptive ? 'Right' : 'Left'
26440
27350
  };
27351
+ if (this.parent.enableRtl) {
27352
+ if (item === 'PrevTimeSpan') {
27353
+ this.predefinedItems[item].prefixIcon = 'e-nexttimespan';
27354
+ }
27355
+ if (item === 'NextTimeSpan') {
27356
+ this.predefinedItems[item].prefixIcon = 'e-prevtimespan';
27357
+ }
27358
+ }
26441
27359
  }
26442
27360
  const searchLocalText = this.parent.localeObj.getConstant('search');
26443
27361
  if (this.parent.isAdaptive) {
@@ -26469,6 +27387,7 @@ class Toolbar$3 {
26469
27387
  const items = this.getItems();
26470
27388
  this.toolbar = new Toolbar$1({
26471
27389
  items: items,
27390
+ enableRtl: this.parent.enableRtl,
26472
27391
  clicked: this.toolbarClickHandler.bind(this),
26473
27392
  height: this.parent.isAdaptive ? 48 : 'auto'
26474
27393
  });
@@ -26487,6 +27406,7 @@ class Toolbar$3 {
26487
27406
  this.searchElement = this.element.querySelector('#' + this.parent.element.id + '_searchbar');
26488
27407
  const textObj = new TextBox({
26489
27408
  placeholder: this.parent.localeObj.getConstant('search'),
27409
+ enableRtl: this.parent.enableRtl,
26490
27410
  floatLabelType: 'Never',
26491
27411
  showClearButton: true
26492
27412
  });
@@ -26602,7 +27522,16 @@ class Toolbar$3 {
26602
27522
  toolbarClickHandler(arg) {
26603
27523
  const gObj = this.parent;
26604
27524
  const gID = this.id;
27525
+ this.parent.isToolBarClick = false;
26605
27526
  extend(arg, { cancel: false });
27527
+ if (arg.item['properties'].id === this.parent.element.id + "_pdfexport" || arg.item['properties'].id === this.parent.element.id + "_critical-path") {
27528
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
27529
+ this.parent.showMaskRow();
27530
+ }
27531
+ else {
27532
+ this.parent.showSpinner();
27533
+ }
27534
+ }
26606
27535
  gObj.trigger(toolbarClick, arg, (args) => {
26607
27536
  if (args.cancel) {
26608
27537
  return;
@@ -26804,7 +27733,8 @@ class Toolbar$3 {
26804
27733
  else {
26805
27734
  disableItems.push(gID + '_update', gID + '_cancel');
26806
27735
  for (let t = 0; t < toolbarItems.length; t++) {
26807
- if (enableItems.indexOf(toolbarItems[t].id) === -1 && disableItems.indexOf(toolbarItems[t].id) === -1) {
27736
+ if (enableItems.indexOf(toolbarItems[t].id) === -1 &&
27737
+ disableItems.indexOf(toolbarItems[t].id) === -1) {
26808
27738
  enableItems.push(toolbarItems[t].id);
26809
27739
  }
26810
27740
  }
@@ -26959,8 +27889,9 @@ class NonWorkingDay {
26959
27889
  const width = (this.parent.holidays[i].from && this.parent.holidays[i].to) ?
26960
27890
  this.parent.dataOperation.getTaskWidth(fromDate, toDate) : this.parent.perDayWidth;
26961
27891
  const left = this.parent.dataOperation.getTaskLeft(fromDate, false);
27892
+ const align = this.parent.enableRtl ? `right:${left}px;` : `left:${left}px;`;
26962
27893
  const holidayDiv = createElement('div', {
26963
- className: holidayElement, styles: `left:${left}px; width:${width}px; height:100%;`
27894
+ className: holidayElement, styles: `${align} width:${width}px; height:100%;`
26964
27895
  });
26965
27896
  const spanTop = (viewportHeight < height) ? viewportHeight / 2 : height / 2;
26966
27897
  const spanElement = createElement('span', {
@@ -27029,8 +27960,9 @@ class NonWorkingDay {
27029
27960
  this.weekendWidthUpdated = true;
27030
27961
  }
27031
27962
  }
27963
+ const align = this.parent.enableRtl ? `right:${left}px;` : `left:${left}px;`;
27032
27964
  const weekendDiv = createElement('div', {
27033
- className: weekend, styles: `left:${left}px;width:${width}px;height:100%;`
27965
+ className: weekend, styles: `${align} width:${width}px;height:100%;`
27034
27966
  });
27035
27967
  container.appendChild(weekendDiv);
27036
27968
  }
@@ -27102,7 +28034,7 @@ class EventMarker$1 {
27102
28034
  this.eventMarkersContainer = createElement('div', {
27103
28035
  className: eventMarkersContainer
27104
28036
  });
27105
- this.eventMarkersContainer.setAttribute("role", "term");
28037
+ this.eventMarkersContainer.setAttribute('role', 'term');
27106
28038
  this.parent.ganttChartModule.chartBodyContent.appendChild(this.eventMarkersContainer);
27107
28039
  }
27108
28040
  this.eventMarkersContainer.innerHTML = '';
@@ -27135,8 +28067,15 @@ class EventMarker$1 {
27135
28067
  let rightArrow;
27136
28068
  for (let i = 0; i < this.parent.eventMarkers.length; i++) {
27137
28069
  left = this.parent.dataOperation.getTaskLeft(this.parent.dateValidationModule.getDateFromFormat(this.parent.eventMarkers[i].day, true), false);
28070
+ let align;
28071
+ if (this.parent.enableRtl) {
28072
+ align = `right:${left}px;`;
28073
+ }
28074
+ else {
28075
+ align = `left:${left}px;`;
28076
+ }
27138
28077
  eventMarkerElement = createElement('div', {
27139
- className: eventMarkersChild, styles: `left:${left}px; height:100%;`,
28078
+ className: eventMarkersChild, styles: `${align} height:100%;`,
27140
28079
  id: 'stripline' + i
27141
28080
  });
27142
28081
  if (this.parent.eventMarkers[i].label) {
@@ -27145,6 +28084,12 @@ class EventMarker$1 {
27145
28084
  });
27146
28085
  const property = this.parent.disableHtmlEncode ? 'textContent' : 'innerHTML';
27147
28086
  spanElement[property] = this.parent.eventMarkers[i].label;
28087
+ if (this.parent.enableRtl) {
28088
+ spanElement.style.right = '5px';
28089
+ }
28090
+ else {
28091
+ spanElement.style.left = '5px';
28092
+ }
27148
28093
  eventMarkerElement.appendChild(spanElement);
27149
28094
  rightArrow = createElement('div', {
27150
28095
  className: 'e-gantt-right-arrow'
@@ -27321,8 +28266,8 @@ class CriticalPath {
27321
28266
  predecessorIndex = modelIds.indexOf(checkBeyondEnddate[k].toString());
27322
28267
  }
27323
28268
  else {
27324
- let currentRecords = this.parent.currentViewData.filter((data) => {
27325
- return parseInt(data.ganttProperties.taskId) == checkBeyondEnddate[k];
28269
+ const currentRecords = this.parent.currentViewData.filter((data) => {
28270
+ return parseInt(data.ganttProperties.taskId) === checkBeyondEnddate[k];
27326
28271
  });
27327
28272
  for (let i = 0; i < currentRecords.length; i++) {
27328
28273
  if (!currentRecords[i].hasChildRecords && currentRecords[i].ganttProperties.endDate >= this.maxEndDate) {
@@ -27355,10 +28300,10 @@ class CriticalPath {
27355
28300
  const individualPredecessorLength = totalPredecessorsCollection[x].ganttProperties.predecessor.length;
27356
28301
  const taskid = ((totalPredecessorsCollection[x].ganttProperties.taskId));
27357
28302
  for (let y = 0; y < individualPredecessorLength; y++) {
27358
- if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) != "string") {
28303
+ if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) != 'string') {
27359
28304
  tempTaskId = parseInt((predecessor[y].from), 10);
27360
28305
  }
27361
- else if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) === "string") {
28306
+ else if (!isNaN(Number(predecessor[y].from)) && typeof (taskid) === 'string') {
27362
28307
  tempTaskId = predecessor[y].from;
27363
28308
  }
27364
28309
  else {
@@ -27381,15 +28326,16 @@ class CriticalPath {
27381
28326
  toPredecessor = toPredecessor + ',' + predecessor[y].type;
27382
28327
  }
27383
28328
  else {
27384
- to = to + ',' + predecessor[y].to + ':' + predecessor[y].offset + predecessor[y].offsetUnit;
28329
+ to = to + ',' + predecessor[y].to + ':' + predecessor[y].offset +
28330
+ predecessor[y].offsetUnit;
27385
28331
  toPredecessor = toPredecessor + ',' + predecessor[y].type;
27386
28332
  }
27387
28333
  }
27388
28334
  }
27389
- if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) != "string") {
28335
+ if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) != 'string') {
27390
28336
  tempTaskId = parseInt((predecessor[y].to), 10);
27391
28337
  }
27392
- else if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) === "string") {
28338
+ else if (!isNaN(Number(predecessor[y].to)) && typeof (taskid) === 'string') {
27393
28339
  tempTaskId = predecessor[y].to;
27394
28340
  }
27395
28341
  else {
@@ -27402,7 +28348,8 @@ class CriticalPath {
27402
28348
  fromPredecessor = predecessor[y].type;
27403
28349
  }
27404
28350
  else {
27405
- from = predecessor[y].from + ':' + predecessor[y].offset + predecessor[y].offsetUnit;
28351
+ from = predecessor[y].from + ':' + predecessor[y].offset +
28352
+ predecessor[y].offsetUnit;
27406
28353
  fromPredecessor = predecessor[y].type;
27407
28354
  }
27408
28355
  }
@@ -27412,7 +28359,8 @@ class CriticalPath {
27412
28359
  fromPredecessor = fromPredecessor + ',' + predecessor[y].type;
27413
28360
  }
27414
28361
  else {
27415
- from = from + ',' + predecessor[y].from + ':' + predecessor[y].offset + predecessor[y].offsetUnit;
28362
+ from = from + ',' + predecessor[y].from + ':' + predecessor[y].offset +
28363
+ predecessor[y].offsetUnit;
27416
28364
  fromPredecessor = fromPredecessor + ',' + predecessor[y].type;
27417
28365
  }
27418
28366
  }
@@ -27539,7 +28487,8 @@ class CriticalPath {
27539
28487
  }
27540
28488
  }
27541
28489
  // execute if the current calculated slack value is less than the previous slack value.
27542
- else if (collection[fromTaskIdIndex]['slack'] > dateDifference && collection[fromTaskIdIndex]['slack'] !== 0) {
28490
+ else if (collection[fromTaskIdIndex]['slack'] > dateDifference &&
28491
+ collection[fromTaskIdIndex]['slack'] !== 0) {
27543
28492
  // execute if the offset value is not given.
27544
28493
  if (fromDateArray1.length <= 1) {
27545
28494
  if (collection[totaskId]['slack'] + dateDifference < 0) {
@@ -27589,7 +28538,8 @@ class CriticalPath {
27589
28538
  }
27590
28539
  }
27591
28540
  //It execute while already the slack value is set and it is higher than the datedifference.
27592
- else if (collection[fromTaskIdIndex]['slack'] > dateDifference && collection[fromTaskIdIndex]['slack'] !== 0) {
28541
+ else if (collection[fromTaskIdIndex]['slack'] > dateDifference &&
28542
+ collection[fromTaskIdIndex]['slack'] !== 0) {
27593
28543
  if (fromDateArray1.length <= 1) {
27594
28544
  if (collection[totaskId]['slack'] + dateDifference < 0) {
27595
28545
  collection[fromTaskIdIndex]['slack'] = 0;
@@ -27617,7 +28567,8 @@ class CriticalPath {
27617
28567
  if (isNullOrUndefined(collection[fromTaskIdIndex]['slack'])) {
27618
28568
  collection[fromTaskIdIndex]['slack'] = dateDifference;
27619
28569
  }
27620
- else if (collection[fromTaskIdIndex]['slack'] > dateDifference && collection[fromTaskIdIndex]['slack'] !== 0) {
28570
+ else if (collection[fromTaskIdIndex]['slack'] > dateDifference &&
28571
+ collection[fromTaskIdIndex]['slack'] !== 0) {
27621
28572
  collection[fromTaskIdIndex]['slack'] = dateDifference;
27622
28573
  }
27623
28574
  }
@@ -27628,7 +28579,8 @@ class CriticalPath {
27628
28579
  // calculate slack value for the task contains predecessor connection in "finish to finish".
27629
28580
  if (fromDataPredecessor[i] === 'FF') {
27630
28581
  // execute if the previous task is from finish to start or finish to finish state.
27631
- if (collection[totaskId]['fs'] === 1 || collection[totaskId]['ff'] === 1 || collection[totaskId]['fs'] === -1) {
28582
+ if (collection[totaskId]['fs'] === 1 || collection[totaskId]['ff'] === 1 ||
28583
+ collection[totaskId]['fs'] === -1) {
27632
28584
  if (collection[totaskId]['fs'] === 1 || collection[totaskId]['ff'] === 1) {
27633
28585
  prevTaskEnddate = toIdFlatData.endDate;
27634
28586
  ffslack = collection[totaskId]['slack'];
@@ -27931,7 +28883,7 @@ class CriticalPath {
27931
28883
  }
27932
28884
  else {
27933
28885
  let currentRecords = this.parent.currentViewData.filter((data) => {
27934
- return (data.ganttProperties.taskId).toString() == criticalPathIds[i].toString();
28886
+ return (data.ganttProperties.taskId).toString() === criticalPathIds[i].toString();
27935
28887
  });
27936
28888
  for (let i = 0; i < currentRecords.length; i++) {
27937
28889
  if (currentRecords[i].ganttProperties.isCritical || currentRecords[i].ganttProperties.endDate >= this.maxEndDate) {
@@ -27945,13 +28897,13 @@ class CriticalPath {
27945
28897
  const columnFields = this.parent.taskFields;
27946
28898
  if (criticalData.parentItem) {
27947
28899
  const parentRecord = this.parent.currentViewData.filter((data) => {
27948
- return criticalData.parentItem.uniqueID == data.uniqueID;
28900
+ return criticalData.parentItem.uniqueID === data.uniqueID;
27949
28901
  });
27950
28902
  const parentIndex = this.parent.currentViewData.indexOf(parentRecord[0]);
27951
28903
  const parentElement = this.parent.getRowByIndex(parentIndex);
27952
28904
  let parentTaskbarElement = parentElement.querySelectorAll('.e-taskbar-main-container');
27953
28905
  for (let i = 0; i < parentTaskbarElement.length; i++) {
27954
- if (parentTaskbarElement[i].getAttribute('rowuniqueid') == criticalData['rowUniqueID']) {
28906
+ if (parentTaskbarElement[i].getAttribute('rowuniqueid') === criticalData['rowUniqueID']) {
27955
28907
  addClass(parentTaskbarElement[i].querySelectorAll('.e-gantt-child-taskbar-inner-div'), criticalChildTaskBarInnerDiv);
27956
28908
  }
27957
28909
  }
@@ -28097,6 +29049,7 @@ class ContextMenu$2 {
28097
29049
  this.contextMenu = new ContextMenu$1({
28098
29050
  items: this.getMenuItems(),
28099
29051
  locale: this.parent.locale,
29052
+ enableRtl: this.parent.enableRtl,
28100
29053
  target: target,
28101
29054
  animationSettings: { effect: 'None' },
28102
29055
  select: this.contextMenuItemClick.bind(this),
@@ -28237,6 +29190,12 @@ class ContextMenu$2 {
28237
29190
  };
28238
29191
  // eslint-disable-next-line
28239
29192
  this.parent.trigger('actionBegin', eventArgs, (eventArgs) => {
29193
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
29194
+ this.parent.showMaskRow();
29195
+ }
29196
+ else {
29197
+ this.parent.showSpinner();
29198
+ }
28240
29199
  this.parent.chartRowsModule.splitTask(this.rowData[taskSettings.id], currentClickedDate);
28241
29200
  });
28242
29201
  }
@@ -28257,6 +29216,12 @@ class ContextMenu$2 {
28257
29216
  target: this.targetElement
28258
29217
  };
28259
29218
  this.parent.trigger('actionBegin', eventArgs, (eventArgs) => {
29219
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
29220
+ this.parent.showMaskRow();
29221
+ }
29222
+ else {
29223
+ this.parent.showSpinner();
29224
+ }
28260
29225
  if (eventArgs.cancel === false) {
28261
29226
  this.parent.chartRowsModule.mergeTask(this.rowData[taskSettings.id], segmentIndexes);
28262
29227
  }
@@ -28265,12 +29230,30 @@ class ContextMenu$2 {
28265
29230
  // eslint-disable-next-line
28266
29231
  getClickedDate(element) {
28267
29232
  // context menu click position
28268
- const ganttElementPosition = this.parent.getOffsetRect(this.parent.element);
29233
+ let ganttElementPositionLeft;
28269
29234
  // task left position
28270
- const pageLeft = ganttElementPosition.left + this.parent.ganttChartModule.chartElement.offsetLeft +
28271
- this.rowData.ganttProperties.left - this.parent.ganttChartModule.scrollElement.scrollLeft;
28272
- // difference from task start date to current click position.
28273
- const currentTaskDifference = this.clickedPosition - pageLeft;
29235
+ if (this.parent.enableRtl) {
29236
+ const box = this.parent.element.getBoundingClientRect();
29237
+ const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft ||
29238
+ document.body.scrollLeft;
29239
+ const clientLeft = document.documentElement.clientLeft || document.body.clientLeft || 0;
29240
+ ganttElementPositionLeft = box.left + scrollLeft - clientLeft;
29241
+ }
29242
+ else {
29243
+ ganttElementPositionLeft = this.parent.getOffsetRect(this.parent.element).left;
29244
+ }
29245
+ let pageLeft;
29246
+ let currentTaskDifference;
29247
+ if (this.parent.enableRtl) {
29248
+ pageLeft = Math.abs(ganttElementPositionLeft + this.parent.ganttChartModule.chartElement.offsetWidth -
29249
+ this.rowData.ganttProperties.left - this.parent.ganttChartModule.scrollElement.scrollLeft);
29250
+ currentTaskDifference = Math.abs(this.clickedPosition - pageLeft);
29251
+ }
29252
+ else {
29253
+ pageLeft = ganttElementPositionLeft + this.parent.ganttChartModule.chartElement.offsetLeft +
29254
+ this.rowData.ganttProperties.left - this.parent.ganttChartModule.scrollElement.scrollLeft;
29255
+ currentTaskDifference = this.clickedPosition - pageLeft;
29256
+ }
28274
29257
  let splitTaskDuration = Math.ceil(currentTaskDifference / this.parent.perDayWidth);
28275
29258
  const startDate = this.rowData.ganttProperties.startDate;
28276
29259
  if (!isNullOrUndefined(this.parent.timelineSettings.bottomTier) && this.parent.timelineSettings.bottomTier.unit === 'Hour') {
@@ -28780,6 +29763,12 @@ class ExcelExport$1 {
28780
29763
  bindEvents() {
28781
29764
  this.parent.treeGrid.beforeExcelExport = (args) => {
28782
29765
  this.parent.trigger('beforeExcelExport', args);
29766
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
29767
+ this.parent.showMaskRow();
29768
+ }
29769
+ else {
29770
+ this.parent.showSpinner();
29771
+ }
28783
29772
  };
28784
29773
  this.parent.treeGrid.excelQueryCellInfo = (args) => {
28785
29774
  this.parent.trigger('excelQueryCellInfo', args);
@@ -28789,6 +29778,12 @@ class ExcelExport$1 {
28789
29778
  };
28790
29779
  this.parent.treeGrid.excelExportComplete = (args) => {
28791
29780
  this.parent.trigger('excelExportComplete', args);
29781
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
29782
+ this.parent.hideMaskRow();
29783
+ }
29784
+ else {
29785
+ this.parent.hideSpinner();
29786
+ }
28792
29787
  };
28793
29788
  }
28794
29789
  }
@@ -28971,6 +29966,12 @@ class RowDD$1 {
28971
29966
  if (!args.cancel) {
28972
29967
  args.requestType = 'beforeDrop';
28973
29968
  this.parent.trigger('actionBegin', args);
29969
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
29970
+ this.parent.showMaskRow();
29971
+ }
29972
+ else {
29973
+ this.parent.showSpinner();
29974
+ }
28974
29975
  if (!args.cancel) {
28975
29976
  this.dropRows(args, true); // method to update the data collections based on drop action
28976
29977
  args.cancel = true;
@@ -29068,15 +30069,15 @@ class RowDD$1 {
29068
30069
  }
29069
30070
  }
29070
30071
  if (!this.parent.enableVirtualization) {
29071
- let data = gObj.flatData;
30072
+ const data = gObj.flatData;
29072
30073
  let startIndex;
29073
30074
  let endIndex;
29074
- let ganttData = this.parent.dataSource;
29075
- let uniqueTaskID = this.parent.taskFields.id;
30075
+ const ganttData = this.parent.dataSource;
30076
+ const uniqueTaskID = this.parent.taskFields.id;
29076
30077
  if (draggedRecord.index < droppedRecord.index) {
29077
30078
  startIndex = draggedRecord.index;
29078
30079
  for (let i = 0; i < ganttData.length; i++) {
29079
- let currentData = this.parent.currentViewData.filter(function (e) {
30080
+ const currentData = this.parent.currentViewData.filter(function (e) {
29080
30081
  return e[uniqueTaskID] === ganttData[i][uniqueTaskID];
29081
30082
  })[0];
29082
30083
  if (currentData && currentData.index > droppedRecord.index) {
@@ -29088,7 +30089,7 @@ class RowDD$1 {
29088
30089
  else {
29089
30090
  startIndex = droppedRecord.index;
29090
30091
  for (let i = 0; i < ganttData.length; i++) {
29091
- let currentData = this.parent.currentViewData.filter(function (e) {
30092
+ const currentData = this.parent.currentViewData.filter(function (e) {
29092
30093
  return e[uniqueTaskID] === ganttData[i][uniqueTaskID];
29093
30094
  })[0];
29094
30095
  if (currentData && currentData.index > draggedRecord.index) {
@@ -29101,7 +30102,7 @@ class RowDD$1 {
29101
30102
  if (!isNullOrUndefined(data[i])) {
29102
30103
  data[i].index = i;
29103
30104
  if (!isNullOrUndefined(data[i].parentItem)) {
29104
- let updatedParent = data.filter((e) => {
30105
+ const updatedParent = data.filter((e) => {
29105
30106
  return e.uniqueID === data[i].parentUniqueID;
29106
30107
  })[0];
29107
30108
  data[i].parentItem.index = updatedParent.index;
@@ -29179,7 +30180,7 @@ class RowDD$1 {
29179
30180
  }
29180
30181
  let validateRecords;
29181
30182
  if (toParent.uniqueID === draggedParent.uniqueID || (draggedParent.parentItem &&
29182
- toParent.uniqueID == this.parent.flatData[this.parent.ids.indexOf(draggedParent.parentItem.taskId)].uniqueID)) {
30183
+ toParent.uniqueID === this.parent.flatData[this.parent.ids.indexOf(draggedParent.parentItem.taskId)].uniqueID)) {
29183
30184
  validateRecords = this.parent.currentViewData.filter((data) => {
29184
30185
  if ((data.ganttProperties.predecessor && data.ganttProperties.predecessor.length > 0)) {
29185
30186
  for (let i = 0; i < data.ganttProperties.predecessor.length; i++) {
@@ -29597,7 +30598,7 @@ class RowDD$1 {
29597
30598
  }
29598
30599
  let idx;
29599
30600
  const ganttData = dataSource.length > 0 && this.parent.viewType !== 'ResourceView' ?
29600
- dataSource : this.parent.flatData;
30601
+ dataSource : this.parent.updatedRecords;
29601
30602
  for (let i = 0; i < ganttData.length; i++) {
29602
30603
  if (this.parent.viewType === 'ResourceView') {
29603
30604
  if (ganttData[i].ganttProperties.rowUniqueID === deletedRow.ganttProperties.rowUniqueID) {
@@ -32946,217 +33947,215 @@ class PdfGanttPredecessor {
32946
33947
  let childPageData;
32947
33948
  let parentY = 0;
32948
33949
  let childY = 0;
32949
- if (childTask && parentTask) {
32950
- switch (this.type) {
32951
- case 'FS':
32952
- if (childTask.startPage > -1 && parentTask.endPage > -1) {
32953
- startPage = pages[parentTask.endPage];
32954
- endPage = pages[childTask.startPage];
32955
- parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
32956
- childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
32957
- if (this.parentIndex < this.childIndex) {
32958
- if (this.parentLeft < this.childLeft && this.childLeft > (this.parentLeft + this.parentWidth + 25)) {
32959
- predecessorType = 'FSType1';
32960
- }
32961
- else {
32962
- predecessorType = 'FSType2';
32963
- }
33950
+ switch (this.type) {
33951
+ case 'FS':
33952
+ if (childTask.startPage > -1 && parentTask.endPage > -1) {
33953
+ startPage = pages[parentTask.endPage];
33954
+ endPage = pages[childTask.startPage];
33955
+ parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
33956
+ childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
33957
+ if (this.parentIndex < this.childIndex) {
33958
+ if (this.parentLeft < this.childLeft && this.childLeft > (this.parentLeft + this.parentWidth + 25)) {
33959
+ predecessorType = 'FSType1';
32964
33960
  }
32965
33961
  else {
32966
- if (this.parentLeft < this.childLeft && this.childLeft > (this.parentLeft + this.parentWidth + 25)) {
32967
- predecessorType = 'FSType3';
32968
- }
32969
- else {
32970
- predecessorType = 'FSType4';
32971
- }
33962
+ predecessorType = 'FSType2';
32972
33963
  }
32973
33964
  }
32974
33965
  else {
32975
- return;
33966
+ if (this.parentLeft < this.childLeft && this.childLeft > (this.parentLeft + this.parentWidth + 25)) {
33967
+ predecessorType = 'FSType3';
33968
+ }
33969
+ else {
33970
+ predecessorType = 'FSType4';
33971
+ }
32976
33972
  }
32977
- break;
32978
- case 'SF':
32979
- if (childTask.endPage > -1 && parentTask.startPage > -1) {
32980
- startPage = pages[parentTask.startPage];
32981
- endPage = pages[childTask.endPage];
32982
- parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
32983
- childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
32984
- if (this.parentIndex < this.childIndex) {
32985
- if (this.parentLeft > this.childLeft + this.childWidth) {
32986
- predecessorType = 'SFType1';
32987
- }
32988
- else {
32989
- predecessorType = 'SFType2';
32990
- }
33973
+ }
33974
+ else {
33975
+ return;
33976
+ }
33977
+ break;
33978
+ case 'SF':
33979
+ if (childTask.endPage > -1 && parentTask.startPage > -1) {
33980
+ startPage = pages[parentTask.startPage];
33981
+ endPage = pages[childTask.endPage];
33982
+ parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
33983
+ childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
33984
+ if (this.parentIndex < this.childIndex) {
33985
+ if (this.parentLeft > this.childLeft + this.childWidth) {
33986
+ predecessorType = 'SFType1';
32991
33987
  }
32992
33988
  else {
32993
- if (this.parentLeft > this.childLeft + this.childWidth) {
32994
- predecessorType = 'SFType3';
32995
- }
32996
- else {
32997
- predecessorType = 'SFType4';
32998
- }
33989
+ predecessorType = 'SFType2';
32999
33990
  }
33000
33991
  }
33001
33992
  else {
33002
- return;
33993
+ if (this.parentLeft > this.childLeft + this.childWidth) {
33994
+ predecessorType = 'SFType3';
33995
+ }
33996
+ else {
33997
+ predecessorType = 'SFType4';
33998
+ }
33003
33999
  }
33004
- break;
33005
- case 'FF':
33006
- if (childTask.endPage > -1 && parentTask.endPage > -1) {
33007
- startPage = pages[parentTask.endPage];
33008
- endPage = pages[childTask.endPage];
33009
- parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
33010
- childPageData = pdfGantt.pdfPageDetail[childTask.endPage - pdfGantt.chartPageIndex];
33011
- if (this.parentIndex < this.childIndex) {
33012
- if ((this.childLeft + this.childWidth) >= (this.parentLeft + this.parentWidth)) {
33013
- predecessorType = 'FFType1';
33014
- }
33015
- else {
33016
- predecessorType = 'FFType2';
33017
- }
34000
+ }
34001
+ else {
34002
+ return;
34003
+ }
34004
+ break;
34005
+ case 'FF':
34006
+ if (childTask.endPage > -1 && parentTask.endPage > -1) {
34007
+ startPage = pages[parentTask.endPage];
34008
+ endPage = pages[childTask.endPage];
34009
+ parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
34010
+ childPageData = pdfGantt.pdfPageDetail[childTask.endPage - pdfGantt.chartPageIndex];
34011
+ if (this.parentIndex < this.childIndex) {
34012
+ if ((this.childLeft + this.childWidth) >= (this.parentLeft + this.parentWidth)) {
34013
+ predecessorType = 'FFType1';
33018
34014
  }
33019
34015
  else {
33020
- if ((this.childLeft + this.childWidth) >= (this.parentLeft + this.parentWidth)) {
33021
- predecessorType = 'FFType3';
33022
- }
33023
- else {
33024
- predecessorType = 'FFType4';
33025
- }
34016
+ predecessorType = 'FFType2';
33026
34017
  }
33027
34018
  }
33028
34019
  else {
33029
- return;
34020
+ if ((this.childLeft + this.childWidth) >= (this.parentLeft + this.parentWidth)) {
34021
+ predecessorType = 'FFType3';
34022
+ }
34023
+ else {
34024
+ predecessorType = 'FFType4';
34025
+ }
33030
34026
  }
33031
- break;
33032
- case 'SS':
33033
- if (childTask.startPage > -1 && parentTask.startPage > -1) {
33034
- startPage = pages[parentTask.startPage];
33035
- endPage = pages[childTask.startPage];
33036
- parentPageData = pdfGantt.pdfPageDetail[parentTask.startPage - pdfGantt.chartPageIndex];
33037
- childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
33038
- if (this.parentIndex < this.childIndex) {
33039
- if (this.parentLeft >= this.childLeft) {
33040
- predecessorType = 'SSType1';
33041
- }
33042
- else {
33043
- predecessorType = 'SSType2';
33044
- }
34027
+ }
34028
+ else {
34029
+ return;
34030
+ }
34031
+ break;
34032
+ case 'SS':
34033
+ if (childTask.startPage > -1 && parentTask.startPage > -1) {
34034
+ startPage = pages[parentTask.startPage];
34035
+ endPage = pages[childTask.startPage];
34036
+ parentPageData = pdfGantt.pdfPageDetail[parentTask.startPage - pdfGantt.chartPageIndex];
34037
+ childPageData = pdfGantt.pdfPageDetail[childTask.startPage - pdfGantt.chartPageIndex];
34038
+ if (this.parentIndex < this.childIndex) {
34039
+ if (this.parentLeft >= this.childLeft) {
34040
+ predecessorType = 'SSType1';
33045
34041
  }
33046
34042
  else {
33047
- if (this.parentLeft >= this.childLeft) {
33048
- predecessorType = 'SSType3';
33049
- }
33050
- else {
33051
- predecessorType = 'SSType4';
33052
- }
34043
+ predecessorType = 'SSType2';
33053
34044
  }
33054
34045
  }
33055
34046
  else {
33056
- return;
34047
+ if (this.parentLeft >= this.childLeft) {
34048
+ predecessorType = 'SSType3';
34049
+ }
34050
+ else {
34051
+ predecessorType = 'SSType4';
34052
+ }
33057
34053
  }
33058
- break;
33059
- }
33060
- let midPoint = Math.round((this.parent.rowHeight - 1) / 2.0);
33061
- midPoint = pixelToPoint(midPoint);
33062
- /* eslint-disable-next-line */
33063
- let point1, point2, point3, point4, point5, point6;
33064
- point1 = point2 = point3 = point4 = point5 = point6 = new PointF();
33065
- const parentTaskpoint = Object.assign({}, parentTask.taskStartPoint);
33066
- const childTaskpoint = Object.assign({}, childTask.taskStartPoint);
33067
- parentY = parentTaskpoint.y + parentPageData.startPoint.y;
33068
- childY = childTaskpoint.y + childPageData.startPoint.y;
33069
- const ffpoint1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth), parentY + midPoint);
33070
- const sspoint1 = new PointF(pixelToPoint(this.parentLeft) - 1, parentY + midPoint);
33071
- const ffpoint3 = new PointF(pixelToPoint(this.childLeft - 20), childY + midPoint);
33072
- const ffpoint4 = new PointF(pixelToPoint(this.childLeft - 6 - this.lineWidth) - 1, childY + midPoint);
33073
- const sspoint4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 6 + this.lineWidth) + 1, childY + midPoint);
33074
- switch (predecessorType) {
33075
- case 'FSType1':
33076
- case 'FSType3':
33077
- point1 = ffpoint1;
33078
- point2 = new PointF(pixelToPoint(this.childLeft - 20), parentY + midPoint);
33079
- point3 = ffpoint3;
33080
- point4 = ffpoint4;
33081
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33082
- break;
33083
- case 'FSType2':
33084
- point1 = ffpoint1;
33085
- point2 = new PointF(point1.x + 10, parentY + midPoint);
33086
- point3 = new PointF(point1.x + 10, childY + 2);
33087
- point4 = new PointF(pixelToPoint(this.childLeft - 20), childY + 2);
33088
- point5 = ffpoint3;
33089
- point6 = ffpoint4;
33090
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
33091
- break;
33092
- case 'FSType4':
33093
- point1 = ffpoint1;
33094
- point2 = new PointF(point1.x + 10, parentY + midPoint);
33095
- point3 = new PointF(point1.x + 10, parentY + 2);
33096
- point4 = new PointF(pixelToPoint(this.childLeft - 20), parentY + 2);
33097
- point5 = ffpoint3;
33098
- point6 = ffpoint4;
33099
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
33100
- break;
33101
- case 'FFType1':
33102
- case 'FFType3':
33103
- point1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth) + 1, parentY + midPoint);
33104
- point2 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + midPoint);
33105
- point3 = new PointF(point2.x, childY + midPoint);
33106
- point4 = sspoint4;
33107
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33108
- break;
33109
- case 'FFType2':
33110
- case 'FFType4':
33111
- point1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth) + 1, parentY + midPoint);
33112
- point2 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth + 20), parentY + midPoint);
33113
- point3 = new PointF(point2.x, childY + midPoint);
33114
- point4 = sspoint4;
33115
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33116
- break;
33117
- case 'SSType1':
33118
- case 'SSType3':
33119
- point1 = sspoint1;
33120
- point2 = new PointF(pixelToPoint(this.childLeft - 20), parentY + midPoint);
33121
- point3 = new PointF(point2.x, childY + midPoint);
33122
- point4 = ffpoint4;
33123
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33124
- break;
33125
- case 'SSType2':
33126
- case 'SSType4':
33127
- point1 = sspoint1;
33128
- point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
33129
- point3 = new PointF(point2.x, childY + midPoint);
33130
- point4 = ffpoint4;
33131
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33132
- break;
33133
- case 'SFType1':
33134
- case 'SFType3':
33135
- point1 = sspoint1;
33136
- point2 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + midPoint);
33137
- point3 = new PointF(point2.x, childY + midPoint);
33138
- point4 = sspoint4;
33139
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
33140
- break;
33141
- case 'SFType2':
33142
- point1 = sspoint1;
33143
- point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
33144
- point3 = new PointF(point2.x, childY + 2);
33145
- point4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), childY + 2);
33146
- point5 = new PointF(point4.x, childY + midPoint);
33147
- point6 = sspoint4;
33148
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
33149
- break;
33150
- case 'SFType4':
33151
- point1 = sspoint1;
33152
- point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
33153
- point3 = new PointF(point2.x, parentY + 2);
33154
- point4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + 2);
33155
- point5 = new PointF(point4.x, childY + midPoint);
33156
- point6 = sspoint4;
33157
- this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
33158
- break;
33159
- }
34054
+ }
34055
+ else {
34056
+ return;
34057
+ }
34058
+ break;
34059
+ }
34060
+ let midPoint = Math.round((this.parent.rowHeight - 1) / 2.0);
34061
+ midPoint = pixelToPoint(midPoint);
34062
+ /* eslint-disable-next-line */
34063
+ let point1, point2, point3, point4, point5, point6;
34064
+ point1 = point2 = point3 = point4 = point5 = point6 = new PointF();
34065
+ const parentTaskpoint = Object.assign({}, parentTask.taskStartPoint);
34066
+ const childTaskpoint = Object.assign({}, childTask.taskStartPoint);
34067
+ parentY = parentTaskpoint.y + parentPageData.startPoint.y;
34068
+ childY = childTaskpoint.y + childPageData.startPoint.y;
34069
+ const ffpoint1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth), parentY + midPoint);
34070
+ const sspoint1 = new PointF(pixelToPoint(this.parentLeft) - 1, parentY + midPoint);
34071
+ const ffpoint3 = new PointF(pixelToPoint(this.childLeft - 20), childY + midPoint);
34072
+ const ffpoint4 = new PointF(pixelToPoint(this.childLeft - 6 - this.lineWidth) - 1, childY + midPoint);
34073
+ const sspoint4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 6 + this.lineWidth) + 1, childY + midPoint);
34074
+ switch (predecessorType) {
34075
+ case 'FSType1':
34076
+ case 'FSType3':
34077
+ point1 = ffpoint1;
34078
+ point2 = new PointF(pixelToPoint(this.childLeft - 20), parentY + midPoint);
34079
+ point3 = ffpoint3;
34080
+ point4 = ffpoint4;
34081
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34082
+ break;
34083
+ case 'FSType2':
34084
+ point1 = ffpoint1;
34085
+ point2 = new PointF(point1.x + 10, parentY + midPoint);
34086
+ point3 = new PointF(point1.x + 10, childY + 2);
34087
+ point4 = new PointF(pixelToPoint(this.childLeft - 20), childY + 2);
34088
+ point5 = ffpoint3;
34089
+ point6 = ffpoint4;
34090
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
34091
+ break;
34092
+ case 'FSType4':
34093
+ point1 = ffpoint1;
34094
+ point2 = new PointF(point1.x + 10, parentY + midPoint);
34095
+ point3 = new PointF(point1.x + 10, parentY + 2);
34096
+ point4 = new PointF(pixelToPoint(this.childLeft - 20), parentY + 2);
34097
+ point5 = ffpoint3;
34098
+ point6 = ffpoint4;
34099
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
34100
+ break;
34101
+ case 'FFType1':
34102
+ case 'FFType3':
34103
+ point1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth) + 1, parentY + midPoint);
34104
+ point2 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + midPoint);
34105
+ point3 = new PointF(point2.x, childY + midPoint);
34106
+ point4 = sspoint4;
34107
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34108
+ break;
34109
+ case 'FFType2':
34110
+ case 'FFType4':
34111
+ point1 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth) + 1, parentY + midPoint);
34112
+ point2 = new PointF(pixelToPoint(this.parentLeft + this.parentWidth + 20), parentY + midPoint);
34113
+ point3 = new PointF(point2.x, childY + midPoint);
34114
+ point4 = sspoint4;
34115
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34116
+ break;
34117
+ case 'SSType1':
34118
+ case 'SSType3':
34119
+ point1 = sspoint1;
34120
+ point2 = new PointF(pixelToPoint(this.childLeft - 20), parentY + midPoint);
34121
+ point3 = new PointF(point2.x, childY + midPoint);
34122
+ point4 = ffpoint4;
34123
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34124
+ break;
34125
+ case 'SSType2':
34126
+ case 'SSType4':
34127
+ point1 = sspoint1;
34128
+ point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
34129
+ point3 = new PointF(point2.x, childY + midPoint);
34130
+ point4 = ffpoint4;
34131
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34132
+ break;
34133
+ case 'SFType1':
34134
+ case 'SFType3':
34135
+ point1 = sspoint1;
34136
+ point2 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + midPoint);
34137
+ point3 = new PointF(point2.x, childY + midPoint);
34138
+ point4 = sspoint4;
34139
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint);
34140
+ break;
34141
+ case 'SFType2':
34142
+ point1 = sspoint1;
34143
+ point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
34144
+ point3 = new PointF(point2.x, childY + 2);
34145
+ point4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), childY + 2);
34146
+ point5 = new PointF(point4.x, childY + midPoint);
34147
+ point6 = sspoint4;
34148
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
34149
+ break;
34150
+ case 'SFType4':
34151
+ point1 = sspoint1;
34152
+ point2 = new PointF(pixelToPoint(this.parentLeft - 20), parentY + midPoint);
34153
+ point3 = new PointF(point2.x, parentY + 2);
34154
+ point4 = new PointF(pixelToPoint(this.childLeft + this.childWidth + 20), parentY + 2);
34155
+ point5 = new PointF(point4.x, childY + midPoint);
34156
+ point6 = sspoint4;
34157
+ this.connectLines(startPage, endPage, point1, point2, point3, point4, childTask, midPoint, point5, point6);
34158
+ break;
33160
34159
  }
33161
34160
  }
33162
34161
  /**
@@ -33639,6 +34638,12 @@ class PdfExport {
33639
34638
  cancel: false
33640
34639
  };
33641
34640
  this.parent.trigger('beforePdfExport', args);
34641
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
34642
+ this.parent.showMaskRow();
34643
+ }
34644
+ else {
34645
+ this.parent.showSpinner();
34646
+ }
33642
34647
  if (getValue('cancel', args)) {
33643
34648
  /* eslint-disable-next-line */
33644
34649
  return new Promise((resolve, reject) => {
@@ -33670,6 +34675,12 @@ class PdfExport {
33670
34675
  }
33671
34676
  this.processExport(data, pdfExportProperties, isMultipleExport).then(() => {
33672
34677
  this.parent.trigger('pdfExportComplete', {});
34678
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
34679
+ this.parent.hideMaskRow();
34680
+ }
34681
+ else {
34682
+ this.parent.hideSpinner();
34683
+ }
33673
34684
  resolve(this.pdfDocument);
33674
34685
  });
33675
34686
  }
@@ -33857,5 +34868,5 @@ class VirtualScroll$1 {
33857
34868
  * Gantt index file
33858
34869
  */
33859
34870
 
33860
- export { Gantt, PdfHorizontalOverflowType, parentsUntil$1 as parentsUntil, isScheduledTask, isCountRequired, getSwapKey, isRemoteData, getTaskData, updateDates, formatString, getIndex, pixelToPoint, pointToPixel, getUid$1 as getUid, load, rowDataBound, queryCellInfo, toolbarClick, keyPressed, Edit$2 as Edit, Reorder$1 as Reorder, Resize$1 as Resize, Filter$1 as Filter, Sort$1 as Sort, Dependency, Selection$1 as Selection, Toolbar$3 as Toolbar, DayMarkers, CriticalPath, ContextMenu$2 as ContextMenu, ExcelExport$1 as ExcelExport, ColumnMenu$1 as ColumnMenu, RowDD$1 as RowDD, PdfExport, VirtualScroll$1 as VirtualScroll, Column, DayWorkingTime, AddDialogFieldSettings, EditDialogFieldSettings, EditSettings, EventMarker, FilterSettings, SearchSettings, Holiday, LabelSettings, SelectionSettings, SplitterSettings, TaskFields, TimelineTierSettings, TimelineSettings, TooltipSettings, SortDescriptor, SortSettings, ResourceFields };
34871
+ export { Gantt, PdfHorizontalOverflowType, parentsUntil$1 as parentsUntil, isScheduledTask, isCountRequired, getSwapKey, isRemoteData, getTaskData, updateDates, formatString, getIndex, pixelToPoint, pointToPixel, getUid$1 as getUid, load, rowDataBound, queryCellInfo, toolbarClick, keyPressed, Edit$2 as Edit, Reorder$1 as Reorder, Resize$1 as Resize, Filter$1 as Filter, Sort$1 as Sort, Dependency, Selection$1 as Selection, Toolbar$3 as Toolbar, DayMarkers, CriticalPath, ContextMenu$2 as ContextMenu, ExcelExport$1 as ExcelExport, ColumnMenu$1 as ColumnMenu, RowDD$1 as RowDD, PdfExport, VirtualScroll$1 as VirtualScroll, Column, DayWorkingTime, AddDialogFieldSettings, EditDialogFieldSettings, EditSettings, EventMarker, FilterSettings, SearchSettings, Holiday, LabelSettings, SelectionSettings, SplitterSettings, TaskFields, TimelineTierSettings, TimelineSettings, TooltipSettings, SortDescriptor, SortSettings, ResourceFields, LoadingIndicator };
33861
34872
  //# sourceMappingURL=ej2-gantt.es2015.js.map