@syncfusion/ej2-gantt 24.2.7 → 24.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.
@@ -2263,12 +2263,14 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
2263
2263
  work = parseFloat(work.toFixed(2));
2264
2264
  }
2265
2265
  }
2266
- if (ganttData.childRecords.length > 0 && this.parent.isOnEdit) {
2267
- var childCompletedWorks = 0;
2268
- for (var i = 0; i < ganttData.childRecords.length; i++) {
2269
- childCompletedWorks += ganttData.childRecords[i].ganttProperties.work;
2266
+ if (ganttData.childRecords) {
2267
+ if (ganttData.childRecords.length > 0 && this.parent.isOnEdit) {
2268
+ var childCompletedWorks = 0;
2269
+ for (var i = 0; i < ganttData.childRecords.length; i++) {
2270
+ childCompletedWorks += ganttData.childRecords[i].ganttProperties.work;
2271
+ }
2272
+ work += childCompletedWorks;
2270
2273
  }
2271
- work += childCompletedWorks;
2272
2274
  }
2273
2275
  this.parent.setRecordValue('work', work, ganttData.ganttProperties, true);
2274
2276
  if (!isNullOrUndefined(this.parent.taskFields.work)) {
@@ -2484,7 +2486,7 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
2484
2486
  this.parent.setRecordValue('work', work, ganttProperties, true);
2485
2487
  switch (tType) {
2486
2488
  case 'FixedDuration':
2487
- this.updateUnitWithWork(ganttData);
2489
+ this.updateWorkWithDuration(ganttData);
2488
2490
  break;
2489
2491
  case 'FixedWork':
2490
2492
  this.updateUnitWithWork(ganttData);
@@ -2899,14 +2901,18 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
2899
2901
  this.parent.ganttChartModule.scrollObject['isSetScrollLeft'])) && !isFromTimelineVirtulization) {
2900
2902
  isValid = false;
2901
2903
  }
2902
- if (this.parent.enableTimelineVirtualization && isValid && !this.parent.timelineModule['performedTimeSpanAction']) {
2904
+ if (!this.parent.editModule && this.parent.enableTimelineVirtualization && isValid && !this.parent.timelineModule['performedTimeSpanAction']) {
2903
2905
  leftValueForStartDate = (this.parent.enableTimelineVirtualization && this.parent.ganttChartModule.scrollObject.element.scrollLeft != 0)
2904
2906
  ? this.parent.ganttChartModule.scrollObject.getTimelineLeft() : null;
2905
2907
  }
2906
- var timelineStartDate = (this.parent.enableTimelineVirtualization && !isNullOrUndefined(leftValueForStartDate))
2908
+ var timelineStartDate = (!this.parent.editModule && this.parent.enableTimelineVirtualization && !isNullOrUndefined(leftValueForStartDate))
2907
2909
  ? new Date((this.parent.timelineModule['dateByLeftValue'](leftValueForStartDate)).toString()) : new Date(this.parent.timelineModule.timelineStartDate);
2908
2910
  if (timelineStartDate) {
2909
- return (date.getTime() - timelineStartDate.getTime()) / (1000 * 60 * 60 * 24) * this.parent.perDayWidth;
2911
+ var leftValue = (date.getTime() - timelineStartDate.getTime()) / (1000 * 60 * 60 * 24) * this.parent.perDayWidth;
2912
+ if (this.parent.isInDst(timelineStartDate) && !this.parent.isInDst(startDate) && (this.parent.timelineModule.topTier == 'Hour' || this.parent.timelineModule.bottomTier == 'Hour')) {
2913
+ leftValue = leftValue - this.parent.timelineSettings.timelineUnitSize;
2914
+ }
2915
+ return leftValue;
2910
2916
  }
2911
2917
  else {
2912
2918
  return 0;
@@ -3983,7 +3989,7 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
3983
3989
  var deleteUpdate = false;
3984
3990
  var ganttProp = parentData.ganttProperties;
3985
3991
  if (this.parent.autoCalculateDateScheduling || this.parent.viewType === "ResourceView") {
3986
- if (parentData.childRecords.length > 0) {
3992
+ if (parentData.childRecords && parentData.childRecords.length > 0) {
3987
3993
  var previousStartDate = ganttProp.isAutoSchedule ? ganttProp.startDate : ganttProp.autoStartDate;
3988
3994
  var previousEndDate = ganttProp.isAutoSchedule ? ganttProp.endDate :
3989
3995
  ganttProp.autoEndDate;
@@ -6393,17 +6399,23 @@ var Timeline = /** @__PURE__ @class */ (function () {
6393
6399
  this.parent.dateValidationModule.calculateProjectDates();
6394
6400
  }
6395
6401
  if (!isNullOrUndefined(this.parent.zoomingProjectStartDate)) {
6396
- this.parent.cloneProjectStartDate = this.parent.cloneProjectStartDate.getTime() < this.parent.zoomingProjectStartDate.getTime()
6397
- ? this.parent.cloneProjectStartDate : this.parent.zoomingProjectStartDate;
6398
- this.parent.cloneProjectEndDate = this.parent.cloneProjectEndDate.getTime() > this.parent.zoomingProjectEndDate.getTime()
6399
- ? this.parent.cloneProjectEndDate : this.parent.zoomingProjectEndDate;
6402
+ this.parent.cloneProjectStartDate = this.parent.zoomingProjectStartDate;
6403
+ this.parent.cloneProjectEndDate = this.parent.zoomingProjectEndDate;
6400
6404
  }
6401
6405
  this.parent.zoomingProjectStartDate = null;
6402
6406
  this.parent.zoomingProjectEndDate = null;
6403
6407
  var currentZoomingLevel = this.checkCurrentZoomingLevel();
6404
6408
  this.isZoomIn = isZoomIn;
6405
6409
  this.isZooming = true;
6406
- var currentLevel = isZoomIn ? currentZoomingLevel + 1 : currentZoomingLevel - 1;
6410
+ var currentLevel;
6411
+ var level = isZoomIn ? currentZoomingLevel + 1 : currentZoomingLevel - 1;
6412
+ var foundLevel = this.parent.zoomingLevels.find(function (tempLevel) { return tempLevel.level === level; });
6413
+ if (foundLevel) {
6414
+ currentLevel = level;
6415
+ }
6416
+ else {
6417
+ currentLevel = currentZoomingLevel;
6418
+ }
6407
6419
  if (this.parent.toolbarModule) {
6408
6420
  if (isZoomIn) {
6409
6421
  if (currentLevel === this.parent.zoomingLevels[this.parent.zoomingLevels.length - 1].level) {
@@ -12004,6 +12016,7 @@ var Dependency = /** @__PURE__ @class */ (function () {
12004
12016
  this.parentIds = [];
12005
12017
  this.parentPredecessors = [];
12006
12018
  this.validatedParentIds = [];
12019
+ this.storeId = null;
12007
12020
  this.parent = gantt;
12008
12021
  this.dateValidateModule = this.parent.dateValidationModule;
12009
12022
  }
@@ -12480,7 +12493,7 @@ var Dependency = /** @__PURE__ @class */ (function () {
12480
12493
  }
12481
12494
  if (flatData[count].hasChildRecords && this.parent.editModule && !this.parent.allowUnscheduledTasks
12482
12495
  && this.parent.allowParentDependency) {
12483
- this.parent.editModule['updateChildItems'](flatData[count]);
12496
+ this.updateChildItems(flatData[count]);
12484
12497
  }
12485
12498
  }
12486
12499
  }
@@ -12492,7 +12505,7 @@ var Dependency = /** @__PURE__ @class */ (function () {
12492
12505
  var item = this.parentPredecessors[i];
12493
12506
  this.validatePredecessorDates(item);
12494
12507
  if (item.ganttProperties.startDate) {
12495
- this.parent.editModule['updateChildItems'](item);
12508
+ this.updateChildItems(item);
12496
12509
  }
12497
12510
  }
12498
12511
  }
@@ -12870,7 +12883,15 @@ var Dependency = /** @__PURE__ @class */ (function () {
12870
12883
  continue;
12871
12884
  }
12872
12885
  if (record) {
12873
- this.validatePredecessor(record, undefined, 'successor');
12886
+ if (this.parent.editModule.isFirstCall) {
12887
+ this.storeId = JSON.parse(JSON.stringify(this.parent.ids));
12888
+ this.parent.editModule.isFirstCall = false;
12889
+ }
12890
+ var index = (this.storeId && this.storeId.indexOf(record[this.parent.taskFields.id].toString()) !== -1) ? this.storeId.indexOf(record[this.parent.taskFields.id].toString()) : -1;
12891
+ if (index !== -1) {
12892
+ this.storeId = this.storeId.slice(0, index).concat(this.storeId.slice(index + 1));
12893
+ this.validatePredecessor(record, undefined, 'successor');
12894
+ }
12874
12895
  }
12875
12896
  }
12876
12897
  if (record && !record.hasChildRecords && record.parentItem && this.validatedParentIds.indexOf(record.parentItem.taskId) == -1) {
@@ -12885,13 +12906,13 @@ var Dependency = /** @__PURE__ @class */ (function () {
12885
12906
  if (record && record.ganttProperties.taskId !== this.isValidatedParentTaskID && ganttProp) {
12886
12907
  if ((taskBarModule.taskBarEditAction !== 'ParentDrag' && taskBarModule.taskBarEditAction !== 'ChildDrag')) {
12887
12908
  if (!ganttProp.hasChildRecords && record.hasChildRecords) {
12888
- this.parent.editModule['updateChildItems'](record);
12909
+ this.updateChildItems(record);
12889
12910
  this.isValidatedParentTaskID = record.ganttProperties.taskId;
12890
12911
  }
12891
12912
  }
12892
12913
  else if ((!record.hasChildRecords && taskBarModule.taskBarEditAction == 'ChildDrag') ||
12893
12914
  (record.hasChildRecords && taskBarModule.taskBarEditAction == 'ParentDrag')) {
12894
- this.parent.editModule['updateChildItems'](record);
12915
+ this.updateChildItems(record);
12895
12916
  this.isValidatedParentTaskID = record.ganttProperties.taskId;
12896
12917
  }
12897
12918
  if (!ganttProp.hasChildRecords) {
@@ -12899,11 +12920,128 @@ var Dependency = /** @__PURE__ @class */ (function () {
12899
12920
  }
12900
12921
  }
12901
12922
  else if (record && record.hasChildRecords && !ganttProp) {
12902
- this.parent.editModule['updateChildItems'](record);
12923
+ this.updateChildItems(record);
12903
12924
  }
12904
12925
  }
12905
12926
  }
12906
12927
  };
12928
+ /**
12929
+ *
12930
+ * @param {IGanttData} ganttRecord .
12931
+ * @returns {void} .
12932
+ */
12933
+ Dependency.prototype.updateChildItems = function (ganttRecord) {
12934
+ var previousData = this.parent.previousRecords[ganttRecord.uniqueID];
12935
+ var previousStartDate;
12936
+ if (isNullOrUndefined(previousData) ||
12937
+ (isNullOrUndefined(previousData) && !isNullOrUndefined(previousData.ganttProperties))) {
12938
+ previousStartDate = new Date(ganttRecord.ganttProperties.startDate.getTime());
12939
+ }
12940
+ else {
12941
+ if (!isNullOrUndefined(previousData.ganttProperties.startDate)) {
12942
+ previousStartDate = new Date(previousData.ganttProperties.startDate.getTime());
12943
+ }
12944
+ }
12945
+ var currentStartDate = ganttRecord.ganttProperties.startDate;
12946
+ var childRecords = [];
12947
+ var validStartDate;
12948
+ var validEndDate;
12949
+ var calcEndDate;
12950
+ var isRightMove;
12951
+ var durationDiff;
12952
+ this.getUpdatableChildRecords(ganttRecord, childRecords);
12953
+ if (childRecords.length === 0) {
12954
+ return;
12955
+ }
12956
+ if (!isNullOrUndefined(previousStartDate) && !isNullOrUndefined(currentStartDate) && previousStartDate.getTime() > currentStartDate.getTime()) {
12957
+ validStartDate = this.parent.dateValidationModule.checkStartDate(currentStartDate);
12958
+ validEndDate = this.parent.dateValidationModule.checkEndDate(previousStartDate, ganttRecord.ganttProperties);
12959
+ isRightMove = false;
12960
+ }
12961
+ else {
12962
+ validStartDate = this.parent.dateValidationModule.checkStartDate(previousStartDate);
12963
+ validEndDate = this.parent.dateValidationModule.checkEndDate(currentStartDate, ganttRecord.ganttProperties);
12964
+ isRightMove = true;
12965
+ }
12966
+ //Get Duration
12967
+ if (!isNullOrUndefined(validStartDate) && !isNullOrUndefined(validEndDate) && validStartDate.getTime() >= validEndDate.getTime()) {
12968
+ durationDiff = 0;
12969
+ }
12970
+ else {
12971
+ durationDiff = this.parent.dateValidationModule.getDuration(validStartDate, validEndDate, 'minute', true, false);
12972
+ }
12973
+ for (var i = 0; i < childRecords.length; i++) {
12974
+ if (childRecords[i].ganttProperties.isAutoSchedule) {
12975
+ if (durationDiff > 0) {
12976
+ var startDate = isScheduledTask(childRecords[i].ganttProperties) ?
12977
+ childRecords[i].ganttProperties.startDate : childRecords[i].ganttProperties.startDate ?
12978
+ childRecords[i].ganttProperties.startDate : childRecords[i].ganttProperties.endDate ?
12979
+ childRecords[i].ganttProperties.endDate : new Date(previousStartDate.toString());
12980
+ if (isRightMove) {
12981
+ calcEndDate = this.parent.dateValidationModule.getEndDate(this.parent.dateValidationModule.checkStartDate(startDate, childRecords[i].ganttProperties, childRecords[i].ganttProperties.isMilestone), durationDiff, 'minute', childRecords[i].ganttProperties, false);
12982
+ }
12983
+ else {
12984
+ calcEndDate = this.parent.dateValidationModule.getStartDate(this.parent.dateValidationModule.checkEndDate(startDate, childRecords[i].ganttProperties), durationDiff, 'minute', childRecords[i].ganttProperties);
12985
+ }
12986
+ this.calculateDateByRoundOffDuration(childRecords[i], calcEndDate);
12987
+ if (this.parent.isOnEdit && this.validatedChildItems.indexOf(childRecords[i]) === -1) {
12988
+ this.validatedChildItems.push(childRecords[i]);
12989
+ }
12990
+ }
12991
+ else if (isNullOrUndefined(previousData)) {
12992
+ calcEndDate = previousStartDate;
12993
+ this.calculateDateByRoundOffDuration(childRecords[i], calcEndDate);
12994
+ if (this.parent.isOnEdit && this.validatedChildItems.indexOf(childRecords[i]) === -1) {
12995
+ this.validatedChildItems.push(childRecords[i]);
12996
+ }
12997
+ }
12998
+ }
12999
+ }
13000
+ if (childRecords.length) {
13001
+ this.parent.dataOperation.updateParentItems(ganttRecord, true);
13002
+ }
13003
+ };
13004
+ /**
13005
+ * To get updated child records.
13006
+ *
13007
+ * @param {IGanttData} parentRecord .
13008
+ * @param {IGanttData} childLists .
13009
+ * @returns {void} .
13010
+ */
13011
+ Dependency.prototype.getUpdatableChildRecords = function (parentRecord, childLists) {
13012
+ var childRecords = parentRecord.childRecords;
13013
+ for (var i = 0; i < childRecords.length; i++) {
13014
+ if (childRecords[i].ganttProperties.isAutoSchedule) {
13015
+ childLists.push(childRecords[i]);
13016
+ if (childRecords[i].hasChildRecords) {
13017
+ this.getUpdatableChildRecords(childRecords[i], childLists);
13018
+ }
13019
+ }
13020
+ }
13021
+ };
13022
+ /**
13023
+ *
13024
+ * @param {IGanttData} data .
13025
+ * @param {Date} newStartDate .
13026
+ * @returns {void} .
13027
+ */
13028
+ Dependency.prototype.calculateDateByRoundOffDuration = function (data, newStartDate) {
13029
+ var ganttRecord = data;
13030
+ var taskData = ganttRecord.ganttProperties;
13031
+ var projectStartDate = new Date(newStartDate.getTime());
13032
+ if (!isNullOrUndefined(taskData.endDate) && isNullOrUndefined(taskData.startDate)) {
13033
+ var endDate = this.parent.dateValidationModule.checkStartDate(projectStartDate, taskData, null);
13034
+ this.parent.setRecordValue('endDate', this.parent.dateValidationModule.checkEndDate(endDate, ganttRecord.ganttProperties), taskData, true);
13035
+ }
13036
+ else {
13037
+ this.parent.setRecordValue('startDate', this.parent.dateValidationModule.checkStartDate(projectStartDate, taskData, false), taskData, true);
13038
+ if (!isNullOrUndefined(taskData.duration)) {
13039
+ this.parent.dateValidationModule.calculateEndDate(ganttRecord);
13040
+ }
13041
+ }
13042
+ this.parent.dataOperation.updateWidthLeft(data);
13043
+ this.parent.dataOperation.updateTaskData(ganttRecord);
13044
+ };
12907
13045
  /**
12908
13046
  * Method to get validate able predecessor alone from record
12909
13047
  *
@@ -16457,7 +16595,7 @@ var Gantt = /** @__PURE__ @class */ (function (_super) {
16457
16595
  this.treeGridModule.treeGridColumns = [];
16458
16596
  this.treeGridModule.validateGanttColumns();
16459
16597
  this.treeGrid.columns = this.treeGridModule.treeGridColumns;
16460
- this.treeGrid.grid.columns = this.treeGridModule.treeGridColumns;
16598
+ this.treeGrid.refreshColumns();
16461
16599
  this.chartRowsModule.initiateTemplates();
16462
16600
  this.timelineModule.updateChartByNewTimeline();
16463
16601
  break;
@@ -17504,6 +17642,19 @@ var Gantt = /** @__PURE__ @class */ (function (_super) {
17504
17642
  var tempSplitterSettings = {};
17505
17643
  tempSplitterSettings[type] = value;
17506
17644
  var splitterPosition = this.splitterModule.calculateSplitterPosition(tempSplitterSettings);
17645
+ switch (type) {
17646
+ case 'view':
17647
+ this.splitterSettings.view = tempSplitterSettings[type];
17648
+ break;
17649
+ case 'columnIndex':
17650
+ this.splitterSettings.columnIndex = tempSplitterSettings[type];
17651
+ break;
17652
+ case 'position':
17653
+ this.splitterSettings.position = tempSplitterSettings[type];
17654
+ break;
17655
+ default:
17656
+ break;
17657
+ }
17507
17658
  var pane1 = this.splitterModule.splitterObject.element.querySelectorAll('.e-pane')[0];
17508
17659
  var pane2 = this.splitterModule.splitterObject.element.querySelectorAll('.e-pane')[1];
17509
17660
  this.splitterModule.splitterPreviousPositionGrid = pane1.scrollWidth + 1 + 'px';
@@ -20378,7 +20529,12 @@ var TaskbarEdit = /** @__PURE__ @class */ (function (_super) {
20378
20529
  event.preventDefault();
20379
20530
  if (!isNullOrUndefined(this.taskbarElement) && !isNullOrUndefined(this.editElement) && (this.taskBarEditAction !== "ConnectorPointRightDrag" && this.taskBarEditAction !== "ConnectorPointLeftDrag") && !(this.parent.viewType === 'ResourceView' && this.currentData.hasChildRecords)) {
20380
20531
  var currentElement = this.editElement.parentElement;
20381
- currentElement.style.setProperty("position", "absolute");
20532
+ if (this.parent.enableTimelineVirtualization && this.parent.timelineModule.wholeTimelineWidth > this.parent.element.offsetWidth * 3) {
20533
+ currentElement.style.setProperty("position", "relative");
20534
+ }
20535
+ else {
20536
+ currentElement.style.setProperty("position", "absolute");
20537
+ }
20382
20538
  if ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && !isNullOrUndefined(this.currentIndex) && !isNullOrUndefined(this.currentIndex) ? Number(this.currentIndex) === 0 : false) {
20383
20539
  this.taskbarElement.childNodes[0].childNodes[0].style.setProperty("top", currentElement.parentElement.offsetTop + "px");
20384
20540
  if (this.parent.allowTaskbarDragAndDrop && this.taskBarEditAction !== 'LeftResizing' && this.taskBarEditAction !== 'RightResizing' && this.taskBarEditAction !== 'ProgressResizing') {
@@ -20397,8 +20553,14 @@ var TaskbarEdit = /** @__PURE__ @class */ (function (_super) {
20397
20553
  }
20398
20554
  }
20399
20555
  if (this.taskBarEditAction !== 'ProgressResizing') {
20400
- var rootElement = this.parent.ganttChartModule.chartBodyContainer.querySelectorAll(".e-chart-rows-container");
20401
- rootElement[0].appendChild(this.taskbarResizer);
20556
+ if (this.parent.enableTimelineVirtualization && this.parent.timelineModule.wholeTimelineWidth > this.parent.element.offsetWidth * 3) {
20557
+ var rootElement = this.parent.ganttChartModule.chartBodyContainer.querySelectorAll(".e-chart-scroll-container");
20558
+ rootElement[0].appendChild(this.taskbarResizer);
20559
+ }
20560
+ else {
20561
+ var rootElement = this.parent.ganttChartModule.chartBodyContainer.querySelectorAll(".e-chart-rows-container");
20562
+ rootElement[0].appendChild(this.taskbarResizer);
20563
+ }
20402
20564
  }
20403
20565
  }
20404
20566
  if (this.parent.allowTaskbarDragAndDrop && (this.taskBarEditAction === "ChildDrag" || this.taskBarEditAction === "ParentDrag" ||
@@ -21525,7 +21687,12 @@ var TaskbarEdit = /** @__PURE__ @class */ (function (_super) {
21525
21687
  currentElement.style.position = null;
21526
21688
  }
21527
21689
  else {
21528
- currentElement.style.setProperty("position", "absolute");
21690
+ if (this.parent.enableTimelineVirtualization && this.parent.timelineModule.wholeTimelineWidth > this.parent.element.offsetWidth * 3) {
21691
+ currentElement.style.setProperty("position", "relative");
21692
+ }
21693
+ else {
21694
+ currentElement.style.setProperty("position", "absolute");
21695
+ }
21529
21696
  }
21530
21697
  }
21531
21698
  var item = this.taskBarEditRecord.ganttProperties;
@@ -26230,7 +26397,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
26230
26397
  */
26231
26398
  this.deletedTaskDetails = [];
26232
26399
  this.parent = parent;
26233
- this.validatedChildItems = [];
26400
+ this.parent.predecessorModule.validatedChildItems = [];
26234
26401
  if (this.parent.editSettings.allowEditing && this.parent.editSettings.mode === 'Auto') {
26235
26402
  this.cellEditModule = new CellEdit(this.parent);
26236
26403
  }
@@ -27067,8 +27234,8 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
27067
27234
  }
27068
27235
  if (this.parent.isConnectorLineUpdate && this.parent.autoCalculateDateScheduling) {
27069
27236
  /* validating predecessor for updated child items */
27070
- for (var i = 0; i < this.validatedChildItems.length; i++) {
27071
- var child = this.validatedChildItems[i];
27237
+ for (var i = 0; i < this.parent.predecessorModule.validatedChildItems.length; i++) {
27238
+ var child = this.parent.predecessorModule.validatedChildItems[i];
27072
27239
  if (child.ganttProperties.predecessor && child.ganttProperties.predecessor.length > 0) {
27073
27240
  this.parent.editedTaskBarItem = child;
27074
27241
  this.parent.predecessorModule.validatePredecessor(child, [], '');
@@ -27082,6 +27249,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
27082
27249
  this.parent.editedTaskBarItem = ganttRecord;
27083
27250
  }
27084
27251
  if (!this.isValidatedEditedRecord) {
27252
+ this.isFirstCall = true;
27085
27253
  this.parent.predecessorModule.validatePredecessor(ganttRecord, [], '');
27086
27254
  }
27087
27255
  this.isValidatedEditedRecord = false;
@@ -27089,7 +27257,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
27089
27257
  }
27090
27258
  if (this.parent.allowParentDependency && ganttRecord.hasChildRecords && this.parent.previousRecords[ganttRecord.uniqueID].ganttProperties.startDate &&
27091
27259
  (args.action === "DrawConnectorLine")) {
27092
- this.updateChildItems(ganttRecord);
27260
+ this.parent.predecessorModule['updateChildItems'](ganttRecord);
27093
27261
  }
27094
27262
  this.updateParentItemOnEditing();
27095
27263
  this.parent.dataOperation.updateParentItems(ganttRecord, true);
@@ -27102,6 +27270,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
27102
27270
  var parentData = this.parent.getRecordByID(ganttRecord.parentItem.taskId);
27103
27271
  if (!isNullOrUndefined(parentData)) {
27104
27272
  if (!parentData.ganttProperties.predecessorsName) {
27273
+ this.isFirstCall = true;
27105
27274
  this.parent.predecessorModule.validatePredecessor(parentData, [], '');
27106
27275
  this.updateParentItemOnEditing();
27107
27276
  this.parent.ganttChartModule.reRenderConnectorLines();
@@ -27132,7 +27301,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
27132
27301
  Edit$$1.prototype.updateParentChildRecord = function (data) {
27133
27302
  var ganttRecord = data;
27134
27303
  if (ganttRecord.hasChildRecords && this.taskbarMoved && (ganttRecord[this.parent.taskFields.manual] === false || this.parent.taskMode === 'Auto') && (!isNullOrUndefined(this.parent.editModule.cellEditModule) && !this.parent.editModule.cellEditModule.isResourceCellEdited)) {
27135
- this.updateChildItems(ganttRecord);
27304
+ this.parent.predecessorModule['updateChildItems'](ganttRecord);
27136
27305
  }
27137
27306
  if (!isNullOrUndefined(this.parent.editModule.cellEditModule)) {
27138
27307
  this.parent.editModule.cellEditModule.isResourceCellEdited = false;
@@ -27177,29 +27346,6 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
27177
27346
  this.parent.dataOperation.updateWidthLeft(data);
27178
27347
  }
27179
27348
  };
27180
- /**
27181
- *
27182
- * @param {IGanttData} data .
27183
- * @param {Date} newStartDate .
27184
- * @returns {void} .
27185
- */
27186
- Edit$$1.prototype.calculateDateByRoundOffDuration = function (data, newStartDate) {
27187
- var ganttRecord = data;
27188
- var taskData = ganttRecord.ganttProperties;
27189
- var projectStartDate = new Date(newStartDate.getTime());
27190
- if (!isNullOrUndefined(taskData.endDate) && isNullOrUndefined(taskData.startDate)) {
27191
- var endDate = this.parent.dateValidationModule.checkStartDate(projectStartDate, taskData, null);
27192
- this.parent.setRecordValue('endDate', this.parent.dateValidationModule.checkEndDate(endDate, ganttRecord.ganttProperties), taskData, true);
27193
- }
27194
- else {
27195
- this.parent.setRecordValue('startDate', this.parent.dateValidationModule.checkStartDate(projectStartDate, taskData, false), taskData, true);
27196
- if (!isNullOrUndefined(taskData.duration)) {
27197
- this.parent.dateValidationModule.calculateEndDate(ganttRecord);
27198
- }
27199
- }
27200
- this.parent.dataOperation.updateWidthLeft(data);
27201
- this.parent.dataOperation.updateTaskData(ganttRecord);
27202
- };
27203
27349
  /**
27204
27350
  * To update progress value of parent tasks
27205
27351
  *
@@ -27309,106 +27455,6 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
27309
27455
  Edit$$1.prototype.updateScheduleDatesOnEditing = function (args) {
27310
27456
  //..
27311
27457
  };
27312
- /**
27313
- *
27314
- * @param {IGanttData} ganttRecord .
27315
- * @returns {void} .
27316
- */
27317
- Edit$$1.prototype.updateChildItems = function (ganttRecord) {
27318
- var previousData = this.parent.previousRecords[ganttRecord.uniqueID];
27319
- var previousStartDate;
27320
- if (isNullOrUndefined(previousData) ||
27321
- (isNullOrUndefined(previousData) && !isNullOrUndefined(previousData.ganttProperties))) {
27322
- previousStartDate = new Date(ganttRecord.ganttProperties.startDate.getTime());
27323
- }
27324
- else {
27325
- if (!isNullOrUndefined(previousData.ganttProperties.startDate)) {
27326
- previousStartDate = new Date(previousData.ganttProperties.startDate.getTime());
27327
- }
27328
- }
27329
- var currentStartDate = ganttRecord.ganttProperties.startDate;
27330
- var childRecords = [];
27331
- var validStartDate;
27332
- var validEndDate;
27333
- var calcEndDate;
27334
- var isRightMove;
27335
- var durationDiff;
27336
- this.getUpdatableChildRecords(ganttRecord, childRecords);
27337
- if (childRecords.length === 0) {
27338
- return;
27339
- }
27340
- if (!isNullOrUndefined(previousStartDate) && !isNullOrUndefined(currentStartDate) && previousStartDate.getTime() > currentStartDate.getTime()) {
27341
- validStartDate = this.parent.dateValidationModule.checkStartDate(currentStartDate);
27342
- validEndDate = this.parent.dateValidationModule.checkEndDate(previousStartDate, ganttRecord.ganttProperties);
27343
- isRightMove = false;
27344
- }
27345
- else {
27346
- validStartDate = this.parent.dateValidationModule.checkStartDate(previousStartDate);
27347
- validEndDate = this.parent.dateValidationModule.checkEndDate(currentStartDate, ganttRecord.ganttProperties);
27348
- isRightMove = true;
27349
- }
27350
- //Get Duration
27351
- if (!isNullOrUndefined(validStartDate) && !isNullOrUndefined(validEndDate) && validStartDate.getTime() >= validEndDate.getTime()) {
27352
- durationDiff = 0;
27353
- }
27354
- else {
27355
- durationDiff = this.parent.dateValidationModule.getDuration(validStartDate, validEndDate, 'minute', true, false);
27356
- }
27357
- for (var i = 0; i < childRecords.length; i++) {
27358
- if (childRecords[i].ganttProperties.isAutoSchedule) {
27359
- if (durationDiff > 0) {
27360
- var startDate = isScheduledTask(childRecords[i].ganttProperties) ?
27361
- childRecords[i].ganttProperties.startDate : childRecords[i].ganttProperties.startDate ?
27362
- childRecords[i].ganttProperties.startDate : childRecords[i].ganttProperties.endDate ?
27363
- childRecords[i].ganttProperties.endDate : new Date(previousStartDate.toString());
27364
- if (isRightMove) {
27365
- calcEndDate = this.parent.dateValidationModule.getEndDate(this.parent.dateValidationModule.checkStartDate(startDate, childRecords[i].ganttProperties, childRecords[i].ganttProperties.isMilestone), durationDiff, 'minute', childRecords[i].ganttProperties, false);
27366
- }
27367
- else {
27368
- calcEndDate = this.parent.dateValidationModule.getStartDate(this.parent.dateValidationModule.checkEndDate(startDate, childRecords[i].ganttProperties), durationDiff, 'minute', childRecords[i].ganttProperties);
27369
- }
27370
- this.calculateDateByRoundOffDuration(childRecords[i], calcEndDate);
27371
- if (this.parent.isOnEdit && this.validatedChildItems.indexOf(childRecords[i]) === -1) {
27372
- this.validatedChildItems.push(childRecords[i]);
27373
- }
27374
- }
27375
- else if (isNullOrUndefined(previousData)) {
27376
- calcEndDate = previousStartDate;
27377
- var initialData = this.parent.initialLoadData[childRecords[i].index];
27378
- if (this.parent.isLoad) {
27379
- this.calculateDateByRoundOffDuration(initialData, calcEndDate);
27380
- }
27381
- else {
27382
- this.calculateDateByRoundOffDuration(childRecords[i], calcEndDate);
27383
- }
27384
- if (this.parent.isOnEdit && this.validatedChildItems.indexOf(childRecords[i]) === -1) {
27385
- this.validatedChildItems.push(childRecords[i]);
27386
- }
27387
- }
27388
- }
27389
- }
27390
- if (childRecords.length) {
27391
- this.parent.dataOperation.updateParentItems(ganttRecord, true);
27392
- }
27393
- };
27394
- /**
27395
- * To get updated child records.
27396
- *
27397
- * @param {IGanttData} parentRecord .
27398
- * @param {IGanttData} childLists .
27399
- * @returns {void} .
27400
- */
27401
- Edit$$1.prototype.getUpdatableChildRecords = function (parentRecord, childLists) {
27402
- var childRecords = parentRecord.childRecords;
27403
- for (var i = 0; i < childRecords.length; i++) {
27404
- if (childRecords[i].ganttProperties.isAutoSchedule) {
27405
- childLists.push(childRecords[i]);
27406
- if (childRecords[i].hasChildRecords) {
27407
- this.getUpdatableChildRecords(childRecords[i], childLists);
27408
- }
27409
- }
27410
- }
27411
- };
27412
27458
  /**
27413
27459
  * @param {ITaskbarEditedEventArgs} args .
27414
27460
  * @returns {void} .
@@ -27921,7 +27967,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
27921
27967
  this.resetValidateArgs();
27922
27968
  this.parent.editedTaskBarItem = null;
27923
27969
  this.parent.isOnEdit = false;
27924
- this.validatedChildItems = [];
27970
+ this.parent.predecessorModule.validatedChildItems = [];
27925
27971
  this.parent.isConnectorLineUpdate = false;
27926
27972
  this.parent.editedTaskBarItem = null;
27927
27973
  this.taskbarMoved = false;
@@ -28767,7 +28813,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
28767
28813
  var fromRecord = this.parent.getRecordByID(predecessorCollection[count].from);
28768
28814
  var toRecord = this.parent.getRecordByID(predecessorCollection[count].to);
28769
28815
  validPredecessor = this.parent.connectorLineEditModule.validateParentPredecessor(fromRecord, toRecord);
28770
- if (!validPredecessor) {
28816
+ if (!validPredecessor || !this.parent.allowParentDependency) {
28771
28817
  if (predecessorCollection[count].to === parentRecordTaskData.rowUniqueID.toString()) {
28772
28818
  childRecord = this.parent.getRecordByID(predecessorCollection[count].from);
28773
28819
  predecessorIndex = getIndex(predecessorCollection[count], 'from', childRecord.ganttProperties.predecessor, 'to');
@@ -28793,7 +28839,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
28793
28839
  }
28794
28840
  }
28795
28841
  }
28796
- if (!validPredecessor) {
28842
+ if (!validPredecessor || !this.parent.allowParentDependency) {
28797
28843
  this.parent.setRecordValue('predecessor', updatedPredecessor, parentRecord.ganttProperties, true);
28798
28844
  this.parent.setRecordValue('predecessorsName', '', parentRecord.ganttProperties, true);
28799
28845
  }
@@ -29035,14 +29081,15 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
29035
29081
  }
29036
29082
  var _loop_3 = function (i) {
29037
29083
  var originalData = this_3.parent.modifiedRecords[i];
29038
- var treeIndex = this_3.parent.allowRowDragAndDrop ? 1 : 0;
29084
+ var treeIndex = this_3.parent.rowDragAndDropModule && this_3.parent.allowRowDragAndDrop ? 1 : 0;
29039
29085
  var uniqueTaskID = this_3.parent.taskFields.id;
29040
29086
  var originalIndex = this_3.parent.currentViewData.findIndex(function (data) {
29041
29087
  return (data[uniqueTaskID] === originalData[uniqueTaskID]);
29042
29088
  });
29043
29089
  if (this_3.parent.treeGrid.getRows()[originalIndex]) {
29090
+ var row = this_3.parent.treeGrid.grid.getRowObjectFromUID(this_3.parent.treeGrid.grid.getDataRows()[originalIndex].getAttribute('data-uid'));
29044
29091
  this_3.parent.treeGrid.renderModule.cellRender({
29045
- data: originalData, cell: this_3.parent.treeGrid.getRows()[originalIndex].cells[this_3.parent.treeColumnIndex + treeIndex],
29092
+ data: row.data, cell: this_3.parent.treeGrid.getRows()[originalIndex].cells[this_3.parent.treeColumnIndex + treeIndex],
29046
29093
  column: this_3.parent.treeGrid.grid.getColumns()[this_3.parent.treeColumnIndex],
29047
29094
  requestType: 'rowDragAndDrop'
29048
29095
  });
@@ -29828,6 +29875,7 @@ var Edit$2 = /** @__PURE__ @class */ (function () {
29828
29875
  for (var k = 0; k < this.updateParentRecords.length; k++) {
29829
29876
  this.parent.dataOperation.updateParentItems(this.updateParentRecords[k]);
29830
29877
  }
29878
+ this.isFirstCall = true;
29831
29879
  this.parent.editedRecords.forEach(function (record) {
29832
29880
  _this.parent.predecessorModule.validatePredecessor(record, [], '');
29833
29881
  });
@@ -30881,7 +30929,14 @@ var Selection$1 = /** @__PURE__ @class */ (function () {
30881
30929
  if (this.parent.enableTimelineVirtualization) {
30882
30930
  this.parent['isRowSelected'] = true;
30883
30931
  }
30884
- this.parent.ganttChartModule.updateScrollLeft(getValue('data.ganttProperties.left', args));
30932
+ if (args.data && !isNullOrUndefined(args.data['length'])) {
30933
+ for (var i = 0; i < args.data['length']; i++) {
30934
+ this.parent.ganttChartModule.updateScrollLeft(args.data[i].ganttProperties.left);
30935
+ }
30936
+ }
30937
+ else {
30938
+ this.parent.ganttChartModule.updateScrollLeft(getValue('data.ganttProperties.left', args));
30939
+ }
30885
30940
  }
30886
30941
  args.target = this.actualTarget;
30887
30942
  if (!isNullOrUndefined(args.foreignKeyData) && Object.keys(args.foreignKeyData).length === 0) {
@@ -38519,7 +38574,7 @@ var PdfGanttTaskbarCollection = /** @__PURE__ @class */ (function () {
38519
38574
  progressFormat.alignment = PdfTextAlignment.Right;
38520
38575
  var isLabelString = false;
38521
38576
  var updatedWidth;
38522
- if (!isNullOrUndefined(this.taskLabel) && (/^[a-zA-Z]/.test(this.taskLabel))) {
38577
+ if (!isNullOrUndefined(this.taskLabel) && (/^[a-zA-Z0-9]/.test(this.taskLabel))) {
38523
38578
  isLabelString = true;
38524
38579
  progressFormat.alignment = PdfTextAlignment.Left;
38525
38580
  }
@@ -39683,12 +39738,6 @@ var PdfTimeline = /** @__PURE__ @class */ (function () {
39683
39738
  }
39684
39739
  //Secondary header Event Arguments
39685
39740
  /* eslint-disable-next-line */
39686
- if (!this.parent.pdfExportModule.gantt.taskbar.isAutoFit() && this.parent.timelineModule.bottomTier !== "Day") {
39687
- var unit = this.parent.perDayWidth;
39688
- if (width < unit || (width > unit)) {
39689
- width = unit;
39690
- }
39691
- }
39692
39741
  this.triggerQueryTimelinecell(page, this.bottomTierPoint.x, this.bottomTierPoint.y, this.bottomTierHeight, width, secondHeader.value, false, secondHeader.startDate);
39693
39742
  this.bottomTierPoint.x = (this.parent.pdfExportModule.gantt.taskbar.isAutoFit()) ? this.bottomTierPoint.x + width : this.bottomTierPoint.x + pixelToPoint(width);
39694
39743
  remainWidth -= width;