vxe-gantt 4.0.6 → 4.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.
@@ -20,6 +20,7 @@ const {
20
20
  function createInternalData() {
21
21
  return {
22
22
  xeTable: null,
23
+ visibleColumn: [],
23
24
  startMaps: {},
24
25
  endMaps: {},
25
26
  chartMaps: {},
@@ -34,16 +35,9 @@ function createInternalData() {
34
35
  startIndex: 0,
35
36
  endIndex: 0
36
37
  },
37
- // 存放纵向 Y 虚拟滚动相关信息
38
- scrollYStore: {
39
- preloadSize: 0,
40
- offsetSize: 0,
41
- visibleSize: 0,
42
- visibleStartIndex: 0,
43
- visibleEndIndex: 0,
44
- startIndex: 0,
45
- endIndex: 0
46
- }
38
+ // 最后滚动位置
39
+ lastScrollTop: 0,
40
+ lastScrollLeft: 0
47
41
  };
48
42
  }
49
43
  const maxYHeight = 5e6;
@@ -88,6 +82,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
88
82
  scrollbarWidth: 0,
89
83
  // 横向滚动条的高度
90
84
  scrollbarHeight: 0,
85
+ // 最后滚动时间戳
86
+ lastScrollTime: 0,
91
87
  lazScrollLoading: false,
92
88
  scrollVMLoading: false,
93
89
  scrollYHeight: 0,
@@ -137,9 +133,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
137
133
  minViewDate,
138
134
  maxViewDate
139
135
  } = reactData;
136
+ const {
137
+ scrollXStore
138
+ } = internalData;
140
139
  const minScale = _xeUtils.default.last(taskScaleList);
141
140
  const fullCols = [];
142
141
  const groupCols = [];
142
+ scrollXStore.startIndex = 0;
143
+ scrollXStore.endIndex = 1;
143
144
  if (minScale && minViewDate && maxViewDate) {
144
145
  const minSType = minScale.type;
145
146
  const weekScale = taskScaleList.find(item => item.type === 'week');
@@ -162,37 +163,37 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
162
163
  const currTime = minViewDate.getTime();
163
164
  const diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
164
165
  const countSize = Math.max(5, Math.floor(diffDayNum / gapTime) + 1);
165
- switch (minScale.type) {
166
- case 'day':
167
- case 'date':
168
- if (diffDayNum > 1000 * 60 * 60 * 24 * 366 * 3) {
169
- reactData.tableColumn = [];
170
- reactData.headerGroups = [];
171
- return;
172
- }
173
- break;
174
- case 'hour':
175
- if (diffDayNum > 1000 * 60 * 60 * 24 * 31 * 3) {
176
- reactData.tableColumn = [];
177
- reactData.headerGroups = [];
178
- return;
179
- }
180
- break;
181
- case 'minute':
182
- if (diffDayNum > 1000 * 60 * 60 * 24 * 3) {
183
- reactData.tableColumn = [];
184
- reactData.headerGroups = [];
185
- return;
186
- }
187
- break;
188
- case 'second':
189
- if (diffDayNum > 1000 * 60 * 60 * 3) {
190
- reactData.tableColumn = [];
191
- reactData.headerGroups = [];
192
- return;
193
- }
194
- break;
195
- }
166
+ // switch (minScale.type) {
167
+ // case 'day':
168
+ // case 'date':
169
+ // if (diffDayNum > (1000 * 60 * 60 * 24 * 366 * 3)) {
170
+ // reactData.tableColumn = []
171
+ // reactData.headerGroups = []
172
+ // return
173
+ // }
174
+ // break
175
+ // case 'hour':
176
+ // if (diffDayNum > (1000 * 60 * 60 * 24 * 31 * 3)) {
177
+ // reactData.tableColumn = []
178
+ // reactData.headerGroups = []
179
+ // return
180
+ // }
181
+ // break
182
+ // case 'minute':
183
+ // if (diffDayNum > (1000 * 60 * 60 * 24 * 3)) {
184
+ // reactData.tableColumn = []
185
+ // reactData.headerGroups = []
186
+ // return
187
+ // }
188
+ // break
189
+ // case 'second':
190
+ // if (diffDayNum > (1000 * 60 * 60 * 3)) {
191
+ // reactData.tableColumn = []
192
+ // reactData.headerGroups = []
193
+ // return
194
+ // }
195
+ // break
196
+ // }
196
197
  const renderListMaps = {
197
198
  year: [],
198
199
  quarter: [],
@@ -392,8 +393,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
392
393
  internalData.chartMaps = ctMaps;
393
394
  }
394
395
  }
395
- reactData.tableColumn = fullCols;
396
+ internalData.visibleColumn = fullCols;
396
397
  reactData.headerGroups = groupCols;
398
+ updateScrollXStatus();
399
+ handleTableColumn();
397
400
  };
398
401
  const handleUpdateData = () => {
399
402
  const ganttProps = $xeGantt.props;
@@ -505,11 +508,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
505
508
  const {
506
509
  scrollbarWidth,
507
510
  scrollbarHeight,
508
- tableColumn,
509
- headerGroups
511
+ headerGroups,
512
+ tableColumn
510
513
  } = reactData;
511
514
  const {
512
- elemStore
515
+ elemStore,
516
+ visibleColumn
513
517
  } = internalData;
514
518
  const $xeTable = internalData.xeTable;
515
519
  const el = refElem.value;
@@ -591,37 +595,230 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
591
595
  yBottomCornerEl.style.display = tFooterHeight ? 'block' : '';
592
596
  }
593
597
  const colInfoElem = refColInfoElem.value;
598
+ let viewCellWidth = 40;
594
599
  if (colInfoElem) {
595
- reactData.viewCellWidth = colInfoElem.clientWidth || 40;
600
+ viewCellWidth = colInfoElem.clientWidth || 40;
596
601
  }
597
- let viewTableWidth = reactData.viewCellWidth * tableColumn.length;
602
+ let viewTableWidth = viewCellWidth * visibleColumn.length;
598
603
  if (bodyScrollElem) {
599
604
  const viewWidth = bodyScrollElem.clientWidth;
600
605
  const remainWidth = viewWidth - viewTableWidth;
601
606
  if (remainWidth > 0) {
602
- reactData.viewCellWidth += Math.floor(remainWidth / tableColumn.length);
607
+ viewCellWidth += Math.floor(remainWidth / visibleColumn.length);
603
608
  viewTableWidth = viewWidth;
604
609
  }
605
610
  }
611
+ reactData.viewCellWidth = viewCellWidth;
606
612
  const headerTableElem = (0, _util.getRefElem)(elemStore['main-header-table']);
607
613
  const bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
614
+ const vmTableWidth = viewCellWidth * tableColumn.length;
608
615
  if (headerTableElem) {
609
616
  headerTableElem.style.width = `${viewTableWidth}px`;
610
617
  }
611
618
  if (bodyTableElem) {
612
- bodyTableElem.style.width = `${viewTableWidth}px`;
619
+ bodyTableElem.style.width = `${vmTableWidth}px`;
613
620
  }
614
621
  reactData.scrollXWidth = viewTableWidth;
615
622
  return updateChart();
616
623
  };
617
- const handleLazyRecalculate = () => {
624
+ const handleRecalculateStyle = () => {
625
+ const el = refElem.value;
626
+ internalData.rceRunTime = Date.now();
627
+ if (!el || !el.clientWidth) {
628
+ return (0, _vue.nextTick)();
629
+ }
618
630
  calcScrollbar();
619
631
  updateStyle();
620
632
  updateChart();
633
+ return computeScrollLoad();
634
+ };
635
+ const handleLazyRecalculate = () => {
636
+ return new Promise(resolve => {
637
+ const {
638
+ rceTimeout,
639
+ rceRunTime
640
+ } = internalData;
641
+ const $xeTable = internalData.xeTable;
642
+ let refreshDelay = 50;
643
+ if ($xeTable) {
644
+ const {
645
+ computeResizeOpts
646
+ } = $xeTable.getComputeMaps();
647
+ const resizeOpts = computeResizeOpts.value;
648
+ refreshDelay = resizeOpts.refreshDelay || 50;
649
+ }
650
+ if (rceTimeout) {
651
+ clearTimeout(rceTimeout);
652
+ if (rceRunTime && rceRunTime + (refreshDelay - 5) < Date.now()) {
653
+ resolve(handleRecalculateStyle());
654
+ } else {
655
+ (0, _vue.nextTick)(() => {
656
+ resolve();
657
+ });
658
+ }
659
+ } else {
660
+ resolve(handleRecalculateStyle());
661
+ }
662
+ internalData.rceTimeout = setTimeout(() => {
663
+ internalData.rceTimeout = undefined;
664
+ handleRecalculateStyle();
665
+ }, refreshDelay);
666
+ });
667
+ };
668
+ const computeScrollLoad = () => {
669
+ return (0, _vue.nextTick)().then(() => {
670
+ const {
671
+ scrollXLoad
672
+ } = reactData;
673
+ const {
674
+ scrollXStore
675
+ } = internalData;
676
+ // 计算 X 逻辑
677
+ if (scrollXLoad) {
678
+ const {
679
+ toVisibleIndex: toXVisibleIndex,
680
+ visibleSize: visibleXSize
681
+ } = handleVirtualXVisible();
682
+ const offsetXSize = 2;
683
+ scrollXStore.preloadSize = 1;
684
+ scrollXStore.offsetSize = offsetXSize;
685
+ scrollXStore.visibleSize = visibleXSize;
686
+ scrollXStore.endIndex = Math.max(scrollXStore.startIndex + scrollXStore.visibleSize + offsetXSize, scrollXStore.endIndex);
687
+ scrollXStore.visibleStartIndex = Math.max(scrollXStore.startIndex, toXVisibleIndex);
688
+ scrollXStore.visibleEndIndex = Math.min(scrollXStore.endIndex, toXVisibleIndex + visibleXSize);
689
+ updateScrollXData().then(() => {
690
+ loadScrollXData();
691
+ });
692
+ } else {
693
+ updateScrollXSpace();
694
+ }
695
+ });
696
+ };
697
+ const handleVirtualXVisible = () => {
698
+ const {
699
+ viewCellWidth
700
+ } = reactData;
701
+ const {
702
+ elemStore
703
+ } = internalData;
704
+ const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
705
+ if (bodyScrollElem) {
706
+ const clientWidth = bodyScrollElem.clientWidth;
707
+ const scrollLeft = bodyScrollElem.scrollLeft;
708
+ const toVisibleIndex = Math.floor(scrollLeft / viewCellWidth) - 1;
709
+ const visibleSize = Math.ceil(clientWidth / viewCellWidth) + 1;
710
+ return {
711
+ toVisibleIndex: Math.max(0, toVisibleIndex),
712
+ visibleSize: Math.max(1, visibleSize)
713
+ };
714
+ }
715
+ return {
716
+ toVisibleIndex: 0,
717
+ visibleSize: 6
718
+ };
719
+ };
720
+ const loadScrollXData = () => {
721
+ const {
722
+ isScrollXBig
723
+ } = reactData;
724
+ const {
725
+ scrollXStore
726
+ } = internalData;
727
+ const {
728
+ preloadSize,
729
+ startIndex,
730
+ endIndex,
731
+ offsetSize
732
+ } = scrollXStore;
733
+ const {
734
+ toVisibleIndex,
735
+ visibleSize
736
+ } = handleVirtualXVisible();
737
+ const offsetItem = {
738
+ startIndex: Math.max(0, isScrollXBig ? toVisibleIndex - 1 : toVisibleIndex - 1 - offsetSize - preloadSize),
739
+ endIndex: isScrollXBig ? toVisibleIndex + visibleSize : toVisibleIndex + visibleSize + offsetSize + preloadSize
740
+ };
741
+ scrollXStore.visibleStartIndex = toVisibleIndex - 1;
742
+ scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
743
+ const {
744
+ startIndex: offsetStartIndex,
745
+ endIndex: offsetEndIndex
746
+ } = offsetItem;
747
+ if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
748
+ if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
749
+ scrollXStore.startIndex = offsetStartIndex;
750
+ scrollXStore.endIndex = offsetEndIndex;
751
+ updateScrollXData();
752
+ }
753
+ }
754
+ };
755
+ const updateScrollXData = () => {
756
+ handleTableColumn();
757
+ updateScrollXSpace();
621
758
  return (0, _vue.nextTick)();
622
759
  };
623
- // const updateScrollXSpace = () => {
624
- // }
760
+ const updateScrollXStatus = () => {
761
+ const scrollXLoad = true;
762
+ reactData.scrollXLoad = scrollXLoad;
763
+ return scrollXLoad;
764
+ };
765
+ const handleTableColumn = () => {
766
+ const {
767
+ scrollXLoad
768
+ } = reactData;
769
+ const {
770
+ visibleColumn,
771
+ scrollXStore
772
+ } = internalData;
773
+ const tableColumn = scrollXLoad ? visibleColumn.slice(scrollXStore.startIndex, scrollXStore.endIndex) : visibleColumn.slice(0);
774
+ reactData.tableColumn = tableColumn;
775
+ };
776
+ const updateScrollXSpace = () => {
777
+ const {
778
+ scrollXLoad,
779
+ scrollXWidth,
780
+ viewCellWidth
781
+ } = reactData;
782
+ const {
783
+ elemStore,
784
+ scrollXStore
785
+ } = internalData;
786
+ const bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
787
+ // const headerTableElem = getRefElem(elemStore['main-header-table'])
788
+ // const footerTableElem = getRefElem(elemStore['main-footer-table'])
789
+ const {
790
+ startIndex
791
+ } = scrollXStore;
792
+ let xSpaceLeft = 0;
793
+ if (scrollXLoad) {
794
+ xSpaceLeft = Math.max(0, startIndex * viewCellWidth);
795
+ }
796
+ // if (headerTableElem) {
797
+ // headerTableElem.style.transform = `translate(${xSpaceLeft}px, 0px)`
798
+ // }
799
+ if (bodyTableElem) {
800
+ bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`;
801
+ }
802
+ // if (footerTableElem) {
803
+ // footerTableElem.style.transform = `translate(${xSpaceLeft}px, 0px)`
804
+ // }
805
+ const layoutList = ['header', 'body', 'footer'];
806
+ layoutList.forEach(layout => {
807
+ const xSpaceElem = (0, _util.getRefElem)(elemStore[`main-${layout}-xSpace`]);
808
+ if (xSpaceElem) {
809
+ xSpaceElem.style.width = scrollXLoad ? `${scrollXWidth}px` : '';
810
+ }
811
+ });
812
+ const scrollXSpaceEl = refScrollXSpaceElem.value;
813
+ if (scrollXSpaceEl) {
814
+ scrollXSpaceEl.style.width = `${scrollXWidth}px`;
815
+ }
816
+ calcScrollbar();
817
+ return (0, _vue.nextTick)();
818
+ };
819
+ const triggerScrollXEvent = () => {
820
+ loadScrollXData();
821
+ };
625
822
  const updateScrollYSpace = () => {
626
823
  const {
627
824
  elemStore
@@ -699,6 +896,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
699
896
  };
700
897
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
701
898
  const handleScrollEvent = (evnt, isRollY, isRollX, scrollTop, scrollLeft) => {
899
+ if (isRollX) {
900
+ internalData.lastScrollLeft = scrollLeft;
901
+ }
902
+ if (isRollY) {
903
+ internalData.lastScrollTop = scrollTop;
904
+ }
905
+ reactData.lastScrollTime = Date.now();
702
906
  checkLastSyncScroll(isRollX, isRollY);
703
907
  };
704
908
  const ganttViewMethods = {
@@ -804,11 +1008,16 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
804
1008
  }
805
1009
  },
806
1010
  triggerBodyScrollEvent(evnt) {
1011
+ const {
1012
+ scrollXLoad
1013
+ } = reactData;
807
1014
  const {
808
1015
  elemStore,
809
1016
  inVirtualScroll,
810
1017
  inHeaderScroll,
811
- inFooterScroll
1018
+ inFooterScroll,
1019
+ lastScrollLeft,
1020
+ lastScrollTop
812
1021
  } = internalData;
813
1022
  if (inVirtualScroll) {
814
1023
  return;
@@ -820,40 +1029,46 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
820
1029
  const headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
821
1030
  const xHandleEl = refScrollXHandleElem.value;
822
1031
  const yHandleEl = refScrollYHandleElem.value;
823
- if (headerScrollElem && wrapperEl) {
824
- const isRollX = true;
825
- const isRollY = true;
826
- const currLeftNum = wrapperEl.scrollLeft;
827
- const currTopNum = wrapperEl.scrollTop;
828
- internalData.inBodyScroll = true;
829
- (0, _dom.setScrollLeft)(xHandleEl, currLeftNum);
830
- (0, _dom.setScrollLeft)(headerScrollElem, currLeftNum);
831
- (0, _dom.setScrollTop)(yHandleEl, currTopNum);
832
- syncTableScrollTop(currTopNum);
833
- handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
1032
+ const scrollLeft = wrapperEl.scrollLeft;
1033
+ const scrollTop = wrapperEl.scrollTop;
1034
+ const isRollX = scrollLeft !== lastScrollLeft;
1035
+ const isRollY = scrollTop !== lastScrollTop;
1036
+ internalData.inBodyScroll = true;
1037
+ internalData.scrollRenderType = '';
1038
+ if (isRollY) {
1039
+ (0, _dom.setScrollTop)(yHandleEl, scrollTop);
1040
+ syncTableScrollTop(scrollTop);
834
1041
  }
835
- },
836
- triggerFooterScrollEvent(evnt) {
837
- const {
838
- inVirtualScroll,
839
- inHeaderScroll,
840
- inBodyScroll
841
- } = internalData;
842
- if (inVirtualScroll) {
843
- return;
844
- }
845
- if (inHeaderScroll || inBodyScroll) {
846
- return;
847
- }
848
- const wrapperEl = evnt.currentTarget;
849
- if (wrapperEl) {
850
- const isRollX = true;
851
- const isRollY = false;
852
- const currLeftNum = wrapperEl.scrollLeft;
853
- handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
1042
+ if (isRollX) {
1043
+ internalData.inBodyScroll = true;
1044
+ (0, _dom.setScrollLeft)(xHandleEl, scrollLeft);
1045
+ (0, _dom.setScrollLeft)(headerScrollElem, scrollLeft);
1046
+ if (scrollXLoad) {
1047
+ triggerScrollXEvent();
1048
+ }
854
1049
  }
1050
+ handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, scrollLeft);
855
1051
  },
1052
+ // triggerFooterScrollEvent (evnt) {
1053
+ // const { inVirtualScroll, inHeaderScroll, inBodyScroll } = internalData
1054
+ // if (inVirtualScroll) {
1055
+ // return
1056
+ // }
1057
+ // if (inHeaderScroll || inBodyScroll) {
1058
+ // return
1059
+ // }
1060
+ // const wrapperEl = evnt.currentTarget as HTMLDivElement
1061
+ // if (wrapperEl) {
1062
+ // const isRollX = true
1063
+ // const isRollY = false
1064
+ // const currLeftNum = wrapperEl.scrollLeft
1065
+ // handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum)
1066
+ // }
1067
+ // },
856
1068
  triggerVirtualScrollXEvent(evnt) {
1069
+ const {
1070
+ scrollXLoad
1071
+ } = reactData;
857
1072
  const {
858
1073
  elemStore,
859
1074
  inHeaderScroll,
@@ -872,6 +1087,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
872
1087
  internalData.inVirtualScroll = true;
873
1088
  (0, _dom.setScrollLeft)(headerScrollElem, currLeftNum);
874
1089
  (0, _dom.setScrollLeft)(bodyScrollElem, currLeftNum);
1090
+ if (scrollXLoad) {
1091
+ triggerScrollXEvent();
1092
+ }
875
1093
  handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
876
1094
  }
877
1095
  },
@@ -897,28 +1115,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
897
1115
  }
898
1116
  },
899
1117
  handleUpdateSXSpace() {
900
- const {
901
- scrollXLoad,
902
- scrollXWidth
903
- } = reactData;
904
- const {
905
- elemStore
906
- } = internalData;
907
- const layoutList = ['header', 'body', 'footer'];
908
- layoutList.forEach(layout => {
909
- const xSpaceElem = (0, _util.getRefElem)(elemStore[`main-${layout}-xSpace`]);
910
- if (xSpaceElem) {
911
- xSpaceElem.style.width = scrollXLoad ? `${scrollXWidth}px` : '';
912
- }
913
- });
914
- const scrollXSpaceEl = refScrollXSpaceElem.value;
915
- if (scrollXSpaceEl) {
916
- scrollXSpaceEl.style.width = `${scrollXWidth}px`;
917
- }
918
- calcScrollbar();
919
- return (0, _vue.nextTick)();
1118
+ return updateScrollXSpace();
1119
+ },
1120
+ handleUpdateSYSpace() {
1121
+ return updateScrollYSpace();
920
1122
  },
921
- handleUpdateSYSpace: updateScrollYSpace,
922
1123
  handleUpdateSYStatus(sYLoad) {
923
1124
  reactData.scrollYLoad = sYLoad;
924
1125
  }
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_dom=require("../../ui/src/dom"),_core=require("@vxe-ui/core"),_util=require("./util"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ganttHeader=_interopRequireDefault(require("./gantt-header")),_ganttBody=_interopRequireDefault(require("./gantt-body")),_ganttFooter=_interopRequireDefault(require("./gantt-footer"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let 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}}}let maxYHeight=5e6;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",setup(_,W){var e=_xeUtils.default.uniqueId();let s=(0,_vue.inject)("$xeGantt",{}),{computeTaskOpts:$,computeStartField:U,computeEndField:M,computeScrollbarOpts:x,computeScrollbarXToTop:y,computeScrollbarYToLeft:w}=s.getComputeMaps(),i=(0,_vue.ref)(),S=(0,_vue.ref)(),b=(0,_vue.ref)(),o=(0,_vue.ref)(),T=(0,_vue.ref)(),E=(0,_vue.ref)(),n=(0,_vue.ref)(),D=(0,_vue.ref)(),H=(0,_vue.ref)(),R=(0,_vue.ref)(),C=(0,_vue.ref)(),a=(0,_vue.ref)(),d=(0,_vue.ref)(),L=(0,_vue.ref)(),k=(0,_vue.reactive)({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:20}),q=createInternalData(),X={refElem:i},F={},t={xID:e,props:_,context:W,reactData:k,internalData:q,getRefMaps:()=>X,getComputeMaps:()=>F},V=e=>{var t=$.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},l=()=>{var t=s.props.treeConfig,a=q.xeTable;let i=null,o=null;if(a){let l=U.value,r=M.value;var c=a.getComputeMaps().computeTreeOpts,{afterFullData:a,afterTreeFullData:v}=a.internalData,c=c.value,h=c.transform,f=c.children||c.childrenField,p=e=>{var t=_xeUtils.default.get(e,l),e=_xeUtils.default.get(e,r);t&&e&&(t=V(t),(!i||i.getTime()>t.getTime())&&(i=t),t=V(e),!o||o.getTime()<t.getTime())&&(o=t)};t?_xeUtils.default.eachTree(v,p,{children:h?c.mapChildrenField:f}):a.forEach(p)}k.minViewDate=i,k.maxViewDate=o,q.startMaps={},q.endMaps={};{t=s.props.treeConfig,v=s.reactData.taskScaleList;let{minViewDate:d,maxViewDate:e}=k;var g=_xeUtils.default.last(v);let l=[],r=[];if(g&&d&&e){let i=g.type;var m=v.find(e=>"week"===e.type);let n=864e5;switch(g.type){case"hour":n=36e5;break;case"minute":n=6e4;break;case"second":n=1e3}var _=d.getTime(),x=e.getTime()-d.getTime(),y=Math.max(5,Math.floor(x/n)+1);switch(g.type){case"day":case"date":if(948672e5<x)return void(k.tableColumn=[],k.headerGroups=[]);break;case"hour":if(80352e5<x)return void(k.tableColumn=[],k.headerGroups=[]);break;case"minute":if(2592e5<x)return void(k.tableColumn=[],k.headerGroups=[]);break;case"second":if(108e5<x)return void(k.tableColumn=[],k.headerGroups=[])}let o={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},s={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}};var w=(t,l,r)=>{if(i!==t){var l=l[t],a=""+l.field;let e=s[t][a];e||(e=l,s[t][a]=e,o[t].push(e)),e&&(e.children||(e.children=[]),e.children.push(r))}};for(let e=0;e<y;e++){var S=new Date(_+e*n),[b,T,E,D,H,R]=_xeUtils.default.toDateString(S,"yyyy-M-d-H-m-s").split("-"),C=S.getDay(),L=C+1,Y=Math.ceil((S.getMonth()+1)/3),S=_xeUtils.default.getYearWeek(S,m?m.startDay:void 0),C={yy:b,M:T,d:E,H:D,m:H,s:R,q:Y,W:S,E:L,e:C},Y={year:{field:b,title:b,dateObj:C},quarter:{field:b+"_q"+Y,title:""+Y,dateObj:C},month:{field:b+"_"+T,title:T,dateObj:C},week:{field:b+"_W"+S,title:""+S,dateObj:C},day:{field:b+`_${T}_${E}_E`+L,title:""+L,dateObj:C},date:{field:b+`_${T}_`+E,title:E,dateObj:C},hour:{field:b+`_${T}_${E}_`+D,title:D,dateObj:C},minute:{field:b+`_${T}_${E}_${D}_`+H,title:H,dateObj:C},second:{field:b+`_${T}_${E}_${D}_${H}_`+R,title:R,dateObj:C}},S=Y[i];g.level<19&&w("year",Y,S),g.level<17&&w("quarter",Y,S),g.level<14&&w("month",Y,S),g.level<13&&w("week",Y,S),g.level<11&&w("day",Y,S),g.level<12&&w("date",Y,S),g.level<7&&w("hour",Y,S),g.level<5&&w("minute",Y,S),l.push(S)}v.forEach(e=>{var t;e.type===i?r.push({scaleItem:e,columns:l}):((t=o[e.type]||[])&&t.forEach(e=>{e.childCount=e.children?e.children.length:0,e.children=void 0}),r.push({scaleItem:e,columns:t}))});let u=q.xeTable;if(u){let i=U.value,o=M.value;var v=u.getComputeMaps().computeTreeOpts,{afterFullData:h,afterTreeFullData:c}=u.internalData,v=v.value,f=v.transform,a=v.children||v.childrenField;let s={};p=e=>{var t,l=u.getRowid(e),r=_xeUtils.default.get(e,i),a=_xeUtils.default.get(e,o);r&&a&&(r=V(r),a=V(a),t=Math.floor((r.getTime()-d.getTime())/n),a=Math.floor((a.getTime()-r.getTime())/n)+1,s[l]={row:e,rowid:l,oLeftSize:t,oWidthSize:a})};t?_xeUtils.default.eachTree(c,p,{children:f?v.mapChildrenField:a}):h.forEach(p),q.chartMaps=s}}k.tableColumn=l,k.headerGroups=r}},c=()=>{var{scrollXWidth:e,scrollYHeight:t}=k,l=q.elemStore,r=x.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),a=o.value,i=n.value;l&&(t=t>l.clientHeight,i&&(k.scrollbarWidth=r.width||i.offsetWidth-i.clientWidth||14),k.overflowY=t,i=e>l.clientWidth,a&&(k.scrollbarHeight=r.height||a.offsetHeight-a.clientHeight||14),k.overflowX=i)},Y=()=>{let l=k.viewCellWidth,{elemStore:e,chartMaps:r}=q;var t=(0,_util.getRefElem)(e["main-chart-wrapper"]);return t&&_xeUtils.default.arrayEach(t.children,e=>{var t=e.children[0];t&&(e=(e=e.getAttribute("rowid"))?r[e]:null)&&(t.style.left=l*e.oLeftSize+"px",t.style.width=l*e.oWidthSize+"px")}),(0,_vue.nextTick)()},v=()=>{var{scrollbarWidth:o,scrollbarHeight:s,tableColumn:n,headerGroups:u}=k,d=q.elemStore,c=q.xeTable,v=i.value;if(v&&v.clientHeight){var h=x.value,f=y.value,p=w.value,g=T.value,m=E.value,_=S.value;let e=o;o=s;let t=0,l=0,r=0,a=(c&&(s=c.internalData,t=s.tBodyHeight,l=s.tHeaderHeight,r=s.tFooterHeight),"visible");(p||h.y&&!1===h.y.visible)&&(e=0,a="hidden");c=(0,_util.getRefElem)(d["main-header-scroll"]),s=(c&&(c.style.height=l+"px",c.style.setProperty("--vxe-ui-gantt-view-cell-height",l/u.length+"px")),(0,_util.getRefElem)(d["main-body-scroll"])),p=(s&&(s.style.height=t+"px"),(0,_util.getRefElem)(d["main-footer-scroll"])),h=(p&&(p.style.height=r+"px"),_&&(_.style.height=o+"px",_.style.visibility="visible"),H.value),c=(h&&(h.style.left=f?e+"px":"",h.style.width=v.clientWidth-e+"px"),g&&(g.style.width=f?e+"px":"",g.style.display=f&&o?"block":""),m&&(m.style.width=f?"":e+"px",m.style.display=!f&&o?"block":""),b.value),u=(c&&(c.style.width=e+"px",c.style.height=t+l+r+"px",c.style.visibility=a),D.value),p=(u&&(u.style.height=l+"px",u.style.display=l?"block":""),R.value),_=(p&&(p.style.height=t+"px",p.style.top=l+"px"),C.value),h=(_&&(_.style.height=r+"px",_.style.top=l+t+"px",_.style.display=r?"block":""),L.value);h&&(k.viewCellWidth=h.clientWidth||40);let i=k.viewCellWidth*n.length;s&&0<(g=(v=s.clientWidth)-i)&&(k.viewCellWidth+=Math.floor(g/n.length),i=v);m=(0,_util.getRefElem)(d["main-header-table"]),f=(0,_util.getRefElem)(d["main-body-table"]);return m&&(m.style.width=i+"px"),f&&(f.style.width=i+"px"),k.scrollXWidth=i,Y()}},r=()=>(c(),v(),Y(),(0,_vue.nextTick)());let u=(e,t,l,r,a)=>{var i;i=q.lcsTimeout,k.lazScrollLoading=!0,i&&clearTimeout(i),q.lcsTimeout=setTimeout(()=>{q.lcsRunTime=Date.now(),q.lcsTimeout=void 0,q.intoRunScroll=!1,q.inVirtualScroll=!1,q.inWheelScroll=!1,q.inHeaderScroll=!1,q.inBodyScroll=!1,q.inFooterScroll=!1,k.lazScrollLoading=!1},200)},h=e=>{var t=q.xeTable;t&&(t=t.internalData.elemStore,t=(0,_util.getRefElem)(t["main-body-scroll"]))&&(t.scrollTop=e)};e={handleUpdateStyle:v,handleLazyRecalculate:r,handleUpdateCurrentRow(e){var t,l,r=q.xeTable,a=i.value;r&&a&&(e?(t=r.props.highlightCurrentRow,l=r.getComputeMaps().computeRowOpts,(l.value.isCurrent||t)&&_xeUtils.default.arrayEach(a.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${r.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--current"))):_xeUtils.default.arrayEach(a.querySelectorAll(".vxe-gantt-view--body-row.row--current"),e=>(0,_dom.removeClass)(e,"row--current")))},handleUpdateHoverRow(e){var t=q.xeTable,l=i.value;t&&l&&(e?_xeUtils.default.arrayEach(l.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${t.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--hover")):_xeUtils.default.arrayEach(l.querySelectorAll(".vxe-gantt-view--body-row.row--hover"),e=>(0,_dom.removeClass)(e,"row--hover")))},triggerHeaderScrollEvent(e){var{elemStore:t,inVirtualScroll:l,inBodyScroll:r,inFooterScroll:a}=q;l||r||a||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-body-scroll"]),a=o.value,r&&l&&(e=l.scrollLeft,q.inHeaderScroll=!0,(0,_dom.setScrollLeft)(a,e),(0,_dom.setScrollLeft)(r,e),u(0,0,0,l.scrollTop)))},triggerBodyScrollEvent(e){var t,{elemStore:l,inVirtualScroll:r,inHeaderScroll:a,inFooterScroll:i}=q;r||a||i||(r=e.currentTarget,a=(0,_util.getRefElem)(l["main-header-scroll"]),i=o.value,e=n.value,a&&r&&(l=r.scrollLeft,t=r.scrollTop,q.inBodyScroll=!0,(0,_dom.setScrollLeft)(i,l),(0,_dom.setScrollLeft)(a,l),(0,_dom.setScrollTop)(e,t),h(t),u(0,0,0,r.scrollTop)))},triggerFooterScrollEvent(e){var{inVirtualScroll:t,inHeaderScroll:l,inBodyScroll:r}=q;t||l||r||(t=e.currentTarget)&&(t.scrollLeft,u(0,0,0,t.scrollTop))},triggerVirtualScrollXEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:r}=q;l||r||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-header-scroll"]),e=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(t=l.scrollLeft,q.inVirtualScroll=!0,(0,_dom.setScrollLeft)(r,t),(0,_dom.setScrollLeft)(e,t),u(0,0,0,l.scrollTop)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:r}=q;l||r||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,q.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,e),h(e),u(0,0,0,0,l.scrollLeft)))},handleUpdateSXSpace(){let{scrollXLoad:t,scrollXWidth:l}=k,r=q.elemStore;["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(r[`main-${e}-xSpace`]);e&&(e.style.width=t?l+"px":"")});var e=a.value;return e&&(e.style.width=l+"px"),c(),(0,_vue.nextTick)()},handleUpdateSYSpace:()=>{var e=q.elemStore,t=q.xeTable,l=(0,_util.getRefElem)(e["main-body-scroll"]),r=(0,_util.getRefElem)(e["main-body-table"]);let a=0,i=0,o=!1,s=(t&&(t=t.reactData,a=t.scrollYTop,i=t.scrollYHeight,o=t.isScrollYBig),i),n=a,u=0;l&&(u=l.clientHeight),o&&(n=l&&r&&l.scrollTop+u>=maxYHeight?maxYHeight-r.clientHeight:(maxYHeight-u)*(a/(i-u)),s=maxYHeight);t=(0,_util.getRefElem)(e["main-chart-wrapper"]),r&&(r.style.transform=`translate(${k.scrollXLeft||0}px, ${n}px)`),t&&(t.style.transform=`translate(${k.scrollXLeft||0}px, ${n}px)`),l=(0,_util.getRefElem)(e["main-body-ySpace"]),l&&(l.style.height=s?s+"px":""),r=d.value;return r&&(r.style.height=s?s+"px":""),k.scrollYTop=n,k.scrollYHeight=i,k.isScrollYBig=o,c(),(0,_vue.nextTick)().then(()=>{v()})},handleUpdateSYStatus(e){k.scrollYLoad=e}};let I=()=>{r()},f=(Object.assign(t,{refreshData(){return l(),r()},updateViewData(){var e=q.xeTable;return e&&(e=e.reactData.tableData,k.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(q.xeTable=e),(0,_vue.nextTick)()}},e),()=>(0,_vue.h)("div",{key:"vsx",ref:S,class:"vxe-gantt-view--scroll-x-virtual"},[(0,_vue.h)("div",{ref:T,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:H,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:o,class:"vxe-gantt-view--scroll-x-handle",onScroll:t.triggerVirtualScrollXEvent},[(0,_vue.h)("div",{ref:a,class:"vxe-gantt-view--scroll-x-space"})])]),(0,_vue.h)("div",{ref:E,class:"vxe-gantt-view--scroll-x-right-corner"})])),p=()=>(0,_vue.h)("div",{ref:b,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:D,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:R,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--scroll-y-handle",onScroll:t.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:d,class:"vxe-gantt-view--scroll-y-space"})])]),(0,_vue.h)("div",{ref:C,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),g=()=>(0,_vue.h)("div",{class:"vxe-gantt-view--viewport-wrapper"},[(0,_vue.h)(_ganttHeader.default),(0,_vue.h)(_ganttBody.default),(0,_vue.h)(_ganttFooter.default)]),O=()=>{var e=w.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[p(),g()]:[g(),p()])};let m=(0,_vue.ref)(0);return(0,_vue.watch)(()=>k.tableData,()=>{m.value++}),(0,_vue.watch)(()=>k.tableData.length,()=>{m.value++}),(0,_vue.watch)(m,()=>{l()}),(0,_vue.onMounted)(()=>{globalEvents.on(t,"resize",I)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(t,"keydown"),_xeUtils.default.assign(q,createInternalData())}),t.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:r}=k,a=y.value;return(0,_vue.h)("div",{ref:i,class:["vxe-gantt-view",{"is--scroll-y":t,"is--scroll-x":e,"is--virtual-x":l,"is--virtual-y":r}]},[(0,_vue.h)("div",{class:"vxe-gantt-view--render-wrapper"},a?[f(),O()]:[O(),f()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",t),t},render(){return this.renderVN()}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_dom=require("../../ui/src/dom"),_core=require("@vxe-ui/core"),_util=require("./util"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ganttHeader=_interopRequireDefault(require("./gantt-header")),_ganttBody=_interopRequireDefault(require("./gantt-body")),_ganttFooter=_interopRequireDefault(require("./gantt-footer"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let globalEvents=_core.VxeUI.globalEvents;function createInternalData(){return{xeTable:null,visibleColumn:[],startMaps:{},endMaps:{},chartMaps:{},elemStore:{},scrollXStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0},lastScrollTop:0,lastScrollLeft:0}}let maxYHeight=5e6;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",setup(g,x){var e=_xeUtils.default.uniqueId();let H=(0,_vue.inject)("$xeGantt",{}),{computeTaskOpts:_,computeStartField:C,computeEndField:X,computeScrollbarOpts:S,computeScrollbarXToTop:b,computeScrollbarYToLeft:w}=H.getComputeMaps(),i=(0,_vue.ref)(),T=(0,_vue.ref)(),E=(0,_vue.ref)(),d=(0,_vue.ref)(),D=(0,_vue.ref)(),R=(0,_vue.ref)(),c=(0,_vue.ref)(),I=(0,_vue.ref)(),L=(0,_vue.ref)(),M=(0,_vue.ref)(),V=(0,_vue.ref)(),n=(0,_vue.ref)(),u=(0,_vue.ref)(),Y=(0,_vue.ref)(),U=(0,_vue.reactive)({scrollXLoad:!1,scrollYLoad:!1,overflowY:!0,overflowX:!0,scrollbarWidth:0,scrollbarHeight:0,lastScrollTime: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:20}),W=createInternalData(),y={refElem:i},$={},t={xID:e,props:g,context:x,reactData:U,internalData:W,getRefMaps:()=>y,getComputeMaps:()=>$},k=e=>{var t=_.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},l=()=>{var e=H.props.treeConfig,t=W.xeTable;let a=null,i=null;if(t){let l=C.value,r=X.value;var o=t.getComputeMaps().computeTreeOpts,{afterFullData:t,afterTreeFullData:s}=t.internalData,o=o.value,n=o.transform,d=o.children||o.childrenField,c=e=>{var t=_xeUtils.default.get(e,l),e=_xeUtils.default.get(e,r);t&&e&&(t=k(t),(!a||a.getTime()>t.getTime())&&(a=t),t=k(e),!i||i.getTime()<t.getTime())&&(i=t)};e?_xeUtils.default.eachTree(s,c,{children:n?o.mapChildrenField:d}):t.forEach(c)}U.minViewDate=a,U.maxViewDate=i,W.startMaps={},W.endMaps={},(()=>{var e=H.props.treeConfig,t=H.reactData.taskScaleList;let{minViewDate:c,maxViewDate:l}=U;var r=W.scrollXStore,a=_xeUtils.default.last(t);let u=[],v=[];if(r.startIndex=0,r.endIndex=1,a&&c&&l){let i=a.type;var h=t.find(e=>"week"===e.type);let n=864e5;switch(a.type){case"hour":n=36e5;break;case"minute":n=6e4;break;case"second":n=1e3}var f=c.getTime(),r=l.getTime()-c.getTime(),m=Math.max(5,Math.floor(r/n)+1);let o={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},s={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}};var p=(t,l,r)=>{if(i!==t){var l=l[t],a=""+l.field;let e=s[t][a];e||(e=l,s[t][a]=e,o[t].push(e)),e&&(e.children||(e.children=[]),e.children.push(r))}};for(let e=0;e<m;e++){var g=new Date(f+e*n),[x,_,y,S,b,w]=_xeUtils.default.toDateString(g,"yyyy-M-d-H-m-s").split("-"),T=g.getDay(),E=T+1,D=Math.ceil((g.getMonth()+1)/3),g=_xeUtils.default.getYearWeek(g,h?h.startDay:void 0),T={yy:x,M:_,d:y,H:S,m:b,s:w,q:D,W:g,E:E,e:T},D={year:{field:x,title:x,dateObj:T},quarter:{field:x+"_q"+D,title:""+D,dateObj:T},month:{field:x+"_"+_,title:_,dateObj:T},week:{field:x+"_W"+g,title:""+g,dateObj:T},day:{field:x+`_${_}_${y}_E`+E,title:""+E,dateObj:T},date:{field:x+`_${_}_`+y,title:y,dateObj:T},hour:{field:x+`_${_}_${y}_`+S,title:S,dateObj:T},minute:{field:x+`_${_}_${y}_${S}_`+b,title:b,dateObj:T},second:{field:x+`_${_}_${y}_${S}_${b}_`+w,title:w,dateObj:T}},g=D[i];a.level<19&&p("year",D,g),a.level<17&&p("quarter",D,g),a.level<14&&p("month",D,g),a.level<13&&p("week",D,g),a.level<11&&p("day",D,g),a.level<12&&p("date",D,g),a.level<7&&p("hour",D,g),a.level<5&&p("minute",D,g),u.push(g)}t.forEach(e=>{var t;e.type===i?v.push({scaleItem:e,columns:u}):((t=o[e.type]||[])&&t.forEach(e=>{e.childCount=e.children?e.children.length:0,e.children=void 0}),v.push({scaleItem:e,columns:t}))});let d=W.xeTable;if(d){let i=C.value,o=X.value;var r=d.getComputeMaps().computeTreeOpts,{afterFullData:t,afterTreeFullData:R}=d.internalData,r=r.value,I=r.transform,L=r.children||r.childrenField;let s={};var M=e=>{var t,l=d.getRowid(e),r=_xeUtils.default.get(e,i),a=_xeUtils.default.get(e,o);r&&a&&(r=k(r),a=k(a),t=Math.floor((r.getTime()-c.getTime())/n),a=Math.floor((a.getTime()-r.getTime())/n)+1,s[l]={row:e,rowid:l,oLeftSize:t,oWidthSize:a})};e?_xeUtils.default.eachTree(R,M,{children:I?r.mapChildrenField:L}):t.forEach(M),W.chartMaps=s}}W.visibleColumn=u,U.headerGroups=v,O(),B()})()},v=()=>{var{scrollXWidth:e,scrollYHeight:t}=U,l=W.elemStore,r=S.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),a=d.value,i=c.value;l&&(t=t>l.clientHeight,i&&(U.scrollbarWidth=r.width||i.offsetWidth-i.clientWidth||14),U.overflowY=t,i=e>l.clientWidth,a&&(U.scrollbarHeight=r.height||a.offsetHeight-a.clientHeight||14),U.overflowX=i)},q=()=>{let l=U.viewCellWidth,{elemStore:e,chartMaps:r}=W;var t=(0,_util.getRefElem)(e["main-chart-wrapper"]);return t&&_xeUtils.default.arrayEach(t.children,e=>{var t=e.children[0];t&&(e=(e=e.getAttribute("rowid"))?r[e]:null)&&(t.style.left=l*e.oLeftSize+"px",t.style.width=l*e.oWidthSize+"px")}),(0,_vue.nextTick)()},h=()=>{var{scrollbarWidth:s,scrollbarHeight:n,headerGroups:d,tableColumn:c}=U,{elemStore:u,visibleColumn:v}=W,h=W.xeTable,f=i.value;if(f&&f.clientHeight){var m=S.value,p=b.value,g=w.value,x=D.value,_=R.value,y=T.value;let e=s;s=n;let t=0,l=0,r=0,a=(h&&(n=h.internalData,t=n.tBodyHeight,l=n.tHeaderHeight,r=n.tFooterHeight),"visible");(g||m.y&&!1===m.y.visible)&&(e=0,a="hidden");h=(0,_util.getRefElem)(u["main-header-scroll"]),n=(h&&(h.style.height=l+"px",h.style.setProperty("--vxe-ui-gantt-view-cell-height",l/d.length+"px")),(0,_util.getRefElem)(u["main-body-scroll"])),g=(n&&(n.style.height=t+"px"),(0,_util.getRefElem)(u["main-footer-scroll"])),m=(g&&(g.style.height=r+"px"),y&&(y.style.height=s+"px",y.style.visibility="visible"),L.value),h=(m&&(m.style.left=p?e+"px":"",m.style.width=f.clientWidth-e+"px"),x&&(x.style.width=p?e+"px":"",x.style.display=p&&s?"block":""),_&&(_.style.width=p?"":e+"px",_.style.display=!p&&s?"block":""),E.value),d=(h&&(h.style.width=e+"px",h.style.height=t+l+r+"px",h.style.visibility=a),I.value),g=(d&&(d.style.height=l+"px",d.style.display=l?"block":""),M.value),y=(g&&(g.style.height=t+"px",g.style.top=l+"px"),V.value),m=(y&&(y.style.height=r+"px",y.style.top=l+t+"px",y.style.display=r?"block":""),Y.value);let i=40,o=(i=m?m.clientWidth||40:i)*v.length;n&&0<(x=(f=n.clientWidth)-o)&&(i+=Math.floor(x/v.length),o=f),U.viewCellWidth=i;_=(0,_util.getRefElem)(u["main-header-table"]),p=(0,_util.getRefElem)(u["main-body-table"]),s=i*c.length;return _&&(_.style.width=o+"px"),p&&(p.style.width=s+"px"),U.scrollXWidth=o,q()}},o=()=>{var e=i.value;return W.rceRunTime=Date.now(),(e&&e.clientWidth?(v(),h(),q(),z):(0,_vue.nextTick))()},r=()=>new Promise(e=>{var{rceTimeout:t,rceRunTime:l}=W,r=W.xeTable;let a=50;r&&(r=r.getComputeMaps().computeResizeOpts,r=r.value,a=r.refreshDelay||50),!t||(clearTimeout(t),l&&l+(a-5)<Date.now())?e(o()):(0,_vue.nextTick)(()=>{e()}),W.rceTimeout=setTimeout(()=>{W.rceTimeout=void 0,o()},a)}),z=()=>(0,_vue.nextTick)().then(()=>{var e,t=U.scrollXLoad,l=W.scrollXStore;t?({toVisibleIndex:t,visibleSize:e}=f(),l.preloadSize=1,l.offsetSize=2,l.visibleSize=e,l.endIndex=Math.max(l.startIndex+l.visibleSize+2,l.endIndex),l.visibleStartIndex=Math.max(l.startIndex,t),l.visibleEndIndex=Math.min(l.endIndex,t+e),F().then(()=>{a()})):s()}),f=()=>{var e,t=U.viewCellWidth,l=W.elemStore,l=(0,_util.getRefElem)(l["main-body-scroll"]);return l?(e=l.clientWidth,l=l.scrollLeft,l=Math.floor(l/t)-1,e=Math.ceil(e/t)+1,{toVisibleIndex:Math.max(0,l),visibleSize:Math.max(1,e)}):{toVisibleIndex:0,visibleSize:6}},a=()=>{var e=U.isScrollXBig,t=W.scrollXStore,{preloadSize:l,startIndex:r,endIndex:a,offsetSize:i}=t,{toVisibleIndex:o,visibleSize:s}=f(),e={startIndex:Math.max(0,e?o-1:o-1-i-l),endIndex:e?o+s:o+s+i+l},{startIndex:i,endIndex:l}=(t.visibleStartIndex=o-1,t.visibleEndIndex=o+s+1,e);!(o<=r||a-s-1<=o)||r===i&&a===l||(t.startIndex=i,t.endIndex=l,F())},F=()=>(B(),s(),(0,_vue.nextTick)()),O=()=>U.scrollXLoad=!0,B=()=>{var e=U.scrollXLoad,{visibleColumn:t,scrollXStore:l}=W,e=e?t.slice(l.startIndex,l.endIndex):t.slice(0);U.tableColumn=e},s=()=>{let{scrollXLoad:t,scrollXWidth:l,viewCellWidth:e}=U,{elemStore:r,scrollXStore:a}=W;var i=(0,_util.getRefElem)(r["main-body-table"]),o=a.startIndex;let s=0;t&&(s=Math.max(0,o*e)),i&&(i.style.transform=`translate(${s}px, ${U.scrollYTop||0}px)`);["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(r[`main-${e}-xSpace`]);e&&(e.style.width=t?l+"px":"")});o=n.value;return o&&(o.style.width=l+"px"),v(),(0,_vue.nextTick)()},j=()=>{a()},m=(e,t,l,r,a)=>{l&&(W.lastScrollLeft=a),t&&(W.lastScrollTop=r),U.lastScrollTime=Date.now(),l=W.lcsTimeout,U.lazScrollLoading=!0,l&&clearTimeout(l),W.lcsTimeout=setTimeout(()=>{W.lcsRunTime=Date.now(),W.lcsTimeout=void 0,W.intoRunScroll=!1,W.inVirtualScroll=!1,W.inWheelScroll=!1,W.inHeaderScroll=!1,W.inBodyScroll=!1,W.inFooterScroll=!1,U.lazScrollLoading=!1},200)},G=e=>{var t=W.xeTable;t&&(t=t.internalData.elemStore,t=(0,_util.getRefElem)(t["main-body-scroll"]))&&(t.scrollTop=e)};e={handleUpdateStyle:h,handleLazyRecalculate:r,handleUpdateCurrentRow(e){var t,l,r=W.xeTable,a=i.value;r&&a&&(e?(t=r.props.highlightCurrentRow,l=r.getComputeMaps().computeRowOpts,(l.value.isCurrent||t)&&_xeUtils.default.arrayEach(a.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${r.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--current"))):_xeUtils.default.arrayEach(a.querySelectorAll(".vxe-gantt-view--body-row.row--current"),e=>(0,_dom.removeClass)(e,"row--current")))},handleUpdateHoverRow(e){var t=W.xeTable,l=i.value;t&&l&&(e?_xeUtils.default.arrayEach(l.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${t.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--hover")):_xeUtils.default.arrayEach(l.querySelectorAll(".vxe-gantt-view--body-row.row--hover"),e=>(0,_dom.removeClass)(e,"row--hover")))},triggerHeaderScrollEvent(e){var{elemStore:t,inVirtualScroll:l,inBodyScroll:r,inFooterScroll:a}=W;l||r||a||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-body-scroll"]),a=d.value,r&&l&&(e=l.scrollLeft,W.inHeaderScroll=!0,(0,_dom.setScrollLeft)(a,e),(0,_dom.setScrollLeft)(r,e),m(0,!1,!0,l.scrollTop,e)))},triggerBodyScrollEvent(e){var t,l=U.scrollXLoad,{elemStore:r,inVirtualScroll:a,inHeaderScroll:i,inFooterScroll:o,lastScrollLeft:s,lastScrollTop:n}=W;a||i||o||(a=e.currentTarget,i=(0,_util.getRefElem)(r["main-header-scroll"]),o=d.value,e=c.value,s=(r=a.scrollLeft)!==s,n=(t=a.scrollTop)!==n,W.inBodyScroll=!0,W.scrollRenderType="",n&&((0,_dom.setScrollTop)(e,t),G(t)),s&&(W.inBodyScroll=!0,(0,_dom.setScrollLeft)(o,r),(0,_dom.setScrollLeft)(i,r),l)&&j(),m(0,n,s,a.scrollTop,r))},triggerVirtualScrollXEvent(e){var t=U.scrollXLoad,{elemStore:l,inHeaderScroll:r,inBodyScroll:a}=W;r||a||(r=e.currentTarget,a=(0,_util.getRefElem)(l["main-header-scroll"]),e=(0,_util.getRefElem)(l["main-body-scroll"]),r&&(l=r.scrollLeft,W.inVirtualScroll=!0,(0,_dom.setScrollLeft)(a,l),(0,_dom.setScrollLeft)(e,l),t&&j(),m(0,!1,!0,r.scrollTop,l)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:r}=W;l||r||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,W.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,e),G(e),m(0,!0,!1,e,l.scrollLeft)))},handleUpdateSXSpace(){return s()},handleUpdateSYSpace(){return(()=>{var e=W.elemStore,t=W.xeTable,l=(0,_util.getRefElem)(e["main-body-scroll"]),r=(0,_util.getRefElem)(e["main-body-table"]);let a=0,i=0,o=!1,s=(t&&(t=t.reactData,a=t.scrollYTop,i=t.scrollYHeight,o=t.isScrollYBig),i),n=a,d=0;l&&(d=l.clientHeight),o&&(n=l&&r&&l.scrollTop+d>=maxYHeight?maxYHeight-r.clientHeight:(maxYHeight-d)*(a/(i-d)),s=maxYHeight);t=(0,_util.getRefElem)(e["main-chart-wrapper"]),r&&(r.style.transform=`translate(${U.scrollXLeft||0}px, ${n}px)`),t&&(t.style.transform=`translate(${U.scrollXLeft||0}px, ${n}px)`),l=(0,_util.getRefElem)(e["main-body-ySpace"]),l&&(l.style.height=s?s+"px":""),r=u.value;return r&&(r.style.height=s?s+"px":""),U.scrollYTop=n,U.scrollYHeight=i,U.isScrollYBig=o,v(),(0,_vue.nextTick)().then(()=>{h()})})()},handleUpdateSYStatus(e){U.scrollYLoad=e}};let A=()=>{r()},P=(Object.assign(t,{refreshData(){return l(),r()},updateViewData(){var e=W.xeTable;return e&&(e=e.reactData.tableData,U.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(W.xeTable=e),(0,_vue.nextTick)()}},e),()=>(0,_vue.h)("div",{key:"vsx",ref:T,class:"vxe-gantt-view--scroll-x-virtual"},[(0,_vue.h)("div",{ref:D,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:d,class:"vxe-gantt-view--scroll-x-handle",onScroll:t.triggerVirtualScrollXEvent},[(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--scroll-x-space"})])]),(0,_vue.h)("div",{ref:R,class:"vxe-gantt-view--scroll-x-right-corner"})])),N=()=>(0,_vue.h)("div",{ref:E,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:I,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:M,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:c,class:"vxe-gantt-view--scroll-y-handle",onScroll:t.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:u,class:"vxe-gantt-view--scroll-y-space"})])]),(0,_vue.h)("div",{ref:V,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),J=()=>(0,_vue.h)("div",{class:"vxe-gantt-view--viewport-wrapper"},[(0,_vue.h)(_ganttHeader.default),(0,_vue.h)(_ganttBody.default),(0,_vue.h)(_ganttFooter.default)]),K=()=>{var e=w.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[N(),J()]:[J(),N()])};let p=(0,_vue.ref)(0);return(0,_vue.watch)(()=>U.tableData,()=>{p.value++}),(0,_vue.watch)(()=>U.tableData.length,()=>{p.value++}),(0,_vue.watch)(p,()=>{l()}),(0,_vue.onMounted)(()=>{globalEvents.on(t,"resize",A)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(t,"keydown"),_xeUtils.default.assign(W,createInternalData())}),t.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:r}=U,a=b.value;return(0,_vue.h)("div",{ref:i,class:["vxe-gantt-view",{"is--scroll-y":t,"is--scroll-x":e,"is--virtual-x":l,"is--virtual-y":r}]},[(0,_vue.h)("div",{class:"vxe-gantt-view--render-wrapper"},a?[P(),K()]:[K(),P()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:Y,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",t),t},render(){return this.renderVN()}});
@@ -830,20 +830,20 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
830
830
  let tipHeight = 0;
831
831
  if (rsNumLeftEl) {
832
832
  if (offsetLeft < 0) {
833
+ rsNumLeftEl.style.display = 'none';
834
+ } else {
833
835
  rsNumLeftEl.textContent = `${targetTableWidth}px`;
834
836
  rsNumLeftEl.style.display = 'block';
835
837
  tipHeight = rsNumLeftEl.offsetHeight;
836
- } else {
837
- rsNumLeftEl.style.display = 'none';
838
838
  }
839
839
  }
840
840
  if (rsNumRightEl) {
841
841
  if (offsetLeft < 0) {
842
- rsNumRightEl.style.display = 'none';
843
- } else {
844
842
  rsNumRightEl.textContent = `${Math.floor(containerRect.width - targetTableWidth)}px`;
845
843
  rsNumRightEl.style.display = 'block';
846
844
  tipHeight = rsNumRightEl.offsetHeight;
845
+ } else {
846
+ rsNumRightEl.style.display = 'none';
847
847
  }
848
848
  }
849
849
  const tipTop = evnt.clientY - containerRect.top - tipHeight / 2;
@@ -2093,9 +2093,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
2093
2093
  class: 'vxe-gantt--resizable-split-tip-number'
2094
2094
  }, [(0, _vue.h)('div', {
2095
2095
  class: 'vxe-gantt--resizable-split-number-left'
2096
- }, '10px'), (0, _vue.h)('div', {
2096
+ }), (0, _vue.h)('div', {
2097
2097
  class: 'vxe-gantt--resizable-split-number-right'
2098
- }, '20px')])]), (0, _vue.h)('div', {
2098
+ })])]), (0, _vue.h)('div', {
2099
2099
  class: 'vxe-gantt--border-line'
2100
2100
  })]));
2101
2101
  break;