@syncfusion/ej2-gantt 21.2.6 → 21.2.9

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.
@@ -388,7 +388,7 @@ var DateProcessor = /** @__PURE__ @class */ (function () {
388
388
  else if (hour > this.parent.defaultStartTime && hour < this.parent.defaultEndTime) {
389
389
  for (var i = 0; i < this.parent.workingTimeRanges.length; i++) {
390
390
  var value = this.parent.workingTimeRanges[i];
391
- if (hour >= value.to && (this.parent.workingTimeRanges[i + 1] &&
391
+ if (hour > value.to && (this.parent.workingTimeRanges[i + 1] &&
392
392
  hour < this.parent.workingTimeRanges[i + 1].from)) {
393
393
  this.setTime(this.parent.workingTimeRanges[i + 1].from, cloneDate);
394
394
  break;
@@ -1923,7 +1923,7 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
1923
1923
  (this.parent.taskMode === 'Manual') ? false :
1924
1924
  data[taskSettings.manual] === true ? false : true;
1925
1925
  this.parent.setRecordValue('ganttProperties', ganttProperties, ganttData);
1926
- if (!isNullOrUndefined(data[taskSettings.id])) {
1926
+ if (!isNullOrUndefined(data[taskSettings.id]) && (!((this.parent.viewType === "ResourceView" && level == 0))) || data[taskSettings.name] === "Unassigned Task") {
1927
1927
  id = data[taskSettings.id];
1928
1928
  name = data[taskSettings.name];
1929
1929
  this.addTaskData(ganttData, data, isLoad);
@@ -2078,29 +2078,53 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
2078
2078
  startDate = this.checkStartDate(startDate, data.ganttProperties, false);
2079
2079
  if (!isNullOrUndefined(duration)) {
2080
2080
  endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
2081
+ if (taskSettings.duration) {
2082
+ remainingDuration = data.ganttProperties.duration - sumOfDuration;
2083
+ if (remainingDuration <= 0) {
2084
+ continue;
2085
+ }
2086
+ duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&
2087
+ duration > remainingDuration ? remainingDuration : duration;
2088
+ endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
2089
+ }
2090
+ else if (!taskSettings.duration && taskSettings.endDate) {
2091
+ endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >
2092
+ data.ganttProperties.endDate.getTime() && i !== segments.length - 1 ? endDate : data.ganttProperties.endDate;
2093
+ duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2094
+ if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()
2095
+ && endDate.getTime() <= data.ganttProperties.endDate.getTime()) {
2096
+ ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2097
+ continue;
2098
+ }
2099
+ }
2081
2100
  }
2082
2101
  else {
2083
2102
  endDate = this.getDateFromFormat(endDate);
2103
+ if (endDate && (isNullOrUndefined(duration) || String(duration) === '')) {
2104
+ if (endDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {
2105
+ this.setTime(this.parent.defaultEndTime, endDate);
2106
+ }
2107
+ }
2084
2108
  endDate = this.checkEndDate(endDate, data.ganttProperties, false);
2085
2109
  duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2086
- }
2087
- if (taskSettings.duration) {
2088
- remainingDuration = data.ganttProperties.duration - sumOfDuration;
2089
- if (remainingDuration <= 0) {
2090
- continue;
2110
+ if (taskSettings.duration) {
2111
+ remainingDuration = data.ganttProperties.duration - sumOfDuration - 1;
2112
+ if (remainingDuration <= 0) {
2113
+ continue;
2114
+ }
2115
+ duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&
2116
+ duration > remainingDuration ? remainingDuration : duration;
2117
+ endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
2091
2118
  }
2092
- duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&
2093
- duration > remainingDuration ? remainingDuration : duration;
2094
- endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
2095
- }
2096
- else if (!taskSettings.duration && taskSettings.endDate) {
2097
- endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >
2098
- data.ganttProperties.endDate.getTime() && i !== segments.length - 1 ? endDate : data.ganttProperties.endDate;
2099
- duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2100
- if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()
2101
- && endDate.getTime() <= data.ganttProperties.endDate.getTime()) {
2102
- ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2103
- continue;
2119
+ else if (!taskSettings.duration && taskSettings.endDate) {
2120
+ endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >
2121
+ data.ganttProperties.endDate.getTime() && i !== segments.length - 1 ? endDate : data.ganttProperties.endDate;
2122
+ duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2123
+ if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()
2124
+ && endDate.getTime() <= data.ganttProperties.endDate.getTime()) {
2125
+ ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2126
+ continue;
2127
+ }
2104
2128
  }
2105
2129
  }
2106
2130
  segment = {};
@@ -2342,7 +2366,7 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
2342
2366
  startDate = this.getDateFromFormat(data[taskSettings.startDate], true);
2343
2367
  endDate = this.getDateFromFormat(data[taskSettings.endDate], true);
2344
2368
  }
2345
- var segments = taskSettings.segments ? (data[taskSettings.segments] ||
2369
+ var segments = taskSettings.segments && (!isNullOrUndefined(data[taskSettings.segments]) || !isNullOrUndefined(ganttData.taskData)) ? (data[taskSettings.segments] ||
2346
2370
  ganttData.taskData[taskSettings.segments]) : null;
2347
2371
  var isMileStone = taskSettings.milestone ? data[taskSettings.milestone] ? true : false : false;
2348
2372
  var durationMapping = data[taskSettings.durationUnit] ? data[taskSettings.durationUnit] : '';
@@ -3169,6 +3193,9 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
3169
3193
  return resourceIdCollection;
3170
3194
  }
3171
3195
  resourceIdCollection = data[this.parent.taskFields.resourceInfo];
3196
+ if (resourceIdCollection != "" && typeof resourceIdCollection == "string") {
3197
+ resourceIdCollection = resourceIdCollection.split(',');
3198
+ }
3172
3199
  var resourceData;
3173
3200
  if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.dialogModule)
3174
3201
  && this.parent.editModule.dialogModule.isAddNewResource) {
@@ -3178,6 +3205,7 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
3178
3205
  resourceData = this.parent.resources;
3179
3206
  }
3180
3207
  var resourceIDMapping = this.parent.resourceFields.id;
3208
+ var resourceNameMapping = this.parent.resourceFields.name;
3181
3209
  var resourceUnitMapping = this.parent.resourceFields.unit;
3182
3210
  var resourceGroup = this.parent.resourceFields.group;
3183
3211
  var resources = [];
@@ -3188,7 +3216,7 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
3188
3216
  return true;
3189
3217
  }
3190
3218
  else {
3191
- return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]);
3219
+ return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]) || (resourceIdCollection[count] === resourceInfo[resourceNameMapping]);
3192
3220
  }
3193
3221
  });
3194
3222
  var ganttDataResource = extend({}, resource[0]);
@@ -3929,6 +3957,9 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
3929
3957
  }
3930
3958
  }
3931
3959
  this.parent.setRecordValue('isMilestone', milestone, parentProp, true);
3960
+ if (!isNullOrUndefined(this.parent.taskFields.milestone)) {
3961
+ this.updateMappingData(parentData, 'milestone');
3962
+ }
3932
3963
  if (parentProp.isAutoSchedule) {
3933
3964
  this.calculateDuration(parentData);
3934
3965
  }
@@ -4658,7 +4689,7 @@ var GanttChart = /** @__PURE__ @class */ (function () {
4658
4689
  GanttChart.prototype.setVirtualHeight = function () {
4659
4690
  if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {
4660
4691
  var wrapper = getValue('virtualTrack', this.parent.ganttChartModule.virtualRender);
4661
- wrapper.style.height = this.parent.treeGrid.element.getElementsByClassName('e-virtualtable')[0].style.height;
4692
+ wrapper.style.height = this.parent.treeGrid.element.getElementsByClassName('e-virtualtrack')[0].style.height;
4662
4693
  var wrapper1 = getValue('wrapper', this.parent.ganttChartModule.virtualRender);
4663
4694
  var treegridVirtualHeight = this.parent.treeGrid.element.getElementsByClassName('e-virtualtable')[0].style.transform;
4664
4695
  wrapper1.style.transform = treegridVirtualHeight;
@@ -5349,7 +5380,13 @@ var GanttChart = /** @__PURE__ @class */ (function () {
5349
5380
  * @private
5350
5381
  */
5351
5382
  GanttChart.prototype.getRecordByTaskBar = function (target) {
5352
- var item = this.parent.currentViewData[this.getIndexByTaskBar(target)];
5383
+ var item;
5384
+ if (this.parent.enableVirtualization && this.parent.enableMultiTaskbar) {
5385
+ item = this.parent.flatData[this.getIndexByTaskBar(target)];
5386
+ }
5387
+ else {
5388
+ item = this.parent.currentViewData[this.getIndexByTaskBar(target)];
5389
+ }
5353
5390
  return item;
5354
5391
  };
5355
5392
  /**
@@ -5707,7 +5744,12 @@ var GanttChart = /** @__PURE__ @class */ (function () {
5707
5744
  else {
5708
5745
  var id = row.getAttribute('rowUniqueId');
5709
5746
  var record = this.parent.getRecordByID(id);
5710
- recordIndex = this.parent.currentViewData.indexOf(record);
5747
+ if (this.parent.enableVirtualization && this.parent.enableMultiTaskbar) {
5748
+ recordIndex = this.parent.flatData.indexOf(record);
5749
+ }
5750
+ else {
5751
+ recordIndex = this.parent.currentViewData.indexOf(record);
5752
+ }
5711
5753
  }
5712
5754
  return recordIndex;
5713
5755
  };
@@ -7129,9 +7171,11 @@ var Timeline = /** @__PURE__ @class */ (function () {
7129
7171
  var validStartLeft = this.parent.dataOperation.getTaskLeft(validStartDate, false);
7130
7172
  var validEndLeft = this.parent.dataOperation.getTaskLeft(validEndDate, false);
7131
7173
  var isChanged = void 0;
7174
+ var taskbarModule = this.parent.editModule.taskbarEditModule;
7132
7175
  if (!isNullOrUndefined(maxStartLeft) && ((minStartDate < this.timelineStartDate) ||
7133
- (!isNullOrUndefined(this.parent.editModule.taskbarEditModule)) &&
7134
- (!isNullOrUndefined(this.parent.editModule.taskbarEditModule.taskBarEditAction))) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
7176
+ (!isNullOrUndefined(taskbarModule)) && (!isNullOrUndefined(taskbarModule.taskBarEditAction)
7177
+ && taskbarModule.taskBarEditAction !== 'ProgressResizing' &&
7178
+ taskbarModule.taskBarEditAction !== 'RightResizing')) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
7135
7179
  isChanged = 'prevTimeSpan';
7136
7180
  minStartDate = minStartDate > this.timelineStartDate ? this.timelineStartDate : minStartDate;
7137
7181
  }
@@ -7728,7 +7772,7 @@ var GanttTreeGrid = /** @__PURE__ @class */ (function () {
7728
7772
  this.parent.columnByField = {};
7729
7773
  this.parent.customColumns = [];
7730
7774
  var tasksMapping = ['id', 'name', 'startDate', 'endDate', 'duration', 'dependency',
7731
- 'progress', 'baselineStartDate', 'baselineEndDate', 'resourceInfo', 'notes', 'work', 'manual', 'type'];
7775
+ 'progress', 'baselineStartDate', 'baselineEndDate', 'resourceInfo', 'notes', 'work', 'manual', 'type', 'milestone'];
7732
7776
  var _loop_1 = function (i) {
7733
7777
  var column = {};
7734
7778
  if (typeof ganttObj.columns[i] === 'string') {
@@ -8075,7 +8119,7 @@ var GanttTreeGrid = /** @__PURE__ @class */ (function () {
8075
8119
  }
8076
8120
  }; // eslint-disable-next-line
8077
8121
  GanttTreeGrid.prototype.durationValueAccessor = function (field, data, column) {
8078
- var ganttProp = data.ganttProperties;
8122
+ var ganttProp = (!isNullOrUndefined(data)) ? data.ganttProperties : null;
8079
8123
  if (!isNullOrUndefined(ganttProp)) {
8080
8124
  return this.parent.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);
8081
8125
  }
@@ -9131,7 +9175,7 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
9131
9175
  if (this.taskLabelTemplateFunction && !isNullOrUndefined(progressDiv) && progressDiv.length > 0) {
9132
9176
  var taskLabelTemplateNode = this.taskLabelTemplateFunction(extend({ index: i }, data), this.parent, 'TaskLabelTemplate', this.getTemplateID('TaskLabelTemplate'), false, undefined, progressDiv[0]);
9133
9177
  if (taskLabelTemplateNode && taskLabelTemplateNode.length > 0) {
9134
- tempDiv.appendChild(taskLabelTemplateNode[0]);
9178
+ append(taskLabelTemplateNode, tempDiv);
9135
9179
  labelString = tempDiv.innerHTML;
9136
9180
  }
9137
9181
  }
@@ -9201,7 +9245,7 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
9201
9245
  !this.isTemplate(childLabel) &&
9202
9246
  progressDiv[0].querySelectorAll('.e-task-label')[0].children[0])
9203
9247
  progressDiv[0].querySelectorAll('.e-task-label')[0].children[0].remove();
9204
- if (progressDiv[0].querySelectorAll('.e-task-label')[0].textContent == '' &&
9248
+ if (progressDiv[0].querySelectorAll('.e-task-label')[0].textContent === '' &&
9205
9249
  childLabel && !childLabel['elementRef'] && tempDiv.innerHTML !== '')
9206
9250
  progressDiv[0].querySelectorAll('.e-task-label')[0].textContent = childLabel;
9207
9251
  }
@@ -9686,7 +9730,7 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
9686
9730
  if (leftLabelTemplateNode[0]['data'] === 'null') {
9687
9731
  leftLabelTemplateNode[0]['data'] = '';
9688
9732
  }
9689
- leftLabelNode[0].appendChild([].slice.call(leftLabelTemplateNode)[0]);
9733
+ append(leftLabelTemplateNode, leftLabelNode[0]);
9690
9734
  }
9691
9735
  if (this.parent.enableRtl) {
9692
9736
  leftLabelNode[0].style.paddingLeft = '25px';
@@ -9741,7 +9785,7 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
9741
9785
  if (rightLabelTemplateNode[0]['data'] === 'null') {
9742
9786
  rightLabelTemplateNode[0]['data'] = '';
9743
9787
  }
9744
- rightLabelNode[0].appendChild([].slice.call(rightLabelTemplateNode)[0]);
9788
+ append(rightLabelTemplateNode, rightLabelNode[0]);
9745
9789
  }
9746
9790
  if (this.parent.enableRtl) {
9747
9791
  rightLabelNode[0].style.marginLeft = '0px';
@@ -9872,7 +9916,7 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
9872
9916
  !this.isTemplate(parentLabel) &&
9873
9917
  progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].children[0])
9874
9918
  progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].children[0].remove();
9875
- if (progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent == '' &&
9919
+ if (progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent === '' &&
9876
9920
  parentLabel && !parentLabel['elementRef'] && div.innerHTML !== '')
9877
9921
  progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent = parentLabel;
9878
9922
  }
@@ -9902,11 +9946,19 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
9902
9946
  * @returns {NodeList} .
9903
9947
  * @private
9904
9948
  */
9905
- ChartRows.prototype.getTableTrNode = function () {
9949
+ ChartRows.prototype.getTableTrNode = function (i) {
9906
9950
  var table = createElement('table');
9907
9951
  var className = (this.parent.gridLines === 'Horizontal' || this.parent.gridLines === 'Both') ?
9908
9952
  'e-chart-row-border' : '';
9909
- table.innerHTML = '<tr class="' + this.getRowClassName(this.templateData) + ' ' + chartRow + '"' +
9953
+ var rows = this.parent.treeGrid.grid.contentModule.getRows()[i];
9954
+ var activecls;
9955
+ if (rows && rows.isSelected) {
9956
+ activecls = 'e-active';
9957
+ }
9958
+ else {
9959
+ activecls = '';
9960
+ }
9961
+ table.innerHTML = '<tr class="' + this.getRowClassName(this.templateData) + ' ' + chartRow + ' ' + (activecls) + '"' +
9910
9962
  'style="display:' + this.getExpandDisplayProp(this.templateData) + ';height:' +
9911
9963
  this.parent.rowHeight + 'px;">' +
9912
9964
  '<td class="' + chartRowCell + ' ' + className
@@ -10344,7 +10396,7 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
10344
10396
  this.parent.renderTemplates();
10345
10397
  this.triggerQueryTaskbarInfo();
10346
10398
  this.parent.modifiedRecords = [];
10347
- if (this.parent.viewType == 'ResourceView' && this.parent.showOverAllocation) {
10399
+ if (this.parent.viewType === 'ResourceView' && this.parent.showOverAllocation) {
10348
10400
  this.updateOverlapped();
10349
10401
  }
10350
10402
  if (collapsedResourceRecord.length) {
@@ -10368,7 +10420,7 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
10368
10420
  ChartRows.prototype.getGanttChartRow = function (i, tempTemplateData) {
10369
10421
  this.templateData = tempTemplateData;
10370
10422
  var taskBaselineTemplateNode = null;
10371
- var parentTrNode = this.getTableTrNode();
10423
+ var parentTrNode = this.getTableTrNode(i);
10372
10424
  var leftLabelNode = this.getLeftLabelNode(i);
10373
10425
  var taskbarContainerNode = this.taskbarContainer();
10374
10426
  taskbarContainerNode[0].setAttribute('aria-label', this.generateAriaLabel(this.templateData));
@@ -10398,12 +10450,12 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
10398
10450
  }
10399
10451
  }
10400
10452
  if ((this.templateData.ganttProperties.autoDuration !== 0) && !this.templateData.ganttProperties.isMilestone && parentTaskbarTemplateNode && parentTaskbarTemplateNode.length > 0) {
10401
- taskbarContainerNode[0].appendChild([].slice.call(parentTaskbarTemplateNode)[0]);
10453
+ append(parentTaskbarTemplateNode, taskbarContainerNode[0]);
10402
10454
  }
10403
10455
  else if ((this.templateData.ganttProperties.duration === 0 && this.templateData.ganttProperties.isMilestone && this.templateData.ganttProperties.isAutoSchedule)) {
10404
10456
  var milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);
10405
10457
  if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {
10406
- taskbarContainerNode[0].appendChild([].slice.call(milestoneTemplateNode)[0]);
10458
+ append(milestoneTemplateNode, taskbarContainerNode[0]);
10407
10459
  }
10408
10460
  }
10409
10461
  if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&
@@ -10457,7 +10509,7 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
10457
10509
  }
10458
10510
  }
10459
10511
  else {
10460
- taskbarContainerNode[0].appendChild([].slice.call(childTaskbarTemplateNode)[0]);
10512
+ append(childTaskbarTemplateNode, taskbarContainerNode[0]);
10461
10513
  }
10462
10514
  }
10463
10515
  if (childTaskbarProgressResizeNode) {
@@ -10920,6 +10972,19 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
10920
10972
  }
10921
10973
  }
10922
10974
  };
10975
+ ChartRows.prototype.updateResourceTaskbarElement = function (tRow, parentTr) {
10976
+ var cloneElement = tRow.querySelector('.e-taskbar-main-container');
10977
+ addClass([cloneElement], 'collpse-parent-border');
10978
+ var id = tRow.querySelector('.' + taskBarMainContainer).getAttribute('rowUniqueId');
10979
+ var ganttData = this.parent.getRecordByID(id);
10980
+ var zIndex = "";
10981
+ if (ganttData && !isNullOrUndefined(ganttData.ganttProperties.eOverlapIndex)) {
10982
+ zIndex = (ganttData.ganttProperties.eOverlapIndex).toString();
10983
+ }
10984
+ var cloneChildElement = cloneElement.cloneNode(true);
10985
+ cloneChildElement.style.zIndex = zIndex;
10986
+ parentTr[0].childNodes[0].childNodes[0].childNodes[0].appendChild(cloneChildElement);
10987
+ };
10923
10988
  ChartRows.prototype.getResourceParent = function (record) {
10924
10989
  var chartRows = this.parent.ganttChartModule.getChartRows();
10925
10990
  //Below code is for rendering taskbartemplate in resource view with multi taskbar
@@ -10943,20 +11008,19 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
10943
11008
  parentTrNode[0].childNodes[0].childNodes[0].appendChild(collapseParent);
10944
11009
  var tasks = this.parent.dataOperation.setSortedChildTasks(record);
10945
11010
  this.parent.dataOperation.updateOverlappingIndex(tasks);
10946
- for (var i = 0; i < chartRows.length; i++) {
10947
- if (chartRows[i].classList.contains('gridrowtaskId'
10948
- + record.ganttProperties.rowUniqueID + 'level' + (record.level + 1))) {
10949
- var cloneElement = chartRows[i].querySelector('.e-taskbar-main-container');
10950
- addClass([cloneElement], 'collpse-parent-border');
10951
- var id = chartRows[i].querySelector('.' + taskBarMainContainer).getAttribute('rowUniqueId');
10952
- var ganttData = this.parent.getRecordByID(id);
10953
- var zIndex = "";
10954
- if (ganttData && !isNullOrUndefined(ganttData.ganttProperties.eOverlapIndex)) {
10955
- zIndex = (ganttData.ganttProperties.eOverlapIndex).toString();
11011
+ var tRow;
11012
+ if (this.parent.enableVirtualization) {
11013
+ for (var i = 0; i < record.childRecords.length; i++) {
11014
+ tRow = this.getGanttChartRow(record.childRecords[i].index, this.parent.flatData[record.childRecords[i].index]);
11015
+ this.updateResourceTaskbarElement(tRow, parentTrNode);
11016
+ }
11017
+ }
11018
+ else {
11019
+ for (var i = 0; i < chartRows.length; i++) {
11020
+ if (chartRows[i].classList.contains('gridrowtaskId'
11021
+ + record.ganttProperties.rowUniqueID + 'level' + (record.level + 1))) {
11022
+ this.updateResourceTaskbarElement(chartRows[i], parentTrNode);
10956
11023
  }
10957
- var cloneChildElement = cloneElement.cloneNode(true);
10958
- cloneChildElement.style.zIndex = zIndex;
10959
- parentTrNode[0].childNodes[0].childNodes[0].childNodes[0].appendChild(cloneChildElement);
10960
11024
  }
10961
11025
  }
10962
11026
  parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(leftLabelNode)[0]);
@@ -11465,6 +11529,15 @@ var Dependency = /** @__PURE__ @class */ (function () {
11465
11529
  for (var count = 0; count < totLength; count++) {
11466
11530
  if (flatData[count].ganttProperties.predecessorsName) {
11467
11531
  this.validatePredecessorDates(flatData[count]);
11532
+ var predecessorCollection = flatData[count].ganttProperties.predecessor;
11533
+ if (predecessorCollection && predecessorCollection.length > 1) {
11534
+ for (var i = 0; i < predecessorCollection.length; i++) {
11535
+ var validateRecord = this.parent.getRecordByID(predecessorCollection[i].to);
11536
+ if (validateRecord) {
11537
+ this.validatePredecessorDates(validateRecord);
11538
+ }
11539
+ }
11540
+ }
11468
11541
  if (flatData[count].hasChildRecords && this.parent.editModule && !this.parent.allowUnscheduledTasks
11469
11542
  && this.parent.allowParentDependency) {
11470
11543
  this.parent.editModule['updateChildItems'](flatData[count]);
@@ -20145,7 +20218,8 @@ var TaskbarEdit = /** @__PURE__ @class */ (function (_super) {
20145
20218
  this.dependencyCancel = true;
20146
20219
  }
20147
20220
  if ((this.taskBarEditAction === 'ConnectorPointLeftDrag' ||
20148
- this.taskBarEditAction === 'ConnectorPointRightDrag') && this.drawPredecessor) {
20221
+ this.taskBarEditAction === 'ConnectorPointRightDrag') && this.drawPredecessor && (!this.connectorSecondRecord.hasChildRecords ||
20222
+ this.connectorSecondRecord.hasChildRecords && this.parent.allowParentDependency)) {
20149
20223
  this.parent.connectorLineEditModule.updatePredecessor(this.connectorSecondRecord, this.finalPredecessor);
20150
20224
  if (this.parent.UpdateOffsetOnTaskbarEdit) {
20151
20225
  this.parent.connectorLineEditModule['calculateOffset'](this.connectorSecondRecord);
@@ -20478,7 +20552,9 @@ var TaskbarEdit = /** @__PURE__ @class */ (function (_super) {
20478
20552
  }
20479
20553
  this.showHideTaskBarEditingElements(element, this.highlightedSecondElement, true);
20480
20554
  }
20481
- if (isNullOrUndefined(this.connectorSecondAction) && !isNullOrUndefined(this.connectorSecondElement)) {
20555
+ if (isNullOrUndefined(this.connectorSecondAction) && !isNullOrUndefined(this.connectorSecondElement) &&
20556
+ (!this.connectorSecondRecord.hasChildRecords || this.connectorSecondRecord.hasChildRecords &&
20557
+ this.parent.allowParentDependency)) {
20482
20558
  this.editTooltip.showHideTaskbarEditTooltip(false, this.segmentIndex);
20483
20559
  removeClass([this.connectorSecondElement.querySelector('.' + connectorPointLeft)], [connectorPointAllowBlock]);
20484
20560
  removeClass([this.connectorSecondElement.querySelector('.' + connectorPointRight)], [connectorPointAllowBlock]);
@@ -23985,6 +24061,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
23985
24061
  this.isFromDeleteMethod = false;
23986
24062
  this.targetedRecords = [];
23987
24063
  this.isNewRecordAdded = false;
24064
+ this.isValidatedEditedRecord = false;
23988
24065
  /** @hidden */
23989
24066
  this.updateParentRecords = [];
23990
24067
  /** @hidden */
@@ -24639,8 +24716,9 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
24639
24716
  (isNullOrUndefined(taskData.startDate) && !isNullOrUndefined(prevStart)) ||
24640
24717
  (isNullOrUndefined(taskData.endDate) && !isNullOrUndefined(prevEnd)) ||
24641
24718
  (prevStart && prevStart.getTime() !== taskData.startDate.getTime())
24642
- && (prevEnd && prevEnd.getTime() !== taskData.endDate.getTime())
24643
- || (!isNullOrUndefined(prevDuration) && prevDuration !== taskData.duration &&
24719
+ || (prevEnd && prevEnd.getTime() !== taskData.endDate.getTime())
24720
+ || (!isNullOrUndefined(prevDuration) && prevDuration !== taskData.duration)
24721
+ || (!isNullOrUndefined(prevDuration) && prevDuration === taskData.duration &&
24644
24722
  prevDurationUnit !== taskData.durationUnit)) {
24645
24723
  isMoved = true;
24646
24724
  }
@@ -24753,6 +24831,11 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
24753
24831
  this.parent.connectorLineEditModule.openValidationDialog(validateObject);
24754
24832
  }
24755
24833
  else {
24834
+ if (this.parent.editModule && this.parent.editModule.dialogModule &&
24835
+ this.parent.editModule.dialogModule['isEdit'] && this.predecessorUpdated) {
24836
+ this.isValidatedEditedRecord = true;
24837
+ this.parent.predecessorModule.validatePredecessor(args.data, [], '');
24838
+ }
24756
24839
  this.parent.connectorLineEditModule.applyPredecessorOption();
24757
24840
  }
24758
24841
  }
@@ -24816,7 +24899,10 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
24816
24899
  if (this.taskbarMoved) {
24817
24900
  this.parent.editedTaskBarItem = ganttRecord;
24818
24901
  }
24819
- this.parent.predecessorModule.validatePredecessor(ganttRecord, [], '');
24902
+ if (!this.isValidatedEditedRecord) {
24903
+ this.parent.predecessorModule.validatePredecessor(ganttRecord, [], '');
24904
+ }
24905
+ this.isValidatedEditedRecord = false;
24820
24906
  this.parent.predecessorModule.isValidatedParentTaskID = '';
24821
24907
  }
24822
24908
  if (this.parent.allowParentDependency && ganttRecord.hasChildRecords && this.parent.previousRecords[ganttRecord.uniqueID].ganttProperties.startDate &&
@@ -26851,6 +26937,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
26851
26937
  var args = {};
26852
26938
  args = this.constructTaskAddedEventArgs(cAddedRecord_1, this.parent.editedRecords, 'beforeAdd');
26853
26939
  this.parent.trigger('actionBegin', args, function (args) {
26940
+ _this.parent.previousRecords = {};
26854
26941
  if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === "Shimmer") {
26855
26942
  _this.parent.showMaskRow();
26856
26943
  }
@@ -30885,7 +30972,7 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
30885
30972
  this.parent.ganttChartModule.targetElement;
30886
30973
  // Closed edited cell before opening context menu
30887
30974
  // eslint-disable-next-line
30888
- if (!isNullOrUndefined(this.parent.editModule) && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit && target.parentElement.classList.contains('e-row')) {
30975
+ if (!isNullOrUndefined(this.parent.editModule) && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit && target.parentElement.classList.contains('e-row') || target.parentElement.classList.contains('e-treecolumn-container')) {
30889
30976
  this.parent.treeGrid.closeEdit();
30890
30977
  }
30891
30978
  if (!isNullOrUndefined(args.element) && args.element.id === this.parent.element.id + '_contextmenu') {
@@ -35148,6 +35235,9 @@ var ExportHelper = /** @__PURE__ @class */ (function () {
35148
35235
  footer.graphics.drawRectangle(pen, footerBrush, 0, 0, pdfDoc.pageSettings.width, 35);
35149
35236
  /* eslint-disable-next-line */
35150
35237
  var font = new PdfStandardFont(this.ganttStyle.fontFamily, this.ganttStyle.footer.fontSize, this.ganttStyle.footer.fontStyle);
35238
+ if (this.ganttStyle.font) {
35239
+ font = this.ganttStyle.font;
35240
+ }
35151
35241
  var brush = new PdfSolidBrush(this.ganttStyle.footer.fontColor);
35152
35242
  var pageNumber = new PdfPageNumberField(font);
35153
35243
  var count = new PdfPageCountField(font, brush);
@@ -35837,11 +35927,22 @@ var PdfGanttPredecessor = /** @__PURE__ @class */ (function () {
35837
35927
  PdfGanttPredecessor.prototype.add = function () {
35838
35928
  return new PdfGanttPredecessor(this.parent);
35839
35929
  };
35840
- PdfGanttPredecessor.prototype.findindex = function (num) {
35930
+ PdfGanttPredecessor.prototype.findindex = function (num, pdfExportProperties) {
35841
35931
  var dataindex;
35842
- this.parent.currentViewData.map(function (data, index) { if (data.index == num) {
35843
- dataindex = index;
35844
- } });
35932
+ if (pdfExportProperties.exportType === 'CurrentViewData') {
35933
+ this.parent.currentViewData.map(function (data, index) {
35934
+ if (data.index == num) {
35935
+ dataindex = index;
35936
+ }
35937
+ });
35938
+ }
35939
+ else {
35940
+ this.parent.flatData.map(function (data, index) {
35941
+ if (data.index == num) {
35942
+ dataindex = index;
35943
+ }
35944
+ });
35945
+ }
35845
35946
  return dataindex;
35846
35947
  };
35847
35948
  /**
@@ -35851,11 +35952,11 @@ var PdfGanttPredecessor = /** @__PURE__ @class */ (function () {
35851
35952
  * @returns {void}
35852
35953
  * @private
35853
35954
  */
35854
- PdfGanttPredecessor.prototype.drawPredecessor = function (pdfGantt) {
35955
+ PdfGanttPredecessor.prototype.drawPredecessor = function (pdfGantt, pdfExportProperties) {
35855
35956
  this.pdfGantt = pdfGantt;
35856
35957
  var pages = pdfGantt.result.page.section.getPages();
35857
- var parentTask = pdfGantt.taskbarCollection[this.findindex(this.parentIndex)];
35858
- var childTask = pdfGantt.taskbarCollection[this.findindex(this.childIndex)];
35958
+ var parentTask = pdfGantt.taskbarCollection[this.findindex(this.parentIndex, pdfExportProperties)];
35959
+ var childTask = pdfGantt.taskbarCollection[this.findindex(this.childIndex, pdfExportProperties)];
35859
35960
  var startPage = new PdfPage();
35860
35961
  var endPage = new PdfPage();
35861
35962
  var predecessorType = '';
@@ -35865,7 +35966,7 @@ var PdfGanttPredecessor = /** @__PURE__ @class */ (function () {
35865
35966
  var childY = 0;
35866
35967
  switch (this.type) {
35867
35968
  case 'FS':
35868
- if (childTask.startPage > -1 && parentTask.endPage > -1) {
35969
+ if ((!isNullOrUndefined(childTask) && childTask.startPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.endPage > -1)) {
35869
35970
  startPage = pages[parentTask.endPage];
35870
35971
  endPage = pages[childTask.startPage];
35871
35972
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35892,7 +35993,7 @@ var PdfGanttPredecessor = /** @__PURE__ @class */ (function () {
35892
35993
  }
35893
35994
  break;
35894
35995
  case 'SF':
35895
- if (childTask.endPage > -1 && parentTask.startPage > -1) {
35996
+ if ((!isNullOrUndefined(childTask) && childTask.endPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.startPage > -1)) {
35896
35997
  startPage = pages[parentTask.startPage];
35897
35998
  endPage = pages[childTask.endPage];
35898
35999
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35919,7 +36020,7 @@ var PdfGanttPredecessor = /** @__PURE__ @class */ (function () {
35919
36020
  }
35920
36021
  break;
35921
36022
  case 'FF':
35922
- if (childTask.endPage > -1 && parentTask.endPage > -1) {
36023
+ if ((!isNullOrUndefined(childTask) && childTask.endPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.endPage > -1)) {
35923
36024
  startPage = pages[parentTask.endPage];
35924
36025
  endPage = pages[childTask.endPage];
35925
36026
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35946,7 +36047,7 @@ var PdfGanttPredecessor = /** @__PURE__ @class */ (function () {
35946
36047
  }
35947
36048
  break;
35948
36049
  case 'SS':
35949
- if (childTask.startPage > -1 && parentTask.startPage > -1) {
36050
+ if ((!isNullOrUndefined(childTask) && childTask.startPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.startPage > -1)) {
35950
36051
  startPage = pages[parentTask.startPage];
35951
36052
  endPage = pages[childTask.startPage];
35952
36053
  parentPageData = pdfGantt.pdfPageDetail[parentTask.startPage - pdfGantt.chartPageIndex];
@@ -36304,12 +36405,12 @@ var PdfGantt = /** @__PURE__ @class */ (function (_super) {
36304
36405
  enumerable: true,
36305
36406
  configurable: true
36306
36407
  });
36307
- PdfGantt.prototype.drawChart = function (result) {
36408
+ PdfGantt.prototype.drawChart = function (result, pdfExportProperties) {
36308
36409
  this.result = result;
36309
36410
  this.totalPages = this.result.page.section.count;
36310
36411
  this.perColumnPages = this.totalPages / this.layouter.columnRanges.length;
36311
36412
  this.calculateRange();
36312
- this.drawGantttChart();
36413
+ this.drawGantttChart(pdfExportProperties);
36313
36414
  this.drawPageBorder();
36314
36415
  };
36315
36416
  //Calcualte the header range for each pdf page based on schedule start and end date.
@@ -36458,7 +36559,7 @@ var PdfGantt = /** @__PURE__ @class */ (function (_super) {
36458
36559
  }
36459
36560
  };
36460
36561
  //Draw the gantt chart side
36461
- PdfGantt.prototype.drawGantttChart = function () {
36562
+ PdfGantt.prototype.drawGantttChart = function (pdfExportProperties) {
36462
36563
  var _this = this;
36463
36564
  var taskbarPoint = this.startPoint;
36464
36565
  var pagePoint = new PointF();
@@ -36533,7 +36634,7 @@ var PdfGantt = /** @__PURE__ @class */ (function (_super) {
36533
36634
  // Draw predecessor line.
36534
36635
  for (var i = 0; i < this.predecessorCollection.length; i++) {
36535
36636
  var predecessor = this.predecessorCollection[i];
36536
- predecessor.drawPredecessor(this);
36637
+ predecessor.drawPredecessor(this, pdfExportProperties);
36537
36638
  }
36538
36639
  };
36539
36640
  return PdfGantt;
@@ -36650,7 +36751,7 @@ var PdfExport = /** @__PURE__ @class */ (function () {
36650
36751
  var format = new PdfTreeGridLayoutFormat();
36651
36752
  format.break = PdfLayoutBreakType.FitElement;
36652
36753
  var layouter = _this.gantt.drawGrid(pdfPage, 0, 0, format);
36653
- _this.gantt.drawChart(layouter);
36754
+ _this.gantt.drawChart(layouter, pdfExportProperties);
36654
36755
  if (!isMultipleExport) {
36655
36756
  if (!_this.isBlob) {
36656
36757
  // save the PDF