@syncfusion/ej2-gantt 19.4.53 → 19.4.56

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.
@@ -478,7 +478,8 @@ class DateProcessor {
478
478
  calculateDuration(ganttData) {
479
479
  const ganttProperties = ganttData.ganttProperties;
480
480
  let tDuration;
481
- if (!isNullOrUndefined(ganttProperties.segments) && ganttProperties.segments.length > 0) {
481
+ if (!isNullOrUndefined(ganttProperties.segments) && ganttProperties.segments.length > 0 &&
482
+ !isNullOrUndefined(this.parent.editModule.taskbarEditModule)) {
482
483
  tDuration = this.parent.editModule.taskbarEditModule.sumOfDuration(ganttProperties.segments);
483
484
  }
484
485
  else {
@@ -4278,7 +4279,19 @@ class GanttChart {
4278
4279
  //empty row height
4279
4280
  const emptydivHeight = 36;
4280
4281
  const emptyHeight = this.parent.contentHeight === 0 ? this.parent.flatData.length > 1 ? emptydivHeight : 0 : this.parent.contentHeight;
4281
- this.chartBodyContent.style.height = formatUnit(emptyHeight);
4282
+ let contentElement = this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0];
4283
+ if (emptyHeight >= contentElement['offsetHeight']) {
4284
+ this.chartBodyContent.style.height = formatUnit(emptyHeight);
4285
+ }
4286
+ else {
4287
+ let scrollHeight = this.parent.element.getElementsByClassName('e-chart-rows-container')[0]['offsetHeight'];
4288
+ if (contentElement['offsetHeight'] >= scrollHeight) {
4289
+ this.chartBodyContent.style.height = contentElement['offsetHeight'] - 17 + 'px';
4290
+ }
4291
+ else {
4292
+ this.chartBodyContent.style.height = contentElement['offsetHeight'] + 'px';
4293
+ }
4294
+ }
4282
4295
  //let element: HTMLElement = this.chartTimelineContainer.querySelector('.' + cls.timelineHeaderTableContainer);
4283
4296
  this.chartBodyContent.style.width = formatUnit(this.parent.timelineModule.totalTimelineWidth);
4284
4297
  this.setVirtualHeight();
@@ -4311,7 +4324,21 @@ class GanttChart {
4311
4324
  if (this.chartBodyContent.clientHeight < this.chartBodyContainer.clientHeight) {
4312
4325
  if (lastRow) {
4313
4326
  addClass(lastRow.querySelectorAll('td'), 'e-lastrow');
4314
- this.chartBodyContent.style.height = formatUnit(this.parent.contentHeight + 1);
4327
+ const emptydivHeight = 36;
4328
+ const emptyHeight = this.parent.contentHeight === 0 ? this.parent.flatData.length > 1 ? emptydivHeight : 0 : this.parent.contentHeight;
4329
+ let contentElement = this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0];
4330
+ if (emptyHeight >= contentElement['offsetHeight']) {
4331
+ this.chartBodyContent.style.height = formatUnit(emptyHeight);
4332
+ }
4333
+ else {
4334
+ let scrollHeight = this.parent.element.getElementsByClassName('e-chart-rows-container')[0]['offsetHeight'];
4335
+ if (contentElement['offsetHeight'] >= scrollHeight) {
4336
+ this.chartBodyContent.style.height = contentElement['offsetHeight'] - 17 + 'px';
4337
+ }
4338
+ else {
4339
+ this.chartBodyContent.style.height = contentElement['offsetHeight'] + 'px';
4340
+ }
4341
+ }
4315
4342
  }
4316
4343
  }
4317
4344
  }
@@ -5355,7 +5382,7 @@ class Timeline {
5355
5382
  const currentZoomingLevel = this.checkCurrentZoomingLevel();
5356
5383
  this.isZoomIn = isZoomIn;
5357
5384
  this.isZooming = true;
5358
- const currentLevel = isZoomIn ? currentZoomingLevel + 1 : currentZoomingLevel - 1;
5385
+ let currentLevel = isZoomIn ? currentZoomingLevel + 1 : currentZoomingLevel - 1;
5359
5386
  if (this.parent.toolbarModule) {
5360
5387
  if (isZoomIn) {
5361
5388
  if (currentLevel === this.parent.zoomingLevels[this.parent.zoomingLevels.length - 1].level) {
@@ -5374,6 +5401,9 @@ class Timeline {
5374
5401
  }
5375
5402
  }
5376
5403
  }
5404
+ currentLevel = this.parent.zoomingLevels.findIndex((tempLevel) => {
5405
+ return tempLevel.level === currentLevel;
5406
+ });
5377
5407
  let newTimeline = this.parent.zoomingLevels[currentLevel];
5378
5408
  const args = {
5379
5409
  requestType: isZoomIn ? 'beforeZoomIn' : 'beforeZoomOut',
@@ -7945,7 +7975,7 @@ class ChartRows extends DateProcessor {
7945
7975
  let childTaskbarNode = null;
7946
7976
  const data = this.templateData;
7947
7977
  if (this.childTaskbarTemplateFunction) {
7948
- childTaskbarNode = this.childTaskbarTemplateFunction(extend({ index: i }, data), this.parent, 'TaskbarTemplate', this.getTemplateID('TaskbarTemplate'), false, undefined, rootElement[0]);
7978
+ childTaskbarNode = this.childTaskbarTemplateFunction(extend({ index: i }, data), this.parent, 'TaskbarTemplate', this.getTemplateID('TaskbarTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);
7949
7979
  }
7950
7980
  else {
7951
7981
  let labelString = '';
@@ -8384,7 +8414,7 @@ class ChartRows extends DateProcessor {
8384
8414
  let milestoneNode = null;
8385
8415
  const data = this.templateData;
8386
8416
  if (this.milestoneTemplateFunction) {
8387
- milestoneNode = this.milestoneTemplateFunction(extend({ index: i }, data), this.parent, 'MilestoneTemplate', this.getTemplateID('MilestoneTemplate'), false, undefined, rootElement[0]);
8417
+ milestoneNode = this.milestoneTemplateFunction(extend({ index: i }, data), this.parent, 'MilestoneTemplate', this.getTemplateID('MilestoneTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);
8388
8418
  }
8389
8419
  else {
8390
8420
  const template = '<div class="' + traceMilestone + '" style="position:absolute;">' +
@@ -8455,7 +8485,7 @@ class ChartRows extends DateProcessor {
8455
8485
  leftLabelNode[0].setAttribute('aria-label', this.generateTaskLabelAriaLabel('left'));
8456
8486
  let leftLabelTemplateNode = null;
8457
8487
  if (this.leftTaskLabelTemplateFunction) {
8458
- leftLabelTemplateNode = this.leftTaskLabelTemplateFunction(extend({ index: i }, this.templateData), this.parent, 'LeftLabelTemplate', this.getTemplateID('LeftLabelTemplate'), false, undefined, leftLabelNode[0]);
8488
+ leftLabelTemplateNode = this.leftTaskLabelTemplateFunction(extend({ index: i }, this.templateData), this.parent, 'LeftLabelTemplate', this.getTemplateID('LeftLabelTemplate'), false, undefined, leftLabelNode[0], this.parent.treeGrid['root']);
8459
8489
  }
8460
8490
  else {
8461
8491
  const field = this.parent.labelSettings.leftLabel;
@@ -8466,6 +8496,9 @@ class ChartRows extends DateProcessor {
8466
8496
  }
8467
8497
  }
8468
8498
  if (leftLabelTemplateNode && leftLabelTemplateNode.length > 0) {
8499
+ if (leftLabelTemplateNode[0]['data'] === 'null') {
8500
+ leftLabelTemplateNode[0]['data'] = '';
8501
+ }
8469
8502
  leftLabelNode[0].appendChild([].slice.call(leftLabelTemplateNode)[0]);
8470
8503
  }
8471
8504
  return leftLabelNode;
@@ -8495,7 +8528,7 @@ class ChartRows extends DateProcessor {
8495
8528
  rightLabelNode[0].setAttribute('aria-label', this.generateTaskLabelAriaLabel('right'));
8496
8529
  let rightLabelTemplateNode = null;
8497
8530
  if (this.rightTaskLabelTemplateFunction) {
8498
- rightLabelTemplateNode = this.rightTaskLabelTemplateFunction(extend({ index: i }, this.templateData), this.parent, 'RightLabelTemplate', this.getTemplateID('RightLabelTemplate'), false, undefined, rightLabelNode[0]);
8531
+ rightLabelTemplateNode = this.rightTaskLabelTemplateFunction(extend({ index: i }, this.templateData), this.parent, 'RightLabelTemplate', this.getTemplateID('RightLabelTemplate'), false, undefined, rightLabelNode[0], this.parent.treeGrid['root']);
8499
8532
  }
8500
8533
  else {
8501
8534
  const field = this.parent.labelSettings.rightLabel;
@@ -8506,6 +8539,9 @@ class ChartRows extends DateProcessor {
8506
8539
  }
8507
8540
  }
8508
8541
  if (rightLabelTemplateNode && rightLabelTemplateNode.length > 0) {
8542
+ if (rightLabelTemplateNode[0]['data'] === 'null') {
8543
+ rightLabelTemplateNode[0]['data'] = '';
8544
+ }
8509
8545
  rightLabelNode[0].appendChild([].slice.call(rightLabelTemplateNode)[0]);
8510
8546
  }
8511
8547
  return rightLabelNode;
@@ -8560,7 +8596,7 @@ class ChartRows extends DateProcessor {
8560
8596
  let parentTaskbarNode = null;
8561
8597
  const data = this.templateData;
8562
8598
  if (this.parentTaskbarTemplateFunction) {
8563
- parentTaskbarNode = this.parentTaskbarTemplateFunction(extend({ index: i }, data), this.parent, 'ParentTaskbarTemplate', this.getTemplateID('ParentTaskbarTemplate'), false, undefined, rootElement[0]);
8599
+ parentTaskbarNode = this.parentTaskbarTemplateFunction(extend({ index: i }, data), this.parent, 'ParentTaskbarTemplate', this.getTemplateID('ParentTaskbarTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);
8564
8600
  }
8565
8601
  else {
8566
8602
  let labelString = '';
@@ -8674,10 +8710,19 @@ class ChartRows extends DateProcessor {
8674
8710
  }
8675
8711
  isTemplate(template) {
8676
8712
  let result = false;
8713
+ for (let i = 0; i < this.parent.ganttColumns.length; i++) {
8714
+ if (template === this.parent.ganttColumns[i].field) {
8715
+ result = true;
8716
+ break;
8717
+ }
8718
+ }
8677
8719
  if (typeof template !== 'string' || template.indexOf('#') === 0 || template.indexOf('<') > -1
8678
- || template.indexOf('$') > -1) {
8720
+ || template.indexOf('$') > -1 || !result) {
8679
8721
  result = true;
8680
8722
  }
8723
+ else {
8724
+ result = false;
8725
+ }
8681
8726
  return result;
8682
8727
  }
8683
8728
  /**
@@ -8692,7 +8737,7 @@ class ChartRows extends DateProcessor {
8692
8737
  leftLabelContainer() {
8693
8738
  const template = '<div class="' + ((this.leftTaskLabelTemplateFunction) ? leftLabelTempContainer :
8694
8739
  leftLabelContainer) + ' ' + '" tabindex="-1" style="height:' +
8695
- (this.parent.rowHeight - 1) + 'px;width:' + this.taskNameWidth(this.templateData) + '"></div>';
8740
+ (this.parent.rowHeight - 2) + 'px;width:' + this.taskNameWidth(this.templateData) + '"></div>';
8696
8741
  return this.createDivElement(template);
8697
8742
  }
8698
8743
  taskbarContainer() {
@@ -8715,7 +8760,7 @@ class ChartRows extends DateProcessor {
8715
8760
  rightLabelContainer() {
8716
8761
  const template = '<div class="' + ((this.rightTaskLabelTemplateFunction) ? rightLabelTempContainer :
8717
8762
  rightLabelContainer) + '" ' + ' tabindex="-1" style="left:' + this.getRightLabelLeft(this.templateData) + 'px;height:'
8718
- + (this.parent.rowHeight - 1) + 'px;"></div>';
8763
+ + (this.parent.rowHeight - 2) + 'px;"></div>';
8719
8764
  return this.createDivElement(template);
8720
8765
  }
8721
8766
  childTaskbarLeftResizer() {
@@ -12312,25 +12357,7 @@ let Gantt = class Gantt extends Component {
12312
12357
  * @returns {void} .
12313
12358
  */
12314
12359
  calculateDimensions() {
12315
- let settingsHeight;
12316
- if (typeof (this.height) !== 'number' && this.height.indexOf('%') !== -1 && (this.element.parentElement &&
12317
- !this.element.parentElement.style.height || this.element.parentElement.style.height.indexOf('%') !== -1)) {
12318
- let ganttHeight;
12319
- if (this.element.parentElement.style.height.indexOf('%') == -1) {
12320
- ganttHeight = Number(this.height.split("%")[0]);
12321
- }
12322
- else {
12323
- ganttHeight = Number(this.element.parentElement.style.height.split("%")[0]);
12324
- }
12325
- ganttHeight = (ganttHeight * window.innerHeight) / 100;
12326
- if (this.height === '100%') {
12327
- ganttHeight = ganttHeight - 16;
12328
- }
12329
- settingsHeight = this.validateDimentionValue(ganttHeight);
12330
- }
12331
- else {
12332
- settingsHeight = this.validateDimentionValue(this.height);
12333
- }
12360
+ let settingsHeight = this.validateDimentionValue(this.height);
12334
12361
  let settingsWidth = this.validateDimentionValue(this.width);
12335
12362
  if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {
12336
12363
  settingsWidth = this.width;
@@ -12473,40 +12500,6 @@ let Gantt = class Gantt extends Component {
12473
12500
  */
12474
12501
  windowResize() {
12475
12502
  if (!isNullOrUndefined(this.element)) {
12476
- let settingsHeight;
12477
- if (this.height.indexOf('%') !== -1) {
12478
- let ganttHeight = Number(this.height.split("%")[0]);
12479
- if (this.element.parentElement && (this.element.parentElement.style.height)) {
12480
- let containerHeight;
12481
- if (this.element.parentElement.style.height.indexOf('%') == -1) {
12482
- containerHeight = Number(this.element.parentElement.style.height.split("px")[0]);
12483
- ganttHeight = (ganttHeight * containerHeight) / 100;
12484
- }
12485
- else {
12486
- containerHeight = Number(this.element.parentElement.style.height.split("%")[0]);
12487
- ganttHeight = (window.innerHeight * containerHeight) / 100;
12488
- }
12489
- }
12490
- else {
12491
- ganttHeight = Number(this.height.split("%")[0]);
12492
- ganttHeight = (ganttHeight * window.innerHeight) / 100;
12493
- }
12494
- if (this.height === '100%') {
12495
- ganttHeight = ganttHeight - 16;
12496
- }
12497
- let toolbarHeight = 0;
12498
- if (!isNullOrUndefined(this.toolbarModule) && !isNullOrUndefined(this.toolbarModule.element)) {
12499
- toolbarHeight = this.toolbarModule.element.offsetHeight;
12500
- }
12501
- let contentHeight = ganttHeight - this.ganttChartModule.chartTimelineContainer.offsetHeight - toolbarHeight;
12502
- settingsHeight = this.validateDimentionValue(ganttHeight);
12503
- this.element.style.height = settingsHeight;
12504
- this.element.querySelectorAll('.e-content')[0]['style'].height = contentHeight + 'px';
12505
- this.element.querySelectorAll('.e-content')[2]['style'].height = contentHeight + 'px';
12506
- }
12507
- else {
12508
- settingsHeight = this.validateDimentionValue(this.height);
12509
- }
12510
12503
  this.updateContentHeight();
12511
12504
  this.ganttChartModule.updateWidthAndHeight(); // Updating chart scroll conatiner height for row mismatch
12512
12505
  this.treeGridModule.ensureScrollBar();
@@ -12851,6 +12844,18 @@ let Gantt = class Gantt extends Component {
12851
12844
  * @private
12852
12845
  */
12853
12846
  treeDataBound(args) {
12847
+ this.element.getElementsByClassName('e-chart-root-container')[0]['style'].height = '100%';
12848
+ let gridHeight = this.element.getElementsByClassName('e-gridcontent')[0]['style'].height;
12849
+ let timelineContainer = this.element.getElementsByClassName('e-timeline-header-container')[0]['offsetHeight'];
12850
+ gridHeight = 'calc(100% - ' + timelineContainer + 'px)';
12851
+ // eslint-disable-next-line
12852
+ this.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';
12853
+ if (!isNullOrUndefined(this.toolbarModule)) {
12854
+ this.splitterElement.style.height = 'calc(100% - ' + this.toolbarModule.element.offsetHeight + 'px)';
12855
+ }
12856
+ else {
12857
+ this.splitterElement.style.height = '100%';
12858
+ }
12854
12859
  if (this.isLoad) {
12855
12860
  this.updateCurrentViewData();
12856
12861
  if (!this.enableVirtualization) {
@@ -12870,8 +12875,7 @@ let Gantt = class Gantt extends Component {
12870
12875
  removeClass(this.treeGrid.element.querySelectorAll('.e-headercell'), timelineSingleHeaderOuterDiv);
12871
12876
  removeClass(this.treeGrid.element.querySelectorAll('.e-columnheader'), timelineSingleHeaderOuterDiv);
12872
12877
  }
12873
- this.treeGrid.height = this.ganttHeight - toolbarHeight -
12874
- this.treeGrid.grid.getHeaderContent().offsetHeight;
12878
+ this.treeGrid.height = '100%';
12875
12879
  this.notify('tree-grid-created', {});
12876
12880
  this.createGanttPopUpElement();
12877
12881
  this.hideSpinner();
@@ -15638,7 +15642,8 @@ class CellEdit {
15638
15642
  if (!ganttRecord.ganttProperties.isAutoSchedule) {
15639
15643
  this.parent.setRecordValue('autoWidth', this.parent.dataOperation.calculateWidth(ganttRecord, false), ganttRecord.ganttProperties, true);
15640
15644
  }
15641
- if (!isNullOrUndefined(args.data.ganttProperties.segments) && args.data.ganttProperties.segments.length > 0) {
15645
+ if (!isNullOrUndefined(args.data.ganttProperties.segments) && args.data.ganttProperties.segments.length > 0 &&
15646
+ !isNullOrUndefined(this.parent.editModule.taskbarEditModule)) {
15642
15647
  this.parent.editModule.taskbarEditModule.updateSegmentProgress(args.data.ganttProperties);
15643
15648
  }
15644
15649
  if (!args.data.hasChildRecords) {
@@ -23178,23 +23183,22 @@ class Edit$2 {
23178
23183
  }
23179
23184
  /* data Source update */
23180
23185
  if (!isNullOrUndefined(parentItem)) {
23181
- childIndex = parentItem.childRecords.indexOf(this.addRowSelectedItem);
23182
- /*Child collection update*/
23186
+ if (rowPosition == 'Above') {
23187
+ childIndex = parentItem.childRecords.indexOf(this.addRowSelectedItem);
23188
+ }
23189
+ else if (rowPosition == 'Below') {
23190
+ childIndex = parentItem.childRecords.indexOf(this.addRowSelectedItem) + 1;
23191
+ }
23192
+ else {
23193
+ childIndex = parentItem.childRecords.length;
23194
+ } /*Child collection update*/
23183
23195
  parentItem.childRecords.splice(childIndex, 0, record);
23184
23196
  if ((this.parent.dataSource instanceof DataManager &&
23185
23197
  isNullOrUndefined(parentItem.taskData[this.parent.taskFields.parentID])) ||
23186
23198
  !isNullOrUndefined(this.parent.dataSource)) {
23187
23199
  const child = this.parent.taskFields.child;
23188
23200
  if (parentItem.taskData[child] && parentItem.taskData[child].length > 0) {
23189
- if (rowPosition === 'Above') {
23190
- parentItem.taskData[child].splice(childIndex, 0, record.taskData);
23191
- }
23192
- else if (rowPosition === 'Below') {
23193
- parentItem.taskData[child].splice(childIndex + 1, 0, record.taskData);
23194
- }
23195
- else {
23196
- parentItem.taskData[child].push(record.taskData);
23197
- }
23201
+ parentItem.taskData[child].splice(childIndex, 0, record.taskData);
23198
23202
  }
23199
23203
  else {
23200
23204
  parentItem.taskData[child] = [];
@@ -23259,9 +23263,21 @@ class Edit$2 {
23259
23263
  refreshRecordInImmutableMode() {
23260
23264
  for (let i = 0; i < this.parent.modifiedRecords.length; i++) {
23261
23265
  const originalData = this.parent.modifiedRecords[i];
23262
- const dataId = this.parent.viewType === 'ProjectView' ?
23263
- originalData.ganttProperties.taskId : originalData.ganttProperties.rowUniqueID;
23264
- this.parent.treeGrid.grid.setRowData(dataId, originalData);
23266
+ let treeIndex = this.parent.allowRowDragAndDrop ? 1 : 0;
23267
+ let uniqueTaskID = this.parent.taskFields.id;
23268
+ var originalIndex = this.parent.currentViewData.findIndex((data) => {
23269
+ return (data[uniqueTaskID] == originalData[uniqueTaskID]);
23270
+ });
23271
+ if (this.parent.treeGrid.getRows()[originalIndex]) {
23272
+ this.parent.treeGrid.renderModule.cellRender({
23273
+ data: originalData, cell: this.parent.treeGrid.getRows()[originalIndex].cells[this.parent.treeColumnIndex + treeIndex],
23274
+ column: this.parent.treeGrid.grid.getColumns()[this.parent.treeColumnIndex],
23275
+ requestType: 'rowDragAndDrop'
23276
+ });
23277
+ this.parent.treeGrid.renderModule.RowModifier({
23278
+ data: originalData, row: this.parent.treeGrid.getRows()[originalIndex], rowHeight: this.parent.rowHeight
23279
+ });
23280
+ }
23265
23281
  }
23266
23282
  }
23267
23283
  /**
@@ -24012,15 +24028,18 @@ class Edit$2 {
24012
24028
  if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {
24013
24029
  draggedRec[this.parent.taskFields.parentID] = droppedRec[this.parent.taskFields.parentID];
24014
24030
  draggedRec.taskData[this.parent.taskFields.parentID] = droppedRec[this.parent.taskFields.parentID];
24031
+ draggedRec.ganttProperties['parentId'] = droppedRec[this.parent.taskFields.parentID];
24015
24032
  }
24016
24033
  else {
24017
24034
  draggedRec[this.parent.taskFields.parentID] = droppedRec[this.parent.taskFields.id];
24018
24035
  draggedRec.taskData[this.parent.taskFields.parentID] = droppedRec[this.parent.taskFields.id];
24036
+ draggedRec.ganttProperties['parentId'] = droppedRec[this.parent.taskFields.id];
24019
24037
  }
24020
24038
  }
24021
24039
  else {
24022
24040
  draggedRec[this.parent.taskFields.parentID] = null;
24023
24041
  draggedRec.taskData[this.parent.taskFields.parentID] = null;
24042
+ draggedRec.ganttProperties['parentId'] = null;
24024
24043
  }
24025
24044
  }
24026
24045
  }
@@ -24873,6 +24892,9 @@ class Selection$1 {
24873
24892
  this.addRemoveClass(index);
24874
24893
  this.selectedRowIndexes = extend([], this.getSelectedRowIndexes(), [], true);
24875
24894
  this.parent.setProperties({ selectedRowIndex: -1 }, true);
24895
+ if (this.selectedRowIndexes.length === 1) {
24896
+ this.parent.setProperties({ selectedRowIndex: this.selectedRowIndexes[0] }, true);
24897
+ }
24876
24898
  if (!isNullOrUndefined(this.parent.toolbarModule)) {
24877
24899
  this.parent.toolbarModule.refreshToolbarItems();
24878
24900
  }
@@ -27106,7 +27128,13 @@ class RowDD$1 {
27106
27128
  }
27107
27129
  else {
27108
27130
  startIndex = droppedRecord.index;
27109
- endIndex = draggedRecord.index;
27131
+ let rootChildRecord = draggedRecord;
27132
+ if (rootChildRecord.childRecords.length > 0) {
27133
+ do {
27134
+ rootChildRecord = rootChildRecord.childRecords[rootChildRecord.childRecords.length - 1];
27135
+ } while (rootChildRecord.childRecords.length > 0);
27136
+ }
27137
+ endIndex = rootChildRecord.index;
27110
27138
  }
27111
27139
  for (let i = startIndex; i <= endIndex; i++) {
27112
27140
  if (!isNullOrUndefined(data[i])) {