vxe-gantt 3.0.6 → 3.0.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.
@@ -23,6 +23,7 @@ var globalEvents = _core.VxeUI.globalEvents;
23
23
  function createInternalData() {
24
24
  return {
25
25
  xeTable: null,
26
+ visibleColumn: [],
26
27
  startMaps: {},
27
28
  endMaps: {},
28
29
  chartMaps: {},
@@ -37,16 +38,9 @@ function createInternalData() {
37
38
  startIndex: 0,
38
39
  endIndex: 0
39
40
  },
40
- // 存放纵向 Y 虚拟滚动相关信息
41
- scrollYStore: {
42
- preloadSize: 0,
43
- offsetSize: 0,
44
- visibleSize: 0,
45
- visibleStartIndex: 0,
46
- visibleEndIndex: 0,
47
- startIndex: 0,
48
- endIndex: 0
49
- }
41
+ // 最后滚动位置
42
+ lastScrollTop: 0,
43
+ lastScrollLeft: 0
50
44
  };
51
45
  }
52
46
  var maxYHeight = 5e6;
@@ -94,37 +88,37 @@ function handleParseColumn($xeGanttView) {
94
88
  var currTime = minViewDate.getTime();
95
89
  var diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
96
90
  var countSize = Math.max(5, Math.floor(diffDayNum / gapTime) + 1);
97
- switch (minScale.type) {
98
- case 'day':
99
- case 'date':
100
- if (diffDayNum > 1000 * 60 * 60 * 24 * 366 * 3) {
101
- reactData.tableColumn = [];
102
- reactData.headerGroups = [];
103
- return;
104
- }
105
- break;
106
- case 'hour':
107
- if (diffDayNum > 1000 * 60 * 60 * 24 * 31 * 3) {
108
- reactData.tableColumn = [];
109
- reactData.headerGroups = [];
110
- return;
111
- }
112
- break;
113
- case 'minute':
114
- if (diffDayNum > 1000 * 60 * 60 * 24 * 3) {
115
- reactData.tableColumn = [];
116
- reactData.headerGroups = [];
117
- return;
118
- }
119
- break;
120
- case 'second':
121
- if (diffDayNum > 1000 * 60 * 60 * 3) {
122
- reactData.tableColumn = [];
123
- reactData.headerGroups = [];
124
- return;
125
- }
126
- break;
127
- }
91
+ // switch (minScale.type) {
92
+ // case 'day':
93
+ // case 'date':
94
+ // if (diffDayNum > (1000 * 60 * 60 * 24 * 366 * 3)) {
95
+ // reactData.tableColumn = []
96
+ // reactData.headerGroups = []
97
+ // return
98
+ // }
99
+ // break
100
+ // case 'hour':
101
+ // if (diffDayNum > (1000 * 60 * 60 * 24 * 31 * 3)) {
102
+ // reactData.tableColumn = []
103
+ // reactData.headerGroups = []
104
+ // return
105
+ // }
106
+ // break
107
+ // case 'minute':
108
+ // if (diffDayNum > (1000 * 60 * 60 * 24 * 3)) {
109
+ // reactData.tableColumn = []
110
+ // reactData.headerGroups = []
111
+ // return
112
+ // }
113
+ // break
114
+ // case 'second':
115
+ // if (diffDayNum > (1000 * 60 * 60 * 3)) {
116
+ // reactData.tableColumn = []
117
+ // reactData.headerGroups = []
118
+ // return
119
+ // }
120
+ // break
121
+ // }
128
122
  var renderListMaps = {
129
123
  year: [],
130
124
  quarter: [],
@@ -290,9 +284,13 @@ function handleParseColumn($xeGanttView) {
290
284
  if ($xeTable) {
291
285
  var startField = $xeGantt.computeStartField;
292
286
  var endField = $xeGantt.computeEndField;
287
+ var tableReactData = $xeTable;
288
+ var isRowGroupStatus = tableReactData.isRowGroupStatus;
293
289
  var tableInternalData = $xeTable;
294
290
  var afterFullData = tableInternalData.afterFullData,
295
- afterTreeFullData = tableInternalData.afterTreeFullData;
291
+ afterTreeFullData = tableInternalData.afterTreeFullData,
292
+ afterGroupFullData = tableInternalData.afterGroupFullData;
293
+ var aggregateOpts = $xeTable.computeAggregateOpts;
296
294
  var treeOpts = $xeTable.computeTreeOpts;
297
295
  var transform = treeOpts.transform;
298
296
  var childrenField = treeOpts.children || treeOpts.childrenField;
@@ -314,7 +312,16 @@ function handleParseColumn($xeGanttView) {
314
312
  };
315
313
  }
316
314
  };
317
- if (treeConfig) {
315
+ if (isRowGroupStatus) {
316
+ // 行分组
317
+ var mapChildrenField = aggregateOpts.mapChildrenField;
318
+ if (mapChildrenField) {
319
+ _xeUtils.default.eachTree(afterGroupFullData, handleParseRender, {
320
+ children: mapChildrenField
321
+ });
322
+ }
323
+ } else if (treeConfig) {
324
+ // 树结构
318
325
  _xeUtils.default.eachTree(afterTreeFullData, handleParseRender, {
319
326
  children: transform ? treeOpts.mapChildrenField : childrenField
320
327
  });
@@ -324,8 +331,10 @@ function handleParseColumn($xeGanttView) {
324
331
  internalData.chartMaps = ctMaps;
325
332
  }
326
333
  }
327
- reactData.tableColumn = fullCols;
334
+ internalData.visibleColumn = fullCols;
328
335
  reactData.headerGroups = groupCols;
336
+ updateScrollXStatus($xeGanttView);
337
+ handleTableColumn($xeGanttView);
329
338
  }
330
339
  function handleUpdateData($xeGanttView) {
331
340
  var $xeGantt = $xeGanttView.$xeGantt;
@@ -333,6 +342,7 @@ function handleUpdateData($xeGanttView) {
333
342
  var internalData = $xeGanttView.internalData;
334
343
  var ganttProps = $xeGantt;
335
344
  var treeConfig = ganttProps.treeConfig;
345
+ var scrollXStore = internalData.scrollXStore;
336
346
  var $xeTable = internalData.xeTable;
337
347
  var sdMaps = {};
338
348
  var edMaps = {};
@@ -341,9 +351,13 @@ function handleUpdateData($xeGanttView) {
341
351
  if ($xeTable) {
342
352
  var startField = $xeGantt.computeStartField;
343
353
  var endField = $xeGantt.computeEndField;
354
+ var tableReactData = $xeTable;
355
+ var isRowGroupStatus = tableReactData.isRowGroupStatus;
344
356
  var tableInternalData = $xeTable;
345
357
  var afterFullData = tableInternalData.afterFullData,
346
- afterTreeFullData = tableInternalData.afterTreeFullData;
358
+ afterTreeFullData = tableInternalData.afterTreeFullData,
359
+ afterGroupFullData = tableInternalData.afterGroupFullData;
360
+ var aggregateOpts = $xeTable.computeAggregateOpts;
347
361
  var treeOpts = $xeTable.computeTreeOpts;
348
362
  var transform = treeOpts.transform;
349
363
  var childrenField = treeOpts.children || treeOpts.childrenField;
@@ -361,7 +375,16 @@ function handleUpdateData($xeGanttView) {
361
375
  }
362
376
  }
363
377
  };
364
- if (treeConfig) {
378
+ if (isRowGroupStatus) {
379
+ // 行分组
380
+ var mapChildrenField = aggregateOpts.mapChildrenField;
381
+ if (mapChildrenField) {
382
+ _xeUtils.default.eachTree(afterGroupFullData, handleMinMaxData, {
383
+ children: mapChildrenField
384
+ });
385
+ }
386
+ } else if (treeConfig) {
387
+ // 树结构
365
388
  _xeUtils.default.eachTree(afterTreeFullData, handleMinMaxData, {
366
389
  children: transform ? treeOpts.mapChildrenField : childrenField
367
390
  });
@@ -369,6 +392,8 @@ function handleUpdateData($xeGanttView) {
369
392
  afterFullData.forEach(handleMinMaxData);
370
393
  }
371
394
  }
395
+ scrollXStore.startIndex = 0;
396
+ scrollXStore.endIndex = Math.max(1, scrollXStore.visibleSize);
372
397
  reactData.minViewDate = minDate;
373
398
  reactData.maxViewDate = maxDate;
374
399
  internalData.startMaps = sdMaps;
@@ -416,10 +441,8 @@ function updateChart($xeGanttView) {
416
441
  }
417
442
  var rowid = rowEl.getAttribute('rowid');
418
443
  var rowRest = rowid ? chartMaps[rowid] : null;
419
- if (rowRest) {
420
- barEl.style.left = "".concat(viewCellWidth * rowRest.oLeftSize, "px");
421
- barEl.style.width = "".concat(viewCellWidth * rowRest.oWidthSize, "px");
422
- }
444
+ barEl.style.left = "".concat(rowRest ? viewCellWidth * rowRest.oLeftSize : 0, "px");
445
+ barEl.style.width = "".concat(rowRest ? viewCellWidth * rowRest.oWidthSize : 0, "px");
423
446
  });
424
447
  }
425
448
  return $xeGanttView.$nextTick();
@@ -430,9 +453,10 @@ function updateStyle($xeGanttView) {
430
453
  var internalData = $xeGanttView.internalData;
431
454
  var scrollbarWidth = reactData.scrollbarWidth,
432
455
  scrollbarHeight = reactData.scrollbarHeight,
433
- tableColumn = reactData.tableColumn,
434
- headerGroups = reactData.headerGroups;
435
- var elemStore = internalData.elemStore;
456
+ headerGroups = reactData.headerGroups,
457
+ tableColumn = reactData.tableColumn;
458
+ var elemStore = internalData.elemStore,
459
+ visibleColumn = internalData.visibleColumn;
436
460
  var $xeTable = internalData.xeTable;
437
461
  var el = $xeGanttView.$refs.refElem;
438
462
  if (!el || !el.clientHeight) {
@@ -513,82 +537,210 @@ function updateStyle($xeGanttView) {
513
537
  yBottomCornerEl.style.display = tFooterHeight ? 'block' : '';
514
538
  }
515
539
  var colInfoElem = $xeGanttView.$refs.refColInfoElem;
540
+ var viewCellWidth = 40;
516
541
  if (colInfoElem) {
517
- reactData.viewCellWidth = colInfoElem.clientWidth || 40;
542
+ viewCellWidth = colInfoElem.clientWidth || 40;
518
543
  }
519
- var viewTableWidth = reactData.viewCellWidth * tableColumn.length;
544
+ var viewTableWidth = viewCellWidth * visibleColumn.length;
520
545
  if (bodyScrollElem) {
521
546
  var viewWidth = bodyScrollElem.clientWidth;
522
547
  var remainWidth = viewWidth - viewTableWidth;
523
548
  if (remainWidth > 0) {
524
- reactData.viewCellWidth += Math.floor(remainWidth / tableColumn.length);
549
+ viewCellWidth += Math.floor(remainWidth / visibleColumn.length);
525
550
  viewTableWidth = viewWidth;
526
551
  }
527
552
  }
553
+ reactData.viewCellWidth = viewCellWidth;
528
554
  var headerTableElem = (0, _util.getRefElem)(elemStore['main-header-table']);
529
555
  var bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
556
+ var vmTableWidth = viewCellWidth * tableColumn.length;
530
557
  if (headerTableElem) {
531
558
  headerTableElem.style.width = "".concat(viewTableWidth, "px");
532
559
  }
533
560
  if (bodyTableElem) {
534
- bodyTableElem.style.width = "".concat(viewTableWidth, "px");
561
+ bodyTableElem.style.width = "".concat(vmTableWidth, "px");
535
562
  }
536
563
  reactData.scrollXWidth = viewTableWidth;
537
564
  return updateChart($xeGanttView);
538
565
  }
539
- function _handleLazyRecalculate($xeGanttView) {
566
+ function handleRecalculateStyle($xeGanttView) {
567
+ var internalData = $xeGanttView.internalData;
568
+ var el = $xeGanttView.$refs.refElem;
569
+ internalData.rceRunTime = Date.now();
570
+ if (!el || !el.clientWidth) {
571
+ return $xeGanttView.$nextTick();
572
+ }
540
573
  calcScrollbar($xeGanttView);
541
574
  updateStyle($xeGanttView);
542
575
  updateChart($xeGanttView);
576
+ return computeScrollLoad($xeGanttView);
577
+ }
578
+ function _handleLazyRecalculate($xeGanttView) {
579
+ var internalData = $xeGanttView.internalData;
580
+ return new Promise(function (resolve) {
581
+ var rceTimeout = internalData.rceTimeout,
582
+ rceRunTime = internalData.rceRunTime;
583
+ var $xeTable = internalData.xeTable;
584
+ var refreshDelay = 50;
585
+ if ($xeTable) {
586
+ var resizeOpts = $xeTable.computeResizeOpts;
587
+ refreshDelay = resizeOpts.refreshDelay || 50;
588
+ }
589
+ if (rceTimeout) {
590
+ clearTimeout(rceTimeout);
591
+ if (rceRunTime && rceRunTime + (refreshDelay - 5) < Date.now()) {
592
+ resolve(handleRecalculateStyle($xeGanttView));
593
+ } else {
594
+ $xeGanttView.$nextTick(function () {
595
+ resolve();
596
+ });
597
+ }
598
+ } else {
599
+ resolve(handleRecalculateStyle($xeGanttView));
600
+ }
601
+ internalData.rceTimeout = setTimeout(function () {
602
+ internalData.rceTimeout = undefined;
603
+ handleRecalculateStyle($xeGanttView);
604
+ }, refreshDelay);
605
+ });
606
+ }
607
+ function computeScrollLoad($xeGanttView) {
608
+ var reactData = $xeGanttView.reactData;
609
+ var internalData = $xeGanttView.internalData;
610
+ return $xeGanttView.$nextTick().then(function () {
611
+ var scrollXLoad = reactData.scrollXLoad;
612
+ var scrollXStore = internalData.scrollXStore;
613
+ // 计算 X 逻辑
614
+ if (scrollXLoad) {
615
+ var _handleVirtualXVisibl = handleVirtualXVisible($xeGanttView),
616
+ toXVisibleIndex = _handleVirtualXVisibl.toVisibleIndex,
617
+ visibleXSize = _handleVirtualXVisibl.visibleSize;
618
+ var offsetXSize = 2;
619
+ scrollXStore.preloadSize = 1;
620
+ scrollXStore.offsetSize = offsetXSize;
621
+ scrollXStore.visibleSize = visibleXSize;
622
+ scrollXStore.endIndex = Math.max(scrollXStore.startIndex + scrollXStore.visibleSize + offsetXSize, scrollXStore.endIndex);
623
+ scrollXStore.visibleStartIndex = Math.max(scrollXStore.startIndex, toXVisibleIndex);
624
+ scrollXStore.visibleEndIndex = Math.min(scrollXStore.endIndex, toXVisibleIndex + visibleXSize);
625
+ updateScrollXData($xeGanttView).then(function () {
626
+ loadScrollXData($xeGanttView);
627
+ });
628
+ } else {
629
+ updateScrollXSpace($xeGanttView);
630
+ }
631
+ });
632
+ }
633
+ function handleVirtualXVisible($xeGanttView) {
634
+ var reactData = $xeGanttView.reactData;
635
+ var internalData = $xeGanttView.internalData;
636
+ var viewCellWidth = reactData.viewCellWidth;
637
+ var elemStore = internalData.elemStore;
638
+ var bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
639
+ if (bodyScrollElem) {
640
+ var clientWidth = bodyScrollElem.clientWidth;
641
+ var scrollLeft = bodyScrollElem.scrollLeft;
642
+ var toVisibleIndex = Math.floor(scrollLeft / viewCellWidth) - 1;
643
+ var visibleSize = Math.ceil(clientWidth / viewCellWidth) + 1;
644
+ return {
645
+ toVisibleIndex: Math.max(0, toVisibleIndex),
646
+ visibleSize: Math.max(1, visibleSize)
647
+ };
648
+ }
649
+ return {
650
+ toVisibleIndex: 0,
651
+ visibleSize: 6
652
+ };
653
+ }
654
+ function loadScrollXData($xeGanttView) {
655
+ var reactData = $xeGanttView.reactData;
656
+ var internalData = $xeGanttView.internalData;
657
+ var isScrollXBig = reactData.isScrollXBig;
658
+ var scrollXStore = internalData.scrollXStore;
659
+ var preloadSize = scrollXStore.preloadSize,
660
+ startIndex = scrollXStore.startIndex,
661
+ endIndex = scrollXStore.endIndex,
662
+ offsetSize = scrollXStore.offsetSize;
663
+ var _handleVirtualXVisibl2 = handleVirtualXVisible($xeGanttView),
664
+ toVisibleIndex = _handleVirtualXVisibl2.toVisibleIndex,
665
+ visibleSize = _handleVirtualXVisibl2.visibleSize;
666
+ var offsetItem = {
667
+ startIndex: Math.max(0, isScrollXBig ? toVisibleIndex - 1 : toVisibleIndex - 1 - offsetSize - preloadSize),
668
+ endIndex: isScrollXBig ? toVisibleIndex + visibleSize : toVisibleIndex + visibleSize + offsetSize + preloadSize
669
+ };
670
+ scrollXStore.visibleStartIndex = toVisibleIndex - 1;
671
+ scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
672
+ var offsetStartIndex = offsetItem.startIndex,
673
+ offsetEndIndex = offsetItem.endIndex;
674
+ if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
675
+ if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
676
+ scrollXStore.startIndex = offsetStartIndex;
677
+ scrollXStore.endIndex = offsetEndIndex;
678
+ updateScrollXData($xeGanttView);
679
+ }
680
+ }
681
+ }
682
+ function updateScrollXData($xeGanttView) {
683
+ handleTableColumn($xeGanttView);
684
+ updateScrollXSpace($xeGanttView);
685
+ return $xeGanttView.$nextTick();
686
+ }
687
+ function updateScrollXStatus($xeGanttView) {
688
+ var reactData = $xeGanttView.reactData;
689
+ var scrollXLoad = true;
690
+ reactData.scrollXLoad = scrollXLoad;
691
+ return scrollXLoad;
692
+ }
693
+ function handleTableColumn($xeGanttView) {
694
+ var reactData = $xeGanttView.reactData;
695
+ var internalData = $xeGanttView.internalData;
696
+ var scrollXLoad = reactData.scrollXLoad;
697
+ var visibleColumn = internalData.visibleColumn,
698
+ scrollXStore = internalData.scrollXStore;
699
+ var tableColumn = scrollXLoad ? visibleColumn.slice(scrollXStore.startIndex, scrollXStore.endIndex) : visibleColumn.slice(0);
700
+ reactData.tableColumn = tableColumn;
701
+ }
702
+ function updateScrollXSpace($xeGanttView) {
703
+ var reactData = $xeGanttView.reactData;
704
+ var internalData = $xeGanttView.internalData;
705
+ var scrollXLoad = reactData.scrollXLoad,
706
+ scrollXWidth = reactData.scrollXWidth,
707
+ viewCellWidth = reactData.viewCellWidth;
708
+ var elemStore = internalData.elemStore,
709
+ scrollXStore = internalData.scrollXStore;
710
+ var bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
711
+ // const headerTableElem = getRefElem(elemStore['main-header-table'])
712
+ // const footerTableElem = getRefElem(elemStore['main-footer-table'])
713
+ var startIndex = scrollXStore.startIndex;
714
+ var xSpaceLeft = 0;
715
+ if (scrollXLoad) {
716
+ xSpaceLeft = Math.max(0, startIndex * viewCellWidth);
717
+ }
718
+ // if (headerTableElem) {
719
+ // headerTableElem.style.transform = `translate(${xSpaceLeft}px, 0px)`
720
+ // }
721
+ if (bodyTableElem) {
722
+ bodyTableElem.style.transform = "translate(".concat(xSpaceLeft, "px, ").concat(reactData.scrollYTop || 0, "px)");
723
+ }
724
+ // if (footerTableElem) {
725
+ // footerTableElem.style.transform = `translate(${xSpaceLeft}px, 0px)`
726
+ // }
727
+ var layoutList = ['header', 'body', 'footer'];
728
+ layoutList.forEach(function (layout) {
729
+ var xSpaceElem = (0, _util.getRefElem)(elemStore["main-".concat(layout, "-xSpace")]);
730
+ if (xSpaceElem) {
731
+ xSpaceElem.style.width = scrollXLoad ? "".concat(scrollXWidth, "px") : '';
732
+ }
733
+ });
734
+ var scrollXSpaceEl = $xeGanttView.$refs.refScrollXSpaceElem;
735
+ if (scrollXSpaceEl) {
736
+ scrollXSpaceEl.style.width = "".concat(scrollXWidth, "px");
737
+ }
738
+ calcScrollbar($xeGanttView);
543
739
  return $xeGanttView.$nextTick();
544
740
  }
545
- // function updateScrollXSpace ($xeGanttView: VxeGanttViewConstructor & VxeGanttViewPrivateMethods) {
546
- // const reactData = $xeGanttView.reactData
547
- // const internalData = $xeGanttView.internalData
548
- // const { scrollXLoad, scrollXWidth } = reactData
549
- // const { elemStore } = internalData
550
- // const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
551
- // const bodyTableElem = getRefElem(elemStore['main-body-table'])
552
- // let xSpaceLeft = 0
553
- // let clientWidth = 0
554
- // if (bodyScrollElem) {
555
- // clientWidth = bodyScrollElem.clientWidth
556
- // }
557
- // // 虚拟渲染
558
- // let isScrollXBig = false
559
- // let ySpaceWidth = scrollXWidth
560
- // if (scrollXWidth > maxXWidth) {
561
- // // 触右
562
- // if (bodyScrollElem && bodyTableElem && bodyScrollElem.scrollLeft + clientWidth >= maxXWidth) {
563
- // xSpaceLeft = maxXWidth - bodyTableElem.clientWidth
564
- // } else {
565
- // xSpaceLeft = (maxXWidth - clientWidth) * (xSpaceLeft / (scrollXWidth - clientWidth))
566
- // }
567
- // ySpaceWidth = maxXWidth
568
- // isScrollXBig = true
569
- // }
570
- // if (bodyTableElem) {
571
- // bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`
572
- // }
573
- // const layoutList = ['header', 'body', 'footer']
574
- // layoutList.forEach(layout => {
575
- // const xSpaceElem = getRefElem(elemStore[`main-${layout}-xSpace`])
576
- // if (xSpaceElem) {
577
- // xSpaceElem.style.width = scrollXLoad ? `${ySpaceWidth}px` : ''
578
- // }
579
- // })
580
- // reactData.scrollXLeft = xSpaceLeft
581
- // reactData.scrollXWidth = ySpaceWidth
582
- // reactData.isScrollXBig = isScrollXBig
583
- // const scrollXSpaceEl = $xeGanttView.$refs.refScrollXSpaceElem as HTMLDivElement
584
- // if (scrollXSpaceEl) {
585
- // scrollXSpaceEl.style.width = `${ySpaceWidth}px`
586
- // }
587
- // calcScrollbar($xeGanttView)
588
- // return $xeGanttView.$nextTick().then(() => {
589
- // updateStyle($xeGanttView)
590
- // })
591
- // }
741
+ function triggerScrollXEvent($xeGanttView) {
742
+ loadScrollXData($xeGanttView);
743
+ }
592
744
  function updateScrollYSpace($xeGanttView) {
593
745
  var reactData = $xeGanttView.reactData;
594
746
  var internalData = $xeGanttView.internalData;
@@ -717,6 +869,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
717
869
  scrollbarWidth: 0,
718
870
  // 横向滚动条的高度
719
871
  scrollbarHeight: 0,
872
+ // 最后滚动时间戳
873
+ lastScrollTime: 0,
720
874
  lazScrollLoading: false,
721
875
  scrollVMLoading: false,
722
876
  scrollYHeight: 0,
@@ -845,11 +999,15 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
845
999
  },
846
1000
  triggerBodyScrollEvent: function triggerBodyScrollEvent(evnt) {
847
1001
  var $xeGanttView = this;
1002
+ var reactData = $xeGanttView.reactData;
848
1003
  var internalData = $xeGanttView.internalData;
1004
+ var scrollXLoad = reactData.scrollXLoad;
849
1005
  var elemStore = internalData.elemStore,
850
1006
  inVirtualScroll = internalData.inVirtualScroll,
851
1007
  inHeaderScroll = internalData.inHeaderScroll,
852
- inFooterScroll = internalData.inFooterScroll;
1008
+ inFooterScroll = internalData.inFooterScroll,
1009
+ lastScrollLeft = internalData.lastScrollLeft,
1010
+ lastScrollTop = internalData.lastScrollTop;
853
1011
  if (inVirtualScroll) {
854
1012
  return;
855
1013
  }
@@ -860,42 +1018,49 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
860
1018
  var headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
861
1019
  var xHandleEl = $xeGanttView.$refs.refScrollXHandleElem;
862
1020
  var yHandleEl = $xeGanttView.$refs.refScrollYHandleElem;
863
- if (headerScrollElem && wrapperEl) {
864
- var isRollX = true;
865
- var isRollY = true;
866
- var currLeftNum = wrapperEl.scrollLeft;
867
- var currTopNum = wrapperEl.scrollTop;
868
- internalData.inBodyScroll = true;
869
- (0, _dom.setScrollLeft)(xHandleEl, currLeftNum);
870
- (0, _dom.setScrollLeft)(headerScrollElem, currLeftNum);
871
- (0, _dom.setScrollTop)(yHandleEl, currTopNum);
872
- syncTableScrollTop($xeGanttView, currTopNum);
873
- handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
874
- }
875
- },
876
- triggerFooterScrollEvent: function triggerFooterScrollEvent(evnt) {
877
- var $xeGanttView = this;
878
- var internalData = $xeGanttView.internalData;
879
- var inVirtualScroll = internalData.inVirtualScroll,
880
- inHeaderScroll = internalData.inHeaderScroll,
881
- inBodyScroll = internalData.inBodyScroll;
882
- if (inVirtualScroll) {
883
- return;
884
- }
885
- if (inHeaderScroll || inBodyScroll) {
886
- return;
1021
+ var scrollLeft = wrapperEl.scrollLeft;
1022
+ var scrollTop = wrapperEl.scrollTop;
1023
+ var isRollX = scrollLeft !== lastScrollLeft;
1024
+ var isRollY = scrollTop !== lastScrollTop;
1025
+ internalData.inBodyScroll = true;
1026
+ internalData.scrollRenderType = '';
1027
+ if (isRollY) {
1028
+ (0, _dom.setScrollTop)(yHandleEl, scrollTop);
1029
+ syncTableScrollTop($xeGanttView, scrollTop);
887
1030
  }
888
- var wrapperEl = evnt.currentTarget;
889
- if (wrapperEl) {
890
- var isRollX = true;
891
- var isRollY = false;
892
- var currLeftNum = wrapperEl.scrollLeft;
893
- handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
1031
+ if (isRollX) {
1032
+ internalData.inBodyScroll = true;
1033
+ (0, _dom.setScrollLeft)(xHandleEl, scrollLeft);
1034
+ (0, _dom.setScrollLeft)(headerScrollElem, scrollLeft);
1035
+ if (scrollXLoad) {
1036
+ triggerScrollXEvent($xeGanttView);
1037
+ }
894
1038
  }
1039
+ handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, scrollLeft);
895
1040
  },
1041
+ // triggerFooterScrollEvent (evnt: Event) {
1042
+ // const $xeGanttView = this
1043
+ // const internalData = $xeGanttView.internalData
1044
+ // const { inVirtualScroll, inHeaderScroll, inBodyScroll } = internalData
1045
+ // if (inVirtualScroll) {
1046
+ // return
1047
+ // }
1048
+ // if (inHeaderScroll || inBodyScroll) {
1049
+ // return
1050
+ // }
1051
+ // const wrapperEl = evnt.currentTarget as HTMLDivElement
1052
+ // if (wrapperEl) {
1053
+ // const isRollX = true
1054
+ // const isRollY = false
1055
+ // const currLeftNum = wrapperEl.scrollLeft
1056
+ // handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum)
1057
+ // }
1058
+ // },
896
1059
  triggerVirtualScrollXEvent: function triggerVirtualScrollXEvent(evnt) {
897
1060
  var $xeGanttView = this;
1061
+ var reactData = $xeGanttView.reactData;
898
1062
  var internalData = $xeGanttView.internalData;
1063
+ var scrollXLoad = reactData.scrollXLoad;
899
1064
  var elemStore = internalData.elemStore,
900
1065
  inHeaderScroll = internalData.inHeaderScroll,
901
1066
  inBodyScroll = internalData.inBodyScroll;
@@ -912,6 +1077,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
912
1077
  internalData.inVirtualScroll = true;
913
1078
  (0, _dom.setScrollLeft)(headerScrollElem, currLeftNum);
914
1079
  (0, _dom.setScrollLeft)(bodyScrollElem, currLeftNum);
1080
+ if (scrollXLoad) {
1081
+ triggerScrollXEvent($xeGanttView);
1082
+ }
915
1083
  handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
916
1084
  }
917
1085
  },
@@ -938,24 +1106,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
938
1106
  },
939
1107
  handleUpdateSXSpace: function handleUpdateSXSpace() {
940
1108
  var $xeGanttView = this;
941
- var reactData = $xeGanttView.reactData;
942
- var internalData = $xeGanttView.internalData;
943
- var scrollXLoad = reactData.scrollXLoad,
944
- scrollXWidth = reactData.scrollXWidth;
945
- var elemStore = internalData.elemStore;
946
- var layoutList = ['header', 'body', 'footer'];
947
- layoutList.forEach(function (layout) {
948
- var xSpaceElem = (0, _util.getRefElem)(elemStore["main-".concat(layout, "-xSpace")]);
949
- if (xSpaceElem) {
950
- xSpaceElem.style.width = scrollXLoad ? "".concat(scrollXWidth, "px") : '';
951
- }
952
- });
953
- var scrollXSpaceEl = $xeGanttView.$refs.refScrollXSpaceElem;
954
- if (scrollXSpaceEl) {
955
- scrollXSpaceEl.style.width = "".concat(scrollXWidth, "px");
956
- }
957
- calcScrollbar($xeGanttView);
958
- return $xeGanttView.$nextTick();
1109
+ return updateScrollXSpace($xeGanttView);
959
1110
  },
960
1111
  handleUpdateSYSpace: function handleUpdateSYSpace() {
961
1112
  var $xeGanttView = this;