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.
- package/es/gantt/src/gantt-header.js +5 -3
- package/es/gantt/src/gantt-view.js +281 -150
- package/es/gantt/src/gantt.js +9 -12
- package/es/gantt/style.css +5 -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 +5 -1
- package/es/vxe-gantt/style.min.css +1 -1
- package/lib/gantt/src/gantt-header.js +4 -3
- package/lib/gantt/src/gantt-header.min.js +1 -1
- package/lib/gantt/src/gantt-view.js +305 -154
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +8 -11
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/gantt/style/style.css +5 -1
- package/lib/gantt/style/style.min.css +1 -1
- package/lib/index.umd.js +322 -171
- 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 +5 -1
- package/lib/vxe-gantt/style/style.min.css +1 -1
- package/package.json +3 -3
- package/packages/gantt/src/gantt-header.ts +5 -3
- package/packages/gantt/src/gantt-view.ts +302 -163
- package/packages/gantt/src/gantt.ts +7 -10
- package/styles/components/gantt.scss +6 -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;
|
|
@@ -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
|
-
|
|
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
|
-
}
|
|
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 (
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
420
|
-
|
|
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
|
-
|
|
434
|
-
|
|
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
|
-
|
|
542
|
+
viewCellWidth = colInfoElem.clientWidth || 40;
|
|
518
543
|
}
|
|
519
|
-
var viewTableWidth =
|
|
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
|
-
|
|
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(
|
|
561
|
+
bodyTableElem.style.width = "".concat(vmTableWidth, "px");
|
|
535
562
|
}
|
|
536
563
|
reactData.scrollXWidth = viewTableWidth;
|
|
537
564
|
return updateChart($xeGanttView);
|
|
538
565
|
}
|
|
539
|
-
function
|
|
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
|
-
|
|
546
|
-
|
|
547
|
-
|
|
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
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
(0, _dom.
|
|
871
|
-
(
|
|
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
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
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
|
-
|
|
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;
|