vxe-gantt 3.0.0-beta.2 → 3.0.0-beta.4
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-view.js +63 -62
- package/es/gantt/src/gantt.js +11 -4
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/ui/src/vn.js +10 -1
- package/lib/gantt/src/gantt-view.js +63 -62
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +12 -8
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/index.umd.js +87 -71
- package/lib/index.umd.min.js +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/ui/src/vn.js +17 -1
- package/lib/ui/src/vn.min.js +1 -0
- package/package.json +1 -1
- package/packages/gantt/src/gantt-view.ts +71 -69
- package/packages/gantt/src/gantt.ts +15 -6
- package/packages/ui/src/vn.ts +13 -0
|
@@ -36,7 +36,7 @@ function createInternalData() {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
const maxYHeight = 5e6;
|
|
39
|
-
const maxXWidth = 5e6
|
|
39
|
+
// const maxXWidth = 5e6
|
|
40
40
|
function handleParseColumn($xeGanttView) {
|
|
41
41
|
const $xeGantt = $xeGanttView.$xeGantt;
|
|
42
42
|
const reactData = $xeGanttView.reactData;
|
|
@@ -328,54 +328,53 @@ function handleLazyRecalculate($xeGanttView) {
|
|
|
328
328
|
updateChart($xeGanttView);
|
|
329
329
|
return $xeGanttView.$nextTick();
|
|
330
330
|
}
|
|
331
|
-
function updateScrollXSpace($xeGanttView) {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
}
|
|
331
|
+
// function updateScrollXSpace ($xeGanttView: VxeGanttViewConstructor & VxeGanttViewPrivateMethods) {
|
|
332
|
+
// const reactData = $xeGanttView.reactData
|
|
333
|
+
// const internalData = $xeGanttView.internalData
|
|
334
|
+
// const { scrollXLoad, scrollXWidth } = reactData
|
|
335
|
+
// const { elemStore } = internalData
|
|
336
|
+
// const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
|
|
337
|
+
// const bodyTableElem = getRefElem(elemStore['main-body-table'])
|
|
338
|
+
// let xSpaceLeft = 0
|
|
339
|
+
// let clientWidth = 0
|
|
340
|
+
// if (bodyScrollElem) {
|
|
341
|
+
// clientWidth = bodyScrollElem.clientWidth
|
|
342
|
+
// }
|
|
343
|
+
// // 虚拟渲染
|
|
344
|
+
// let isScrollXBig = false
|
|
345
|
+
// let ySpaceWidth = scrollXWidth
|
|
346
|
+
// if (scrollXWidth > maxXWidth) {
|
|
347
|
+
// // 触右
|
|
348
|
+
// if (bodyScrollElem && bodyTableElem && bodyScrollElem.scrollLeft + clientWidth >= maxXWidth) {
|
|
349
|
+
// xSpaceLeft = maxXWidth - bodyTableElem.clientWidth
|
|
350
|
+
// } else {
|
|
351
|
+
// xSpaceLeft = (maxXWidth - clientWidth) * (xSpaceLeft / (scrollXWidth - clientWidth))
|
|
352
|
+
// }
|
|
353
|
+
// ySpaceWidth = maxXWidth
|
|
354
|
+
// isScrollXBig = true
|
|
355
|
+
// }
|
|
356
|
+
// if (bodyTableElem) {
|
|
357
|
+
// bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`
|
|
358
|
+
// }
|
|
359
|
+
// const layoutList = ['header', 'body', 'footer']
|
|
360
|
+
// layoutList.forEach(layout => {
|
|
361
|
+
// const xSpaceElem = getRefElem(elemStore[`main-${layout}-xSpace`])
|
|
362
|
+
// if (xSpaceElem) {
|
|
363
|
+
// xSpaceElem.style.width = scrollXLoad ? `${ySpaceWidth}px` : ''
|
|
364
|
+
// }
|
|
365
|
+
// })
|
|
366
|
+
// reactData.scrollXLeft = xSpaceLeft
|
|
367
|
+
// reactData.scrollXWidth = ySpaceWidth
|
|
368
|
+
// reactData.isScrollXBig = isScrollXBig
|
|
369
|
+
// const scrollXSpaceEl = $xeGanttView.$refs.refScrollXSpaceElem as HTMLDivElement
|
|
370
|
+
// if (scrollXSpaceEl) {
|
|
371
|
+
// scrollXSpaceEl.style.width = `${ySpaceWidth}px`
|
|
372
|
+
// }
|
|
373
|
+
// calcScrollbar($xeGanttView)
|
|
374
|
+
// return $xeGanttView.$nextTick().then(() => {
|
|
375
|
+
// updateStyle($xeGanttView)
|
|
376
|
+
// })
|
|
377
|
+
// }
|
|
379
378
|
function updateScrollYSpace($xeGanttView) {
|
|
380
379
|
const reactData = $xeGanttView.reactData;
|
|
381
380
|
const internalData = $xeGanttView.internalData;
|
|
@@ -412,16 +411,17 @@ function updateScrollYSpace($xeGanttView) {
|
|
|
412
411
|
if (!(scrollYLoad && overflowY)) {
|
|
413
412
|
scrollYTop = 0;
|
|
414
413
|
}
|
|
414
|
+
const bodyChartWrapperElem = getRefElem(elemStore['main-chart-wrapper']);
|
|
415
415
|
if (bodyTableElem) {
|
|
416
416
|
bodyTableElem.style.transform = `translate(${reactData.scrollXLeft || 0}px, ${scrollYTop}px)`;
|
|
417
417
|
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
}
|
|
424
|
-
}
|
|
418
|
+
if (bodyChartWrapperElem) {
|
|
419
|
+
bodyChartWrapperElem.style.transform = `translate(${reactData.scrollXLeft || 0}px, ${scrollYTop}px)`;
|
|
420
|
+
}
|
|
421
|
+
const bodyYSpaceElem = getRefElem(elemStore['main-body-ySpace']);
|
|
422
|
+
if (bodyYSpaceElem) {
|
|
423
|
+
bodyYSpaceElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
|
|
424
|
+
}
|
|
425
425
|
const scrollYSpaceEl = $xeGanttView.$refs.refScrollYSpaceElem;
|
|
426
426
|
if (scrollYSpaceEl) {
|
|
427
427
|
scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
|
|
@@ -496,9 +496,9 @@ export default defineVxeComponent({
|
|
|
496
496
|
// 是否启用了纵向 Y 可视渲染方式加载
|
|
497
497
|
scrollYLoad: false,
|
|
498
498
|
// 是否存在纵向滚动条
|
|
499
|
-
overflowY:
|
|
499
|
+
overflowY: true,
|
|
500
500
|
// 是否存在横向滚动条
|
|
501
|
-
overflowX:
|
|
501
|
+
overflowX: true,
|
|
502
502
|
// 纵向滚动条的宽度
|
|
503
503
|
scrollbarWidth: 0,
|
|
504
504
|
// 横向滚动条的高度
|
|
@@ -710,14 +710,15 @@ export default defineVxeComponent({
|
|
|
710
710
|
handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, currTopNum, wrapperEl.scrollLeft);
|
|
711
711
|
}
|
|
712
712
|
},
|
|
713
|
-
updateScrollXSpace() {
|
|
714
|
-
const $xeGanttView = this;
|
|
715
|
-
return updateScrollXSpace($xeGanttView);
|
|
716
|
-
},
|
|
717
713
|
updateScrollYSpace() {
|
|
718
714
|
const $xeGanttView = this;
|
|
719
715
|
return updateScrollYSpace($xeGanttView);
|
|
720
716
|
},
|
|
717
|
+
updateScrollYStatus(sYLoad) {
|
|
718
|
+
const $xeGanttView = this;
|
|
719
|
+
const reactData = $xeGanttView.reactData;
|
|
720
|
+
reactData.scrollYLoad = sYLoad;
|
|
721
|
+
},
|
|
721
722
|
handleGlobalResizeEvent() {
|
|
722
723
|
const $xeGanttView = this;
|
|
723
724
|
handleLazyRecalculate($xeGanttView);
|
package/es/gantt/src/gantt.js
CHANGED
|
@@ -3,20 +3,25 @@ import { VxeUI } from '@vxe-ui/core';
|
|
|
3
3
|
import XEUtils from 'xe-utils';
|
|
4
4
|
import { getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils';
|
|
5
5
|
import { getOffsetHeight, getPaddingTopBottomSize, getDomNode, toCssUnit, addClass, removeClass } from '../../ui/src/dom';
|
|
6
|
+
import { getSlotVNs } from '../../ui/src/vn';
|
|
6
7
|
import { warnLog, errLog } from '../../ui/src/log';
|
|
7
8
|
import GanttViewComponent from './gantt-view';
|
|
8
9
|
import { VxeTable as VxeTableComponent } from 'vxe-table';
|
|
9
|
-
const { getConfig, getIcon, getI18n, commands, globalMixins, createEvent, globalEvents, GLOBAL_EVENT_KEYS, renderEmptyElement
|
|
10
|
+
const { getConfig, getIcon, getI18n, commands, globalMixins, createEvent, globalEvents, GLOBAL_EVENT_KEYS, renderEmptyElement } = VxeUI;
|
|
10
11
|
const tableProps = VxeTableComponent.props;
|
|
11
12
|
const tableMethods = {};
|
|
12
13
|
const propKeys = Object.keys(tableProps);
|
|
13
14
|
const defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Gantt', 'Bottom', 'Pager']];
|
|
14
|
-
function getTableOns(
|
|
15
|
-
const
|
|
15
|
+
function getTableOns($xeGantt) {
|
|
16
|
+
const _vm = $xeGantt;
|
|
17
|
+
const $listeners = _vm.$listeners;
|
|
18
|
+
const props = $xeGantt;
|
|
19
|
+
const { proxyConfig } = props;
|
|
20
|
+
const proxyOpts = $xeGantt.computeProxyOpts;
|
|
16
21
|
const ons = {};
|
|
17
22
|
XEUtils.each($listeners, (cb, type) => {
|
|
18
23
|
ons[type] = (...args) => {
|
|
19
|
-
|
|
24
|
+
$xeGantt.$emit(type, ...args);
|
|
20
25
|
};
|
|
21
26
|
});
|
|
22
27
|
if (proxyConfig) {
|
|
@@ -54,7 +59,9 @@ export default {
|
|
|
54
59
|
} }),
|
|
55
60
|
provide() {
|
|
56
61
|
const $xeGantt = this;
|
|
62
|
+
const $xeGrid = null;
|
|
57
63
|
return {
|
|
64
|
+
$xeGrid,
|
|
58
65
|
$xeGantt
|
|
59
66
|
};
|
|
60
67
|
},
|
package/es/ui/index.js
CHANGED
package/es/ui/src/log.js
CHANGED
package/es/ui/src/vn.js
CHANGED
|
@@ -43,7 +43,7 @@ function createInternalData() {
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
var maxYHeight = 5e6;
|
|
46
|
-
|
|
46
|
+
// const maxXWidth = 5e6
|
|
47
47
|
function handleParseColumn($xeGanttView) {
|
|
48
48
|
var $xeGantt = $xeGanttView.$xeGantt;
|
|
49
49
|
var reactData = $xeGanttView.reactData;
|
|
@@ -344,54 +344,53 @@ function _handleLazyRecalculate($xeGanttView) {
|
|
|
344
344
|
updateChart($xeGanttView);
|
|
345
345
|
return $xeGanttView.$nextTick();
|
|
346
346
|
}
|
|
347
|
-
function
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
}
|
|
347
|
+
// function updateScrollXSpace ($xeGanttView: VxeGanttViewConstructor & VxeGanttViewPrivateMethods) {
|
|
348
|
+
// const reactData = $xeGanttView.reactData
|
|
349
|
+
// const internalData = $xeGanttView.internalData
|
|
350
|
+
// const { scrollXLoad, scrollXWidth } = reactData
|
|
351
|
+
// const { elemStore } = internalData
|
|
352
|
+
// const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
|
|
353
|
+
// const bodyTableElem = getRefElem(elemStore['main-body-table'])
|
|
354
|
+
// let xSpaceLeft = 0
|
|
355
|
+
// let clientWidth = 0
|
|
356
|
+
// if (bodyScrollElem) {
|
|
357
|
+
// clientWidth = bodyScrollElem.clientWidth
|
|
358
|
+
// }
|
|
359
|
+
// // 虚拟渲染
|
|
360
|
+
// let isScrollXBig = false
|
|
361
|
+
// let ySpaceWidth = scrollXWidth
|
|
362
|
+
// if (scrollXWidth > maxXWidth) {
|
|
363
|
+
// // 触右
|
|
364
|
+
// if (bodyScrollElem && bodyTableElem && bodyScrollElem.scrollLeft + clientWidth >= maxXWidth) {
|
|
365
|
+
// xSpaceLeft = maxXWidth - bodyTableElem.clientWidth
|
|
366
|
+
// } else {
|
|
367
|
+
// xSpaceLeft = (maxXWidth - clientWidth) * (xSpaceLeft / (scrollXWidth - clientWidth))
|
|
368
|
+
// }
|
|
369
|
+
// ySpaceWidth = maxXWidth
|
|
370
|
+
// isScrollXBig = true
|
|
371
|
+
// }
|
|
372
|
+
// if (bodyTableElem) {
|
|
373
|
+
// bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`
|
|
374
|
+
// }
|
|
375
|
+
// const layoutList = ['header', 'body', 'footer']
|
|
376
|
+
// layoutList.forEach(layout => {
|
|
377
|
+
// const xSpaceElem = getRefElem(elemStore[`main-${layout}-xSpace`])
|
|
378
|
+
// if (xSpaceElem) {
|
|
379
|
+
// xSpaceElem.style.width = scrollXLoad ? `${ySpaceWidth}px` : ''
|
|
380
|
+
// }
|
|
381
|
+
// })
|
|
382
|
+
// reactData.scrollXLeft = xSpaceLeft
|
|
383
|
+
// reactData.scrollXWidth = ySpaceWidth
|
|
384
|
+
// reactData.isScrollXBig = isScrollXBig
|
|
385
|
+
// const scrollXSpaceEl = $xeGanttView.$refs.refScrollXSpaceElem as HTMLDivElement
|
|
386
|
+
// if (scrollXSpaceEl) {
|
|
387
|
+
// scrollXSpaceEl.style.width = `${ySpaceWidth}px`
|
|
388
|
+
// }
|
|
389
|
+
// calcScrollbar($xeGanttView)
|
|
390
|
+
// return $xeGanttView.$nextTick().then(() => {
|
|
391
|
+
// updateStyle($xeGanttView)
|
|
392
|
+
// })
|
|
393
|
+
// }
|
|
395
394
|
function _updateScrollYSpace($xeGanttView) {
|
|
396
395
|
var reactData = $xeGanttView.reactData;
|
|
397
396
|
var internalData = $xeGanttView.internalData;
|
|
@@ -428,16 +427,17 @@ function _updateScrollYSpace($xeGanttView) {
|
|
|
428
427
|
if (!(scrollYLoad && overflowY)) {
|
|
429
428
|
scrollYTop = 0;
|
|
430
429
|
}
|
|
430
|
+
var bodyChartWrapperElem = (0, _util.getRefElem)(elemStore['main-chart-wrapper']);
|
|
431
431
|
if (bodyTableElem) {
|
|
432
432
|
bodyTableElem.style.transform = "translate(".concat(reactData.scrollXLeft || 0, "px, ").concat(scrollYTop, "px)");
|
|
433
433
|
}
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
}
|
|
434
|
+
if (bodyChartWrapperElem) {
|
|
435
|
+
bodyChartWrapperElem.style.transform = "translate(".concat(reactData.scrollXLeft || 0, "px, ").concat(scrollYTop, "px)");
|
|
436
|
+
}
|
|
437
|
+
var bodyYSpaceElem = (0, _util.getRefElem)(elemStore['main-body-ySpace']);
|
|
438
|
+
if (bodyYSpaceElem) {
|
|
439
|
+
bodyYSpaceElem.style.height = ySpaceHeight ? "".concat(ySpaceHeight, "px") : '';
|
|
440
|
+
}
|
|
441
441
|
var scrollYSpaceEl = $xeGanttView.$refs.refScrollYSpaceElem;
|
|
442
442
|
if (scrollYSpaceEl) {
|
|
443
443
|
scrollYSpaceEl.style.height = ySpaceHeight ? "".concat(ySpaceHeight, "px") : '';
|
|
@@ -512,9 +512,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
512
512
|
// 是否启用了纵向 Y 可视渲染方式加载
|
|
513
513
|
scrollYLoad: false,
|
|
514
514
|
// 是否存在纵向滚动条
|
|
515
|
-
overflowY:
|
|
515
|
+
overflowY: true,
|
|
516
516
|
// 是否存在横向滚动条
|
|
517
|
-
overflowX:
|
|
517
|
+
overflowX: true,
|
|
518
518
|
// 纵向滚动条的宽度
|
|
519
519
|
scrollbarWidth: 0,
|
|
520
520
|
// 横向滚动条的高度
|
|
@@ -745,14 +745,15 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
745
745
|
handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, currTopNum, wrapperEl.scrollLeft);
|
|
746
746
|
}
|
|
747
747
|
},
|
|
748
|
-
updateScrollXSpace: function updateScrollXSpace() {
|
|
749
|
-
var $xeGanttView = this;
|
|
750
|
-
return _updateScrollXSpace($xeGanttView);
|
|
751
|
-
},
|
|
752
748
|
updateScrollYSpace: function updateScrollYSpace() {
|
|
753
749
|
var $xeGanttView = this;
|
|
754
750
|
return _updateScrollYSpace($xeGanttView);
|
|
755
751
|
},
|
|
752
|
+
updateScrollYStatus: function updateScrollYStatus(sYLoad) {
|
|
753
|
+
var $xeGanttView = this;
|
|
754
|
+
var reactData = $xeGanttView.reactData;
|
|
755
|
+
reactData.scrollYLoad = sYLoad;
|
|
756
|
+
},
|
|
756
757
|
handleGlobalResizeEvent: function handleGlobalResizeEvent() {
|
|
757
758
|
var $xeGanttView = this;
|
|
758
759
|
_handleLazyRecalculate($xeGanttView);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _comp=require("../../ui/src/comp"),_core=require("@vxe-ui/core"),_dom=require("../../ui/src/dom"),_util=require("./util"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ganttHeader=_interopRequireDefault(require("./gantt-header")),_ganttBody=_interopRequireDefault(require("./gantt-body"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var globalEvents=_core.VxeUI.globalEvents;function createInternalData(){return{xeTable:null,startMaps:{},endMaps:{},chartMaps:{},elemStore:{},scrollXStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0},scrollYStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0}}}var maxYHeight=5e6,maxXWidth=5e6;function handleParseColumn(e){var t=e.$xeGantt,l=e.reactData,r=e.internalData,a=t.treeConfig,o=l.minViewDate,i=l.maxViewDate,n=[],c=[];switch(t.computeTaskViewOpts.mode){case"year":case"quarter":case"month":case"week":break;default:if(o&&i){for(var s=o.getTime(),d=i.getTime()-o.getTime(),u=Math.max(6,Math.floor(d/864e5)+1),f=[],h=[],m={},p=0;p<u;p++){var S=new Date(s+864e5*p),v="".concat(S.getFullYear(),"-").concat(S.getMonth()+1),S="".concat(S.getDate()),g=m[v],S={field:"".concat(v,"-").concat(S),title:S};g?(g.children.push(S),n.push(g)):(f.push(g={field:v,title:v,children:[S]}),n.push(g),m[v]=g),h.push(S)}c.push(f,h);var x,y,w,E,b,_,T,D=r.xeTable;D&&(x=t.computeStartField,y=t.computeEndField,d=D.afterFullData,E=(w=D.computeTreeOpts).transform,b=w.children||w.childrenField,_={},T=function(e){var t,l=D.getRowid(e),r=_xeUtils.default.get(e,x),a=_xeUtils.default.get(e,y);r&&a&&(r=_xeUtils.default.toStringDate(r),a=_xeUtils.default.toStringDate(a),t=Math.floor((r.getTime()-o.getTime())/864e5),a=Math.floor((a.getTime()-r.getTime())/864e5)+1,_[l]={row:e,rowid:l,oLeftSize:t,oWidthSize:a})},a?_xeUtils.default.eachTree(D.afterTreeFullData,T,{children:E?w.mapChildrenField:b}):d.forEach(T),r.chartMaps=_)}}l.tableColumn=n,l.headerGroups=c}function handleUpdateData(e){var l,r,t,a,o,i,n=e.$xeGantt,c=e.reactData,s=e.internalData,d=n.treeConfig,u=s.xeTable,f=null,h=null;u&&(l=n.computeStartField,r=n.computeEndField,n=u.afterFullData,a=(t=u.computeTreeOpts).transform,o=t.children||t.childrenField,i=function(e){var t=_xeUtils.default.get(e,l),e=_xeUtils.default.get(e,r);t&&e&&(t=_xeUtils.default.toStringDate(t),(!f||f.getTime()>t.getTime())&&(f=t),t=_xeUtils.default.toStringDate(e),!h||h.getTime()<t.getTime())&&(h=t)},d?_xeUtils.default.eachTree(u.afterTreeFullData,i,{children:a?t.mapChildrenField:o}):n.forEach(i)),c.minViewDate=f,c.maxViewDate=h,s.startMaps={},s.endMaps={},handleParseColumn(e)}function calcScrollbar(e){var t=e.$xeGantt,l=e.reactData,r=l.scrollXWidth,a=l.scrollYHeight,o=e.internalData.elemStore,t=t.computeScrollbarOpts,o=(0,_util.getRefElem)(o["main-body-wrapper"]),i=e.$refs.refScrollXHandleElem,e=e.$refs.refScrollYHandleElem;o&&(a=a>o.clientHeight,e&&(l.scrollbarWidth=t.width||e.offsetWidth-e.clientWidth||14),l.overflowY=a,e=r>o.clientWidth,i&&(l.scrollbarHeight=t.height||i.offsetHeight-i.clientHeight||14),l.overflowX=e)}function updateChart(e){var t=e.reactData,l=e.internalData,r=t.viewCellWidth,t=l.elemStore,a=l.chartMaps,l=(0,_util.getRefElem)(t["main-chart-wrapper"]);return l&&_xeUtils.default.arrayEach(l.children,function(e){var t=e.children[0];t&&(e=(e=e.getAttribute("rowid"))?a[e]:null)&&(t.style.left="".concat(r*e.oLeftSize,"px"),t.style.width="".concat(r*e.oWidthSize,"px"))}),e.$nextTick()}function updateStyle(e){var t,l,r,a,o,i,n,c=e.$xeGantt,s=e.reactData,d=e.internalData,u=s.scrollbarWidth,f=s.tableColumn,h=d.elemStore,d=d.xeTable,m=e.$refs.refElem;if(m&&m.clientHeight)return c=c.computeScrollbarXToTop,n=e.$refs.refScrollXLeftCornerElem,a=e.$refs.refScrollXRightCornerElem,i=e.$refs.refScrollXVirtualElem,u=u,o=s.scrollbarHeight,r=l=t=0,d&&(t=d.tBodyHeight,l=d.tHeaderHeight,r=d.tFooterHeight),(d=(0,_util.getRefElem)(h["main-header-scroll"]))&&(d.style.height="".concat(l,"px")),(d=(0,_util.getRefElem)(h["main-body-scroll"]))&&(d.style.height="".concat(t,"px")),i&&(i.style.height="".concat(o,"px"),i.style.visibility="visible"),(i=e.$refs.refScrollXWrapperElem)&&(i.style.left=c?"".concat(u,"px"):"",i.style.width="".concat(m.clientWidth-u,"px")),n&&(n.style.width=c?"".concat(u,"px"):"",n.style.display=c&&o?"block":""),a&&(a.style.width=c?"":"".concat(u,"px"),a.style.display=!c&&o?"block":""),(i=e.$refs.refScrollYVirtualElem)&&(i.style.width="".concat(u,"px"),i.style.height="".concat(t+l+r,"px"),i.style.visibility="visible"),(m=e.$refs.refScrollYTopCornerElem)&&(m.style.height="".concat(l,"px"),m.style.display=l?"block":""),(n=e.$refs.refScrollYWrapperElem)&&(n.style.height="".concat(t,"px"),n.style.top="".concat(l,"px")),(a=e.$refs.refScrollYBottomCornerElem)&&(a.style.height="".concat(r,"px"),a.style.top="".concat(l+t,"px"),a.style.display=r?"block":""),(c=e.$refs.refColInfoElem)&&(s.viewCellWidth=c.clientWidth||40),o=s.viewCellWidth*f.length,d&&0<(i=(u=d.clientWidth)-o)&&(s.viewCellWidth+=Math.floor(i/f.length),o=u),m=(0,_util.getRefElem)(h["main-header-table"]),n=(0,_util.getRefElem)(h["main-body-table"]),m&&(m.style.width="".concat(o,"px")),n&&(n.style.width="".concat(o,"px")),s.scrollXWidth=o,updateChart(e)}function _handleLazyRecalculate(e){return calcScrollbar(e),updateStyle(e),updateChart(e),e.$nextTick()}function _updateScrollXSpace(e){var t=e.reactData,l=t.scrollXLoad,r=t.scrollXWidth,a=e.internalData.elemStore,o=(0,_util.getRefElem)(a["main-body-scroll"]),i=(0,_util.getRefElem)(a["main-body-table"]),n=0,c=0,s=(o&&(c=o.clientWidth),!1),d=r,o=(maxXWidth<r&&(n=o&&i&&o.scrollLeft+c>=maxXWidth?maxXWidth-i.clientWidth:n/(r-c)*(maxXWidth-c),d=maxXWidth,s=!0),i&&(i.style.transform="translate(".concat(n,"px, ").concat(t.scrollYTop||0,"px)")),["header","body","footer"].forEach(function(e){e=(0,_util.getRefElem)(a["main-".concat(e,"-xSpace")]);e&&(e.style.width=l?"".concat(d,"px"):"")}),t.scrollXLeft=n,t.scrollXWidth=d,t.isScrollXBig=s,e.$refs.refScrollXSpaceElem);return o&&(o.style.width="".concat(d,"px")),calcScrollbar(e),e.$nextTick().then(function(){updateStyle(e)})}function _updateScrollYSpace(e){var t=e.reactData,l=e.internalData,r=t.scrollYLoad,a=t.overflowY,o=l.elemStore,l=l.xeTable,i=(0,_util.getRefElem)(o["main-body-scroll"]),n=(0,_util.getRefElem)(o["main-body-table"]),c=0,s=0,d=!1,u=(l&&(c=l.scrollYTop,s=l.scrollYHeight,d=l.isScrollYBig),s),l=c,f=0,i=(i&&(f=i.clientHeight),d&&(l=i&&n&&i.scrollTop+f>=maxYHeight?maxYHeight-n.clientHeight:c/(s-f)*(maxYHeight-f),u=maxYHeight),r&&a||(l=0),n&&(n.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(l,"px)")),["header","body","footer"].forEach(function(e){e=(0,_util.getRefElem)(o["main-".concat(e,"-ySpace")]);e&&(e.style.height=u?"".concat(u,"px"):"")}),e.$refs.refScrollYSpaceElem);return i&&(i.style.height=u?"".concat(u,"px"):""),t.scrollYTop=l,t.scrollYHeight=s,t.isScrollYBig=d,calcScrollbar(e),e.$nextTick().then(function(){updateStyle(e)})}function checkLastSyncScroll(e,t,l){var r=e.reactData,a=e.internalData,e=a.lcsTimeout;r.lazScrollLoading=!0,e&&clearTimeout(e),a.lcsTimeout=setTimeout(function(){a.lcsRunTime=Date.now(),a.lcsTimeout=void 0,a.intoRunScroll=!1,a.inVirtualScroll=!1,a.inWheelScroll=!1,a.inHeaderScroll=!1,a.inBodyScroll=!1,a.inFooterScroll=!1,r.lazScrollLoading=!1},200)}function handleScrollEvent(e,t,l,r,a,o){checkLastSyncScroll(e,r,l)}function syncTableScrollTop(e,t){var e=e.internalData.xeTable;e&&(e=e.elemStore,e=(0,_util.getRefElem)(e["main-body-scroll"]))&&(e.scrollTop=t)}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",inject:{$xeGantt:{default:null}},provide:function(){return{$xeGanttView:this}},props:{},data:function(){return{xID:_xeUtils.default.uniqueId(),reactData:{scrollXLoad:!1,scrollYLoad:!1,overflowY:!1,overflowX:!1,scrollbarWidth:0,scrollbarHeight:0,lazScrollLoading:!1,scrollVMLoading:!1,scrollYHeight:0,scrollYTop:0,isScrollYBig:!1,scrollXLeft:0,scrollXWidth:0,isScrollXBig:!1,minViewDate:null,maxViewDate:null,tableData:[],tableColumn:[],headerGroups:[],viewCellWidth:40,rowHeightStore:{large:52,default:48,medium:44,small:40,mini:36}},internalData:createInternalData()}},computed:Object.assign({},{}),methods:{refreshData:function(){return handleUpdateData(this),_handleLazyRecalculate(this)},updateViewData:function(){var e=this.reactData,t=this.internalData.xeTable;return t&&(t=t.tableData,e.tableData=t),this.$nextTick()},connectUpdate:function(e){var e=e.$table,t=this.internalData;return e&&(t.xeTable=e),this.$nextTick()},handleUpdateStyle:function(){return updateStyle(this)},handleLazyRecalculate:function(){return _handleLazyRecalculate(this)},handleUpdateCurrentRow:function(e){var t,l=this.internalData.xeTable,r=this.$refs.refElem;l&&r&&(e?(t=l.highlightCurrentRow,(l.computeRowOpts.isCurrent||t)&&_xeUtils.default.arrayEach(r.querySelectorAll('[rowid="'.concat(l.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--current")})):_xeUtils.default.arrayEach(r.querySelectorAll(".row--current"),function(e){return(0,_dom.removeClass)(e,"row--current")}))},handleUpdateHoverRow:function(e){var t=this.internalData.xeTable,l=this.$refs.refElem;t&&l&&(e?_xeUtils.default.arrayEach(l.querySelectorAll('.vxe-body--row[rowid="'.concat(t.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--hover")}):_xeUtils.default.arrayEach(l.querySelectorAll(".vxe-body--row.row--hover"),function(e){return(0,_dom.removeClass)(e,"row--hover")}))},triggerHeaderScrollEvent:function(e){var t,l,r,a=this.internalData,o=a.elemStore;a.inVirtualScroll||a.inBodyScroll||a.inFooterScroll||(t=e.currentTarget,o=(0,_util.getRefElem)(o["main-body-scroll"]),l=this.$refs.refScrollXHandleElem,o&&t&&(r=t.scrollLeft,a.inHeaderScroll=!0,(0,_dom.setScrollLeft)(l,r),(0,_dom.setScrollLeft)(o,r),handleScrollEvent(this,e,!1,!0,t.scrollTop,r)))},triggerBodyScrollEvent:function(e){var t,l,r,a,o,i=this,n=i.internalData,c=n.elemStore;n.inVirtualScroll||n.inHeaderScroll||n.inFooterScroll||(t=e.currentTarget,c=(0,_util.getRefElem)(c["main-header-scroll"]),l=i.$refs.refScrollXHandleElem,r=i.$refs.refScrollYHandleElem,c&&t&&(a=t.scrollLeft,o=t.scrollTop,n.inBodyScroll=!0,(0,_dom.setScrollLeft)(l,a),(0,_dom.setScrollLeft)(c,a),(0,_dom.setScrollTop)(r,o),syncTableScrollTop(i,o),handleScrollEvent(i,e,!0,!0,t.scrollTop,a)))},triggerFooterScrollEvent:function(e){var t,l=this.internalData;l.inVirtualScroll||l.inHeaderScroll||l.inBodyScroll||(l=e.currentTarget)&&(t=l.scrollLeft,handleScrollEvent(this,e,!1,!0,l.scrollTop,t))},triggerVirtualScrollXEvent:function(e){var t,l,r,a=this.internalData,o=a.elemStore;a.inHeaderScroll||a.inBodyScroll||(t=e.currentTarget,l=(0,_util.getRefElem)(o["main-header-scroll"]),o=(0,_util.getRefElem)(o["main-body-scroll"]),t&&(r=t.scrollLeft,a.inVirtualScroll=!0,(0,_dom.setScrollLeft)(l,r),(0,_dom.setScrollLeft)(o,r),handleScrollEvent(this,e,!1,!0,t.scrollTop,r)))},triggerVirtualScrollYEvent:function(e){var t,l,r=this.internalData,a=r.elemStore;r.inHeaderScroll||r.inBodyScroll||(t=e.currentTarget,a=(0,_util.getRefElem)(a["main-body-scroll"]),t&&(l=t.scrollTop,r.inVirtualScroll=!0,(0,_dom.setScrollTop)(a,l),syncTableScrollTop(this,l),handleScrollEvent(this,e,!0,!1,l,t.scrollLeft)))},updateScrollXSpace:function(){return _updateScrollXSpace(this)},updateScrollYSpace:function(){return _updateScrollYSpace(this)},handleGlobalResizeEvent:function(){_handleLazyRecalculate(this)},renderScrollX:function(e){return e("div",{key:"vsx",ref:"refScrollXVirtualElem",class:"vxe-gantt-view--scroll-x-virtual"},[e("div",{ref:"refScrollXLeftCornerElem",class:"vxe-gantt-view--scroll-x-left-corner"}),e("div",{ref:"refScrollXWrapperElem",class:"vxe-gantt-view--scroll-x-wrapper"},[e("div",{ref:"refScrollXHandleElem",class:"vxe-gantt-view--scroll-x-handle",on:{scroll:this.triggerVirtualScrollXEvent}},[e("div",{ref:"refScrollXSpaceElem",class:"vxe-gantt-view--scroll-x-space"})])]),e("div",{ref:"refScrollXRightCornerElem",class:"vxe-gantt-view--scroll-x-right-corner"})])},renderScrollY:function(e){return e("div",{ref:"refScrollYVirtualElem",class:"vxe-gantt-view--scroll-y-virtual"},[e("div",{ref:"refScrollYTopCornerElem",class:"vxe-gantt-view--scroll-y-top-corner"}),e("div",{ref:"refScrollYWrapperElem",class:"vxe-gantt-view--scroll-y-wrapper"},[e("div",{ref:"refScrollYHandleElem",class:"vxe-gantt-view--scroll-y-handle",on:{scroll:this.triggerVirtualScrollYEvent}},[e("div",{ref:"refScrollYSpaceElem",class:"vxe-gantt-view--scroll-y-space"})])]),e("div",{ref:"refScrollYBottomCornerElem",class:"vxe-gantt-view--scroll-y-bottom-corner"})])},renderViewport:function(e){return e("div",{class:"vxe-gantt-view--viewport-wrapper"},[e(_ganttHeader.default),e(_ganttBody.default)])},renderBody:function(e){var t=this;return e("div",{class:"vxe-gantt-view--layout-wrapper"},t.$xeGantt.computeScrollbarYToLeft?[t.renderScrollY(e),t.renderViewport(e)]:[t.renderViewport(e),t.renderScrollY(e)])},renderVN:function(e){var t=this,l=t.$xeGantt,r=t.reactData,a=r.overflowX,o=r.overflowY,i=r.scrollXLoad,r=r.scrollYLoad,n=l.computeTaskViewOpts,l=l.computeScrollbarXToTop;return e("div",{ref:"refElem",class:["vxe-gantt-view","mode--".concat(n.mode||"day"),{"is--scroll-y":o,"is--scroll-x":a,"is--virtual-x":i,"is--virtual-y":r}]},[e("div",{class:"vxe-gantt-view--render-wrapper"},l?[t.renderScrollX(e),t.renderBody(e)]:[t.renderBody(e),t.renderScrollX(e)]),e("div",{class:"vxe-gantt-view--render-vars"},[e("div",{ref:"refColInfoElem",class:"vxe-gantt-view--column-info"})])])}},watch:{"reactData.tableData":function(){handleUpdateData(this)}},mounted:function(){globalEvents.on(this,"resize",this.handleGlobalResizeEvent)},beforeDestroy:function(){var e=this.internalData;globalEvents.off(this,"keydown"),_xeUtils.default.assign(e,createInternalData())},render:function(e){return this.renderVN(e)}});
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _comp=require("../../ui/src/comp"),_core=require("@vxe-ui/core"),_dom=require("../../ui/src/dom"),_util=require("./util"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ganttHeader=_interopRequireDefault(require("./gantt-header")),_ganttBody=_interopRequireDefault(require("./gantt-body"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var globalEvents=_core.VxeUI.globalEvents;function createInternalData(){return{xeTable:null,startMaps:{},endMaps:{},chartMaps:{},elemStore:{},scrollXStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0},scrollYStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0}}}var maxYHeight=5e6;function handleParseColumn(e){var t=e.$xeGantt,l=e.reactData,r=e.internalData,a=t.treeConfig,o=l.minViewDate,i=l.maxViewDate,n=[],c=[];switch(t.computeTaskViewOpts.mode){case"year":case"quarter":case"month":case"week":break;default:if(o&&i){for(var s=o.getTime(),d=i.getTime()-o.getTime(),u=Math.max(6,Math.floor(d/864e5)+1),f=[],h=[],m={},p=0;p<u;p++){var S=new Date(s+864e5*p),v="".concat(S.getFullYear(),"-").concat(S.getMonth()+1),S="".concat(S.getDate()),g=m[v],S={field:"".concat(v,"-").concat(S),title:S};g?(g.children.push(S),n.push(g)):(f.push(g={field:v,title:v,children:[S]}),n.push(g),m[v]=g),h.push(S)}c.push(f,h);var x,y,w,E,b,T,_,D=r.xeTable;D&&(x=t.computeStartField,y=t.computeEndField,d=D.afterFullData,E=(w=D.computeTreeOpts).transform,b=w.children||w.childrenField,T={},_=function(e){var t,l=D.getRowid(e),r=_xeUtils.default.get(e,x),a=_xeUtils.default.get(e,y);r&&a&&(r=_xeUtils.default.toStringDate(r),a=_xeUtils.default.toStringDate(a),t=Math.floor((r.getTime()-o.getTime())/864e5),a=Math.floor((a.getTime()-r.getTime())/864e5)+1,T[l]={row:e,rowid:l,oLeftSize:t,oWidthSize:a})},a?_xeUtils.default.eachTree(D.afterTreeFullData,_,{children:E?w.mapChildrenField:b}):d.forEach(_),r.chartMaps=T)}}l.tableColumn=n,l.headerGroups=c}function handleUpdateData(e){var l,r,t,a,o,i,n=e.$xeGantt,c=e.reactData,s=e.internalData,d=n.treeConfig,u=s.xeTable,f=null,h=null;u&&(l=n.computeStartField,r=n.computeEndField,n=u.afterFullData,a=(t=u.computeTreeOpts).transform,o=t.children||t.childrenField,i=function(e){var t=_xeUtils.default.get(e,l),e=_xeUtils.default.get(e,r);t&&e&&(t=_xeUtils.default.toStringDate(t),(!f||f.getTime()>t.getTime())&&(f=t),t=_xeUtils.default.toStringDate(e),!h||h.getTime()<t.getTime())&&(h=t)},d?_xeUtils.default.eachTree(u.afterTreeFullData,i,{children:a?t.mapChildrenField:o}):n.forEach(i)),c.minViewDate=f,c.maxViewDate=h,s.startMaps={},s.endMaps={},handleParseColumn(e)}function calcScrollbar(e){var t=e.$xeGantt,l=e.reactData,r=l.scrollXWidth,a=l.scrollYHeight,o=e.internalData.elemStore,t=t.computeScrollbarOpts,o=(0,_util.getRefElem)(o["main-body-wrapper"]),i=e.$refs.refScrollXHandleElem,e=e.$refs.refScrollYHandleElem;o&&(a=a>o.clientHeight,e&&(l.scrollbarWidth=t.width||e.offsetWidth-e.clientWidth||14),l.overflowY=a,e=r>o.clientWidth,i&&(l.scrollbarHeight=t.height||i.offsetHeight-i.clientHeight||14),l.overflowX=e)}function updateChart(e){var t=e.reactData,l=e.internalData,r=t.viewCellWidth,t=l.elemStore,a=l.chartMaps,l=(0,_util.getRefElem)(t["main-chart-wrapper"]);return l&&_xeUtils.default.arrayEach(l.children,function(e){var t=e.children[0];t&&(e=(e=e.getAttribute("rowid"))?a[e]:null)&&(t.style.left="".concat(r*e.oLeftSize,"px"),t.style.width="".concat(r*e.oWidthSize,"px"))}),e.$nextTick()}function updateStyle(e){var t,l,r,a,o,i,n,c=e.$xeGantt,s=e.reactData,d=e.internalData,u=s.scrollbarWidth,f=s.tableColumn,h=d.elemStore,d=d.xeTable,m=e.$refs.refElem;if(m&&m.clientHeight)return c=c.computeScrollbarXToTop,n=e.$refs.refScrollXLeftCornerElem,a=e.$refs.refScrollXRightCornerElem,i=e.$refs.refScrollXVirtualElem,u=u,o=s.scrollbarHeight,r=l=t=0,d&&(t=d.tBodyHeight,l=d.tHeaderHeight,r=d.tFooterHeight),(d=(0,_util.getRefElem)(h["main-header-scroll"]))&&(d.style.height="".concat(l,"px")),(d=(0,_util.getRefElem)(h["main-body-scroll"]))&&(d.style.height="".concat(t,"px")),i&&(i.style.height="".concat(o,"px"),i.style.visibility="visible"),(i=e.$refs.refScrollXWrapperElem)&&(i.style.left=c?"".concat(u,"px"):"",i.style.width="".concat(m.clientWidth-u,"px")),n&&(n.style.width=c?"".concat(u,"px"):"",n.style.display=c&&o?"block":""),a&&(a.style.width=c?"":"".concat(u,"px"),a.style.display=!c&&o?"block":""),(i=e.$refs.refScrollYVirtualElem)&&(i.style.width="".concat(u,"px"),i.style.height="".concat(t+l+r,"px"),i.style.visibility="visible"),(m=e.$refs.refScrollYTopCornerElem)&&(m.style.height="".concat(l,"px"),m.style.display=l?"block":""),(n=e.$refs.refScrollYWrapperElem)&&(n.style.height="".concat(t,"px"),n.style.top="".concat(l,"px")),(a=e.$refs.refScrollYBottomCornerElem)&&(a.style.height="".concat(r,"px"),a.style.top="".concat(l+t,"px"),a.style.display=r?"block":""),(c=e.$refs.refColInfoElem)&&(s.viewCellWidth=c.clientWidth||40),o=s.viewCellWidth*f.length,d&&0<(i=(u=d.clientWidth)-o)&&(s.viewCellWidth+=Math.floor(i/f.length),o=u),m=(0,_util.getRefElem)(h["main-header-table"]),n=(0,_util.getRefElem)(h["main-body-table"]),m&&(m.style.width="".concat(o,"px")),n&&(n.style.width="".concat(o,"px")),s.scrollXWidth=o,updateChart(e)}function _handleLazyRecalculate(e){return calcScrollbar(e),updateStyle(e),updateChart(e),e.$nextTick()}function _updateScrollYSpace(e){var t=e.reactData,l=e.internalData,r=t.scrollYLoad,a=t.overflowY,o=l.elemStore,l=l.xeTable,i=(0,_util.getRefElem)(o["main-body-scroll"]),n=(0,_util.getRefElem)(o["main-body-table"]),c=0,s=0,d=!1,l=(l&&(c=l.scrollYTop,s=l.scrollYHeight,d=l.isScrollYBig),s),u=c,f=0,i=(i&&(f=i.clientHeight),d&&(u=i&&n&&i.scrollTop+f>=maxYHeight?maxYHeight-n.clientHeight:c/(s-f)*(maxYHeight-f),l=maxYHeight),r&&a||(u=0),(0,_util.getRefElem)(o["main-chart-wrapper"])),c=(n&&(n.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(u,"px)")),i&&(i.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(u,"px)")),(0,_util.getRefElem)(o["main-body-ySpace"])),f=(c&&(c.style.height=l?"".concat(l,"px"):""),e.$refs.refScrollYSpaceElem);return f&&(f.style.height=l?"".concat(l,"px"):""),t.scrollYTop=u,t.scrollYHeight=s,t.isScrollYBig=d,calcScrollbar(e),e.$nextTick().then(function(){updateStyle(e)})}function checkLastSyncScroll(e,t,l){var r=e.reactData,a=e.internalData,e=a.lcsTimeout;r.lazScrollLoading=!0,e&&clearTimeout(e),a.lcsTimeout=setTimeout(function(){a.lcsRunTime=Date.now(),a.lcsTimeout=void 0,a.intoRunScroll=!1,a.inVirtualScroll=!1,a.inWheelScroll=!1,a.inHeaderScroll=!1,a.inBodyScroll=!1,a.inFooterScroll=!1,r.lazScrollLoading=!1},200)}function handleScrollEvent(e,t,l,r,a,o){checkLastSyncScroll(e,r,l)}function syncTableScrollTop(e,t){var e=e.internalData.xeTable;e&&(e=e.elemStore,e=(0,_util.getRefElem)(e["main-body-scroll"]))&&(e.scrollTop=t)}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",inject:{$xeGantt:{default:null}},provide:function(){return{$xeGanttView:this}},props:{},data:function(){return{xID:_xeUtils.default.uniqueId(),reactData:{scrollXLoad:!1,scrollYLoad:!1,overflowY:!0,overflowX:!0,scrollbarWidth:0,scrollbarHeight:0,lazScrollLoading:!1,scrollVMLoading:!1,scrollYHeight:0,scrollYTop:0,isScrollYBig:!1,scrollXLeft:0,scrollXWidth:0,isScrollXBig:!1,minViewDate:null,maxViewDate:null,tableData:[],tableColumn:[],headerGroups:[],viewCellWidth:40,rowHeightStore:{large:52,default:48,medium:44,small:40,mini:36}},internalData:createInternalData()}},computed:Object.assign({},{}),methods:{refreshData:function(){return handleUpdateData(this),_handleLazyRecalculate(this)},updateViewData:function(){var e=this.reactData,t=this.internalData.xeTable;return t&&(t=t.tableData,e.tableData=t),this.$nextTick()},connectUpdate:function(e){var e=e.$table,t=this.internalData;return e&&(t.xeTable=e),this.$nextTick()},handleUpdateStyle:function(){return updateStyle(this)},handleLazyRecalculate:function(){return _handleLazyRecalculate(this)},handleUpdateCurrentRow:function(e){var t,l=this.internalData.xeTable,r=this.$refs.refElem;l&&r&&(e?(t=l.highlightCurrentRow,(l.computeRowOpts.isCurrent||t)&&_xeUtils.default.arrayEach(r.querySelectorAll('[rowid="'.concat(l.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--current")})):_xeUtils.default.arrayEach(r.querySelectorAll(".row--current"),function(e){return(0,_dom.removeClass)(e,"row--current")}))},handleUpdateHoverRow:function(e){var t=this.internalData.xeTable,l=this.$refs.refElem;t&&l&&(e?_xeUtils.default.arrayEach(l.querySelectorAll('.vxe-body--row[rowid="'.concat(t.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--hover")}):_xeUtils.default.arrayEach(l.querySelectorAll(".vxe-body--row.row--hover"),function(e){return(0,_dom.removeClass)(e,"row--hover")}))},triggerHeaderScrollEvent:function(e){var t,l,r,a=this.internalData,o=a.elemStore;a.inVirtualScroll||a.inBodyScroll||a.inFooterScroll||(t=e.currentTarget,o=(0,_util.getRefElem)(o["main-body-scroll"]),l=this.$refs.refScrollXHandleElem,o&&t&&(r=t.scrollLeft,a.inHeaderScroll=!0,(0,_dom.setScrollLeft)(l,r),(0,_dom.setScrollLeft)(o,r),handleScrollEvent(this,e,!1,!0,t.scrollTop,r)))},triggerBodyScrollEvent:function(e){var t,l,r,a,o,i=this,n=i.internalData,c=n.elemStore;n.inVirtualScroll||n.inHeaderScroll||n.inFooterScroll||(t=e.currentTarget,c=(0,_util.getRefElem)(c["main-header-scroll"]),l=i.$refs.refScrollXHandleElem,r=i.$refs.refScrollYHandleElem,c&&t&&(a=t.scrollLeft,o=t.scrollTop,n.inBodyScroll=!0,(0,_dom.setScrollLeft)(l,a),(0,_dom.setScrollLeft)(c,a),(0,_dom.setScrollTop)(r,o),syncTableScrollTop(i,o),handleScrollEvent(i,e,!0,!0,t.scrollTop,a)))},triggerFooterScrollEvent:function(e){var t,l=this.internalData;l.inVirtualScroll||l.inHeaderScroll||l.inBodyScroll||(l=e.currentTarget)&&(t=l.scrollLeft,handleScrollEvent(this,e,!1,!0,l.scrollTop,t))},triggerVirtualScrollXEvent:function(e){var t,l,r,a=this.internalData,o=a.elemStore;a.inHeaderScroll||a.inBodyScroll||(t=e.currentTarget,l=(0,_util.getRefElem)(o["main-header-scroll"]),o=(0,_util.getRefElem)(o["main-body-scroll"]),t&&(r=t.scrollLeft,a.inVirtualScroll=!0,(0,_dom.setScrollLeft)(l,r),(0,_dom.setScrollLeft)(o,r),handleScrollEvent(this,e,!1,!0,t.scrollTop,r)))},triggerVirtualScrollYEvent:function(e){var t,l,r=this.internalData,a=r.elemStore;r.inHeaderScroll||r.inBodyScroll||(t=e.currentTarget,a=(0,_util.getRefElem)(a["main-body-scroll"]),t&&(l=t.scrollTop,r.inVirtualScroll=!0,(0,_dom.setScrollTop)(a,l),syncTableScrollTop(this,l),handleScrollEvent(this,e,!0,!1,l,t.scrollLeft)))},updateScrollYSpace:function(){return _updateScrollYSpace(this)},updateScrollYStatus:function(e){this.reactData.scrollYLoad=e},handleGlobalResizeEvent:function(){_handleLazyRecalculate(this)},renderScrollX:function(e){return e("div",{key:"vsx",ref:"refScrollXVirtualElem",class:"vxe-gantt-view--scroll-x-virtual"},[e("div",{ref:"refScrollXLeftCornerElem",class:"vxe-gantt-view--scroll-x-left-corner"}),e("div",{ref:"refScrollXWrapperElem",class:"vxe-gantt-view--scroll-x-wrapper"},[e("div",{ref:"refScrollXHandleElem",class:"vxe-gantt-view--scroll-x-handle",on:{scroll:this.triggerVirtualScrollXEvent}},[e("div",{ref:"refScrollXSpaceElem",class:"vxe-gantt-view--scroll-x-space"})])]),e("div",{ref:"refScrollXRightCornerElem",class:"vxe-gantt-view--scroll-x-right-corner"})])},renderScrollY:function(e){return e("div",{ref:"refScrollYVirtualElem",class:"vxe-gantt-view--scroll-y-virtual"},[e("div",{ref:"refScrollYTopCornerElem",class:"vxe-gantt-view--scroll-y-top-corner"}),e("div",{ref:"refScrollYWrapperElem",class:"vxe-gantt-view--scroll-y-wrapper"},[e("div",{ref:"refScrollYHandleElem",class:"vxe-gantt-view--scroll-y-handle",on:{scroll:this.triggerVirtualScrollYEvent}},[e("div",{ref:"refScrollYSpaceElem",class:"vxe-gantt-view--scroll-y-space"})])]),e("div",{ref:"refScrollYBottomCornerElem",class:"vxe-gantt-view--scroll-y-bottom-corner"})])},renderViewport:function(e){return e("div",{class:"vxe-gantt-view--viewport-wrapper"},[e(_ganttHeader.default),e(_ganttBody.default)])},renderBody:function(e){var t=this;return e("div",{class:"vxe-gantt-view--layout-wrapper"},t.$xeGantt.computeScrollbarYToLeft?[t.renderScrollY(e),t.renderViewport(e)]:[t.renderViewport(e),t.renderScrollY(e)])},renderVN:function(e){var t=this,l=t.$xeGantt,r=t.reactData,a=r.overflowX,o=r.overflowY,i=r.scrollXLoad,r=r.scrollYLoad,n=l.computeTaskViewOpts,l=l.computeScrollbarXToTop;return e("div",{ref:"refElem",class:["vxe-gantt-view","mode--".concat(n.mode||"day"),{"is--scroll-y":o,"is--scroll-x":a,"is--virtual-x":i,"is--virtual-y":r}]},[e("div",{class:"vxe-gantt-view--render-wrapper"},l?[t.renderScrollX(e),t.renderBody(e)]:[t.renderBody(e),t.renderScrollX(e)]),e("div",{class:"vxe-gantt-view--render-vars"},[e("div",{ref:"refColInfoElem",class:"vxe-gantt-view--column-info"})])])}},watch:{"reactData.tableData":function(){handleUpdateData(this)}},mounted:function(){globalEvents.on(this,"resize",this.handleGlobalResizeEvent)},beforeDestroy:function(){var e=this.internalData;globalEvents.off(this,"keydown"),_xeUtils.default.assign(e,createInternalData())},render:function(e){return this.renderVN(e)}});
|
package/lib/gantt/src/gantt.js
CHANGED
|
@@ -10,6 +10,7 @@ var _core = require("@vxe-ui/core");
|
|
|
10
10
|
var _xeUtils = _interopRequireDefault(require("xe-utils"));
|
|
11
11
|
var _utils = require("../../ui/src/utils");
|
|
12
12
|
var _dom = require("../../ui/src/dom");
|
|
13
|
+
var _vn = require("../../ui/src/vn");
|
|
13
14
|
var _log = require("../../ui/src/log");
|
|
14
15
|
var _ganttView = _interopRequireDefault(require("./gantt-view"));
|
|
15
16
|
var _vxeTable = require("vxe-table");
|
|
@@ -31,23 +32,24 @@ var getConfig = _core.VxeUI.getConfig,
|
|
|
31
32
|
createEvent = _core.VxeUI.createEvent,
|
|
32
33
|
globalEvents = _core.VxeUI.globalEvents,
|
|
33
34
|
GLOBAL_EVENT_KEYS = _core.VxeUI.GLOBAL_EVENT_KEYS,
|
|
34
|
-
renderEmptyElement = _core.VxeUI.renderEmptyElement
|
|
35
|
-
getSlotVNs = _core.VxeUI.getSlotVNs;
|
|
35
|
+
renderEmptyElement = _core.VxeUI.renderEmptyElement;
|
|
36
36
|
var tableProps = _vxeTable.VxeTable.props;
|
|
37
37
|
var tableMethods = {};
|
|
38
38
|
var propKeys = Object.keys(tableProps);
|
|
39
39
|
var defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Gantt', 'Bottom', 'Pager']];
|
|
40
|
-
function getTableOns(
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
function getTableOns($xeGantt) {
|
|
41
|
+
var _vm = $xeGantt;
|
|
42
|
+
var $listeners = _vm.$listeners;
|
|
43
|
+
var props = $xeGantt;
|
|
44
|
+
var proxyConfig = props.proxyConfig;
|
|
45
|
+
var proxyOpts = $xeGantt.computeProxyOpts;
|
|
44
46
|
var ons = {};
|
|
45
47
|
_xeUtils.default.each($listeners, function (cb, type) {
|
|
46
48
|
ons[type] = function () {
|
|
47
49
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
48
50
|
args[_key] = arguments[_key];
|
|
49
51
|
}
|
|
50
|
-
|
|
52
|
+
$xeGantt.$emit.apply($xeGantt, [type].concat(args));
|
|
51
53
|
};
|
|
52
54
|
});
|
|
53
55
|
if (proxyConfig) {
|
|
@@ -98,7 +100,9 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
98
100
|
}),
|
|
99
101
|
provide: function provide() {
|
|
100
102
|
var $xeGantt = this;
|
|
103
|
+
var $xeGrid = null;
|
|
101
104
|
return {
|
|
105
|
+
$xeGrid: $xeGrid,
|
|
102
106
|
$xeGantt: $xeGantt
|
|
103
107
|
};
|
|
104
108
|
},
|
|
@@ -1491,7 +1495,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1491
1495
|
slotFunc = slots[slotFunc] || null;
|
|
1492
1496
|
}
|
|
1493
1497
|
if (_xeUtils.default.isFunction(slotFunc)) {
|
|
1494
|
-
return getSlotVNs(slotFunc.call(this, params, h, vNodes));
|
|
1498
|
+
return (0, _vn.getSlotVNs)(slotFunc.call(this, params, h, vNodes));
|
|
1495
1499
|
}
|
|
1496
1500
|
}
|
|
1497
1501
|
return [];
|