vxe-gantt 4.0.23 → 4.0.24
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-body.js +29 -10
- package/es/gantt/src/gantt-view.js +94 -4
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/ui/src/utils.js +3 -0
- package/lib/gantt/src/gantt-body.js +34 -6
- package/lib/gantt/src/gantt-body.min.js +1 -1
- package/lib/gantt/src/gantt-view.js +98 -4
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/index.umd.js +136 -11
- 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/utils.js +4 -0
- package/lib/ui/src/utils.min.js +1 -1
- package/package.json +3 -3
- package/packages/gantt/src/gantt-body.ts +38 -17
- package/packages/gantt/src/gantt-view.ts +95 -4
- package/packages/ui/src/utils.ts +4 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { h, inject, ref, onMounted, onUnmounted } from 'vue';
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
3
3
|
import { getCellRestHeight } from './util';
|
|
4
|
+
import { getClass } from '../../ui/src/utils';
|
|
5
|
+
import XEUtils from 'xe-utils';
|
|
4
6
|
import GanttViewChartComponent from './gantt-chart';
|
|
5
7
|
const sourceType = 'gantt';
|
|
6
8
|
const viewType = 'body';
|
|
@@ -30,9 +32,10 @@ export default defineVxeComponent({
|
|
|
30
32
|
const { headerGroups } = reactData;
|
|
31
33
|
const { todayDateMaps } = internalData;
|
|
32
34
|
const taskViewOpts = computeTaskViewOpts.value;
|
|
33
|
-
const { showNowLine } = taskViewOpts;
|
|
35
|
+
const { showNowLine, viewStyle } = taskViewOpts;
|
|
34
36
|
const { scaleItem } = headerGroups[headerGroups.length - 1] || {};
|
|
35
|
-
const { field } = column;
|
|
37
|
+
const { field, dateObj } = column;
|
|
38
|
+
const { cellClassName, cellStyle } = viewStyle || {};
|
|
36
39
|
const todayValue = showNowLine && scaleItem ? todayDateMaps[scaleItem.type] : null;
|
|
37
40
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
38
41
|
const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
|
|
@@ -71,16 +74,24 @@ export default defineVxeComponent({
|
|
|
71
74
|
onDblclick: (evnt) => $xeTable.handleRowResizeDblclickEvent(evnt, cellParams)
|
|
72
75
|
}));
|
|
73
76
|
}
|
|
74
|
-
const ctParams = { source: sourceType, type: viewType, row, column, $rowIndex, rowIndex, _rowIndex };
|
|
77
|
+
const ctParams = { source: sourceType, type: viewType, dateObj, row, column, $rowIndex, rowIndex, _rowIndex };
|
|
75
78
|
return h('td', {
|
|
76
79
|
key: $columnIndex,
|
|
77
|
-
class: [
|
|
80
|
+
class: [
|
|
81
|
+
'vxe-gantt-view--body-column',
|
|
82
|
+
{
|
|
78
83
|
'is--now': showNowLine && todayValue === field,
|
|
79
84
|
'col--rs-height': isRsHeight
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
},
|
|
86
|
+
getClass(cellClassName, ctParams)
|
|
87
|
+
],
|
|
88
|
+
style: cellStyle
|
|
89
|
+
? Object.assign({}, XEUtils.isFunction(cellStyle) ? cellStyle(ctParams) : cellStyle, {
|
|
90
|
+
height: `${cellHeight}px`
|
|
91
|
+
})
|
|
92
|
+
: {
|
|
93
|
+
height: `${cellHeight}px`
|
|
94
|
+
},
|
|
84
95
|
onClick(evnt) {
|
|
85
96
|
$xeGantt.handleTaskCellClickEvent(evnt, { row, column });
|
|
86
97
|
},
|
|
@@ -106,6 +117,9 @@ export default defineVxeComponent({
|
|
|
106
117
|
const treeOpts = computeTreeOpts.value;
|
|
107
118
|
const { transform } = treeOpts;
|
|
108
119
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
120
|
+
const taskViewOpts = computeTaskViewOpts.value;
|
|
121
|
+
const { viewStyle } = taskViewOpts;
|
|
122
|
+
const { rowClassName, rowStyle } = viewStyle || {};
|
|
109
123
|
const { tableColumn, scrollYLoad } = reactData;
|
|
110
124
|
const trVNs = [];
|
|
111
125
|
tableData.forEach((row, $rowIndex) => {
|
|
@@ -138,13 +152,18 @@ export default defineVxeComponent({
|
|
|
138
152
|
trOns.onDragend = $xeTable.handleRowDragDragendEvent;
|
|
139
153
|
trOns.onDragover = $xeTable.handleRowDragDragoverEvent;
|
|
140
154
|
}
|
|
141
|
-
|
|
155
|
+
const rowParams = { source: sourceType, type: viewType, row, rowIndex, $rowIndex, _rowIndex };
|
|
156
|
+
trVNs.push(h('tr', Object.assign({ key: treeConfig ? rowid : $rowIndex, class: [
|
|
157
|
+
'vxe-gantt-view--body-row',
|
|
158
|
+
{
|
|
142
159
|
'row--stripe': stripe && (_rowIndex + 1) % 2 === 0,
|
|
143
160
|
'is--new': isNewRow,
|
|
144
161
|
'row--radio': radioOpts.highlight && $xeTable.eqRow(selectRadioRow, row),
|
|
145
162
|
'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
|
|
146
163
|
'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid]
|
|
147
|
-
}
|
|
164
|
+
},
|
|
165
|
+
getClass(rowClassName, rowParams)
|
|
166
|
+
], rowid, style: rowStyle ? XEUtils.isFunction(rowStyle) ? rowStyle(rowParams) : rowStyle : undefined }, trOns), tableColumn.map((column, $columnIndex) => renderColumn($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, column, $columnIndex))));
|
|
148
167
|
let isExpandTree = false;
|
|
149
168
|
let rowChildren = [];
|
|
150
169
|
if (treeConfig && !scrollYLoad && !transform) {
|
|
@@ -8,6 +8,7 @@ import GanttViewHeaderComponent from './gantt-header';
|
|
|
8
8
|
import GanttViewBodyComponent from './gantt-body';
|
|
9
9
|
import GanttViewFooterComponent from './gantt-footer';
|
|
10
10
|
const { globalEvents } = VxeUI;
|
|
11
|
+
const sourceType = 'gantt';
|
|
11
12
|
function createInternalData() {
|
|
12
13
|
return {
|
|
13
14
|
xeTable: null,
|
|
@@ -781,8 +782,7 @@ export default defineVxeComponent({
|
|
|
781
782
|
reactData.lazScrollLoading = false;
|
|
782
783
|
}, 200);
|
|
783
784
|
};
|
|
784
|
-
|
|
785
|
-
const handleScrollEvent = (evnt, isRollY, isRollX, scrollTop, scrollLeft) => {
|
|
785
|
+
const handleScrollData = (isRollY, isRollX, scrollTop, scrollLeft) => {
|
|
786
786
|
if (isRollX) {
|
|
787
787
|
internalData.lastScrollLeft = scrollLeft;
|
|
788
788
|
}
|
|
@@ -792,6 +792,91 @@ export default defineVxeComponent({
|
|
|
792
792
|
reactData.lastScrollTime = Date.now();
|
|
793
793
|
checkLastSyncScroll(isRollX, isRollY);
|
|
794
794
|
};
|
|
795
|
+
const handleScrollEvent = (evnt, isRollY, isRollX, scrollTop, scrollLeft) => {
|
|
796
|
+
const $xeTable = internalData.xeTable;
|
|
797
|
+
const { lastScrollLeft, lastScrollTop } = internalData;
|
|
798
|
+
const xHandleEl = refScrollXHandleElem.value;
|
|
799
|
+
const yHandleEl = refScrollYHandleElem.value;
|
|
800
|
+
if (!xHandleEl || !yHandleEl) {
|
|
801
|
+
return;
|
|
802
|
+
}
|
|
803
|
+
if (!$xeTable) {
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
806
|
+
const { computeScrollXThreshold, computeScrollYThreshold } = $xeTable.getComputeMaps();
|
|
807
|
+
const bodyHeight = yHandleEl.clientHeight;
|
|
808
|
+
const bodyWidth = xHandleEl.clientWidth;
|
|
809
|
+
const scrollHeight = yHandleEl.scrollHeight;
|
|
810
|
+
const scrollWidth = xHandleEl.scrollWidth;
|
|
811
|
+
let isTop = false;
|
|
812
|
+
let isBottom = false;
|
|
813
|
+
let isLeft = false;
|
|
814
|
+
let isRight = false;
|
|
815
|
+
let direction = '';
|
|
816
|
+
let isTopBoundary = false;
|
|
817
|
+
let isBottomBoundary = false;
|
|
818
|
+
let isLeftBoundary = false;
|
|
819
|
+
let isRightBoundary = false;
|
|
820
|
+
if (isRollX) {
|
|
821
|
+
const xThreshold = computeScrollXThreshold.value;
|
|
822
|
+
isLeft = scrollLeft <= 0;
|
|
823
|
+
if (!isLeft) {
|
|
824
|
+
isRight = scrollLeft + bodyWidth >= scrollWidth - 1;
|
|
825
|
+
}
|
|
826
|
+
if (scrollLeft > lastScrollLeft) {
|
|
827
|
+
direction = 'right';
|
|
828
|
+
if (scrollLeft + bodyWidth >= scrollWidth - xThreshold) {
|
|
829
|
+
isRightBoundary = true;
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
else {
|
|
833
|
+
direction = 'left';
|
|
834
|
+
if (scrollLeft <= xThreshold) {
|
|
835
|
+
isLeftBoundary = true;
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
if (isRollY) {
|
|
840
|
+
const yThreshold = computeScrollYThreshold.value;
|
|
841
|
+
isTop = scrollTop <= 0;
|
|
842
|
+
if (!isTop) {
|
|
843
|
+
isBottom = scrollTop + bodyHeight >= scrollHeight - 1;
|
|
844
|
+
}
|
|
845
|
+
if (scrollTop > lastScrollTop) {
|
|
846
|
+
direction = 'bottom';
|
|
847
|
+
if (scrollTop + bodyHeight >= scrollHeight - yThreshold) {
|
|
848
|
+
isBottomBoundary = true;
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
else {
|
|
852
|
+
direction = 'top';
|
|
853
|
+
if (scrollTop <= yThreshold) {
|
|
854
|
+
isTopBoundary = true;
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
handleScrollData(isRollY, isRollX, scrollTop, scrollLeft);
|
|
859
|
+
const evntParams = {
|
|
860
|
+
source: sourceType,
|
|
861
|
+
scrollTop,
|
|
862
|
+
scrollLeft,
|
|
863
|
+
bodyHeight,
|
|
864
|
+
bodyWidth,
|
|
865
|
+
scrollHeight,
|
|
866
|
+
scrollWidth,
|
|
867
|
+
isX: isRollX,
|
|
868
|
+
isY: isRollY,
|
|
869
|
+
isTop,
|
|
870
|
+
isBottom,
|
|
871
|
+
isLeft,
|
|
872
|
+
isRight,
|
|
873
|
+
direction
|
|
874
|
+
};
|
|
875
|
+
if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
|
|
876
|
+
$xeGantt.dispatchEvent('scroll-boundary', evntParams, evnt);
|
|
877
|
+
}
|
|
878
|
+
$xeGantt.dispatchEvent('scroll', evntParams, evnt);
|
|
879
|
+
};
|
|
795
880
|
const ganttViewMethods = {
|
|
796
881
|
refreshData() {
|
|
797
882
|
handleUpdateData();
|
|
@@ -911,7 +996,12 @@ export default defineVxeComponent({
|
|
|
911
996
|
triggerScrollXEvent();
|
|
912
997
|
}
|
|
913
998
|
}
|
|
914
|
-
|
|
999
|
+
if (isRollY) {
|
|
1000
|
+
handleScrollData(isRollY, isRollX, wrapperEl.scrollTop, scrollLeft);
|
|
1001
|
+
}
|
|
1002
|
+
if (isRollX) {
|
|
1003
|
+
handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, scrollLeft);
|
|
1004
|
+
}
|
|
915
1005
|
},
|
|
916
1006
|
// triggerFooterScrollEvent (evnt) {
|
|
917
1007
|
// const { inVirtualScroll, inHeaderScroll, inBodyScroll } = internalData
|
|
@@ -965,7 +1055,7 @@ export default defineVxeComponent({
|
|
|
965
1055
|
internalData.inVirtualScroll = true;
|
|
966
1056
|
setScrollTop(bodyScrollElem, currTopNum);
|
|
967
1057
|
syncTableScrollTop(currTopNum);
|
|
968
|
-
|
|
1058
|
+
handleScrollData(isRollY, isRollX, currTopNum, wrapperEl.scrollLeft);
|
|
969
1059
|
}
|
|
970
1060
|
},
|
|
971
1061
|
handleUpdateSXSpace() {
|
package/es/ui/index.js
CHANGED
package/es/ui/src/log.js
CHANGED
package/es/ui/src/utils.js
CHANGED
|
@@ -42,3 +42,6 @@ export function eqEmptyValue(cellValue) {
|
|
|
42
42
|
export function getStringValue(cellValue) {
|
|
43
43
|
return eqEmptyValue(cellValue) ? '' : cellValue;
|
|
44
44
|
}
|
|
45
|
+
export function getClass(property, params) {
|
|
46
|
+
return property ? XEUtils.isFunction(property) ? property(params) : property : '';
|
|
47
|
+
}
|
|
@@ -7,6 +7,8 @@ exports.default = void 0;
|
|
|
7
7
|
var _vue = require("vue");
|
|
8
8
|
var _comp = require("../../ui/src/comp");
|
|
9
9
|
var _util = require("./util");
|
|
10
|
+
var _utils = require("../../ui/src/utils");
|
|
11
|
+
var _xeUtils = _interopRequireDefault(require("xe-utils"));
|
|
10
12
|
var _ganttChart = _interopRequireDefault(require("./gantt-chart"));
|
|
11
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
14
|
const sourceType = 'gantt';
|
|
@@ -59,14 +61,20 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
59
61
|
} = internalData;
|
|
60
62
|
const taskViewOpts = computeTaskViewOpts.value;
|
|
61
63
|
const {
|
|
62
|
-
showNowLine
|
|
64
|
+
showNowLine,
|
|
65
|
+
viewStyle
|
|
63
66
|
} = taskViewOpts;
|
|
64
67
|
const {
|
|
65
68
|
scaleItem
|
|
66
69
|
} = headerGroups[headerGroups.length - 1] || {};
|
|
67
70
|
const {
|
|
68
|
-
field
|
|
71
|
+
field,
|
|
72
|
+
dateObj
|
|
69
73
|
} = column;
|
|
74
|
+
const {
|
|
75
|
+
cellClassName,
|
|
76
|
+
cellStyle
|
|
77
|
+
} = viewStyle || {};
|
|
70
78
|
const todayValue = showNowLine && scaleItem ? todayDateMaps[scaleItem.type] : null;
|
|
71
79
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
72
80
|
const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
|
|
@@ -108,6 +116,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
108
116
|
const ctParams = {
|
|
109
117
|
source: sourceType,
|
|
110
118
|
type: viewType,
|
|
119
|
+
dateObj,
|
|
111
120
|
row,
|
|
112
121
|
column,
|
|
113
122
|
$rowIndex,
|
|
@@ -119,8 +128,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
119
128
|
class: ['vxe-gantt-view--body-column', {
|
|
120
129
|
'is--now': showNowLine && todayValue === field,
|
|
121
130
|
'col--rs-height': isRsHeight
|
|
122
|
-
}],
|
|
123
|
-
style: {
|
|
131
|
+
}, (0, _utils.getClass)(cellClassName, ctParams)],
|
|
132
|
+
style: cellStyle ? Object.assign({}, _xeUtils.default.isFunction(cellStyle) ? cellStyle(ctParams) : cellStyle, {
|
|
133
|
+
height: `${cellHeight}px`
|
|
134
|
+
}) : {
|
|
124
135
|
height: `${cellHeight}px`
|
|
125
136
|
},
|
|
126
137
|
onClick(evnt) {
|
|
@@ -175,6 +186,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
175
186
|
transform
|
|
176
187
|
} = treeOpts;
|
|
177
188
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
189
|
+
const taskViewOpts = computeTaskViewOpts.value;
|
|
190
|
+
const {
|
|
191
|
+
viewStyle
|
|
192
|
+
} = taskViewOpts;
|
|
193
|
+
const {
|
|
194
|
+
rowClassName,
|
|
195
|
+
rowStyle
|
|
196
|
+
} = viewStyle || {};
|
|
178
197
|
const {
|
|
179
198
|
tableColumn,
|
|
180
199
|
scrollYLoad
|
|
@@ -213,6 +232,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
213
232
|
trOns.onDragend = $xeTable.handleRowDragDragendEvent;
|
|
214
233
|
trOns.onDragover = $xeTable.handleRowDragDragoverEvent;
|
|
215
234
|
}
|
|
235
|
+
const rowParams = {
|
|
236
|
+
source: sourceType,
|
|
237
|
+
type: viewType,
|
|
238
|
+
row,
|
|
239
|
+
rowIndex,
|
|
240
|
+
$rowIndex,
|
|
241
|
+
_rowIndex
|
|
242
|
+
};
|
|
216
243
|
trVNs.push((0, _vue.h)('tr', Object.assign({
|
|
217
244
|
key: treeConfig ? rowid : $rowIndex,
|
|
218
245
|
class: ['vxe-gantt-view--body-row', {
|
|
@@ -221,8 +248,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
221
248
|
'row--radio': radioOpts.highlight && $xeTable.eqRow(selectRadioRow, row),
|
|
222
249
|
'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
|
|
223
250
|
'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid]
|
|
224
|
-
}],
|
|
225
|
-
rowid
|
|
251
|
+
}, (0, _utils.getClass)(rowClassName, rowParams)],
|
|
252
|
+
rowid,
|
|
253
|
+
style: rowStyle ? _xeUtils.default.isFunction(rowStyle) ? rowStyle(rowParams) : rowStyle : undefined
|
|
226
254
|
}, trOns), tableColumn.map((column, $columnIndex) => renderColumn($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, column, $columnIndex))));
|
|
227
255
|
let isExpandTree = false;
|
|
228
256
|
let rowChildren = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_util=require("./util"),_ganttChart=_interopRequireDefault(require("./gantt-chart"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let sourceType="gantt",viewType="body";var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewBody",setup(){let
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_util=require("./util"),_utils=require("../../ui/src/utils"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ganttChart=_interopRequireDefault(require("./gantt-chart"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let sourceType="gantt",viewType="body";var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewBody",setup(){let D=(0,_vue.inject)("$xeGantt",{}),o=(0,_vue.inject)("$xeGanttView",{}),S=D.getComputeMaps().computeTaskViewOpts,{reactData:q,internalData:R}=o,r=(0,_vue.ref)(),n=(0,_vue.ref)(),i=(0,_vue.ref)(),u=(0,_vue.ref)(),s=(0,_vue.ref)(),$=(l,a,e,o,r,n,t,i)=>{var u=l.reactData.resizeHeightFlag,{fullAllDataRowIdData:s,visibleColumn:d}=l.internalData,{computeCellOpts:v,computeRowOpts:c,computeDefaultRowHeight:p,computeResizableOpts:w}=l.getComputeMaps(),v=v.value,c=c.value,p=p.value,w=w.value.isAllRowDrag,g=q.headerGroups,h=R.todayDateMaps,{showNowLine:x,viewStyle:_}=S.value,g=(g[g.length-1]||{}).scaleItem,{field:y,dateObj:m}=t,{cellClassName:_,cellStyle:b}=_||{},h=x&&g?h[g.type]:null,g=s[e]||{},s=0<(u?g.resizeHeight:0),u=(0,_util.getCellRestHeight)(g,v,c,p),g=[];if(w&&c.resizable){let t={$table:l,$grid:null,$gantt:D,seq:-1,rowid:e,row:a,rowIndex:o,$rowIndex:r,_rowIndex:n,column:d[0],columnIndex:0,$columnIndex:0,_columnIndex:0,fixed:"",source:sourceType,type:viewType,isHidden:!1,isEdit:!1,level:-1,visibleData:[],data:[],items:[]};g.push((0,_vue.h)("div",{class:"vxe-gantt-view-cell--row-resizable",onMousedown:e=>l.handleRowResizeMousedownEvent(e,t),onDblclick:e=>l.handleRowResizeDblclickEvent(e,t)}))}let f={source:sourceType,type:viewType,dateObj:m,row:a,column:t,$rowIndex:r,rowIndex:o,_rowIndex:n};return(0,_vue.h)("td",{key:i,class:["vxe-gantt-view--body-column",{"is--now":x&&h===y,"col--rs-height":s},(0,_utils.getClass)(_,f)],style:b?Object.assign({},_xeUtils.default.isFunction(b)?b(f):b,{height:u+"px"}):{height:u+"px"},onClick(e){D.handleTaskCellClickEvent(e,{row:a,column:t})},onDblclick(e){D.handleTaskCellDblclickEvent(e,{row:a,column:t})},onContextmenu(e){D.handleTaskBodyContextmenuEvent(e,f)}},g)},H=(d,e)=>{let{treeConfig:v,stripe:c,highlightHoverRow:p,editConfig:w}=d.props,{treeExpandedFlag:g,selectRadioRow:h,pendingRowFlag:x,isRowGroupStatus:_}=d.reactData,{fullAllDataRowIdData:y,treeExpandedMaps:m,pendingRowMaps:b}=d.internalData;var{computeRadioOpts:t,computeCheckboxOpts:l,computeTreeOpts:a,computeRowOpts:o}=d.getComputeMaps();let f=t.value,D=l.value,R=o.value;t=a.value;let C=t.transform,I=t.children||t.childrenField;l=S.value.viewStyle;let{rowClassName:k,rowStyle:T}=l||{},{tableColumn:E,scrollYLoad:M}=q,O=[];return e.forEach((l,a)=>{let o=d.getRowid(l);var e=y[o]||{},t={};let r=a,n=-1,i=(e&&(r=e.index,n=e._index),!1);w&&(i=d.isInsertByRow(l)),(R.isHover||p)&&(t.onMouseenter=e=>{d.triggerHoverEvent(e,{row:l,rowIndex:r})},t.onMouseleave=()=>{d.clearHoverRow()}),!R.drag||_||v&&!C||(t.onDragstart=d.handleRowDragDragstartEvent,t.onDragend=d.handleRowDragDragendEvent,t.onDragover=d.handleRowDragDragoverEvent);e={source:sourceType,type:viewType,row:l,rowIndex:r,$rowIndex:a,_rowIndex:n};O.push((0,_vue.h)("tr",Object.assign({key:v?o:a,class:["vxe-gantt-view--body-row",{"row--stripe":c&&(n+1)%2==0,"is--new":i,"row--radio":f.highlight&&d.eqRow(h,l),"row--checked":D.highlight&&d.isCheckedByCheckboxRow(l),"row--pending":!!x&&!!b[o]},(0,_utils.getClass)(k,e)],rowid:o,style:T?_xeUtils.default.isFunction(T)?T(e):T:void 0},t),E.map((e,t)=>$(d,l,o,r,a,n,e,t))));let u=!1,s=[];!v||M||C||(s=l[I],u=!!g&&s&&0<s.length&&!!m[o]),u&&O.push(...H(d,s))}),O};return(0,_vue.onMounted)(()=>{var e=R.elemStore,t="main-body-";e[t+"wrapper"]=r,e[t+"scroll"]=n,e[t+"table"]=i,e[t+"xSpace"]=u,e[t+"ySpace"]=s}),(0,_vue.onUnmounted)(()=>{var e=R.elemStore,t="main-body-";e[t+"wrapper"]=null,e[t+"scroll"]=null,e[t+"table"]=null,e[t+"xSpace"]=null,e[t+"ySpace"]=null}),()=>{var e=o.internalData.xeTable;let{tableData:t,tableColumn:l,viewCellWidth:a}=q;return(0,_vue.h)("div",{ref:r,class:"vxe-gantt-view--body-wrapper"},[(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--body-inner-wrapper",onScroll:o.triggerBodyScrollEvent,onContextmenu(e){D.handleTaskBodyContextmenuEvent(e,{source:sourceType,type:viewType,rowIndex:-1,$rowIndex:-1,_rowIndex:-1})}},[(0,_vue.h)("div",{ref:u,class:"vxe-body--x-space"}),(0,_vue.h)("div",{ref:s,class:"vxe-body--y-space"}),(0,_vue.h)("table",{ref:i,class:"vxe-gantt-view--body-table"},[(0,_vue.h)("colgroup",{},l.map((e,t)=>(0,_vue.h)("col",{key:t,style:{width:a+"px"}}))),(0,_vue.h)("tbody",{},e?H(e,t):[])]),(0,_vue.h)(_ganttChart.default)])])}}});
|
|
@@ -17,6 +17,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
17
17
|
const {
|
|
18
18
|
globalEvents
|
|
19
19
|
} = _core.VxeUI;
|
|
20
|
+
const sourceType = 'gantt';
|
|
20
21
|
function createInternalData() {
|
|
21
22
|
return {
|
|
22
23
|
xeTable: null,
|
|
@@ -919,8 +920,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
919
920
|
reactData.lazScrollLoading = false;
|
|
920
921
|
}, 200);
|
|
921
922
|
};
|
|
922
|
-
|
|
923
|
-
const handleScrollEvent = (evnt, isRollY, isRollX, scrollTop, scrollLeft) => {
|
|
923
|
+
const handleScrollData = (isRollY, isRollX, scrollTop, scrollLeft) => {
|
|
924
924
|
if (isRollX) {
|
|
925
925
|
internalData.lastScrollLeft = scrollLeft;
|
|
926
926
|
}
|
|
@@ -930,6 +930,95 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
930
930
|
reactData.lastScrollTime = Date.now();
|
|
931
931
|
checkLastSyncScroll(isRollX, isRollY);
|
|
932
932
|
};
|
|
933
|
+
const handleScrollEvent = (evnt, isRollY, isRollX, scrollTop, scrollLeft) => {
|
|
934
|
+
const $xeTable = internalData.xeTable;
|
|
935
|
+
const {
|
|
936
|
+
lastScrollLeft,
|
|
937
|
+
lastScrollTop
|
|
938
|
+
} = internalData;
|
|
939
|
+
const xHandleEl = refScrollXHandleElem.value;
|
|
940
|
+
const yHandleEl = refScrollYHandleElem.value;
|
|
941
|
+
if (!xHandleEl || !yHandleEl) {
|
|
942
|
+
return;
|
|
943
|
+
}
|
|
944
|
+
if (!$xeTable) {
|
|
945
|
+
return;
|
|
946
|
+
}
|
|
947
|
+
const {
|
|
948
|
+
computeScrollXThreshold,
|
|
949
|
+
computeScrollYThreshold
|
|
950
|
+
} = $xeTable.getComputeMaps();
|
|
951
|
+
const bodyHeight = yHandleEl.clientHeight;
|
|
952
|
+
const bodyWidth = xHandleEl.clientWidth;
|
|
953
|
+
const scrollHeight = yHandleEl.scrollHeight;
|
|
954
|
+
const scrollWidth = xHandleEl.scrollWidth;
|
|
955
|
+
let isTop = false;
|
|
956
|
+
let isBottom = false;
|
|
957
|
+
let isLeft = false;
|
|
958
|
+
let isRight = false;
|
|
959
|
+
let direction = '';
|
|
960
|
+
let isTopBoundary = false;
|
|
961
|
+
let isBottomBoundary = false;
|
|
962
|
+
let isLeftBoundary = false;
|
|
963
|
+
let isRightBoundary = false;
|
|
964
|
+
if (isRollX) {
|
|
965
|
+
const xThreshold = computeScrollXThreshold.value;
|
|
966
|
+
isLeft = scrollLeft <= 0;
|
|
967
|
+
if (!isLeft) {
|
|
968
|
+
isRight = scrollLeft + bodyWidth >= scrollWidth - 1;
|
|
969
|
+
}
|
|
970
|
+
if (scrollLeft > lastScrollLeft) {
|
|
971
|
+
direction = 'right';
|
|
972
|
+
if (scrollLeft + bodyWidth >= scrollWidth - xThreshold) {
|
|
973
|
+
isRightBoundary = true;
|
|
974
|
+
}
|
|
975
|
+
} else {
|
|
976
|
+
direction = 'left';
|
|
977
|
+
if (scrollLeft <= xThreshold) {
|
|
978
|
+
isLeftBoundary = true;
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
if (isRollY) {
|
|
983
|
+
const yThreshold = computeScrollYThreshold.value;
|
|
984
|
+
isTop = scrollTop <= 0;
|
|
985
|
+
if (!isTop) {
|
|
986
|
+
isBottom = scrollTop + bodyHeight >= scrollHeight - 1;
|
|
987
|
+
}
|
|
988
|
+
if (scrollTop > lastScrollTop) {
|
|
989
|
+
direction = 'bottom';
|
|
990
|
+
if (scrollTop + bodyHeight >= scrollHeight - yThreshold) {
|
|
991
|
+
isBottomBoundary = true;
|
|
992
|
+
}
|
|
993
|
+
} else {
|
|
994
|
+
direction = 'top';
|
|
995
|
+
if (scrollTop <= yThreshold) {
|
|
996
|
+
isTopBoundary = true;
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
handleScrollData(isRollY, isRollX, scrollTop, scrollLeft);
|
|
1001
|
+
const evntParams = {
|
|
1002
|
+
source: sourceType,
|
|
1003
|
+
scrollTop,
|
|
1004
|
+
scrollLeft,
|
|
1005
|
+
bodyHeight,
|
|
1006
|
+
bodyWidth,
|
|
1007
|
+
scrollHeight,
|
|
1008
|
+
scrollWidth,
|
|
1009
|
+
isX: isRollX,
|
|
1010
|
+
isY: isRollY,
|
|
1011
|
+
isTop,
|
|
1012
|
+
isBottom,
|
|
1013
|
+
isLeft,
|
|
1014
|
+
isRight,
|
|
1015
|
+
direction
|
|
1016
|
+
};
|
|
1017
|
+
if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
|
|
1018
|
+
$xeGantt.dispatchEvent('scroll-boundary', evntParams, evnt);
|
|
1019
|
+
}
|
|
1020
|
+
$xeGantt.dispatchEvent('scroll', evntParams, evnt);
|
|
1021
|
+
};
|
|
933
1022
|
const ganttViewMethods = {
|
|
934
1023
|
refreshData() {
|
|
935
1024
|
handleUpdateData();
|
|
@@ -1069,7 +1158,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1069
1158
|
triggerScrollXEvent();
|
|
1070
1159
|
}
|
|
1071
1160
|
}
|
|
1072
|
-
|
|
1161
|
+
if (isRollY) {
|
|
1162
|
+
handleScrollData(isRollY, isRollX, wrapperEl.scrollTop, scrollLeft);
|
|
1163
|
+
}
|
|
1164
|
+
if (isRollX) {
|
|
1165
|
+
handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, scrollLeft);
|
|
1166
|
+
}
|
|
1073
1167
|
},
|
|
1074
1168
|
// triggerFooterScrollEvent (evnt) {
|
|
1075
1169
|
// const { inVirtualScroll, inHeaderScroll, inBodyScroll } = internalData
|
|
@@ -1133,7 +1227,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1133
1227
|
internalData.inVirtualScroll = true;
|
|
1134
1228
|
(0, _dom.setScrollTop)(bodyScrollElem, currTopNum);
|
|
1135
1229
|
syncTableScrollTop(currTopNum);
|
|
1136
|
-
|
|
1230
|
+
handleScrollData(isRollY, isRollX, currTopNum, wrapperEl.scrollLeft);
|
|
1137
1231
|
}
|
|
1138
1232
|
},
|
|
1139
1233
|
handleUpdateSXSpace() {
|
|
@@ -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,visibleColumn:[],startMaps:{},endMaps:{},chartMaps:{},todayDateMaps:{},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){var e=_xeUtils.default.uniqueId();let U=(0,_vue.inject)("$xeGantt",{}),{computeTaskOpts:x,computeStartField:X,computeEndField:k,computeScrollbarOpts:S,computeScrollbarXToTop:w,computeScrollbarYToLeft:b}=U.getComputeMaps(),i=(0,_vue.ref)(),T=(0,_vue.ref)(),D=(0,_vue.ref)(),d=(0,_vue.ref)(),E=(0,_vue.ref)(),R=(0,_vue.ref)(),u=(0,_vue.ref)(),M=(0,_vue.ref)(),I=(0,_vue.ref)(),L=(0,_vue.ref)(),$=(0,_vue.ref)(),n=(0,_vue.ref)(),c=(0,_vue.ref)(),C=(0,_vue.ref)(),Y=(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}),V=createInternalData(),y={refElem:i},q={},t={xID:e,props:_,context:g,reactData:Y,internalData:V,getRefMaps:()=>y,getComputeMaps:()=>q},W=e=>{var t=x.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},z=()=>{var e=U.reactData.taskScaleList,e=e.find(e=>"week"===e.type),t=new Date,[l,r,a,i,o,s]=_xeUtils.default.toDateString(t,"yyyy-M-d-H-m-s").split("-"),n=t.getDay()+1,d=Math.ceil((t.getMonth()+1)/3),t=_xeUtils.default.getYearWeek(t,e?e.startDay:void 0);V.todayDateMaps={year:l,quarter:l+"_q"+d,month:l+"_"+r,week:l+"_W"+t,day:l+`_${r}_${a}_E`+n,date:l+`_${r}_`+a,hour:l+`_${r}_${a}_`+i,minute:l+`_${r}_${a}_${i}_`+o,second:l+`_${r}_${a}_${i}_${o}_`+s}},l=()=>{var e=U.props.treeConfig,t=V.scrollXStore,a=V.xeTable;let i=null,o=null;if(a){let l=X.value,r=k.value;var{computeAggregateOpts:s,computeTreeOpts:n}=a.getComputeMaps(),d=a.reactData.isRowGroupStatus,{afterFullData:a,afterTreeFullData:u,afterGroupFullData:c}=a.internalData,s=s.value,n=n.value,v=n.transform,h=n.children||n.childrenField,p=e=>{var t=_xeUtils.default.get(e,l),e=_xeUtils.default.get(e,r);t&&e&&(t=W(t),(!i||i.getTime()>t.getTime())&&(i=t),t=W(e),!o||o.getTime()<t.getTime())&&(o=t)};d?(d=s.mapChildrenField)&&_xeUtils.default.eachTree(c,p,{children:d}):e?_xeUtils.default.eachTree(u,p,{children:v?n.mapChildrenField:h}):a.forEach(p)}t.startIndex=0,t.endIndex=Math.max(1,t.visibleSize),Y.minViewDate=i,Y.maxViewDate=o,V.startMaps={},V.endMaps={},(()=>{var e=U.props.treeConfig,t=U.reactData.taskScaleList;let{minViewDate:u,maxViewDate:l}=Y;var r=_xeUtils.default.last(t);let a=[],c=[];if(r&&u&&l){let i=r.type;var v=t.find(e=>"week"===e.type);let n=864e5;switch(r.type){case"hour":n=36e5;break;case"minute":n=6e4;break;case"second":n=1e3}var h=u.getTime(),p=l.getTime()-u.getTime(),m=Math.max(5,Math.floor(p/n)+1);let o={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},s={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}};var f=(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 _=new Date(h+e*n),[g,x,y,S,w,b]=_xeUtils.default.toDateString(_,"yyyy-M-d-H-m-s").split("-"),T=_.getDay(),D=T+1,E=Math.ceil((_.getMonth()+1)/3),_=_xeUtils.default.getYearWeek(_,v?v.startDay:void 0),T={yy:g,M:x,d:y,H:S,m:w,s:b,q:E,W:_,E:D,e:T},E={year:{field:g,title:g,dateObj:T},quarter:{field:g+"_q"+E,title:""+E,dateObj:T},month:{field:g+"_"+x,title:x,dateObj:T},week:{field:g+"_W"+_,title:""+_,dateObj:T},day:{field:g+`_${x}_${y}_E`+D,title:""+D,dateObj:T},date:{field:g+`_${x}_`+y,title:y,dateObj:T},hour:{field:g+`_${x}_${y}_`+S,title:S,dateObj:T},minute:{field:g+`_${x}_${y}_${S}_`+w,title:w,dateObj:T},second:{field:g+`_${x}_${y}_${S}_${w}_`+b,title:b,dateObj:T}},_=E[i];r.level<19&&f("year",E,_),r.level<17&&f("quarter",E,_),r.level<14&&f("month",E,_),r.level<13&&f("week",E,_),r.level<11&&f("day",E,_),r.level<12&&f("date",E,_),r.level<7&&f("hour",E,_),r.level<5&&f("minute",E,_),a.push(_)}t.forEach(e=>{var t;e.type===i?c.push({scaleItem:e,columns:a}):((t=o[e.type]||[])&&t.forEach(e=>{e.childCount=e.children?e.children.length:0,e.children=void 0}),c.push({scaleItem:e,columns:t}))});let d=V.xeTable;if(d){let i=X.value,o=k.value;var{computeAggregateOpts:p,computeTreeOpts:t}=d.getComputeMaps(),R=d.reactData.isRowGroupStatus,{afterFullData:M,afterTreeFullData:I,afterGroupFullData:L}=d.internalData,p=p.value,t=t.value,$=t.transform,C=t.children||t.childrenField;let s={};var H=e=>{var t,l=d.getRowid(e),r=_xeUtils.default.get(e,i),a=_xeUtils.default.get(e,o);r&&a&&(r=W(r),a=W(a),t=Math.floor((r.getTime()-u.getTime())/n),a=Math.floor((a.getTime()-r.getTime())/n)+1,s[l]={row:e,rowid:l,oLeftSize:t,oWidthSize:a})};R?(R=p.mapChildrenField)&&_xeUtils.default.eachTree(L,H,{children:R}):e?_xeUtils.default.eachTree(I,H,{children:$?t.mapChildrenField:C}):M.forEach(H),V.chartMaps=s}}V.visibleColumn=a,Y.headerGroups=c,z(),B(),j()})()},v=()=>{var{scrollXWidth:e,scrollYHeight:t}=Y,l=V.elemStore,r=S.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),a=d.value,i=u.value;l&&(t=t>l.clientHeight,i&&(Y.scrollbarWidth=r.width||i.offsetWidth-i.clientWidth||14),Y.overflowY=t,i=e>l.clientWidth,a&&(Y.scrollbarHeight=r.height||a.offsetHeight-a.clientHeight||14),Y.overflowX=i)},H=()=>{let l=Y.viewCellWidth,{elemStore:e,chartMaps:r}=V;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=`${e?l*e.oLeftSize:0}px`,t.style.width=`${e?l*e.oWidthSize:0}px`)}),(0,_vue.nextTick)()},h=()=>{var{scrollbarWidth:s,scrollbarHeight:n,headerGroups:d,tableColumn:u}=Y,{elemStore:c,visibleColumn:v}=V,h=V.xeTable,p=i.value;if(p){var m=S.value,f=w.value,_=b.value,g=E.value,x=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");(_||m.y&&!1===m.y.visible)&&(e=0,a="hidden");h=(0,_util.getRefElem)(c["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)(c["main-body-scroll"])),_=(n&&(n.style.height=t+"px"),(0,_util.getRefElem)(c["main-footer-scroll"])),m=(_&&(_.style.height=r+"px"),y&&(y.style.height=s+"px",y.style.visibility="visible"),I.value),h=(m&&(m.style.left=f?e+"px":"",m.style.width=p.clientWidth-e+"px"),g&&(g.style.width=f?e+"px":"",g.style.display=f&&s?"block":""),x&&(x.style.width=f?"":e+"px",x.style.display=!f&&s?"block":""),D.value),d=(h&&(h.style.width=e+"px",h.style.height=t+l+r+"px",h.style.visibility=a),M.value),_=(d&&(d.style.height=l+"px",d.style.display=l?"block":""),L.value),y=(_&&(_.style.height=t+"px",_.style.top=l+"px"),$.value),m=(y&&(y.style.height=r+"px",y.style.top=l+t+"px",y.style.display=r?"block":""),C.value);let i=40,o=(i=m?m.clientWidth||40:i)*v.length;n&&0<(g=(p=n.clientWidth)-o)&&(i+=g/v.length,o=p),Y.viewCellWidth=i;x=(0,_util.getRefElem)(c["main-header-table"]),f=(0,_util.getRefElem)(c["main-body-table"]),s=i*u.length;return x&&(x.style.width=o+"px"),f&&(f.style.width=s+"px"),Y.scrollXWidth=o,H()}},o=()=>{var e=i.value;return V.rceRunTime=Date.now(),(e&&e.clientWidth?(v(),h(),H(),F):(0,_vue.nextTick))()},r=()=>new Promise(e=>{var{rceTimeout:t,rceRunTime:l}=V,r=V.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()}),V.rceTimeout=setTimeout(()=>{V.rceTimeout=void 0,o()},a)}),F=()=>(0,_vue.nextTick)().then(()=>{var e,t=Y.scrollXLoad,l=V.scrollXStore;t?({toVisibleIndex:t,visibleSize:e}=p(),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),O().then(()=>{a()})):s()}),p=()=>{var e,t=Y.viewCellWidth,l=V.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=Y.isScrollXBig,t=V.scrollXStore,{preloadSize:l,startIndex:r,endIndex:a,offsetSize:i}=t,{toVisibleIndex:o,visibleSize:s}=p(),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,O())},O=()=>(j(),s(),(0,_vue.nextTick)()),B=()=>Y.scrollXLoad=!0,j=()=>{var e=Y.scrollXLoad,{visibleColumn:t,scrollXStore:l}=V,e=e?t.slice(l.startIndex,l.endIndex):t.slice(0);Y.tableColumn=e},s=()=>{let{scrollXLoad:t,scrollXWidth:l,viewCellWidth:e}=Y,{elemStore:r,scrollXStore:a}=V;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, ${Y.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)()},G=()=>{a()},m=(e,t,l,r,a)=>{l&&(V.lastScrollLeft=a),t&&(V.lastScrollTop=r),Y.lastScrollTime=Date.now(),l=V.lcsTimeout,Y.lazScrollLoading=!0,l&&clearTimeout(l),V.lcsTimeout=setTimeout(()=>{V.lcsRunTime=Date.now(),V.lcsTimeout=void 0,V.intoRunScroll=!1,V.inVirtualScroll=!1,V.inWheelScroll=!1,V.inHeaderScroll=!1,V.inBodyScroll=!1,V.inFooterScroll=!1,Y.lazScrollLoading=!1},200)},A=e=>{var t=V.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=V.xeTable,a=i.value;r&&a&&(e?(t=r.props,l=r.getComputeMaps().computeRowOpts,(l.value.isCurrent||t.highlightCurrentRow)&&_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=V.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}=V;l||r||a||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-body-scroll"]),a=d.value,r&&l&&(e=l.scrollLeft,V.inHeaderScroll=!0,(0,_dom.setScrollLeft)(a,e),(0,_dom.setScrollLeft)(r,e),m(0,!1,!0,l.scrollTop,e)))},triggerBodyScrollEvent(e){var t,l=Y.scrollXLoad,{elemStore:r,inVirtualScroll:a,inHeaderScroll:i,inFooterScroll:o,lastScrollLeft:s,lastScrollTop:n}=V;a||i||o||(a=e.currentTarget,i=(0,_util.getRefElem)(r["main-header-scroll"]),o=d.value,e=u.value,s=(r=a.scrollLeft)!==s,n=(t=a.scrollTop)!==n,V.inBodyScroll=!0,V.scrollRenderType="",n&&((0,_dom.setScrollTop)(e,t),A(t)),s&&(V.inBodyScroll=!0,(0,_dom.setScrollLeft)(o,r),(0,_dom.setScrollLeft)(i,r),l)&&G(),m(0,n,s,a.scrollTop,r))},triggerVirtualScrollXEvent(e){var t=Y.scrollXLoad,{elemStore:l,inHeaderScroll:r,inBodyScroll:a}=V;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,V.inVirtualScroll=!0,(0,_dom.setScrollLeft)(a,l),(0,_dom.setScrollLeft)(e,l),t&&G(),m(0,!1,!0,r.scrollTop,l)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:r}=V;l||r||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,V.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,e),A(e),m(0,!0,!1,e,l.scrollLeft)))},handleUpdateSXSpace(){return s()},handleUpdateSYSpace(){return(()=>{var e=V.elemStore,t=V.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(${Y.scrollXLeft||0}px, ${n}px)`),t&&(t.style.transform=`translate(${Y.scrollXLeft||0}px, ${n}px)`),l=(0,_util.getRefElem)(e["main-body-ySpace"]),l&&(l.style.height=s?s+"px":""),r=c.value;return r&&(r.style.height=s?s+"px":""),Y.scrollYTop=n,Y.scrollYHeight=i,Y.isScrollYBig=o,v(),(0,_vue.nextTick)().then(()=>{h()})})()},handleUpdateSYStatus(e){Y.scrollYLoad=e}};let P=()=>{r()},N=(Object.assign(t,{refreshData(){return l(),r()},updateViewData(){var e=V.xeTable;return e&&(e=e.reactData.tableData,Y.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(V.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:E,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:I,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",{class:"vxe-gantt-view--scroll-x-handle-appearance"})]),(0,_vue.h)("div",{ref:R,class:"vxe-gantt-view--scroll-x-right-corner"})])),J=()=>(0,_vue.h)("div",{ref:D,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:M,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:u,class:"vxe-gantt-view--scroll-y-handle",onScroll:t.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:c,class:"vxe-gantt-view--scroll-y-space"})]),(0,_vue.h)("div",{class:"vxe-gantt-view--scroll-y-handle-appearance"})]),(0,_vue.h)("div",{ref:$,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),K=()=>(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)]),Q=()=>{var e=b.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[J(),K()]:[K(),J()])};let f=(0,_vue.ref)(0);return(0,_vue.watch)(()=>Y.tableData,()=>{f.value++}),(0,_vue.watch)(()=>Y.tableData.length,()=>{f.value++}),(0,_vue.watch)(f,()=>{l()}),(0,_vue.onMounted)(()=>{globalEvents.on(t,"resize",P)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(t,"keydown"),_xeUtils.default.assign(V,createInternalData())}),t.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:r}=Y,a=w.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?[N(),Q()]:[Q(),N()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:C,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,sourceType="gantt";function createInternalData(){return{xeTable:null,visibleColumn:[],startMaps:{},endMaps:{},chartMaps:{},todayDateMaps:{},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(p,m){var e=_xeUtils.default.uniqueId();let W=(0,_vue.inject)("$xeGantt",{}),{computeTaskOpts:f,computeStartField:X,computeEndField:U,computeScrollbarOpts:S,computeScrollbarXToTop:w,computeScrollbarYToLeft:b}=W.getComputeMaps(),i=(0,_vue.ref)(),T=(0,_vue.ref)(),D=(0,_vue.ref)(),E=(0,_vue.ref)(),R=(0,_vue.ref)(),M=(0,_vue.ref)(),L=(0,_vue.ref)(),I=(0,_vue.ref)(),$=(0,_vue.ref)(),H=(0,_vue.ref)(),C=(0,_vue.ref)(),n=(0,_vue.ref)(),c=(0,_vue.ref)(),Y=(0,_vue.ref)(),k=(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}),V=createInternalData(),g={refElem:i},_={},t={xID:e,props:p,context:m,reactData:k,internalData:V,getRefMaps:()=>g,getComputeMaps:()=>_},q=e=>{var t=f.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},O=()=>{var e=W.reactData.taskScaleList,e=e.find(e=>"week"===e.type),t=new Date,[l,r,a,i,o,s]=_xeUtils.default.toDateString(t,"yyyy-M-d-H-m-s").split("-"),n=t.getDay()+1,d=Math.ceil((t.getMonth()+1)/3),t=_xeUtils.default.getYearWeek(t,e?e.startDay:void 0);V.todayDateMaps={year:l,quarter:l+"_q"+d,month:l+"_"+r,week:l+"_W"+t,day:l+`_${r}_${a}_E`+n,date:l+`_${r}_`+a,hour:l+`_${r}_${a}_`+i,minute:l+`_${r}_${a}_${i}_`+o,second:l+`_${r}_${a}_${i}_${o}_`+s}},l=()=>{var e=W.props.treeConfig,t=V.scrollXStore,a=V.xeTable;let i=null,o=null;if(a){let l=X.value,r=U.value;var{computeAggregateOpts:s,computeTreeOpts:n}=a.getComputeMaps(),d=a.reactData.isRowGroupStatus,{afterFullData:a,afterTreeFullData:c,afterGroupFullData:u}=a.internalData,s=s.value,n=n.value,v=n.transform,h=n.children||n.childrenField,p=e=>{var t=_xeUtils.default.get(e,l),e=_xeUtils.default.get(e,r);t&&e&&(t=q(t),(!i||i.getTime()>t.getTime())&&(i=t),t=q(e),!o||o.getTime()<t.getTime())&&(o=t)};d?(d=s.mapChildrenField)&&_xeUtils.default.eachTree(u,p,{children:d}):e?_xeUtils.default.eachTree(c,p,{children:v?n.mapChildrenField:h}):a.forEach(p)}t.startIndex=0,t.endIndex=Math.max(1,t.visibleSize),k.minViewDate=i,k.maxViewDate=o,V.startMaps={},V.endMaps={},(()=>{var e=W.props.treeConfig,t=W.reactData.taskScaleList;let{minViewDate:c,maxViewDate:l}=k;var r=_xeUtils.default.last(t);let a=[],u=[];if(r&&c&&l){let i=r.type;var v=t.find(e=>"week"===e.type);let n=864e5;switch(r.type){case"hour":n=36e5;break;case"minute":n=6e4;break;case"second":n=1e3}var h=c.getTime(),p=l.getTime()-c.getTime(),m=Math.max(5,Math.floor(p/n)+1);let o={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},s={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}};var f=(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(h+e*n),[_,x,y,S,w,b]=_xeUtils.default.toDateString(g,"yyyy-M-d-H-m-s").split("-"),T=g.getDay(),D=T+1,E=Math.ceil((g.getMonth()+1)/3),g=_xeUtils.default.getYearWeek(g,v?v.startDay:void 0),T={yy:_,M:x,d:y,H:S,m:w,s:b,q:E,W:g,E:D,e:T},E={year:{field:_,title:_,dateObj:T},quarter:{field:_+"_q"+E,title:""+E,dateObj:T},month:{field:_+"_"+x,title:x,dateObj:T},week:{field:_+"_W"+g,title:""+g,dateObj:T},day:{field:_+`_${x}_${y}_E`+D,title:""+D,dateObj:T},date:{field:_+`_${x}_`+y,title:y,dateObj:T},hour:{field:_+`_${x}_${y}_`+S,title:S,dateObj:T},minute:{field:_+`_${x}_${y}_${S}_`+w,title:w,dateObj:T},second:{field:_+`_${x}_${y}_${S}_${w}_`+b,title:b,dateObj:T}},g=E[i];r.level<19&&f("year",E,g),r.level<17&&f("quarter",E,g),r.level<14&&f("month",E,g),r.level<13&&f("week",E,g),r.level<11&&f("day",E,g),r.level<12&&f("date",E,g),r.level<7&&f("hour",E,g),r.level<5&&f("minute",E,g),a.push(g)}t.forEach(e=>{var t;e.type===i?u.push({scaleItem:e,columns:a}):((t=o[e.type]||[])&&t.forEach(e=>{e.childCount=e.children?e.children.length:0,e.children=void 0}),u.push({scaleItem:e,columns:t}))});let d=V.xeTable;if(d){let i=X.value,o=U.value;var{computeAggregateOpts:p,computeTreeOpts:t}=d.getComputeMaps(),R=d.reactData.isRowGroupStatus,{afterFullData:M,afterTreeFullData:L,afterGroupFullData:I}=d.internalData,p=p.value,t=t.value,$=t.transform,H=t.children||t.childrenField;let s={};var C=e=>{var t,l=d.getRowid(e),r=_xeUtils.default.get(e,i),a=_xeUtils.default.get(e,o);r&&a&&(r=q(r),a=q(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})};R?(R=p.mapChildrenField)&&_xeUtils.default.eachTree(I,C,{children:R}):e?_xeUtils.default.eachTree(L,C,{children:$?t.mapChildrenField:H}):M.forEach(C),V.chartMaps=s}}V.visibleColumn=a,k.headerGroups=u,O(),j(),G()})()},u=()=>{var{scrollXWidth:e,scrollYHeight:t}=k,l=V.elemStore,r=S.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),a=E.value,i=L.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)},z=()=>{let l=k.viewCellWidth,{elemStore:e,chartMaps:r}=V;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=`${e?l*e.oLeftSize:0}px`,t.style.width=`${e?l*e.oWidthSize:0}px`)}),(0,_vue.nextTick)()},v=()=>{var{scrollbarWidth:s,scrollbarHeight:n,headerGroups:d,tableColumn:c}=k,{elemStore:u,visibleColumn:v}=V,h=V.xeTable,p=i.value;if(p){var m=S.value,f=w.value,g=b.value,_=R.value,x=M.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"),$.value),h=(m&&(m.style.left=f?e+"px":"",m.style.width=p.clientWidth-e+"px"),_&&(_.style.width=f?e+"px":"",_.style.display=f&&s?"block":""),x&&(x.style.width=f?"":e+"px",x.style.display=!f&&s?"block":""),D.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":""),H.value),y=(g&&(g.style.height=t+"px",g.style.top=l+"px"),C.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<(_=(p=n.clientWidth)-o)&&(i+=_/v.length,o=p),k.viewCellWidth=i;x=(0,_util.getRefElem)(u["main-header-table"]),f=(0,_util.getRefElem)(u["main-body-table"]),s=i*c.length;return x&&(x.style.width=o+"px"),f&&(f.style.width=s+"px"),k.scrollXWidth=o,z()}},o=()=>{var e=i.value;return V.rceRunTime=Date.now(),(e&&e.clientWidth?(u(),v(),z(),x):(0,_vue.nextTick))()},r=()=>new Promise(e=>{var{rceTimeout:t,rceRunTime:l}=V,r=V.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()}),V.rceTimeout=setTimeout(()=>{V.rceTimeout=void 0,o()},a)}),x=()=>(0,_vue.nextTick)().then(()=>{var e,t=k.scrollXLoad,l=V.scrollXStore;t?({toVisibleIndex:t,visibleSize:e}=d(),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),B().then(()=>{y()})):a()}),d=()=>{var e,t=k.viewCellWidth,l=V.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}},y=()=>{var e=k.isScrollXBig,t=V.scrollXStore,{preloadSize:l,startIndex:r,endIndex:a,offsetSize:i}=t,{toVisibleIndex:o,visibleSize:s}=d(),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,B())},B=()=>(G(),a(),(0,_vue.nextTick)()),j=()=>k.scrollXLoad=!0,G=()=>{var e=k.scrollXLoad,{visibleColumn:t,scrollXStore:l}=V,e=e?t.slice(l.startIndex,l.endIndex):t.slice(0);k.tableColumn=e},a=()=>{let{scrollXLoad:t,scrollXWidth:l,viewCellWidth:e}=k,{elemStore:r,scrollXStore:a}=V;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, ${k.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"),u(),(0,_vue.nextTick)()},A=()=>{y()},P=(e,t)=>{var l=V.lcsTimeout;k.lazScrollLoading=!0,l&&clearTimeout(l),V.lcsTimeout=setTimeout(()=>{V.lcsRunTime=Date.now(),V.lcsTimeout=void 0,V.intoRunScroll=!1,V.inVirtualScroll=!1,V.inWheelScroll=!1,V.inHeaderScroll=!1,V.inBodyScroll=!1,V.inFooterScroll=!1,k.lazScrollLoading=!1},200)},F=(e,t,l,r)=>{t&&(V.lastScrollLeft=r),e&&(V.lastScrollTop=l),k.lastScrollTime=Date.now(),P(t,e)},h=(d,c,u,v,h)=>{var p=V.xeTable,{lastScrollLeft:m,lastScrollTop:f}=V,g=E.value,_=L.value;if(g&&_&&p){var{computeScrollXThreshold:p,computeScrollYThreshold:x}=p.getComputeMaps(),y=_.clientHeight,S=g.clientWidth,_=_.scrollHeight,g=g.scrollWidth;let e=!1,t=!1,l=!1,r=!1,a="",i=!1,o=!1,s=!1,n=!1;u&&(p=p.value,(l=h<=0)||(r=g-1<=h+S),m<h?(a="right",g-p<=h+S&&(n=!0)):(a="left",h<=p&&(s=!0))),c&&(m=x.value,(e=v<=0)||(t=_-1<=v+y),f<v?(a="bottom",_-m<=v+y&&(o=!0)):(a="top",v<=m&&(i=!0))),F(c,u,v,h);p={source:sourceType,scrollTop:v,scrollLeft:h,bodyHeight:y,bodyWidth:S,scrollHeight:_,scrollWidth:g,isX:u,isY:c,isTop:e,isBottom:t,isLeft:l,isRight:r,direction:a};(o||i||n||s)&&W.dispatchEvent("scroll-boundary",p,d),W.dispatchEvent("scroll",p,d)}},N=e=>{var t=V.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=V.xeTable,a=i.value;r&&a&&(e?(t=r.props,l=r.getComputeMaps().computeRowOpts,(l.value.isCurrent||t.highlightCurrentRow)&&_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=V.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}=V;l||r||a||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-body-scroll"]),a=E.value,r&&l&&(t=l.scrollLeft,V.inHeaderScroll=!0,(0,_dom.setScrollLeft)(a,t),(0,_dom.setScrollLeft)(r,t),h(e,!1,!0,l.scrollTop,t)))},triggerBodyScrollEvent(e){var t,l,r=k.scrollXLoad,{elemStore:a,inVirtualScroll:i,inHeaderScroll:o,inFooterScroll:s,lastScrollLeft:n,lastScrollTop:d}=V;i||o||s||(i=e.currentTarget,o=(0,_util.getRefElem)(a["main-header-scroll"]),s=E.value,a=L.value,n=(t=i.scrollLeft)!==n,d=(l=i.scrollTop)!==d,V.inBodyScroll=!0,V.scrollRenderType="",d&&((0,_dom.setScrollTop)(a,l),N(l)),n&&(V.inBodyScroll=!0,(0,_dom.setScrollLeft)(s,t),(0,_dom.setScrollLeft)(o,t),r)&&A(),d&&F(d,n,i.scrollTop,t),n&&h(e,d,n,i.scrollTop,t))},triggerVirtualScrollXEvent(e){var t,l=k.scrollXLoad,{elemStore:r,inHeaderScroll:a,inBodyScroll:i}=V;a||i||(a=e.currentTarget,i=(0,_util.getRefElem)(r["main-header-scroll"]),r=(0,_util.getRefElem)(r["main-body-scroll"]),a&&(t=a.scrollLeft,V.inVirtualScroll=!0,(0,_dom.setScrollLeft)(i,t),(0,_dom.setScrollLeft)(r,t),l&&A(),h(e,!1,!0,a.scrollTop,t)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:r}=V;l||r||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,V.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,e),N(e),F(!0,!1,e,l.scrollLeft)))},handleUpdateSXSpace(){return a()},handleUpdateSYSpace(){return(()=>{var e=V.elemStore,t=V.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(${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=c.value;return r&&(r.style.height=s?s+"px":""),k.scrollYTop=n,k.scrollYHeight=i,k.isScrollYBig=o,u(),(0,_vue.nextTick)().then(()=>{v()})})()},handleUpdateSYStatus(e){k.scrollYLoad=e}};let J=()=>{r()},K=(Object.assign(t,{refreshData(){return l(),r()},updateViewData(){var e=V.xeTable;return e&&(e=e.reactData.tableData,k.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(V.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:R,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:$,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:E,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",{class:"vxe-gantt-view--scroll-x-handle-appearance"})]),(0,_vue.h)("div",{ref:M,class:"vxe-gantt-view--scroll-x-right-corner"})])),Q=()=>(0,_vue.h)("div",{ref:D,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:H,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--scroll-y-handle",onScroll:t.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:c,class:"vxe-gantt-view--scroll-y-space"})]),(0,_vue.h)("div",{class:"vxe-gantt-view--scroll-y-handle-appearance"})]),(0,_vue.h)("div",{ref:C,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),Z=()=>(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)]),ee=()=>{var e=b.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[Q(),Z()]:[Z(),Q()])};let s=(0,_vue.ref)(0);return(0,_vue.watch)(()=>k.tableData,()=>{s.value++}),(0,_vue.watch)(()=>k.tableData.length,()=>{s.value++}),(0,_vue.watch)(s,()=>{l()}),(0,_vue.onMounted)(()=>{globalEvents.on(t,"resize",J)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(t,"keydown"),_xeUtils.default.assign(V,createInternalData())}),t.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:r}=k,a=w.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?[K(),ee()]:[ee(),K()]),(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()}});
|