@syncfusion/ej2-gantt 21.2.5 → 21.2.8

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.
@@ -387,7 +387,7 @@ class DateProcessor {
387
387
  else if (hour > this.parent.defaultStartTime && hour < this.parent.defaultEndTime) {
388
388
  for (let i = 0; i < this.parent.workingTimeRanges.length; i++) {
389
389
  const value = this.parent.workingTimeRanges[i];
390
- if (hour >= value.to && (this.parent.workingTimeRanges[i + 1] &&
390
+ if (hour > value.to && (this.parent.workingTimeRanges[i + 1] &&
391
391
  hour < this.parent.workingTimeRanges[i + 1].from)) {
392
392
  this.setTime(this.parent.workingTimeRanges[i + 1].from, cloneDate);
393
393
  break;
@@ -1716,7 +1716,7 @@ class TaskProcessor extends DateProcessor {
1716
1716
  constructResourceViewDataSource(resources, data, unassignedTasks) {
1717
1717
  for (let i = 0; i < data.length; i++) {
1718
1718
  const tempData = data[i];
1719
- const child = this.parent.taskFields.child != null ? this.parent.taskFields.child : 'Children';
1719
+ const child = this.parent.taskFields.child != null ? this.parent.taskFields.child : this.parent.taskFields.child = 'Children';
1720
1720
  const resourceData = tempData && tempData[this.parent.taskFields.resourceInfo];
1721
1721
  const resourceIdMapping = this.parent.resourceFields.id;
1722
1722
  if ((!tempData[child] || tempData[child].length === 0) && resourceData && resourceData.length) {
@@ -1885,7 +1885,7 @@ class TaskProcessor extends DateProcessor {
1885
1885
  (this.parent.taskMode === 'Manual') ? false :
1886
1886
  data[taskSettings.manual] === true ? false : true;
1887
1887
  this.parent.setRecordValue('ganttProperties', ganttProperties, ganttData);
1888
- if (!isNullOrUndefined(data[taskSettings.id])) {
1888
+ if (!isNullOrUndefined(data[taskSettings.id]) && (!((this.parent.viewType === "ResourceView" && level == 0))) || data[taskSettings.name] === "Unassigned Task") {
1889
1889
  id = data[taskSettings.id];
1890
1890
  name = data[taskSettings.name];
1891
1891
  this.addTaskData(ganttData, data, isLoad);
@@ -2302,7 +2302,7 @@ class TaskProcessor extends DateProcessor {
2302
2302
  startDate = this.getDateFromFormat(data[taskSettings.startDate], true);
2303
2303
  endDate = this.getDateFromFormat(data[taskSettings.endDate], true);
2304
2304
  }
2305
- const segments = taskSettings.segments ? (data[taskSettings.segments] ||
2305
+ const segments = taskSettings.segments && (!isNullOrUndefined(data[taskSettings.segments]) || !isNullOrUndefined(ganttData.taskData)) ? (data[taskSettings.segments] ||
2306
2306
  ganttData.taskData[taskSettings.segments]) : null;
2307
2307
  const isMileStone = taskSettings.milestone ? data[taskSettings.milestone] ? true : false : false;
2308
2308
  const durationMapping = data[taskSettings.durationUnit] ? data[taskSettings.durationUnit] : '';
@@ -3125,6 +3125,9 @@ class TaskProcessor extends DateProcessor {
3125
3125
  return resourceIdCollection;
3126
3126
  }
3127
3127
  resourceIdCollection = data[this.parent.taskFields.resourceInfo];
3128
+ if (resourceIdCollection != "" && typeof resourceIdCollection == "string") {
3129
+ resourceIdCollection = resourceIdCollection.split(',');
3130
+ }
3128
3131
  let resourceData;
3129
3132
  if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.dialogModule)
3130
3133
  && this.parent.editModule.dialogModule.isAddNewResource) {
@@ -3134,6 +3137,7 @@ class TaskProcessor extends DateProcessor {
3134
3137
  resourceData = this.parent.resources;
3135
3138
  }
3136
3139
  const resourceIDMapping = this.parent.resourceFields.id;
3140
+ const resourceNameMapping = this.parent.resourceFields.name;
3137
3141
  const resourceUnitMapping = this.parent.resourceFields.unit;
3138
3142
  const resourceGroup = this.parent.resourceFields.group;
3139
3143
  const resources = [];
@@ -3144,7 +3148,7 @@ class TaskProcessor extends DateProcessor {
3144
3148
  return true;
3145
3149
  }
3146
3150
  else {
3147
- return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]);
3151
+ return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]) || (resourceIdCollection[count] === resourceInfo[resourceNameMapping]);
3148
3152
  }
3149
3153
  });
3150
3154
  const ganttDataResource = extend({}, resource[0]);
@@ -4612,7 +4616,7 @@ class GanttChart {
4612
4616
  setVirtualHeight() {
4613
4617
  if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {
4614
4618
  const wrapper = getValue('virtualTrack', this.parent.ganttChartModule.virtualRender);
4615
- wrapper.style.height = this.parent.treeGrid.element.getElementsByClassName('e-virtualtable')[0].style.height;
4619
+ wrapper.style.height = this.parent.treeGrid.element.getElementsByClassName('e-virtualtrack')[0].style.height;
4616
4620
  const wrapper1 = getValue('wrapper', this.parent.ganttChartModule.virtualRender);
4617
4621
  const treegridVirtualHeight = this.parent.treeGrid.element.getElementsByClassName('e-virtualtable')[0].style.transform;
4618
4622
  wrapper1.style.transform = treegridVirtualHeight;
@@ -8725,7 +8729,7 @@ class ChartRows extends DateProcessor {
8725
8729
  if (this.taskLabelTemplateFunction && !isNullOrUndefined(progressDiv) && progressDiv.length > 0) {
8726
8730
  const taskLabelTemplateNode = this.taskLabelTemplateFunction(extend({ index: i }, data), this.parent, 'TaskLabelTemplate', this.getTemplateID('TaskLabelTemplate'), false, undefined, progressDiv[0]);
8727
8731
  if (taskLabelTemplateNode && taskLabelTemplateNode.length > 0) {
8728
- tempDiv.appendChild(taskLabelTemplateNode[0]);
8732
+ append(taskLabelTemplateNode, tempDiv);
8729
8733
  labelString = tempDiv.innerHTML;
8730
8734
  }
8731
8735
  }
@@ -9280,7 +9284,7 @@ class ChartRows extends DateProcessor {
9280
9284
  if (leftLabelTemplateNode[0]['data'] === 'null') {
9281
9285
  leftLabelTemplateNode[0]['data'] = '';
9282
9286
  }
9283
- leftLabelNode[0].appendChild([].slice.call(leftLabelTemplateNode)[0]);
9287
+ append(leftLabelTemplateNode, leftLabelNode[0]);
9284
9288
  }
9285
9289
  if (this.parent.enableRtl) {
9286
9290
  leftLabelNode[0].style.paddingLeft = '25px';
@@ -9335,7 +9339,7 @@ class ChartRows extends DateProcessor {
9335
9339
  if (rightLabelTemplateNode[0]['data'] === 'null') {
9336
9340
  rightLabelTemplateNode[0]['data'] = '';
9337
9341
  }
9338
- rightLabelNode[0].appendChild([].slice.call(rightLabelTemplateNode)[0]);
9342
+ append(rightLabelTemplateNode, rightLabelNode[0]);
9339
9343
  }
9340
9344
  if (this.parent.enableRtl) {
9341
9345
  rightLabelNode[0].style.marginLeft = '0px';
@@ -9991,12 +9995,12 @@ class ChartRows extends DateProcessor {
9991
9995
  }
9992
9996
  }
9993
9997
  if ((this.templateData.ganttProperties.autoDuration !== 0) && !this.templateData.ganttProperties.isMilestone && parentTaskbarTemplateNode && parentTaskbarTemplateNode.length > 0) {
9994
- taskbarContainerNode[0].appendChild([].slice.call(parentTaskbarTemplateNode)[0]);
9998
+ append(parentTaskbarTemplateNode, taskbarContainerNode[0]);
9995
9999
  }
9996
10000
  else if ((this.templateData.ganttProperties.duration === 0 && this.templateData.ganttProperties.isMilestone && this.templateData.ganttProperties.isAutoSchedule)) {
9997
10001
  const milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);
9998
10002
  if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {
9999
- taskbarContainerNode[0].appendChild([].slice.call(milestoneTemplateNode)[0]);
10003
+ append(milestoneTemplateNode, taskbarContainerNode[0]);
10000
10004
  }
10001
10005
  }
10002
10006
  if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&
@@ -10050,7 +10054,7 @@ class ChartRows extends DateProcessor {
10050
10054
  }
10051
10055
  }
10052
10056
  else {
10053
- taskbarContainerNode[0].appendChild([].slice.call(childTaskbarTemplateNode)[0]);
10057
+ append(childTaskbarTemplateNode, taskbarContainerNode[0]);
10054
10058
  }
10055
10059
  }
10056
10060
  if (childTaskbarProgressResizeNode) {
@@ -13344,7 +13348,10 @@ class FocusModule {
13344
13348
  break;
13345
13349
  case 'addRow':
13346
13350
  {
13347
- if (isNullOrUndefined(document.getElementById(this.parent.element.id + '_dialog'))) {
13351
+ if (ganttObj.editModule && ganttObj.editModule.cellEditModule && ganttObj.editModule.cellEditModule.isCellEdit) {
13352
+ e.stopPropagation();
13353
+ }
13354
+ else if (isNullOrUndefined(document.getElementById(this.parent.element.id + '_dialog'))) {
13348
13355
  e.preventDefault();
13349
13356
  ganttObj.addRecord(undefined, this.parent.editSettings.newRowPosition);
13350
13357
  const focussedElement = ganttObj.element;
@@ -13866,6 +13873,9 @@ let Gantt = class Gantt extends Component {
13866
13873
  const ganttHeader = this.chartPane.childNodes[0].childNodes[0];
13867
13874
  this.scrollLeftValue = this.chartPane.childNodes[0].childNodes[0]['scrollLeft'];
13868
13875
  const ganttContent = this.chartPane.childNodes[0].childNodes[1];
13876
+ if (this.treeGrid.element) {
13877
+ this.ganttChartModule['setVirtualHeight']();
13878
+ }
13869
13879
  if (!this.contentMaskTable) {
13870
13880
  if (ganttContent) {
13871
13881
  let content$$1 = ganttContent;
@@ -19665,7 +19675,8 @@ class TaskbarEdit extends DateProcessor {
19665
19675
  this.dependencyCancel = true;
19666
19676
  }
19667
19677
  if ((this.taskBarEditAction === 'ConnectorPointLeftDrag' ||
19668
- this.taskBarEditAction === 'ConnectorPointRightDrag') && this.drawPredecessor) {
19678
+ this.taskBarEditAction === 'ConnectorPointRightDrag') && this.drawPredecessor && (!this.connectorSecondRecord.hasChildRecords ||
19679
+ this.connectorSecondRecord.hasChildRecords && this.parent.allowParentDependency)) {
19669
19680
  this.parent.connectorLineEditModule.updatePredecessor(this.connectorSecondRecord, this.finalPredecessor);
19670
19681
  if (this.parent.UpdateOffsetOnTaskbarEdit) {
19671
19682
  this.parent.connectorLineEditModule['calculateOffset'](this.connectorSecondRecord);
@@ -19998,7 +20009,9 @@ class TaskbarEdit extends DateProcessor {
19998
20009
  }
19999
20010
  this.showHideTaskBarEditingElements(element, this.highlightedSecondElement, true);
20000
20011
  }
20001
- if (isNullOrUndefined(this.connectorSecondAction) && !isNullOrUndefined(this.connectorSecondElement)) {
20012
+ if (isNullOrUndefined(this.connectorSecondAction) && !isNullOrUndefined(this.connectorSecondElement) &&
20013
+ (!this.connectorSecondRecord.hasChildRecords || this.connectorSecondRecord.hasChildRecords &&
20014
+ this.parent.allowParentDependency)) {
20002
20015
  this.editTooltip.showHideTaskbarEditTooltip(false, this.segmentIndex);
20003
20016
  removeClass([this.connectorSecondElement.querySelector('.' + connectorPointLeft)], [connectorPointAllowBlock]);
20004
20017
  removeClass([this.connectorSecondElement.querySelector('.' + connectorPointRight)], [connectorPointAllowBlock]);
@@ -24110,9 +24123,8 @@ class Edit$2 {
24110
24123
  (isNullOrUndefined(taskData.startDate) && !isNullOrUndefined(prevStart)) ||
24111
24124
  (isNullOrUndefined(taskData.endDate) && !isNullOrUndefined(prevEnd)) ||
24112
24125
  (prevStart && prevStart.getTime() !== taskData.startDate.getTime())
24113
- || (prevEnd && prevEnd.getTime() !== taskData.endDate.getTime())
24114
- || (!isNullOrUndefined(prevDuration) && prevDuration !== taskData.duration)
24115
- || (!isNullOrUndefined(prevDuration) && prevDuration === taskData.duration &&
24126
+ && (prevEnd && prevEnd.getTime() !== taskData.endDate.getTime())
24127
+ || (!isNullOrUndefined(prevDuration) && prevDuration !== taskData.duration &&
24116
24128
  prevDurationUnit !== taskData.durationUnit)) {
24117
24129
  isMoved = true;
24118
24130
  }
@@ -26307,6 +26319,7 @@ class Edit$2 {
26307
26319
  let args = {};
26308
26320
  args = this.constructTaskAddedEventArgs(cAddedRecord, this.parent.editedRecords, 'beforeAdd');
26309
26321
  this.parent.trigger('actionBegin', args, (args) => {
26322
+ this.parent.previousRecords = {};
26310
26323
  if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
26311
26324
  this.parent.showMaskRow();
26312
26325
  }
@@ -30301,7 +30314,7 @@ class ContextMenu$2 {
30301
30314
  this.parent.ganttChartModule.targetElement;
30302
30315
  // Closed edited cell before opening context menu
30303
30316
  // eslint-disable-next-line
30304
- if (!isNullOrUndefined(this.parent.editModule) && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit && target.parentElement.classList.contains('e-row')) {
30317
+ 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')) {
30305
30318
  this.parent.treeGrid.closeEdit();
30306
30319
  }
30307
30320
  if (!isNullOrUndefined(args.element) && args.element.id === this.parent.element.id + '_contextmenu') {
@@ -34978,11 +34991,22 @@ class PdfGanttPredecessor {
34978
34991
  this.parent = parent;
34979
34992
  this.pdfGantt = pdfGantt;
34980
34993
  }
34981
- findindex(num) {
34994
+ findindex(num, pdfExportProperties) {
34982
34995
  var dataindex;
34983
- this.parent.currentViewData.map((data, index) => { if (data.index == num) {
34984
- dataindex = index;
34985
- } });
34996
+ if (pdfExportProperties.exportType === 'CurrentViewData') {
34997
+ this.parent.currentViewData.map(function (data, index) {
34998
+ if (data.index == num) {
34999
+ dataindex = index;
35000
+ }
35001
+ });
35002
+ }
35003
+ else {
35004
+ this.parent.flatData.map(function (data, index) {
35005
+ if (data.index == num) {
35006
+ dataindex = index;
35007
+ }
35008
+ });
35009
+ }
34986
35010
  return dataindex;
34987
35011
  }
34988
35012
  /**
@@ -34992,11 +35016,11 @@ class PdfGanttPredecessor {
34992
35016
  * @returns {void}
34993
35017
  * @private
34994
35018
  */
34995
- drawPredecessor(pdfGantt) {
35019
+ drawPredecessor(pdfGantt, pdfExportProperties) {
34996
35020
  this.pdfGantt = pdfGantt;
34997
35021
  const pages = pdfGantt.result.page.section.getPages();
34998
- const parentTask = pdfGantt.taskbarCollection[this.findindex(this.parentIndex)];
34999
- const childTask = pdfGantt.taskbarCollection[this.findindex(this.childIndex)];
35022
+ const parentTask = pdfGantt.taskbarCollection[this.findindex(this.parentIndex, pdfExportProperties)];
35023
+ const childTask = pdfGantt.taskbarCollection[this.findindex(this.childIndex, pdfExportProperties)];
35000
35024
  let startPage = new PdfPage();
35001
35025
  let endPage = new PdfPage();
35002
35026
  let predecessorType = '';
@@ -35006,7 +35030,7 @@ class PdfGanttPredecessor {
35006
35030
  let childY = 0;
35007
35031
  switch (this.type) {
35008
35032
  case 'FS':
35009
- if (childTask.startPage > -1 && parentTask.endPage > -1) {
35033
+ if ((!isNullOrUndefined(childTask) && childTask.startPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.endPage > -1)) {
35010
35034
  startPage = pages[parentTask.endPage];
35011
35035
  endPage = pages[childTask.startPage];
35012
35036
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35033,7 +35057,7 @@ class PdfGanttPredecessor {
35033
35057
  }
35034
35058
  break;
35035
35059
  case 'SF':
35036
- if (childTask.endPage > -1 && parentTask.startPage > -1) {
35060
+ if ((!isNullOrUndefined(childTask) && childTask.endPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.startPage > -1)) {
35037
35061
  startPage = pages[parentTask.startPage];
35038
35062
  endPage = pages[childTask.endPage];
35039
35063
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35060,7 +35084,7 @@ class PdfGanttPredecessor {
35060
35084
  }
35061
35085
  break;
35062
35086
  case 'FF':
35063
- if (childTask.endPage > -1 && parentTask.endPage > -1) {
35087
+ if ((!isNullOrUndefined(childTask) && childTask.endPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.endPage > -1)) {
35064
35088
  startPage = pages[parentTask.endPage];
35065
35089
  endPage = pages[childTask.endPage];
35066
35090
  parentPageData = pdfGantt.pdfPageDetail[parentTask.endPage - pdfGantt.chartPageIndex];
@@ -35087,7 +35111,7 @@ class PdfGanttPredecessor {
35087
35111
  }
35088
35112
  break;
35089
35113
  case 'SS':
35090
- if (childTask.startPage > -1 && parentTask.startPage > -1) {
35114
+ if ((!isNullOrUndefined(childTask) && childTask.startPage > -1) && (!isNullOrUndefined(parentTask) && parentTask.startPage > -1)) {
35091
35115
  startPage = pages[parentTask.startPage];
35092
35116
  endPage = pages[childTask.startPage];
35093
35117
  parentPageData = pdfGantt.pdfPageDetail[parentTask.startPage - pdfGantt.chartPageIndex];
@@ -35414,12 +35438,12 @@ class PdfGantt extends PdfTreeGrid {
35414
35438
  }
35415
35439
  return this.taskbars;
35416
35440
  }
35417
- drawChart(result) {
35441
+ drawChart(result, pdfExportProperties) {
35418
35442
  this.result = result;
35419
35443
  this.totalPages = this.result.page.section.count;
35420
35444
  this.perColumnPages = this.totalPages / this.layouter.columnRanges.length;
35421
35445
  this.calculateRange();
35422
- this.drawGantttChart();
35446
+ this.drawGantttChart(pdfExportProperties);
35423
35447
  this.drawPageBorder();
35424
35448
  }
35425
35449
  //Calcualte the header range for each pdf page based on schedule start and end date.
@@ -35568,7 +35592,7 @@ class PdfGantt extends PdfTreeGrid {
35568
35592
  }
35569
35593
  }
35570
35594
  //Draw the gantt chart side
35571
- drawGantttChart() {
35595
+ drawGantttChart(pdfExportProperties) {
35572
35596
  let taskbarPoint = this.startPoint;
35573
35597
  const pagePoint = new PointF();
35574
35598
  let pageStartX = 0;
@@ -35642,7 +35666,7 @@ class PdfGantt extends PdfTreeGrid {
35642
35666
  // Draw predecessor line.
35643
35667
  for (let i = 0; i < this.predecessorCollection.length; i++) {
35644
35668
  const predecessor = this.predecessorCollection[i];
35645
- predecessor.drawPredecessor(this);
35669
+ predecessor.drawPredecessor(this, pdfExportProperties);
35646
35670
  }
35647
35671
  }
35648
35672
  }
@@ -35755,7 +35779,7 @@ class PdfExport {
35755
35779
  const format = new PdfTreeGridLayoutFormat();
35756
35780
  format.break = PdfLayoutBreakType.FitElement;
35757
35781
  const layouter = this.gantt.drawGrid(pdfPage, 0, 0, format);
35758
- this.gantt.drawChart(layouter);
35782
+ this.gantt.drawChart(layouter, pdfExportProperties);
35759
35783
  if (!isMultipleExport) {
35760
35784
  if (!this.isBlob) {
35761
35785
  // save the PDF