vxe-gantt 3.0.5 → 3.0.7
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.
- package/es/gantt/src/gantt-chart.js +18 -4
- package/es/gantt/src/gantt-header.js +19 -10
- package/es/gantt/src/gantt-view.js +265 -154
- package/es/gantt/src/gantt.js +10 -10
- package/es/gantt/style.css +7 -1
- package/es/gantt/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-gantt/style.css +7 -1
- package/es/vxe-gantt/style.min.css +1 -1
- package/lib/gantt/src/gantt-chart.js +22 -5
- package/lib/gantt/src/gantt-chart.min.js +1 -1
- package/lib/gantt/src/gantt-header.js +24 -15
- package/lib/gantt/src/gantt-header.min.js +1 -1
- package/lib/gantt/src/gantt-view.js +285 -158
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +9 -9
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/gantt/style/style.css +7 -1
- package/lib/gantt/style/style.min.css +1 -1
- package/lib/index.umd.js +345 -190
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-gantt/style/style.css +7 -1
- package/lib/vxe-gantt/style/style.min.css +1 -1
- package/package.json +3 -3
- package/packages/gantt/src/gantt-chart.ts +20 -4
- package/packages/gantt/src/gantt-header.ts +20 -11
- package/packages/gantt/src/gantt-view.ts +289 -168
- package/packages/gantt/src/gantt.ts +8 -8
- package/styles/components/gantt-module/gantt-chart.scss +2 -0
- package/styles/components/gantt.scss +6 -1
- package/styles/theme/base.scss +1 -1
- package/styles/theme/dark.scss +1 -0
- package/styles/theme/light.scss +1 -0
|
@@ -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
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
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;
|
|
@@ -67,9 +61,12 @@ function handleParseColumn($xeGanttView) {
|
|
|
67
61
|
var taskScaleList = ganttReactData.taskScaleList;
|
|
68
62
|
var minViewDate = reactData.minViewDate,
|
|
69
63
|
maxViewDate = reactData.maxViewDate;
|
|
64
|
+
var scrollXStore = internalData.scrollXStore;
|
|
70
65
|
var minScale = _xeUtils.default.last(taskScaleList);
|
|
71
66
|
var fullCols = [];
|
|
72
67
|
var groupCols = [];
|
|
68
|
+
scrollXStore.startIndex = 0;
|
|
69
|
+
scrollXStore.endIndex = 1;
|
|
73
70
|
if (minScale && minViewDate && maxViewDate) {
|
|
74
71
|
var minSType = minScale.type;
|
|
75
72
|
var weekScale = taskScaleList.find(function (item) {
|
|
@@ -94,37 +91,37 @@ function handleParseColumn($xeGanttView) {
|
|
|
94
91
|
var currTime = minViewDate.getTime();
|
|
95
92
|
var diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
|
|
96
93
|
var countSize = Math.max(5, Math.floor(diffDayNum / gapTime) + 1);
|
|
97
|
-
switch (minScale.type) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
94
|
+
// switch (minScale.type) {
|
|
95
|
+
// case 'day':
|
|
96
|
+
// case 'date':
|
|
97
|
+
// if (diffDayNum > (1000 * 60 * 60 * 24 * 366 * 3)) {
|
|
98
|
+
// reactData.tableColumn = []
|
|
99
|
+
// reactData.headerGroups = []
|
|
100
|
+
// return
|
|
101
|
+
// }
|
|
102
|
+
// break
|
|
103
|
+
// case 'hour':
|
|
104
|
+
// if (diffDayNum > (1000 * 60 * 60 * 24 * 31 * 3)) {
|
|
105
|
+
// reactData.tableColumn = []
|
|
106
|
+
// reactData.headerGroups = []
|
|
107
|
+
// return
|
|
108
|
+
// }
|
|
109
|
+
// break
|
|
110
|
+
// case 'minute':
|
|
111
|
+
// if (diffDayNum > (1000 * 60 * 60 * 24 * 3)) {
|
|
112
|
+
// reactData.tableColumn = []
|
|
113
|
+
// reactData.headerGroups = []
|
|
114
|
+
// return
|
|
115
|
+
// }
|
|
116
|
+
// break
|
|
117
|
+
// case 'second':
|
|
118
|
+
// if (diffDayNum > (1000 * 60 * 60 * 3)) {
|
|
119
|
+
// reactData.tableColumn = []
|
|
120
|
+
// reactData.headerGroups = []
|
|
121
|
+
// return
|
|
122
|
+
// }
|
|
123
|
+
// break
|
|
124
|
+
// }
|
|
128
125
|
var renderListMaps = {
|
|
129
126
|
year: [],
|
|
130
127
|
quarter: [],
|
|
@@ -196,47 +193,47 @@ function handleParseColumn($xeGanttView) {
|
|
|
196
193
|
year: {
|
|
197
194
|
field: yyyy,
|
|
198
195
|
title: yyyy,
|
|
199
|
-
|
|
196
|
+
dateObj: dateObj
|
|
200
197
|
},
|
|
201
198
|
quarter: {
|
|
202
199
|
field: "".concat(yyyy, "_q").concat(q),
|
|
203
|
-
title: q,
|
|
204
|
-
|
|
200
|
+
title: "".concat(q),
|
|
201
|
+
dateObj: dateObj
|
|
205
202
|
},
|
|
206
203
|
month: {
|
|
207
204
|
field: "".concat(yyyy, "_").concat(MM),
|
|
208
205
|
title: MM,
|
|
209
|
-
|
|
206
|
+
dateObj: dateObj
|
|
210
207
|
},
|
|
211
208
|
week: {
|
|
212
209
|
field: "".concat(yyyy, "_W").concat(W),
|
|
213
|
-
title: W,
|
|
214
|
-
|
|
210
|
+
title: "".concat(W),
|
|
211
|
+
dateObj: dateObj
|
|
215
212
|
},
|
|
216
213
|
day: {
|
|
217
214
|
field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_E").concat(E),
|
|
218
|
-
title: E,
|
|
219
|
-
|
|
215
|
+
title: "".concat(E),
|
|
216
|
+
dateObj: dateObj
|
|
220
217
|
},
|
|
221
218
|
date: {
|
|
222
219
|
field: "".concat(yyyy, "_").concat(MM, "_").concat(dd),
|
|
223
220
|
title: dd,
|
|
224
|
-
|
|
221
|
+
dateObj: dateObj
|
|
225
222
|
},
|
|
226
223
|
hour: {
|
|
227
224
|
field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH),
|
|
228
225
|
title: HH,
|
|
229
|
-
|
|
226
|
+
dateObj: dateObj
|
|
230
227
|
},
|
|
231
228
|
minute: {
|
|
232
229
|
field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH, "_").concat(mm),
|
|
233
230
|
title: mm,
|
|
234
|
-
|
|
231
|
+
dateObj: dateObj
|
|
235
232
|
},
|
|
236
233
|
second: {
|
|
237
234
|
field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH, "_").concat(mm, "_").concat(ss),
|
|
238
235
|
title: ss,
|
|
239
|
-
|
|
236
|
+
dateObj: dateObj
|
|
240
237
|
}
|
|
241
238
|
};
|
|
242
239
|
var minCol = colMaps[minSType];
|
|
@@ -324,8 +321,10 @@ function handleParseColumn($xeGanttView) {
|
|
|
324
321
|
internalData.chartMaps = ctMaps;
|
|
325
322
|
}
|
|
326
323
|
}
|
|
327
|
-
|
|
324
|
+
internalData.visibleColumn = fullCols;
|
|
328
325
|
reactData.headerGroups = groupCols;
|
|
326
|
+
updateScrollXStatus($xeGanttView);
|
|
327
|
+
handleTableColumn($xeGanttView);
|
|
329
328
|
}
|
|
330
329
|
function handleUpdateData($xeGanttView) {
|
|
331
330
|
var $xeGantt = $xeGanttView.$xeGantt;
|
|
@@ -430,9 +429,10 @@ function updateStyle($xeGanttView) {
|
|
|
430
429
|
var internalData = $xeGanttView.internalData;
|
|
431
430
|
var scrollbarWidth = reactData.scrollbarWidth,
|
|
432
431
|
scrollbarHeight = reactData.scrollbarHeight,
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
var elemStore = internalData.elemStore
|
|
432
|
+
headerGroups = reactData.headerGroups,
|
|
433
|
+
tableColumn = reactData.tableColumn;
|
|
434
|
+
var elemStore = internalData.elemStore,
|
|
435
|
+
visibleColumn = internalData.visibleColumn;
|
|
436
436
|
var $xeTable = internalData.xeTable;
|
|
437
437
|
var el = $xeGanttView.$refs.refElem;
|
|
438
438
|
if (!el || !el.clientHeight) {
|
|
@@ -513,82 +513,210 @@ function updateStyle($xeGanttView) {
|
|
|
513
513
|
yBottomCornerEl.style.display = tFooterHeight ? 'block' : '';
|
|
514
514
|
}
|
|
515
515
|
var colInfoElem = $xeGanttView.$refs.refColInfoElem;
|
|
516
|
+
var viewCellWidth = 40;
|
|
516
517
|
if (colInfoElem) {
|
|
517
|
-
|
|
518
|
+
viewCellWidth = colInfoElem.clientWidth || 40;
|
|
518
519
|
}
|
|
519
|
-
var viewTableWidth =
|
|
520
|
+
var viewTableWidth = viewCellWidth * visibleColumn.length;
|
|
520
521
|
if (bodyScrollElem) {
|
|
521
522
|
var viewWidth = bodyScrollElem.clientWidth;
|
|
522
523
|
var remainWidth = viewWidth - viewTableWidth;
|
|
523
524
|
if (remainWidth > 0) {
|
|
524
|
-
|
|
525
|
+
viewCellWidth += Math.floor(remainWidth / visibleColumn.length);
|
|
525
526
|
viewTableWidth = viewWidth;
|
|
526
527
|
}
|
|
527
528
|
}
|
|
529
|
+
reactData.viewCellWidth = viewCellWidth;
|
|
528
530
|
var headerTableElem = (0, _util.getRefElem)(elemStore['main-header-table']);
|
|
529
531
|
var bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
|
|
532
|
+
var vmTableWidth = viewCellWidth * tableColumn.length;
|
|
530
533
|
if (headerTableElem) {
|
|
531
534
|
headerTableElem.style.width = "".concat(viewTableWidth, "px");
|
|
532
535
|
}
|
|
533
536
|
if (bodyTableElem) {
|
|
534
|
-
bodyTableElem.style.width = "".concat(
|
|
537
|
+
bodyTableElem.style.width = "".concat(vmTableWidth, "px");
|
|
535
538
|
}
|
|
536
539
|
reactData.scrollXWidth = viewTableWidth;
|
|
537
540
|
return updateChart($xeGanttView);
|
|
538
541
|
}
|
|
539
|
-
function
|
|
542
|
+
function handleRecalculateStyle($xeGanttView) {
|
|
543
|
+
var internalData = $xeGanttView.internalData;
|
|
544
|
+
var el = $xeGanttView.$refs.refElem;
|
|
545
|
+
internalData.rceRunTime = Date.now();
|
|
546
|
+
if (!el || !el.clientWidth) {
|
|
547
|
+
return $xeGanttView.$nextTick();
|
|
548
|
+
}
|
|
540
549
|
calcScrollbar($xeGanttView);
|
|
541
550
|
updateStyle($xeGanttView);
|
|
542
551
|
updateChart($xeGanttView);
|
|
552
|
+
return computeScrollLoad($xeGanttView);
|
|
553
|
+
}
|
|
554
|
+
function _handleLazyRecalculate($xeGanttView) {
|
|
555
|
+
var internalData = $xeGanttView.internalData;
|
|
556
|
+
return new Promise(function (resolve) {
|
|
557
|
+
var rceTimeout = internalData.rceTimeout,
|
|
558
|
+
rceRunTime = internalData.rceRunTime;
|
|
559
|
+
var $xeTable = internalData.xeTable;
|
|
560
|
+
var refreshDelay = 50;
|
|
561
|
+
if ($xeTable) {
|
|
562
|
+
var resizeOpts = $xeTable.computeResizeOpts;
|
|
563
|
+
refreshDelay = resizeOpts.refreshDelay || 50;
|
|
564
|
+
}
|
|
565
|
+
if (rceTimeout) {
|
|
566
|
+
clearTimeout(rceTimeout);
|
|
567
|
+
if (rceRunTime && rceRunTime + (refreshDelay - 5) < Date.now()) {
|
|
568
|
+
resolve(handleRecalculateStyle($xeGanttView));
|
|
569
|
+
} else {
|
|
570
|
+
$xeGanttView.$nextTick(function () {
|
|
571
|
+
resolve();
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
} else {
|
|
575
|
+
resolve(handleRecalculateStyle($xeGanttView));
|
|
576
|
+
}
|
|
577
|
+
internalData.rceTimeout = setTimeout(function () {
|
|
578
|
+
internalData.rceTimeout = undefined;
|
|
579
|
+
handleRecalculateStyle($xeGanttView);
|
|
580
|
+
}, refreshDelay);
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
function computeScrollLoad($xeGanttView) {
|
|
584
|
+
var reactData = $xeGanttView.reactData;
|
|
585
|
+
var internalData = $xeGanttView.internalData;
|
|
586
|
+
return $xeGanttView.$nextTick().then(function () {
|
|
587
|
+
var scrollXLoad = reactData.scrollXLoad;
|
|
588
|
+
var scrollXStore = internalData.scrollXStore;
|
|
589
|
+
// 计算 X 逻辑
|
|
590
|
+
if (scrollXLoad) {
|
|
591
|
+
var _handleVirtualXVisibl = handleVirtualXVisible($xeGanttView),
|
|
592
|
+
toXVisibleIndex = _handleVirtualXVisibl.toVisibleIndex,
|
|
593
|
+
visibleXSize = _handleVirtualXVisibl.visibleSize;
|
|
594
|
+
var offsetXSize = 2;
|
|
595
|
+
scrollXStore.preloadSize = 1;
|
|
596
|
+
scrollXStore.offsetSize = offsetXSize;
|
|
597
|
+
scrollXStore.visibleSize = visibleXSize;
|
|
598
|
+
scrollXStore.endIndex = Math.max(scrollXStore.startIndex + scrollXStore.visibleSize + offsetXSize, scrollXStore.endIndex);
|
|
599
|
+
scrollXStore.visibleStartIndex = Math.max(scrollXStore.startIndex, toXVisibleIndex);
|
|
600
|
+
scrollXStore.visibleEndIndex = Math.min(scrollXStore.endIndex, toXVisibleIndex + visibleXSize);
|
|
601
|
+
updateScrollXData($xeGanttView).then(function () {
|
|
602
|
+
loadScrollXData($xeGanttView);
|
|
603
|
+
});
|
|
604
|
+
} else {
|
|
605
|
+
updateScrollXSpace($xeGanttView);
|
|
606
|
+
}
|
|
607
|
+
});
|
|
608
|
+
}
|
|
609
|
+
function handleVirtualXVisible($xeGanttView) {
|
|
610
|
+
var reactData = $xeGanttView.reactData;
|
|
611
|
+
var internalData = $xeGanttView.internalData;
|
|
612
|
+
var viewCellWidth = reactData.viewCellWidth;
|
|
613
|
+
var elemStore = internalData.elemStore;
|
|
614
|
+
var bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
615
|
+
if (bodyScrollElem) {
|
|
616
|
+
var clientWidth = bodyScrollElem.clientWidth;
|
|
617
|
+
var scrollLeft = bodyScrollElem.scrollLeft;
|
|
618
|
+
var toVisibleIndex = Math.floor(scrollLeft / viewCellWidth) - 1;
|
|
619
|
+
var visibleSize = Math.ceil(clientWidth / viewCellWidth) + 1;
|
|
620
|
+
return {
|
|
621
|
+
toVisibleIndex: Math.max(0, toVisibleIndex),
|
|
622
|
+
visibleSize: Math.max(1, visibleSize)
|
|
623
|
+
};
|
|
624
|
+
}
|
|
625
|
+
return {
|
|
626
|
+
toVisibleIndex: 0,
|
|
627
|
+
visibleSize: 6
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
function loadScrollXData($xeGanttView) {
|
|
631
|
+
var reactData = $xeGanttView.reactData;
|
|
632
|
+
var internalData = $xeGanttView.internalData;
|
|
633
|
+
var isScrollXBig = reactData.isScrollXBig;
|
|
634
|
+
var scrollXStore = internalData.scrollXStore;
|
|
635
|
+
var preloadSize = scrollXStore.preloadSize,
|
|
636
|
+
startIndex = scrollXStore.startIndex,
|
|
637
|
+
endIndex = scrollXStore.endIndex,
|
|
638
|
+
offsetSize = scrollXStore.offsetSize;
|
|
639
|
+
var _handleVirtualXVisibl2 = handleVirtualXVisible($xeGanttView),
|
|
640
|
+
toVisibleIndex = _handleVirtualXVisibl2.toVisibleIndex,
|
|
641
|
+
visibleSize = _handleVirtualXVisibl2.visibleSize;
|
|
642
|
+
var offsetItem = {
|
|
643
|
+
startIndex: Math.max(0, isScrollXBig ? toVisibleIndex - 1 : toVisibleIndex - 1 - offsetSize - preloadSize),
|
|
644
|
+
endIndex: isScrollXBig ? toVisibleIndex + visibleSize : toVisibleIndex + visibleSize + offsetSize + preloadSize
|
|
645
|
+
};
|
|
646
|
+
scrollXStore.visibleStartIndex = toVisibleIndex - 1;
|
|
647
|
+
scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
|
|
648
|
+
var offsetStartIndex = offsetItem.startIndex,
|
|
649
|
+
offsetEndIndex = offsetItem.endIndex;
|
|
650
|
+
if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
|
|
651
|
+
if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
|
|
652
|
+
scrollXStore.startIndex = offsetStartIndex;
|
|
653
|
+
scrollXStore.endIndex = offsetEndIndex;
|
|
654
|
+
updateScrollXData($xeGanttView);
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
function updateScrollXData($xeGanttView) {
|
|
659
|
+
handleTableColumn($xeGanttView);
|
|
660
|
+
updateScrollXSpace($xeGanttView);
|
|
543
661
|
return $xeGanttView.$nextTick();
|
|
544
662
|
}
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
//
|
|
570
|
-
//
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
//
|
|
577
|
-
//
|
|
578
|
-
//
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
//
|
|
583
|
-
//
|
|
584
|
-
//
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
663
|
+
function updateScrollXStatus($xeGanttView) {
|
|
664
|
+
var reactData = $xeGanttView.reactData;
|
|
665
|
+
var scrollXLoad = true;
|
|
666
|
+
reactData.scrollXLoad = scrollXLoad;
|
|
667
|
+
return scrollXLoad;
|
|
668
|
+
}
|
|
669
|
+
function handleTableColumn($xeGanttView) {
|
|
670
|
+
var reactData = $xeGanttView.reactData;
|
|
671
|
+
var internalData = $xeGanttView.internalData;
|
|
672
|
+
var scrollXLoad = reactData.scrollXLoad;
|
|
673
|
+
var visibleColumn = internalData.visibleColumn,
|
|
674
|
+
scrollXStore = internalData.scrollXStore;
|
|
675
|
+
var tableColumn = scrollXLoad ? visibleColumn.slice(scrollXStore.startIndex, scrollXStore.endIndex) : visibleColumn.slice(0);
|
|
676
|
+
reactData.tableColumn = tableColumn;
|
|
677
|
+
}
|
|
678
|
+
function updateScrollXSpace($xeGanttView) {
|
|
679
|
+
var reactData = $xeGanttView.reactData;
|
|
680
|
+
var internalData = $xeGanttView.internalData;
|
|
681
|
+
var scrollXLoad = reactData.scrollXLoad,
|
|
682
|
+
scrollXWidth = reactData.scrollXWidth,
|
|
683
|
+
viewCellWidth = reactData.viewCellWidth;
|
|
684
|
+
var elemStore = internalData.elemStore,
|
|
685
|
+
scrollXStore = internalData.scrollXStore;
|
|
686
|
+
var bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
|
|
687
|
+
// const headerTableElem = getRefElem(elemStore['main-header-table'])
|
|
688
|
+
// const footerTableElem = getRefElem(elemStore['main-footer-table'])
|
|
689
|
+
var startIndex = scrollXStore.startIndex;
|
|
690
|
+
var xSpaceLeft = 0;
|
|
691
|
+
if (scrollXLoad) {
|
|
692
|
+
xSpaceLeft = Math.max(0, startIndex * viewCellWidth);
|
|
693
|
+
}
|
|
694
|
+
// if (headerTableElem) {
|
|
695
|
+
// headerTableElem.style.transform = `translate(${xSpaceLeft}px, 0px)`
|
|
696
|
+
// }
|
|
697
|
+
if (bodyTableElem) {
|
|
698
|
+
bodyTableElem.style.transform = "translate(".concat(xSpaceLeft, "px, ").concat(reactData.scrollYTop || 0, "px)");
|
|
699
|
+
}
|
|
700
|
+
// if (footerTableElem) {
|
|
701
|
+
// footerTableElem.style.transform = `translate(${xSpaceLeft}px, 0px)`
|
|
702
|
+
// }
|
|
703
|
+
var layoutList = ['header', 'body', 'footer'];
|
|
704
|
+
layoutList.forEach(function (layout) {
|
|
705
|
+
var xSpaceElem = (0, _util.getRefElem)(elemStore["main-".concat(layout, "-xSpace")]);
|
|
706
|
+
if (xSpaceElem) {
|
|
707
|
+
xSpaceElem.style.width = scrollXLoad ? "".concat(scrollXWidth, "px") : '';
|
|
708
|
+
}
|
|
709
|
+
});
|
|
710
|
+
var scrollXSpaceEl = $xeGanttView.$refs.refScrollXSpaceElem;
|
|
711
|
+
if (scrollXSpaceEl) {
|
|
712
|
+
scrollXSpaceEl.style.width = "".concat(scrollXWidth, "px");
|
|
713
|
+
}
|
|
714
|
+
calcScrollbar($xeGanttView);
|
|
715
|
+
return $xeGanttView.$nextTick();
|
|
716
|
+
}
|
|
717
|
+
function triggerScrollXEvent($xeGanttView) {
|
|
718
|
+
loadScrollXData($xeGanttView);
|
|
719
|
+
}
|
|
592
720
|
function updateScrollYSpace($xeGanttView) {
|
|
593
721
|
var reactData = $xeGanttView.reactData;
|
|
594
722
|
var internalData = $xeGanttView.internalData;
|
|
@@ -717,6 +845,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
717
845
|
scrollbarWidth: 0,
|
|
718
846
|
// 横向滚动条的高度
|
|
719
847
|
scrollbarHeight: 0,
|
|
848
|
+
// 最后滚动时间戳
|
|
849
|
+
lastScrollTime: 0,
|
|
720
850
|
lazScrollLoading: false,
|
|
721
851
|
scrollVMLoading: false,
|
|
722
852
|
scrollYHeight: 0,
|
|
@@ -845,11 +975,15 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
845
975
|
},
|
|
846
976
|
triggerBodyScrollEvent: function triggerBodyScrollEvent(evnt) {
|
|
847
977
|
var $xeGanttView = this;
|
|
978
|
+
var reactData = $xeGanttView.reactData;
|
|
848
979
|
var internalData = $xeGanttView.internalData;
|
|
980
|
+
var scrollXLoad = reactData.scrollXLoad;
|
|
849
981
|
var elemStore = internalData.elemStore,
|
|
850
982
|
inVirtualScroll = internalData.inVirtualScroll,
|
|
851
983
|
inHeaderScroll = internalData.inHeaderScroll,
|
|
852
|
-
inFooterScroll = internalData.inFooterScroll
|
|
984
|
+
inFooterScroll = internalData.inFooterScroll,
|
|
985
|
+
lastScrollLeft = internalData.lastScrollLeft,
|
|
986
|
+
lastScrollTop = internalData.lastScrollTop;
|
|
853
987
|
if (inVirtualScroll) {
|
|
854
988
|
return;
|
|
855
989
|
}
|
|
@@ -860,42 +994,49 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
860
994
|
var headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
|
|
861
995
|
var xHandleEl = $xeGanttView.$refs.refScrollXHandleElem;
|
|
862
996
|
var yHandleEl = $xeGanttView.$refs.refScrollYHandleElem;
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
(0, _dom.
|
|
871
|
-
(
|
|
872
|
-
syncTableScrollTop($xeGanttView, currTopNum);
|
|
873
|
-
handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
|
|
997
|
+
var scrollLeft = wrapperEl.scrollLeft;
|
|
998
|
+
var scrollTop = wrapperEl.scrollTop;
|
|
999
|
+
var isRollX = scrollLeft !== lastScrollLeft;
|
|
1000
|
+
var isRollY = scrollTop !== lastScrollTop;
|
|
1001
|
+
internalData.inBodyScroll = true;
|
|
1002
|
+
internalData.scrollRenderType = '';
|
|
1003
|
+
if (isRollY) {
|
|
1004
|
+
(0, _dom.setScrollTop)(yHandleEl, scrollTop);
|
|
1005
|
+
syncTableScrollTop($xeGanttView, scrollTop);
|
|
874
1006
|
}
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
if (inVirtualScroll) {
|
|
883
|
-
return;
|
|
884
|
-
}
|
|
885
|
-
if (inHeaderScroll || inBodyScroll) {
|
|
886
|
-
return;
|
|
887
|
-
}
|
|
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);
|
|
1007
|
+
if (isRollX) {
|
|
1008
|
+
internalData.inBodyScroll = true;
|
|
1009
|
+
(0, _dom.setScrollLeft)(xHandleEl, scrollLeft);
|
|
1010
|
+
(0, _dom.setScrollLeft)(headerScrollElem, scrollLeft);
|
|
1011
|
+
if (scrollXLoad) {
|
|
1012
|
+
triggerScrollXEvent($xeGanttView);
|
|
1013
|
+
}
|
|
894
1014
|
}
|
|
1015
|
+
handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, scrollLeft);
|
|
895
1016
|
},
|
|
1017
|
+
// triggerFooterScrollEvent (evnt: Event) {
|
|
1018
|
+
// const $xeGanttView = this
|
|
1019
|
+
// const internalData = $xeGanttView.internalData
|
|
1020
|
+
// const { inVirtualScroll, inHeaderScroll, inBodyScroll } = internalData
|
|
1021
|
+
// if (inVirtualScroll) {
|
|
1022
|
+
// return
|
|
1023
|
+
// }
|
|
1024
|
+
// if (inHeaderScroll || inBodyScroll) {
|
|
1025
|
+
// return
|
|
1026
|
+
// }
|
|
1027
|
+
// const wrapperEl = evnt.currentTarget as HTMLDivElement
|
|
1028
|
+
// if (wrapperEl) {
|
|
1029
|
+
// const isRollX = true
|
|
1030
|
+
// const isRollY = false
|
|
1031
|
+
// const currLeftNum = wrapperEl.scrollLeft
|
|
1032
|
+
// handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum)
|
|
1033
|
+
// }
|
|
1034
|
+
// },
|
|
896
1035
|
triggerVirtualScrollXEvent: function triggerVirtualScrollXEvent(evnt) {
|
|
897
1036
|
var $xeGanttView = this;
|
|
1037
|
+
var reactData = $xeGanttView.reactData;
|
|
898
1038
|
var internalData = $xeGanttView.internalData;
|
|
1039
|
+
var scrollXLoad = reactData.scrollXLoad;
|
|
899
1040
|
var elemStore = internalData.elemStore,
|
|
900
1041
|
inHeaderScroll = internalData.inHeaderScroll,
|
|
901
1042
|
inBodyScroll = internalData.inBodyScroll;
|
|
@@ -912,6 +1053,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
912
1053
|
internalData.inVirtualScroll = true;
|
|
913
1054
|
(0, _dom.setScrollLeft)(headerScrollElem, currLeftNum);
|
|
914
1055
|
(0, _dom.setScrollLeft)(bodyScrollElem, currLeftNum);
|
|
1056
|
+
if (scrollXLoad) {
|
|
1057
|
+
triggerScrollXEvent($xeGanttView);
|
|
1058
|
+
}
|
|
915
1059
|
handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
|
|
916
1060
|
}
|
|
917
1061
|
},
|
|
@@ -938,24 +1082,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
938
1082
|
},
|
|
939
1083
|
handleUpdateSXSpace: function handleUpdateSXSpace() {
|
|
940
1084
|
var $xeGanttView = this;
|
|
941
|
-
|
|
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();
|
|
1085
|
+
return updateScrollXSpace($xeGanttView);
|
|
959
1086
|
},
|
|
960
1087
|
handleUpdateSYSpace: function handleUpdateSYSpace() {
|
|
961
1088
|
var $xeGanttView = this;
|