vxe-gantt 0.0.3 → 3.0.0-beta.0
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/README.md +14 -46
- package/es/components.js +3 -2
- package/es/gantt/src/gantt-body.js +83 -49
- package/es/gantt/src/gantt-chart.js +91 -43
- package/es/gantt/src/gantt-header.js +63 -36
- package/es/gantt/src/gantt-view.js +638 -586
- package/es/gantt/src/gantt.js +1347 -1178
- package/es/gantt/src/util.js +1 -4
- package/es/gantt/style.css +42 -17
- package/es/gantt/style.min.css +1 -1
- package/es/index.esm.js +5 -2
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/ui/index.js +9 -3
- package/es/ui/src/comp.js +1 -2
- package/es/ui/src/log.js +3 -2
- package/es/ui/src/utils.js +17 -17
- package/es/vxe-gantt/style.css +42 -17
- package/es/vxe-gantt/style.min.css +1 -1
- package/helper/vetur/attributes.json +1 -1
- package/helper/vetur/tags.json +1 -1
- package/lib/components.js +20 -19
- package/lib/components.min.js +1 -1
- package/lib/gantt/index.js +3 -3
- package/lib/gantt/index.min.js +1 -1
- package/lib/gantt/src/gantt-body.js +109 -87
- package/lib/gantt/src/gantt-body.min.js +1 -1
- package/lib/gantt/src/gantt-chart.js +109 -69
- package/lib/gantt/src/gantt-chart.min.js +1 -1
- package/lib/gantt/src/gantt-header.js +75 -56
- package/lib/gantt/src/gantt-header.min.js +1 -1
- package/lib/gantt/src/gantt-view.js +684 -686
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +1631 -1559
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/gantt/src/util.js +1 -4
- package/lib/gantt/src/util.min.js +1 -1
- package/lib/gantt/style/style.css +42 -17
- package/lib/gantt/style/style.min.css +1 -1
- package/lib/index.common.js +12 -7
- package/lib/index.umd.js +10705 -5870
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/ui/index.js +12 -16
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/comp.js +3 -2
- package/lib/ui/src/comp.min.js +1 -1
- package/lib/ui/src/dom.js +33 -33
- package/lib/ui/src/dom.min.js +1 -1
- package/lib/ui/src/log.js +4 -3
- package/lib/ui/src/log.min.js +1 -1
- package/lib/ui/src/utils.js +21 -24
- package/lib/ui/src/utils.min.js +1 -1
- package/lib/vxe-gantt/index.js +4 -2
- package/lib/vxe-gantt/index.min.js +1 -1
- package/lib/vxe-gantt/style/style.css +42 -17
- package/lib/vxe-gantt/style/style.min.css +1 -1
- package/lib/vxe-ui/index.js +4 -2
- package/lib/vxe-ui/index.min.js +1 -1
- package/package.json +13 -13
- package/packages/components.ts +8 -5
- package/packages/gantt/index.ts +2 -2
- package/packages/gantt/src/gantt-body.ts +89 -53
- package/packages/gantt/src/gantt-chart.ts +100 -49
- package/packages/gantt/src/gantt-header.ts +69 -39
- package/packages/gantt/src/gantt-view.ts +692 -624
- package/packages/gantt/src/gantt.ts +1460 -1240
- package/packages/gantt/src/util.ts +1 -4
- package/packages/index.ts +6 -2
- package/packages/ui/index.ts +9 -3
- package/packages/ui/src/comp.ts +2 -2
- package/packages/ui/src/log.ts +3 -1
- package/packages/ui/src/utils.ts +22 -21
- package/styles/components/gantt-module/gantt-chart.scss +28 -9
- package/styles/components/gantt.scss +12 -7
- package/styles/theme/base.scss +5 -1
- package/types/all.d.ts +3 -3
- package/types/index.d.ts +2 -2
- package/README.en.md +0 -72
- package/README.ja-JP.md +0 -72
- package/README.zh-TW.md +0 -73
- package/es/gantt/src/emits.js +0 -4
- package/es/gantt/src/grid-emits.js +0 -16
- package/es/gantt/src/grid-props.js +0 -7
- package/es/gantt/src/props.js +0 -2
- package/es/gantt/src/table-emits.js +0 -97
- package/es/gantt/src/table-props.js +0 -298
- package/lib/gantt/src/emits.js +0 -8
- package/lib/gantt/src/emits.min.js +0 -1
- package/lib/gantt/src/grid-emits.js +0 -8
- package/lib/gantt/src/grid-emits.min.js +0 -1
- package/lib/gantt/src/grid-props.js +0 -24
- package/lib/gantt/src/grid-props.min.js +0 -1
- package/lib/gantt/src/props.js +0 -13
- package/lib/gantt/src/props.min.js +0 -1
- package/lib/gantt/src/table-emits.js +0 -7
- package/lib/gantt/src/table-emits.min.js +0 -1
- package/lib/gantt/src/table-props.js +0 -306
- package/lib/gantt/src/table-props.min.js +0 -1
- package/packages/gantt/src/emits.ts +0 -7
- package/packages/gantt/src/grid-emits.ts +0 -19
- package/packages/gantt/src/grid-props.ts +0 -23
- package/packages/gantt/src/props.ts +0 -13
- package/packages/gantt/src/table-emits.ts +0 -109
- package/packages/gantt/src/table-props.ts +0 -304
|
@@ -4,18 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _vue = require("vue");
|
|
8
7
|
var _comp = require("../../ui/src/comp");
|
|
8
|
+
var _core = require("@vxe-ui/core");
|
|
9
9
|
var _dom = require("../../ui/src/dom");
|
|
10
|
-
var _ui = require("../../ui");
|
|
11
10
|
var _util = require("./util");
|
|
12
11
|
var _xeUtils = _interopRequireDefault(require("xe-utils"));
|
|
13
12
|
var _ganttHeader = _interopRequireDefault(require("./gantt-header"));
|
|
14
13
|
var _ganttBody = _interopRequireDefault(require("./gantt-body"));
|
|
15
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
-
|
|
17
|
-
globalEvents
|
|
18
|
-
} = _ui.VxeUI;
|
|
15
|
+
var globalEvents = _core.VxeUI.globalEvents;
|
|
19
16
|
function createInternalData() {
|
|
20
17
|
return {
|
|
21
18
|
xeTable: null,
|
|
@@ -45,36 +42,444 @@ function createInternalData() {
|
|
|
45
42
|
}
|
|
46
43
|
};
|
|
47
44
|
}
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
var maxYHeight = 5e6;
|
|
46
|
+
var maxXWidth = 5e6;
|
|
47
|
+
function handleParseColumn($xeGanttView) {
|
|
48
|
+
var $xeGantt = $xeGanttView.$xeGantt;
|
|
49
|
+
var reactData = $xeGanttView.reactData;
|
|
50
|
+
var internalData = $xeGanttView.internalData;
|
|
51
|
+
var minViewDate = reactData.minViewDate,
|
|
52
|
+
maxViewDate = reactData.maxViewDate;
|
|
53
|
+
var taskViewOpts = $xeGantt.computeTaskViewOpts;
|
|
54
|
+
var fullCols = [];
|
|
55
|
+
var groupCols = [];
|
|
56
|
+
switch (taskViewOpts.mode) {
|
|
57
|
+
case 'year':
|
|
58
|
+
break;
|
|
59
|
+
case 'quarter':
|
|
60
|
+
break;
|
|
61
|
+
case 'month':
|
|
62
|
+
break;
|
|
63
|
+
case 'week':
|
|
64
|
+
break;
|
|
65
|
+
default:
|
|
66
|
+
{
|
|
67
|
+
if (minViewDate && maxViewDate) {
|
|
68
|
+
var currTime = minViewDate.getTime();
|
|
69
|
+
var diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
|
|
70
|
+
var countDayNum = Math.max(6, Math.floor(diffDayNum / 86400000) + 1);
|
|
71
|
+
var groupList = [];
|
|
72
|
+
var colList = [];
|
|
73
|
+
var groupMaps = {};
|
|
74
|
+
for (var i = 0; i < countDayNum; i++) {
|
|
75
|
+
var itemDate = new Date(currTime + i * 86400000);
|
|
76
|
+
var yyyyy = "".concat(itemDate.getFullYear(), "-").concat(itemDate.getMonth() + 1);
|
|
77
|
+
var mmDd = "".concat(itemDate.getDate());
|
|
78
|
+
var groupCol = groupMaps[yyyyy];
|
|
79
|
+
var column = {
|
|
80
|
+
field: "".concat(yyyyy, "-").concat(mmDd),
|
|
81
|
+
title: mmDd
|
|
82
|
+
};
|
|
83
|
+
if (groupCol) {
|
|
84
|
+
groupCol.children.push(column);
|
|
85
|
+
fullCols.push(groupCol);
|
|
86
|
+
} else {
|
|
87
|
+
groupCol = {
|
|
88
|
+
field: yyyyy,
|
|
89
|
+
title: yyyyy,
|
|
90
|
+
children: [column]
|
|
91
|
+
};
|
|
92
|
+
groupList.push(groupCol);
|
|
93
|
+
fullCols.push(groupCol);
|
|
94
|
+
groupMaps[yyyyy] = groupCol;
|
|
95
|
+
}
|
|
96
|
+
colList.push(column);
|
|
97
|
+
}
|
|
98
|
+
groupCols.push(groupList, colList);
|
|
99
|
+
var $xeTable = internalData.xeTable;
|
|
100
|
+
if ($xeTable) {
|
|
101
|
+
var startField = $xeGantt.computeStartField;
|
|
102
|
+
var endField = $xeGantt.computeEndField;
|
|
103
|
+
var tableInternalData = $xeTable;
|
|
104
|
+
var afterFullData = tableInternalData.afterFullData;
|
|
105
|
+
var ctMaps = {};
|
|
106
|
+
afterFullData.forEach(function (row) {
|
|
107
|
+
var rowid = $xeTable.getRowid(row);
|
|
108
|
+
var startValue = _xeUtils.default.get(row, startField);
|
|
109
|
+
var endValue = _xeUtils.default.get(row, endField);
|
|
110
|
+
if (startValue && endValue) {
|
|
111
|
+
var startDate = _xeUtils.default.toStringDate(startValue);
|
|
112
|
+
var endDate = _xeUtils.default.toStringDate(endValue);
|
|
113
|
+
var oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / 86400000);
|
|
114
|
+
var oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / 86400000) + 1;
|
|
115
|
+
ctMaps[rowid] = {
|
|
116
|
+
row: row,
|
|
117
|
+
rowid: rowid,
|
|
118
|
+
oLeftSize: oLeftSize,
|
|
119
|
+
oWidthSize: oWidthSize
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
internalData.chartMaps = ctMaps;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
reactData.tableColumn = fullCols;
|
|
130
|
+
reactData.headerGroups = groupCols;
|
|
131
|
+
}
|
|
132
|
+
function handleUpdateData($xeGanttView) {
|
|
133
|
+
var $xeGantt = $xeGanttView.$xeGantt;
|
|
134
|
+
var reactData = $xeGanttView.reactData;
|
|
135
|
+
var internalData = $xeGanttView.internalData;
|
|
136
|
+
var $xeTable = internalData.xeTable;
|
|
137
|
+
var sdMaps = {};
|
|
138
|
+
var edMaps = {};
|
|
139
|
+
var minDate = null;
|
|
140
|
+
var maxDate = null;
|
|
141
|
+
if ($xeTable) {
|
|
142
|
+
var startField = $xeGantt.computeStartField;
|
|
143
|
+
var endField = $xeGantt.computeEndField;
|
|
144
|
+
var tableInternalData = $xeTable;
|
|
145
|
+
var afterFullData = tableInternalData.afterFullData;
|
|
146
|
+
afterFullData.forEach(function (row) {
|
|
147
|
+
var startValue = _xeUtils.default.get(row, startField);
|
|
148
|
+
var endValue = _xeUtils.default.get(row, endField);
|
|
149
|
+
if (startValue && endValue) {
|
|
150
|
+
var startDate = _xeUtils.default.toStringDate(startValue);
|
|
151
|
+
if (!minDate || minDate.getTime() > startDate.getTime()) {
|
|
152
|
+
minDate = startDate;
|
|
153
|
+
}
|
|
154
|
+
var endDate = _xeUtils.default.toStringDate(endValue);
|
|
155
|
+
if (!maxDate || maxDate.getTime() < endDate.getTime()) {
|
|
156
|
+
maxDate = endDate;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
reactData.minViewDate = minDate;
|
|
162
|
+
reactData.maxViewDate = maxDate;
|
|
163
|
+
internalData.startMaps = sdMaps;
|
|
164
|
+
internalData.endMaps = edMaps;
|
|
165
|
+
handleParseColumn($xeGanttView);
|
|
166
|
+
}
|
|
167
|
+
function calcScrollbar($xeGanttView) {
|
|
168
|
+
var $xeGantt = $xeGanttView.$xeGantt;
|
|
169
|
+
var reactData = $xeGanttView.reactData;
|
|
170
|
+
var internalData = $xeGanttView.internalData;
|
|
171
|
+
var scrollXWidth = reactData.scrollXWidth,
|
|
172
|
+
scrollYHeight = reactData.scrollYHeight;
|
|
173
|
+
var elemStore = internalData.elemStore;
|
|
174
|
+
var scrollbarOpts = $xeGantt.computeScrollbarOpts;
|
|
175
|
+
var bodyWrapperElem = (0, _util.getRefElem)(elemStore['main-body-wrapper']);
|
|
176
|
+
var xHandleEl = $xeGanttView.$refs.refScrollXHandleElem;
|
|
177
|
+
var yHandleEl = $xeGanttView.$refs.refScrollYHandleElem;
|
|
178
|
+
var overflowY = false;
|
|
179
|
+
var overflowX = false;
|
|
180
|
+
if (bodyWrapperElem) {
|
|
181
|
+
overflowY = scrollYHeight > bodyWrapperElem.clientHeight;
|
|
182
|
+
if (yHandleEl) {
|
|
183
|
+
reactData.scrollbarWidth = scrollbarOpts.width || yHandleEl.offsetWidth - yHandleEl.clientWidth || 14;
|
|
184
|
+
}
|
|
185
|
+
reactData.overflowY = overflowY;
|
|
186
|
+
overflowX = scrollXWidth > bodyWrapperElem.clientWidth;
|
|
187
|
+
if (xHandleEl) {
|
|
188
|
+
reactData.scrollbarHeight = scrollbarOpts.height || xHandleEl.offsetHeight - xHandleEl.clientHeight || 14;
|
|
189
|
+
}
|
|
190
|
+
reactData.overflowX = overflowX;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function updateChart($xeGanttView) {
|
|
194
|
+
var reactData = $xeGanttView.reactData;
|
|
195
|
+
var internalData = $xeGanttView.internalData;
|
|
196
|
+
var viewCellWidth = reactData.viewCellWidth;
|
|
197
|
+
var elemStore = internalData.elemStore,
|
|
198
|
+
chartMaps = internalData.chartMaps;
|
|
199
|
+
var chartWrapper = (0, _util.getRefElem)(elemStore['main-chart-wrapper']);
|
|
200
|
+
if (chartWrapper) {
|
|
201
|
+
_xeUtils.default.arrayEach(chartWrapper.children, function (rowEl) {
|
|
202
|
+
var barEl = rowEl.children[0];
|
|
203
|
+
if (!barEl) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
var rowid = rowEl.getAttribute('rowid');
|
|
207
|
+
var rowRest = rowid ? chartMaps[rowid] : null;
|
|
208
|
+
if (rowRest) {
|
|
209
|
+
barEl.style.left = "".concat(viewCellWidth * rowRest.oLeftSize, "px");
|
|
210
|
+
barEl.style.width = "".concat(viewCellWidth * rowRest.oWidthSize, "px");
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
return $xeGanttView.$nextTick();
|
|
215
|
+
}
|
|
216
|
+
function updateStyle($xeGanttView) {
|
|
217
|
+
var $xeGantt = $xeGanttView.$xeGantt;
|
|
218
|
+
var reactData = $xeGanttView.reactData;
|
|
219
|
+
var internalData = $xeGanttView.internalData;
|
|
220
|
+
var scrollbarWidth = reactData.scrollbarWidth,
|
|
221
|
+
scrollbarHeight = reactData.scrollbarHeight,
|
|
222
|
+
tableColumn = reactData.tableColumn;
|
|
223
|
+
var elemStore = internalData.elemStore;
|
|
224
|
+
var $xeTable = internalData.xeTable;
|
|
225
|
+
var el = $xeGanttView.$refs.refElem;
|
|
226
|
+
if (!el || !el.clientHeight) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
var scrollbarXToTop = $xeGantt.computeScrollbarXToTop;
|
|
230
|
+
var xLeftCornerEl = $xeGanttView.$refs.refScrollXLeftCornerElem;
|
|
231
|
+
var xRightCornerEl = $xeGanttView.$refs.refScrollXRightCornerElem;
|
|
232
|
+
var scrollXVirtualEl = $xeGanttView.$refs.refScrollXVirtualElem;
|
|
233
|
+
var osbWidth = scrollbarWidth;
|
|
234
|
+
var osbHeight = scrollbarHeight;
|
|
235
|
+
var tbHeight = 0;
|
|
236
|
+
var tHeaderHeight = 0;
|
|
237
|
+
var tFooterHeight = 0;
|
|
238
|
+
if ($xeTable) {
|
|
239
|
+
var tableInternalData = $xeTable;
|
|
240
|
+
tbHeight = tableInternalData.tBodyHeight;
|
|
241
|
+
tHeaderHeight = tableInternalData.tHeaderHeight;
|
|
242
|
+
tFooterHeight = tableInternalData.tFooterHeight;
|
|
243
|
+
}
|
|
244
|
+
var headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
|
|
245
|
+
if (headerScrollElem) {
|
|
246
|
+
headerScrollElem.style.height = "".concat(tHeaderHeight, "px");
|
|
247
|
+
}
|
|
248
|
+
var bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
249
|
+
if (bodyScrollElem) {
|
|
250
|
+
bodyScrollElem.style.height = "".concat(tbHeight, "px");
|
|
251
|
+
}
|
|
252
|
+
if (scrollXVirtualEl) {
|
|
253
|
+
scrollXVirtualEl.style.height = "".concat(osbHeight, "px");
|
|
254
|
+
scrollXVirtualEl.style.visibility = 'visible';
|
|
255
|
+
}
|
|
256
|
+
var xWrapperEl = $xeGanttView.$refs.refScrollXWrapperElem;
|
|
257
|
+
if (xWrapperEl) {
|
|
258
|
+
xWrapperEl.style.left = scrollbarXToTop ? "".concat(osbWidth, "px") : '';
|
|
259
|
+
xWrapperEl.style.width = "".concat(el.clientWidth - osbWidth, "px");
|
|
260
|
+
}
|
|
261
|
+
if (xLeftCornerEl) {
|
|
262
|
+
xLeftCornerEl.style.width = scrollbarXToTop ? "".concat(osbWidth, "px") : '';
|
|
263
|
+
xLeftCornerEl.style.display = scrollbarXToTop ? osbHeight ? 'block' : '' : '';
|
|
264
|
+
}
|
|
265
|
+
if (xRightCornerEl) {
|
|
266
|
+
xRightCornerEl.style.width = scrollbarXToTop ? '' : "".concat(osbWidth, "px");
|
|
267
|
+
xRightCornerEl.style.display = scrollbarXToTop ? '' : osbHeight ? 'block' : '';
|
|
268
|
+
}
|
|
269
|
+
var scrollYVirtualEl = $xeGanttView.$refs.refScrollYVirtualElem;
|
|
270
|
+
if (scrollYVirtualEl) {
|
|
271
|
+
scrollYVirtualEl.style.width = "".concat(osbWidth, "px");
|
|
272
|
+
scrollYVirtualEl.style.height = "".concat(tbHeight + tHeaderHeight + tFooterHeight, "px");
|
|
273
|
+
scrollYVirtualEl.style.visibility = 'visible';
|
|
274
|
+
}
|
|
275
|
+
var yTopCornerEl = $xeGanttView.$refs.refScrollYTopCornerElem;
|
|
276
|
+
if (yTopCornerEl) {
|
|
277
|
+
yTopCornerEl.style.height = "".concat(tHeaderHeight, "px");
|
|
278
|
+
yTopCornerEl.style.display = tHeaderHeight ? 'block' : '';
|
|
279
|
+
}
|
|
280
|
+
var yWrapperEl = $xeGanttView.$refs.refScrollYWrapperElem;
|
|
281
|
+
if (yWrapperEl) {
|
|
282
|
+
yWrapperEl.style.height = "".concat(tbHeight, "px");
|
|
283
|
+
yWrapperEl.style.top = "".concat(tHeaderHeight, "px");
|
|
284
|
+
}
|
|
285
|
+
var yBottomCornerEl = $xeGanttView.$refs.refScrollYBottomCornerElem;
|
|
286
|
+
if (yBottomCornerEl) {
|
|
287
|
+
yBottomCornerEl.style.height = "".concat(tFooterHeight, "px");
|
|
288
|
+
yBottomCornerEl.style.top = "".concat(tHeaderHeight + tbHeight, "px");
|
|
289
|
+
yBottomCornerEl.style.display = tFooterHeight ? 'block' : '';
|
|
290
|
+
}
|
|
291
|
+
var colInfoElem = $xeGanttView.$refs.refColInfoElem;
|
|
292
|
+
if (colInfoElem) {
|
|
293
|
+
reactData.viewCellWidth = colInfoElem.clientWidth || 40;
|
|
294
|
+
}
|
|
295
|
+
var viewTableWidth = reactData.viewCellWidth * tableColumn.length;
|
|
296
|
+
if (bodyScrollElem) {
|
|
297
|
+
var viewWidth = bodyScrollElem.clientWidth;
|
|
298
|
+
var remainWidth = viewWidth - viewTableWidth;
|
|
299
|
+
if (remainWidth > 0) {
|
|
300
|
+
reactData.viewCellWidth += Math.floor(remainWidth / tableColumn.length);
|
|
301
|
+
viewTableWidth = viewWidth;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
var headerTableElem = (0, _util.getRefElem)(elemStore['main-header-table']);
|
|
305
|
+
var bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
|
|
306
|
+
if (headerTableElem) {
|
|
307
|
+
headerTableElem.style.width = "".concat(viewTableWidth, "px");
|
|
308
|
+
}
|
|
309
|
+
if (bodyTableElem) {
|
|
310
|
+
bodyTableElem.style.width = "".concat(viewTableWidth, "px");
|
|
311
|
+
}
|
|
312
|
+
reactData.scrollXWidth = viewTableWidth;
|
|
313
|
+
return updateChart($xeGanttView);
|
|
314
|
+
}
|
|
315
|
+
function _handleLazyRecalculate($xeGanttView) {
|
|
316
|
+
calcScrollbar($xeGanttView);
|
|
317
|
+
updateStyle($xeGanttView);
|
|
318
|
+
return $xeGanttView.$nextTick();
|
|
319
|
+
}
|
|
320
|
+
function _updateScrollXSpace($xeGanttView) {
|
|
321
|
+
var reactData = $xeGanttView.reactData;
|
|
322
|
+
var internalData = $xeGanttView.internalData;
|
|
323
|
+
var scrollXLoad = reactData.scrollXLoad,
|
|
324
|
+
scrollXWidth = reactData.scrollXWidth;
|
|
325
|
+
var elemStore = internalData.elemStore;
|
|
326
|
+
var bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
327
|
+
var bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
|
|
328
|
+
var xSpaceLeft = 0;
|
|
329
|
+
var clientWidth = 0;
|
|
330
|
+
if (bodyScrollElem) {
|
|
331
|
+
clientWidth = bodyScrollElem.clientWidth;
|
|
332
|
+
}
|
|
333
|
+
// 虚拟渲染
|
|
334
|
+
var isScrollXBig = false;
|
|
335
|
+
var ySpaceWidth = scrollXWidth;
|
|
336
|
+
if (scrollXWidth > maxXWidth) {
|
|
337
|
+
// 触右
|
|
338
|
+
if (bodyScrollElem && bodyTableElem && bodyScrollElem.scrollLeft + clientWidth >= maxXWidth) {
|
|
339
|
+
xSpaceLeft = maxXWidth - bodyTableElem.clientWidth;
|
|
340
|
+
} else {
|
|
341
|
+
xSpaceLeft = (maxXWidth - clientWidth) * (xSpaceLeft / (scrollXWidth - clientWidth));
|
|
342
|
+
}
|
|
343
|
+
ySpaceWidth = maxXWidth;
|
|
344
|
+
isScrollXBig = true;
|
|
345
|
+
}
|
|
346
|
+
if (bodyTableElem) {
|
|
347
|
+
bodyTableElem.style.transform = "translate(".concat(xSpaceLeft, "px, ").concat(reactData.scrollYTop || 0, "px)");
|
|
348
|
+
}
|
|
349
|
+
var layoutList = ['header', 'body', 'footer'];
|
|
350
|
+
layoutList.forEach(function (layout) {
|
|
351
|
+
var xSpaceElem = (0, _util.getRefElem)(elemStore["main-".concat(layout, "-xSpace")]);
|
|
352
|
+
if (xSpaceElem) {
|
|
353
|
+
xSpaceElem.style.width = scrollXLoad ? "".concat(ySpaceWidth, "px") : '';
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
reactData.scrollXLeft = xSpaceLeft;
|
|
357
|
+
reactData.scrollXWidth = ySpaceWidth;
|
|
358
|
+
reactData.isScrollXBig = isScrollXBig;
|
|
359
|
+
var scrollXSpaceEl = $xeGanttView.$refs.refScrollXSpaceElem;
|
|
360
|
+
if (scrollXSpaceEl) {
|
|
361
|
+
scrollXSpaceEl.style.width = "".concat(ySpaceWidth, "px");
|
|
362
|
+
}
|
|
363
|
+
calcScrollbar($xeGanttView);
|
|
364
|
+
return $xeGanttView.$nextTick().then(function () {
|
|
365
|
+
updateStyle($xeGanttView);
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
function _updateScrollYSpace($xeGanttView) {
|
|
369
|
+
var reactData = $xeGanttView.reactData;
|
|
370
|
+
var internalData = $xeGanttView.internalData;
|
|
371
|
+
var scrollYLoad = reactData.scrollYLoad,
|
|
372
|
+
overflowY = reactData.overflowY;
|
|
373
|
+
var elemStore = internalData.elemStore;
|
|
374
|
+
var $xeTable = internalData.xeTable;
|
|
375
|
+
var bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
376
|
+
var bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
|
|
377
|
+
var ySpaceTop = 0;
|
|
378
|
+
var scrollYHeight = 0;
|
|
379
|
+
var isScrollYBig = false;
|
|
380
|
+
if ($xeTable) {
|
|
381
|
+
var tableReactData = $xeTable;
|
|
382
|
+
ySpaceTop = tableReactData.scrollYTop;
|
|
383
|
+
scrollYHeight = tableReactData.scrollYHeight;
|
|
384
|
+
isScrollYBig = tableReactData.isScrollYBig;
|
|
385
|
+
}
|
|
386
|
+
var ySpaceHeight = scrollYHeight;
|
|
387
|
+
var scrollYTop = ySpaceTop;
|
|
388
|
+
var clientHeight = 0;
|
|
389
|
+
if (bodyScrollElem) {
|
|
390
|
+
clientHeight = bodyScrollElem.clientHeight;
|
|
391
|
+
}
|
|
392
|
+
if (isScrollYBig) {
|
|
393
|
+
// 触底
|
|
394
|
+
if (bodyScrollElem && bodyTableElem && bodyScrollElem.scrollTop + clientHeight >= maxYHeight) {
|
|
395
|
+
scrollYTop = maxYHeight - bodyTableElem.clientHeight;
|
|
396
|
+
} else {
|
|
397
|
+
scrollYTop = (maxYHeight - clientHeight) * (ySpaceTop / (scrollYHeight - clientHeight));
|
|
398
|
+
}
|
|
399
|
+
ySpaceHeight = maxYHeight;
|
|
400
|
+
}
|
|
401
|
+
if (!(scrollYLoad && overflowY)) {
|
|
402
|
+
scrollYTop = 0;
|
|
403
|
+
}
|
|
404
|
+
if (bodyTableElem) {
|
|
405
|
+
bodyTableElem.style.transform = "translate(".concat(reactData.scrollXLeft || 0, "px, ").concat(scrollYTop, "px)");
|
|
406
|
+
}
|
|
407
|
+
var layoutList = ['header', 'body', 'footer'];
|
|
408
|
+
layoutList.forEach(function (layout) {
|
|
409
|
+
var ySpaceElem = (0, _util.getRefElem)(elemStore["main-".concat(layout, "-ySpace")]);
|
|
410
|
+
if (ySpaceElem) {
|
|
411
|
+
ySpaceElem.style.height = ySpaceHeight ? "".concat(ySpaceHeight, "px") : '';
|
|
412
|
+
}
|
|
413
|
+
});
|
|
414
|
+
var scrollYSpaceEl = $xeGanttView.$refs.refScrollYSpaceElem;
|
|
415
|
+
if (scrollYSpaceEl) {
|
|
416
|
+
scrollYSpaceEl.style.height = ySpaceHeight ? "".concat(ySpaceHeight, "px") : '';
|
|
417
|
+
}
|
|
418
|
+
reactData.scrollYTop = scrollYTop;
|
|
419
|
+
reactData.scrollYHeight = scrollYHeight;
|
|
420
|
+
reactData.isScrollYBig = isScrollYBig;
|
|
421
|
+
calcScrollbar($xeGanttView);
|
|
422
|
+
return $xeGanttView.$nextTick().then(function () {
|
|
423
|
+
updateStyle($xeGanttView);
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
427
|
+
function checkLastSyncScroll($xeGanttView, isRollX, isRollY) {
|
|
428
|
+
var reactData = $xeGanttView.reactData;
|
|
429
|
+
var internalData = $xeGanttView.internalData;
|
|
430
|
+
var lcsTimeout = internalData.lcsTimeout;
|
|
431
|
+
reactData.lazScrollLoading = true;
|
|
432
|
+
if (lcsTimeout) {
|
|
433
|
+
clearTimeout(lcsTimeout);
|
|
434
|
+
}
|
|
435
|
+
internalData.lcsTimeout = setTimeout(function () {
|
|
436
|
+
internalData.lcsRunTime = Date.now();
|
|
437
|
+
internalData.lcsTimeout = undefined;
|
|
438
|
+
internalData.intoRunScroll = false;
|
|
439
|
+
internalData.inVirtualScroll = false;
|
|
440
|
+
internalData.inWheelScroll = false;
|
|
441
|
+
internalData.inHeaderScroll = false;
|
|
442
|
+
internalData.inBodyScroll = false;
|
|
443
|
+
internalData.inFooterScroll = false;
|
|
444
|
+
reactData.lazScrollLoading = false;
|
|
445
|
+
}, 200);
|
|
446
|
+
}
|
|
447
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
448
|
+
function handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, scrollTop, scrollLeft) {
|
|
449
|
+
checkLastSyncScroll($xeGanttView, isRollX, isRollY);
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* 同步表格滚动
|
|
453
|
+
*/
|
|
454
|
+
function syncTableScrollTop($xeGanttView, scrollTop) {
|
|
455
|
+
var internalData = $xeGanttView.internalData;
|
|
456
|
+
var $xeTable = internalData.xeTable;
|
|
457
|
+
if ($xeTable) {
|
|
458
|
+
var tableInternalData = $xeTable;
|
|
459
|
+
var tableElemStore = tableInternalData.elemStore;
|
|
460
|
+
var tableBodyScrollElem = (0, _util.getRefElem)(tableElemStore['main-body-scroll']);
|
|
461
|
+
if (tableBodyScrollElem) {
|
|
462
|
+
tableBodyScrollElem.scrollTop = scrollTop;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
50
466
|
var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
51
467
|
name: 'VxeGanttView',
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const refScrollXLeftCornerElem = (0, _vue.ref)();
|
|
68
|
-
const refScrollXRightCornerElem = (0, _vue.ref)();
|
|
69
|
-
const refScrollYHandleElem = (0, _vue.ref)();
|
|
70
|
-
const refScrollYTopCornerElem = (0, _vue.ref)();
|
|
71
|
-
const refScrollXWrapperElem = (0, _vue.ref)();
|
|
72
|
-
const refScrollYWrapperElem = (0, _vue.ref)();
|
|
73
|
-
const refScrollYBottomCornerElem = (0, _vue.ref)();
|
|
74
|
-
const refScrollXSpaceElem = (0, _vue.ref)();
|
|
75
|
-
const refScrollYSpaceElem = (0, _vue.ref)();
|
|
76
|
-
const refColInfoElem = (0, _vue.ref)();
|
|
77
|
-
const reactData = (0, _vue.reactive)({
|
|
468
|
+
inject: {
|
|
469
|
+
$xeGantt: {
|
|
470
|
+
default: null
|
|
471
|
+
}
|
|
472
|
+
},
|
|
473
|
+
provide: function provide() {
|
|
474
|
+
var $xeGanttView = this;
|
|
475
|
+
return {
|
|
476
|
+
$xeGanttView: $xeGanttView
|
|
477
|
+
};
|
|
478
|
+
},
|
|
479
|
+
props: {},
|
|
480
|
+
data: function data() {
|
|
481
|
+
var xID = _xeUtils.default.uniqueId();
|
|
482
|
+
var reactData = {
|
|
78
483
|
// 是否启用了横向 X 可视渲染方式加载
|
|
79
484
|
scrollXLoad: false,
|
|
80
485
|
// 是否启用了纵向 Y 可视渲染方式加载
|
|
@@ -108,703 +513,296 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
108
513
|
small: 40,
|
|
109
514
|
mini: 36
|
|
110
515
|
}
|
|
111
|
-
});
|
|
112
|
-
const internalData = createInternalData();
|
|
113
|
-
const refMaps = {
|
|
114
|
-
refElem
|
|
115
516
|
};
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
xID,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
reactData,
|
|
122
|
-
internalData,
|
|
123
|
-
getRefMaps: () => refMaps,
|
|
124
|
-
getComputeMaps: () => computeMaps
|
|
517
|
+
var internalData = createInternalData();
|
|
518
|
+
return {
|
|
519
|
+
xID: xID,
|
|
520
|
+
reactData: reactData,
|
|
521
|
+
internalData: internalData
|
|
125
522
|
};
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
break;
|
|
143
|
-
default:
|
|
144
|
-
{
|
|
145
|
-
if (minViewDate && maxViewDate) {
|
|
146
|
-
const currTime = minViewDate.getTime();
|
|
147
|
-
const diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
|
|
148
|
-
const countDayNum = Math.max(6, Math.floor(diffDayNum / 86400000) + 1);
|
|
149
|
-
const groupList = [];
|
|
150
|
-
const colList = [];
|
|
151
|
-
const groupMaps = {};
|
|
152
|
-
for (let i = 0; i < countDayNum; i++) {
|
|
153
|
-
const itemDate = new Date(currTime + i * 86400000);
|
|
154
|
-
const yyyyy = `${itemDate.getFullYear()}-${itemDate.getMonth() + 1}`;
|
|
155
|
-
const mmDd = `${itemDate.getDate()}`;
|
|
156
|
-
let groupCol = groupMaps[yyyyy];
|
|
157
|
-
const column = {
|
|
158
|
-
field: `${yyyyy}-${mmDd}`,
|
|
159
|
-
title: mmDd
|
|
160
|
-
};
|
|
161
|
-
if (groupCol) {
|
|
162
|
-
groupCol.children.push(column);
|
|
163
|
-
fullCols.push(groupCol);
|
|
164
|
-
} else {
|
|
165
|
-
groupCol = {
|
|
166
|
-
field: yyyyy,
|
|
167
|
-
title: yyyyy,
|
|
168
|
-
children: [column]
|
|
169
|
-
};
|
|
170
|
-
groupList.push(groupCol);
|
|
171
|
-
fullCols.push(groupCol);
|
|
172
|
-
groupMaps[yyyyy] = groupCol;
|
|
173
|
-
}
|
|
174
|
-
colList.push(column);
|
|
175
|
-
}
|
|
176
|
-
groupCols.push(groupList, colList);
|
|
177
|
-
const $xeTable = internalData.xeTable;
|
|
178
|
-
if ($xeTable) {
|
|
179
|
-
const startField = computeStartField.value;
|
|
180
|
-
const endField = computeEndField.value;
|
|
181
|
-
const tableInternalData = $xeTable.internalData;
|
|
182
|
-
const {
|
|
183
|
-
afterFullData
|
|
184
|
-
} = tableInternalData;
|
|
185
|
-
const ctMaps = {};
|
|
186
|
-
afterFullData.forEach(row => {
|
|
187
|
-
const rowid = $xeTable.getRowid(row);
|
|
188
|
-
const startValue = _xeUtils.default.get(row, startField);
|
|
189
|
-
const endValue = _xeUtils.default.get(row, endField);
|
|
190
|
-
if (startValue && endValue) {
|
|
191
|
-
const startDate = _xeUtils.default.toStringDate(startValue);
|
|
192
|
-
const endDate = _xeUtils.default.toStringDate(endValue);
|
|
193
|
-
const oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / 86400000);
|
|
194
|
-
const oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / 86400000) + 1;
|
|
195
|
-
ctMaps[rowid] = {
|
|
196
|
-
row,
|
|
197
|
-
rowid,
|
|
198
|
-
oLeftSize,
|
|
199
|
-
oWidthSize
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
internalData.chartMaps = ctMaps;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
reactData.tableColumn = fullCols;
|
|
210
|
-
reactData.headerGroups = groupCols;
|
|
211
|
-
};
|
|
212
|
-
const handleUpdateData = () => {
|
|
213
|
-
const $xeTable = internalData.xeTable;
|
|
214
|
-
const sdMaps = {};
|
|
215
|
-
const edMaps = {};
|
|
216
|
-
let minDate = null;
|
|
217
|
-
let maxDate = null;
|
|
523
|
+
},
|
|
524
|
+
computed: Object.assign({}, {}),
|
|
525
|
+
methods: {
|
|
526
|
+
//
|
|
527
|
+
// Method
|
|
528
|
+
//
|
|
529
|
+
refreshData: function refreshData() {
|
|
530
|
+
var $xeGanttView = this;
|
|
531
|
+
handleUpdateData($xeGanttView);
|
|
532
|
+
return _handleLazyRecalculate($xeGanttView);
|
|
533
|
+
},
|
|
534
|
+
updateViewData: function updateViewData() {
|
|
535
|
+
var $xeGanttView = this;
|
|
536
|
+
var reactData = $xeGanttView.reactData;
|
|
537
|
+
var internalData = $xeGanttView.internalData;
|
|
538
|
+
var $xeTable = internalData.xeTable;
|
|
218
539
|
if ($xeTable) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
const {
|
|
223
|
-
afterFullData
|
|
224
|
-
} = tableInternalData;
|
|
225
|
-
afterFullData.forEach(row => {
|
|
226
|
-
const startValue = _xeUtils.default.get(row, startField);
|
|
227
|
-
const endValue = _xeUtils.default.get(row, endField);
|
|
228
|
-
if (startValue && endValue) {
|
|
229
|
-
const startDate = _xeUtils.default.toStringDate(startValue);
|
|
230
|
-
if (!minDate || minDate.getTime() > startDate.getTime()) {
|
|
231
|
-
minDate = startDate;
|
|
232
|
-
}
|
|
233
|
-
const endDate = _xeUtils.default.toStringDate(endValue);
|
|
234
|
-
if (!maxDate || maxDate.getTime() < endDate.getTime()) {
|
|
235
|
-
maxDate = endDate;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
reactData.minViewDate = minDate;
|
|
241
|
-
reactData.maxViewDate = maxDate;
|
|
242
|
-
internalData.startMaps = sdMaps;
|
|
243
|
-
internalData.endMaps = edMaps;
|
|
244
|
-
handleParseColumn();
|
|
245
|
-
};
|
|
246
|
-
const calcScrollbar = () => {
|
|
247
|
-
const {
|
|
248
|
-
scrollXWidth,
|
|
249
|
-
scrollYHeight
|
|
250
|
-
} = reactData;
|
|
251
|
-
const {
|
|
252
|
-
elemStore
|
|
253
|
-
} = internalData;
|
|
254
|
-
const scrollbarOpts = computeScrollbarOpts.value;
|
|
255
|
-
const bodyWrapperElem = (0, _util.getRefElem)(elemStore['main-body-wrapper']);
|
|
256
|
-
const xHandleEl = refScrollXHandleElem.value;
|
|
257
|
-
const yHandleEl = refScrollYHandleElem.value;
|
|
258
|
-
let overflowY = false;
|
|
259
|
-
let overflowX = false;
|
|
260
|
-
if (bodyWrapperElem) {
|
|
261
|
-
overflowY = scrollYHeight > bodyWrapperElem.clientHeight;
|
|
262
|
-
if (yHandleEl) {
|
|
263
|
-
reactData.scrollbarWidth = scrollbarOpts.width || yHandleEl.offsetWidth - yHandleEl.clientWidth || 14;
|
|
264
|
-
}
|
|
265
|
-
reactData.overflowY = overflowY;
|
|
266
|
-
overflowX = scrollXWidth > bodyWrapperElem.clientWidth;
|
|
267
|
-
if (xHandleEl) {
|
|
268
|
-
reactData.scrollbarHeight = scrollbarOpts.height || xHandleEl.offsetHeight - xHandleEl.clientHeight || 14;
|
|
269
|
-
}
|
|
270
|
-
reactData.overflowX = overflowX;
|
|
271
|
-
}
|
|
272
|
-
};
|
|
273
|
-
const updateChart = () => {
|
|
274
|
-
const {
|
|
275
|
-
viewCellWidth
|
|
276
|
-
} = reactData;
|
|
277
|
-
const {
|
|
278
|
-
elemStore,
|
|
279
|
-
chartMaps
|
|
280
|
-
} = internalData;
|
|
281
|
-
const chartWrapper = (0, _util.getRefElem)(elemStore['main-chart-wrapper']);
|
|
282
|
-
if (chartWrapper) {
|
|
283
|
-
_xeUtils.default.arrayEach(chartWrapper.children, rowEl => {
|
|
284
|
-
const barEl = rowEl.children[0];
|
|
285
|
-
if (!barEl) {
|
|
286
|
-
return;
|
|
287
|
-
}
|
|
288
|
-
const rowid = rowEl.getAttribute('rowid');
|
|
289
|
-
const rowRest = rowid ? chartMaps[rowid] : null;
|
|
290
|
-
if (rowRest) {
|
|
291
|
-
barEl.style.left = `${viewCellWidth * rowRest.oLeftSize}px`;
|
|
292
|
-
barEl.style.width = `${viewCellWidth * rowRest.oWidthSize}px`;
|
|
293
|
-
}
|
|
294
|
-
});
|
|
540
|
+
var tableReactData = $xeTable;
|
|
541
|
+
var tableData = tableReactData.tableData;
|
|
542
|
+
reactData.tableData = tableData;
|
|
295
543
|
}
|
|
296
|
-
return
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
544
|
+
return $xeGanttView.$nextTick();
|
|
545
|
+
},
|
|
546
|
+
connectUpdate: function connectUpdate(_ref) {
|
|
547
|
+
var $table = _ref.$table;
|
|
548
|
+
var $xeGanttView = this;
|
|
549
|
+
var internalData = $xeGanttView.internalData;
|
|
550
|
+
if ($table) {
|
|
551
|
+
internalData.xeTable = $table;
|
|
552
|
+
}
|
|
553
|
+
return $xeGanttView.$nextTick();
|
|
554
|
+
},
|
|
555
|
+
handleUpdateStyle: function handleUpdateStyle() {
|
|
556
|
+
var $xeGanttView = this;
|
|
557
|
+
return updateStyle($xeGanttView);
|
|
558
|
+
},
|
|
559
|
+
handleLazyRecalculate: function handleLazyRecalculate() {
|
|
560
|
+
var $xeGanttView = this;
|
|
561
|
+
return _handleLazyRecalculate($xeGanttView);
|
|
562
|
+
},
|
|
563
|
+
triggerHeaderScrollEvent: function triggerHeaderScrollEvent(evnt) {
|
|
564
|
+
var $xeGanttView = this;
|
|
565
|
+
var internalData = $xeGanttView.internalData;
|
|
566
|
+
var elemStore = internalData.elemStore,
|
|
567
|
+
inVirtualScroll = internalData.inVirtualScroll,
|
|
568
|
+
inBodyScroll = internalData.inBodyScroll,
|
|
569
|
+
inFooterScroll = internalData.inFooterScroll;
|
|
570
|
+
if (inVirtualScroll) {
|
|
310
571
|
return;
|
|
311
572
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
const xRightCornerEl = refScrollXRightCornerElem.value;
|
|
315
|
-
const scrollXVirtualEl = refScrollXVirtualElem.value;
|
|
316
|
-
const osbWidth = scrollbarWidth;
|
|
317
|
-
const osbHeight = scrollbarHeight;
|
|
318
|
-
let tbHeight = 0;
|
|
319
|
-
let tHeaderHeight = 0;
|
|
320
|
-
let tFooterHeight = 0;
|
|
321
|
-
if ($xeTable) {
|
|
322
|
-
const tableInternalData = $xeTable.internalData;
|
|
323
|
-
tbHeight = tableInternalData.tBodyHeight;
|
|
324
|
-
tHeaderHeight = tableInternalData.tHeaderHeight;
|
|
325
|
-
tFooterHeight = tableInternalData.tFooterHeight;
|
|
326
|
-
}
|
|
327
|
-
const headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
|
|
328
|
-
if (headerScrollElem) {
|
|
329
|
-
headerScrollElem.style.height = `${tHeaderHeight}px`;
|
|
330
|
-
}
|
|
331
|
-
const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
332
|
-
if (bodyScrollElem) {
|
|
333
|
-
bodyScrollElem.style.height = `${tbHeight}px`;
|
|
334
|
-
}
|
|
335
|
-
if (scrollXVirtualEl) {
|
|
336
|
-
scrollXVirtualEl.style.height = `${osbHeight}px`;
|
|
337
|
-
scrollXVirtualEl.style.visibility = 'visible';
|
|
338
|
-
}
|
|
339
|
-
const xWrapperEl = refScrollXWrapperElem.value;
|
|
340
|
-
if (xWrapperEl) {
|
|
341
|
-
xWrapperEl.style.left = scrollbarXToTop ? `${osbWidth}px` : '';
|
|
342
|
-
xWrapperEl.style.width = `${el.clientWidth - osbWidth}px`;
|
|
343
|
-
}
|
|
344
|
-
if (xLeftCornerEl) {
|
|
345
|
-
xLeftCornerEl.style.width = scrollbarXToTop ? `${osbWidth}px` : '';
|
|
346
|
-
xLeftCornerEl.style.display = scrollbarXToTop ? osbHeight ? 'block' : '' : '';
|
|
347
|
-
}
|
|
348
|
-
if (xRightCornerEl) {
|
|
349
|
-
xRightCornerEl.style.width = scrollbarXToTop ? '' : `${osbWidth}px`;
|
|
350
|
-
xRightCornerEl.style.display = scrollbarXToTop ? '' : osbHeight ? 'block' : '';
|
|
351
|
-
}
|
|
352
|
-
const scrollYVirtualEl = refScrollYVirtualElem.value;
|
|
353
|
-
if (scrollYVirtualEl) {
|
|
354
|
-
scrollYVirtualEl.style.width = `${osbWidth}px`;
|
|
355
|
-
scrollYVirtualEl.style.height = `${tbHeight + tHeaderHeight + tFooterHeight}px`;
|
|
356
|
-
scrollYVirtualEl.style.visibility = 'visible';
|
|
357
|
-
}
|
|
358
|
-
const yTopCornerEl = refScrollYTopCornerElem.value;
|
|
359
|
-
if (yTopCornerEl) {
|
|
360
|
-
yTopCornerEl.style.height = `${tHeaderHeight}px`;
|
|
361
|
-
yTopCornerEl.style.display = tHeaderHeight ? 'block' : '';
|
|
362
|
-
}
|
|
363
|
-
const yWrapperEl = refScrollYWrapperElem.value;
|
|
364
|
-
if (yWrapperEl) {
|
|
365
|
-
yWrapperEl.style.height = `${tbHeight}px`;
|
|
366
|
-
yWrapperEl.style.top = `${tHeaderHeight}px`;
|
|
367
|
-
}
|
|
368
|
-
const yBottomCornerEl = refScrollYBottomCornerElem.value;
|
|
369
|
-
if (yBottomCornerEl) {
|
|
370
|
-
yBottomCornerEl.style.height = `${tFooterHeight}px`;
|
|
371
|
-
yBottomCornerEl.style.top = `${tHeaderHeight + tbHeight}px`;
|
|
372
|
-
yBottomCornerEl.style.display = tFooterHeight ? 'block' : '';
|
|
373
|
-
}
|
|
374
|
-
const colInfoElem = refColInfoElem.value;
|
|
375
|
-
if (colInfoElem) {
|
|
376
|
-
reactData.viewCellWidth = colInfoElem.clientWidth || 40;
|
|
377
|
-
}
|
|
378
|
-
let viewTableWidth = reactData.viewCellWidth * tableColumn.length;
|
|
379
|
-
if (bodyScrollElem) {
|
|
380
|
-
const viewWidth = bodyScrollElem.clientWidth;
|
|
381
|
-
const remainWidth = viewWidth - viewTableWidth;
|
|
382
|
-
if (remainWidth > 0) {
|
|
383
|
-
reactData.viewCellWidth += Math.floor(remainWidth / tableColumn.length);
|
|
384
|
-
viewTableWidth = viewWidth;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
const headerTableElem = (0, _util.getRefElem)(elemStore['main-header-table']);
|
|
388
|
-
const bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
|
|
389
|
-
if (headerTableElem) {
|
|
390
|
-
headerTableElem.style.width = `${viewTableWidth}px`;
|
|
391
|
-
}
|
|
392
|
-
if (bodyTableElem) {
|
|
393
|
-
bodyTableElem.style.width = `${viewTableWidth}px`;
|
|
394
|
-
}
|
|
395
|
-
reactData.scrollXWidth = viewTableWidth;
|
|
396
|
-
return updateChart();
|
|
397
|
-
};
|
|
398
|
-
const handleLazyRecalculate = () => {
|
|
399
|
-
calcScrollbar();
|
|
400
|
-
updateStyle();
|
|
401
|
-
return (0, _vue.nextTick)();
|
|
402
|
-
};
|
|
403
|
-
const updateScrollXSpace = () => {
|
|
404
|
-
const {
|
|
405
|
-
scrollXLoad,
|
|
406
|
-
scrollXWidth
|
|
407
|
-
} = reactData;
|
|
408
|
-
const {
|
|
409
|
-
elemStore
|
|
410
|
-
} = internalData;
|
|
411
|
-
const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
412
|
-
const bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
|
|
413
|
-
let xSpaceLeft = 0;
|
|
414
|
-
let clientWidth = 0;
|
|
415
|
-
if (bodyScrollElem) {
|
|
416
|
-
clientWidth = bodyScrollElem.clientWidth;
|
|
417
|
-
}
|
|
418
|
-
// 虚拟渲染
|
|
419
|
-
let isScrollXBig = false;
|
|
420
|
-
let ySpaceWidth = scrollXWidth;
|
|
421
|
-
if (scrollXWidth > maxXWidth) {
|
|
422
|
-
// 触右
|
|
423
|
-
if (bodyScrollElem && bodyTableElem && bodyScrollElem.scrollLeft + clientWidth >= maxXWidth) {
|
|
424
|
-
xSpaceLeft = maxXWidth - bodyTableElem.clientWidth;
|
|
425
|
-
} else {
|
|
426
|
-
xSpaceLeft = (maxXWidth - clientWidth) * (xSpaceLeft / (scrollXWidth - clientWidth));
|
|
427
|
-
}
|
|
428
|
-
ySpaceWidth = maxXWidth;
|
|
429
|
-
isScrollXBig = true;
|
|
573
|
+
if (inBodyScroll || inFooterScroll) {
|
|
574
|
+
return;
|
|
430
575
|
}
|
|
431
|
-
|
|
432
|
-
|
|
576
|
+
var wrapperEl = evnt.currentTarget;
|
|
577
|
+
var bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
578
|
+
var xHandleEl = $xeGanttView.$refs.refScrollXHandleElem;
|
|
579
|
+
if (bodyScrollElem && wrapperEl) {
|
|
580
|
+
var isRollX = true;
|
|
581
|
+
var isRollY = false;
|
|
582
|
+
var currLeftNum = wrapperEl.scrollLeft;
|
|
583
|
+
internalData.inHeaderScroll = true;
|
|
584
|
+
(0, _dom.setScrollLeft)(xHandleEl, currLeftNum);
|
|
585
|
+
(0, _dom.setScrollLeft)(bodyScrollElem, currLeftNum);
|
|
586
|
+
handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
|
|
433
587
|
}
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
const scrollXSpaceEl = refScrollXSpaceElem.value;
|
|
445
|
-
if (scrollXSpaceEl) {
|
|
446
|
-
scrollXSpaceEl.style.width = `${ySpaceWidth}px`;
|
|
588
|
+
},
|
|
589
|
+
triggerBodyScrollEvent: function triggerBodyScrollEvent(evnt) {
|
|
590
|
+
var $xeGanttView = this;
|
|
591
|
+
var internalData = $xeGanttView.internalData;
|
|
592
|
+
var elemStore = internalData.elemStore,
|
|
593
|
+
inVirtualScroll = internalData.inVirtualScroll,
|
|
594
|
+
inHeaderScroll = internalData.inHeaderScroll,
|
|
595
|
+
inFooterScroll = internalData.inFooterScroll;
|
|
596
|
+
if (inVirtualScroll) {
|
|
597
|
+
return;
|
|
447
598
|
}
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
updateStyle();
|
|
451
|
-
});
|
|
452
|
-
};
|
|
453
|
-
const updateScrollYSpace = () => {
|
|
454
|
-
const {
|
|
455
|
-
scrollYLoad,
|
|
456
|
-
overflowY
|
|
457
|
-
} = reactData;
|
|
458
|
-
const {
|
|
459
|
-
elemStore
|
|
460
|
-
} = internalData;
|
|
461
|
-
const $xeTable = internalData.xeTable;
|
|
462
|
-
const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
463
|
-
const bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
|
|
464
|
-
let ySpaceTop = 0;
|
|
465
|
-
let scrollYHeight = 0;
|
|
466
|
-
let isScrollYBig = false;
|
|
467
|
-
if ($xeTable) {
|
|
468
|
-
const tableReactData = $xeTable.reactData;
|
|
469
|
-
ySpaceTop = tableReactData.scrollYTop;
|
|
470
|
-
scrollYHeight = tableReactData.scrollYHeight;
|
|
471
|
-
isScrollYBig = tableReactData.isScrollYBig;
|
|
599
|
+
if (inHeaderScroll || inFooterScroll) {
|
|
600
|
+
return;
|
|
472
601
|
}
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
602
|
+
var wrapperEl = evnt.currentTarget;
|
|
603
|
+
var headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
|
|
604
|
+
var xHandleEl = $xeGanttView.$refs.refScrollXHandleElem;
|
|
605
|
+
var yHandleEl = $xeGanttView.$refs.refScrollYHandleElem;
|
|
606
|
+
if (headerScrollElem && wrapperEl) {
|
|
607
|
+
var isRollX = true;
|
|
608
|
+
var isRollY = true;
|
|
609
|
+
var currLeftNum = wrapperEl.scrollLeft;
|
|
610
|
+
var currTopNum = wrapperEl.scrollTop;
|
|
611
|
+
internalData.inBodyScroll = true;
|
|
612
|
+
(0, _dom.setScrollLeft)(xHandleEl, currLeftNum);
|
|
613
|
+
(0, _dom.setScrollLeft)(headerScrollElem, currLeftNum);
|
|
614
|
+
(0, _dom.setScrollTop)(yHandleEl, currTopNum);
|
|
615
|
+
syncTableScrollTop($xeGanttView, currTopNum);
|
|
616
|
+
handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
|
|
478
617
|
}
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
618
|
+
},
|
|
619
|
+
triggerFooterScrollEvent: function triggerFooterScrollEvent(evnt) {
|
|
620
|
+
var $xeGanttView = this;
|
|
621
|
+
var internalData = $xeGanttView.internalData;
|
|
622
|
+
var inVirtualScroll = internalData.inVirtualScroll,
|
|
623
|
+
inHeaderScroll = internalData.inHeaderScroll,
|
|
624
|
+
inBodyScroll = internalData.inBodyScroll;
|
|
625
|
+
if (inVirtualScroll) {
|
|
626
|
+
return;
|
|
487
627
|
}
|
|
488
|
-
if (
|
|
489
|
-
|
|
628
|
+
if (inHeaderScroll || inBodyScroll) {
|
|
629
|
+
return;
|
|
490
630
|
}
|
|
491
|
-
|
|
492
|
-
|
|
631
|
+
var wrapperEl = evnt.currentTarget;
|
|
632
|
+
if (wrapperEl) {
|
|
633
|
+
var isRollX = true;
|
|
634
|
+
var isRollY = false;
|
|
635
|
+
var currLeftNum = wrapperEl.scrollLeft;
|
|
636
|
+
handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
|
|
493
637
|
}
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
|
|
638
|
+
},
|
|
639
|
+
triggerVirtualScrollXEvent: function triggerVirtualScrollXEvent(evnt) {
|
|
640
|
+
var $xeGanttView = this;
|
|
641
|
+
var internalData = $xeGanttView.internalData;
|
|
642
|
+
var elemStore = internalData.elemStore,
|
|
643
|
+
inHeaderScroll = internalData.inHeaderScroll,
|
|
644
|
+
inBodyScroll = internalData.inBodyScroll;
|
|
645
|
+
if (inHeaderScroll || inBodyScroll) {
|
|
646
|
+
return;
|
|
504
647
|
}
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
lcsTimeout
|
|
517
|
-
} = internalData;
|
|
518
|
-
reactData.lazScrollLoading = true;
|
|
519
|
-
if (lcsTimeout) {
|
|
520
|
-
clearTimeout(lcsTimeout);
|
|
648
|
+
var wrapperEl = evnt.currentTarget;
|
|
649
|
+
var headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
|
|
650
|
+
var bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
651
|
+
if (wrapperEl) {
|
|
652
|
+
var isRollY = false;
|
|
653
|
+
var isRollX = true;
|
|
654
|
+
var currLeftNum = wrapperEl.scrollLeft;
|
|
655
|
+
internalData.inVirtualScroll = true;
|
|
656
|
+
(0, _dom.setScrollLeft)(headerScrollElem, currLeftNum);
|
|
657
|
+
(0, _dom.setScrollLeft)(bodyScrollElem, currLeftNum);
|
|
658
|
+
handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
|
|
521
659
|
}
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
reactData.lazScrollLoading = false;
|
|
532
|
-
}, 200);
|
|
533
|
-
};
|
|
534
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
535
|
-
const handleScrollEvent = (evnt, isRollY, isRollX, scrollTop, scrollLeft) => {
|
|
536
|
-
checkLastSyncScroll(isRollX, isRollY);
|
|
537
|
-
};
|
|
538
|
-
const ganttViewMethods = {
|
|
539
|
-
updateViewData() {
|
|
540
|
-
const $xeTable = internalData.xeTable;
|
|
541
|
-
if ($xeTable) {
|
|
542
|
-
const tableReactData = $xeTable.reactData;
|
|
543
|
-
const {
|
|
544
|
-
tableData
|
|
545
|
-
} = tableReactData;
|
|
546
|
-
reactData.tableData = tableData;
|
|
547
|
-
}
|
|
548
|
-
return (0, _vue.nextTick)();
|
|
549
|
-
},
|
|
550
|
-
connectUpdate({
|
|
551
|
-
$table
|
|
552
|
-
}) {
|
|
553
|
-
if ($table) {
|
|
554
|
-
internalData.xeTable = $table;
|
|
555
|
-
}
|
|
556
|
-
return (0, _vue.nextTick)();
|
|
660
|
+
},
|
|
661
|
+
triggerVirtualScrollYEvent: function triggerVirtualScrollYEvent(evnt) {
|
|
662
|
+
var $xeGanttView = this;
|
|
663
|
+
var internalData = $xeGanttView.internalData;
|
|
664
|
+
var elemStore = internalData.elemStore,
|
|
665
|
+
inHeaderScroll = internalData.inHeaderScroll,
|
|
666
|
+
inBodyScroll = internalData.inBodyScroll;
|
|
667
|
+
if (inHeaderScroll || inBodyScroll) {
|
|
668
|
+
return;
|
|
557
669
|
}
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
} = tableInternalData;
|
|
569
|
-
const tableBodyScrollElem = (0, _util.getRefElem)(tableElemStore['main-body-scroll']);
|
|
570
|
-
if (tableBodyScrollElem) {
|
|
571
|
-
tableBodyScrollElem.scrollTop = scrollTop;
|
|
572
|
-
}
|
|
670
|
+
var wrapperEl = evnt.currentTarget;
|
|
671
|
+
var bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
672
|
+
if (wrapperEl) {
|
|
673
|
+
var isRollY = true;
|
|
674
|
+
var isRollX = false;
|
|
675
|
+
var currTopNum = wrapperEl.scrollTop;
|
|
676
|
+
internalData.inVirtualScroll = true;
|
|
677
|
+
(0, _dom.setScrollTop)(bodyScrollElem, currTopNum);
|
|
678
|
+
syncTableScrollTop($xeGanttView, currTopNum);
|
|
679
|
+
handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, currTopNum, wrapperEl.scrollLeft);
|
|
573
680
|
}
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
const xHandleEl = refScrollXHandleElem.value;
|
|
594
|
-
if (bodyScrollElem && wrapperEl) {
|
|
595
|
-
const isRollX = true;
|
|
596
|
-
const isRollY = false;
|
|
597
|
-
const currLeftNum = wrapperEl.scrollLeft;
|
|
598
|
-
internalData.inHeaderScroll = true;
|
|
599
|
-
(0, _dom.setScrollLeft)(xHandleEl, currLeftNum);
|
|
600
|
-
(0, _dom.setScrollLeft)(bodyScrollElem, currLeftNum);
|
|
601
|
-
handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
|
|
602
|
-
}
|
|
603
|
-
},
|
|
604
|
-
triggerBodyScrollEvent(evnt) {
|
|
605
|
-
const {
|
|
606
|
-
elemStore,
|
|
607
|
-
inVirtualScroll,
|
|
608
|
-
inHeaderScroll,
|
|
609
|
-
inFooterScroll
|
|
610
|
-
} = internalData;
|
|
611
|
-
if (inVirtualScroll) {
|
|
612
|
-
return;
|
|
613
|
-
}
|
|
614
|
-
if (inHeaderScroll || inFooterScroll) {
|
|
615
|
-
return;
|
|
616
|
-
}
|
|
617
|
-
const wrapperEl = evnt.currentTarget;
|
|
618
|
-
const headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
|
|
619
|
-
const xHandleEl = refScrollXHandleElem.value;
|
|
620
|
-
const yHandleEl = refScrollYHandleElem.value;
|
|
621
|
-
if (headerScrollElem && wrapperEl) {
|
|
622
|
-
const isRollX = true;
|
|
623
|
-
const isRollY = true;
|
|
624
|
-
const currLeftNum = wrapperEl.scrollLeft;
|
|
625
|
-
const currTopNum = wrapperEl.scrollTop;
|
|
626
|
-
internalData.inBodyScroll = true;
|
|
627
|
-
(0, _dom.setScrollLeft)(xHandleEl, currLeftNum);
|
|
628
|
-
(0, _dom.setScrollLeft)(headerScrollElem, currLeftNum);
|
|
629
|
-
(0, _dom.setScrollTop)(yHandleEl, currTopNum);
|
|
630
|
-
syncTableScrollTop(currTopNum);
|
|
631
|
-
handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
|
|
632
|
-
}
|
|
633
|
-
},
|
|
634
|
-
triggerFooterScrollEvent(evnt) {
|
|
635
|
-
const {
|
|
636
|
-
inVirtualScroll,
|
|
637
|
-
inHeaderScroll,
|
|
638
|
-
inBodyScroll
|
|
639
|
-
} = internalData;
|
|
640
|
-
if (inVirtualScroll) {
|
|
641
|
-
return;
|
|
642
|
-
}
|
|
643
|
-
if (inHeaderScroll || inBodyScroll) {
|
|
644
|
-
return;
|
|
645
|
-
}
|
|
646
|
-
const wrapperEl = evnt.currentTarget;
|
|
647
|
-
if (wrapperEl) {
|
|
648
|
-
const isRollX = true;
|
|
649
|
-
const isRollY = false;
|
|
650
|
-
const currLeftNum = wrapperEl.scrollLeft;
|
|
651
|
-
handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
|
|
652
|
-
}
|
|
653
|
-
},
|
|
654
|
-
triggerVirtualScrollXEvent(evnt) {
|
|
655
|
-
const {
|
|
656
|
-
elemStore,
|
|
657
|
-
inHeaderScroll,
|
|
658
|
-
inBodyScroll
|
|
659
|
-
} = internalData;
|
|
660
|
-
if (inHeaderScroll || inBodyScroll) {
|
|
661
|
-
return;
|
|
662
|
-
}
|
|
663
|
-
const wrapperEl = evnt.currentTarget;
|
|
664
|
-
const headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
|
|
665
|
-
const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
666
|
-
if (wrapperEl) {
|
|
667
|
-
const isRollY = false;
|
|
668
|
-
const isRollX = true;
|
|
669
|
-
const currLeftNum = wrapperEl.scrollLeft;
|
|
670
|
-
internalData.inVirtualScroll = true;
|
|
671
|
-
(0, _dom.setScrollLeft)(headerScrollElem, currLeftNum);
|
|
672
|
-
(0, _dom.setScrollLeft)(bodyScrollElem, currLeftNum);
|
|
673
|
-
handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
|
|
674
|
-
}
|
|
675
|
-
},
|
|
676
|
-
triggerVirtualScrollYEvent(evnt) {
|
|
677
|
-
const {
|
|
678
|
-
elemStore,
|
|
679
|
-
inHeaderScroll,
|
|
680
|
-
inBodyScroll
|
|
681
|
-
} = internalData;
|
|
682
|
-
if (inHeaderScroll || inBodyScroll) {
|
|
683
|
-
return;
|
|
684
|
-
}
|
|
685
|
-
const wrapperEl = evnt.currentTarget;
|
|
686
|
-
const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
|
|
687
|
-
if (wrapperEl) {
|
|
688
|
-
const isRollY = true;
|
|
689
|
-
const isRollX = false;
|
|
690
|
-
const currTopNum = wrapperEl.scrollTop;
|
|
691
|
-
internalData.inVirtualScroll = true;
|
|
692
|
-
(0, _dom.setScrollTop)(bodyScrollElem, currTopNum);
|
|
693
|
-
syncTableScrollTop(currTopNum);
|
|
694
|
-
handleScrollEvent(evnt, isRollY, isRollX, currTopNum, wrapperEl.scrollLeft);
|
|
695
|
-
}
|
|
696
|
-
},
|
|
697
|
-
updateScrollXSpace,
|
|
698
|
-
updateScrollYSpace
|
|
699
|
-
};
|
|
700
|
-
const handleGlobalResizeEvent = () => {
|
|
701
|
-
handleLazyRecalculate();
|
|
702
|
-
};
|
|
703
|
-
Object.assign($xeGanttView, ganttViewMethods, ganttViewPrivateMethods);
|
|
704
|
-
const renderScrollX = () => {
|
|
705
|
-
return (0, _vue.h)('div', {
|
|
681
|
+
},
|
|
682
|
+
updateScrollXSpace: function updateScrollXSpace() {
|
|
683
|
+
var $xeGanttView = this;
|
|
684
|
+
return _updateScrollXSpace($xeGanttView);
|
|
685
|
+
},
|
|
686
|
+
updateScrollYSpace: function updateScrollYSpace() {
|
|
687
|
+
var $xeGanttView = this;
|
|
688
|
+
return _updateScrollYSpace($xeGanttView);
|
|
689
|
+
},
|
|
690
|
+
handleGlobalResizeEvent: function handleGlobalResizeEvent() {
|
|
691
|
+
var $xeGanttView = this;
|
|
692
|
+
_handleLazyRecalculate($xeGanttView);
|
|
693
|
+
},
|
|
694
|
+
//
|
|
695
|
+
// Render
|
|
696
|
+
//
|
|
697
|
+
renderScrollX: function renderScrollX(h) {
|
|
698
|
+
var $xeGanttView = this;
|
|
699
|
+
return h('div', {
|
|
706
700
|
key: 'vsx',
|
|
707
|
-
ref: refScrollXVirtualElem,
|
|
701
|
+
ref: 'refScrollXVirtualElem',
|
|
708
702
|
class: 'vxe-gantt-view--scroll-x-virtual'
|
|
709
|
-
}, [
|
|
710
|
-
ref: refScrollXLeftCornerElem,
|
|
703
|
+
}, [h('div', {
|
|
704
|
+
ref: 'refScrollXLeftCornerElem',
|
|
711
705
|
class: 'vxe-gantt-view--scroll-x-left-corner'
|
|
712
|
-
}),
|
|
713
|
-
ref: refScrollXWrapperElem,
|
|
706
|
+
}), h('div', {
|
|
707
|
+
ref: 'refScrollXWrapperElem',
|
|
714
708
|
class: 'vxe-gantt-view--scroll-x-wrapper'
|
|
715
|
-
}, [
|
|
716
|
-
ref: refScrollXHandleElem,
|
|
709
|
+
}, [h('div', {
|
|
710
|
+
ref: 'refScrollXHandleElem',
|
|
717
711
|
class: 'vxe-gantt-view--scroll-x-handle',
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
712
|
+
on: {
|
|
713
|
+
scroll: $xeGanttView.triggerVirtualScrollXEvent
|
|
714
|
+
}
|
|
715
|
+
}, [h('div', {
|
|
716
|
+
ref: 'refScrollXSpaceElem',
|
|
721
717
|
class: 'vxe-gantt-view--scroll-x-space'
|
|
722
|
-
})])]),
|
|
723
|
-
ref: refScrollXRightCornerElem,
|
|
718
|
+
})])]), h('div', {
|
|
719
|
+
ref: 'refScrollXRightCornerElem',
|
|
724
720
|
class: 'vxe-gantt-view--scroll-x-right-corner'
|
|
725
721
|
})]);
|
|
726
|
-
}
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
722
|
+
},
|
|
723
|
+
renderScrollY: function renderScrollY(h) {
|
|
724
|
+
var $xeGanttView = this;
|
|
725
|
+
return h('div', {
|
|
726
|
+
ref: 'refScrollYVirtualElem',
|
|
730
727
|
class: 'vxe-gantt-view--scroll-y-virtual'
|
|
731
|
-
}, [
|
|
732
|
-
ref: refScrollYTopCornerElem,
|
|
728
|
+
}, [h('div', {
|
|
729
|
+
ref: 'refScrollYTopCornerElem',
|
|
733
730
|
class: 'vxe-gantt-view--scroll-y-top-corner'
|
|
734
|
-
}),
|
|
735
|
-
ref: refScrollYWrapperElem,
|
|
731
|
+
}), h('div', {
|
|
732
|
+
ref: 'refScrollYWrapperElem',
|
|
736
733
|
class: 'vxe-gantt-view--scroll-y-wrapper'
|
|
737
|
-
}, [
|
|
738
|
-
ref: refScrollYHandleElem,
|
|
734
|
+
}, [h('div', {
|
|
735
|
+
ref: 'refScrollYHandleElem',
|
|
739
736
|
class: 'vxe-gantt-view--scroll-y-handle',
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
737
|
+
on: {
|
|
738
|
+
scroll: $xeGanttView.triggerVirtualScrollYEvent
|
|
739
|
+
}
|
|
740
|
+
}, [h('div', {
|
|
741
|
+
ref: 'refScrollYSpaceElem',
|
|
743
742
|
class: 'vxe-gantt-view--scroll-y-space'
|
|
744
|
-
})])]),
|
|
745
|
-
ref: refScrollYBottomCornerElem,
|
|
743
|
+
})])]), h('div', {
|
|
744
|
+
ref: 'refScrollYBottomCornerElem',
|
|
746
745
|
class: 'vxe-gantt-view--scroll-y-bottom-corner'
|
|
747
746
|
})]);
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
return
|
|
747
|
+
},
|
|
748
|
+
renderViewport: function renderViewport(h) {
|
|
749
|
+
return h('div', {
|
|
751
750
|
class: 'vxe-gantt-view--viewport-wrapper'
|
|
752
|
-
}, [
|
|
753
|
-
}
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
751
|
+
}, [h(_ganttHeader.default), h(_ganttBody.default)]);
|
|
752
|
+
},
|
|
753
|
+
renderBody: function renderBody(h) {
|
|
754
|
+
var $xeGanttView = this;
|
|
755
|
+
var $xeGantt = $xeGanttView.$xeGantt;
|
|
756
|
+
var scrollbarYToLeft = $xeGantt.computeScrollbarYToLeft;
|
|
757
|
+
return h('div', {
|
|
757
758
|
class: 'vxe-gantt-view--layout-wrapper'
|
|
758
|
-
}, scrollbarYToLeft ? [renderScrollY(), renderViewport()] : [renderViewport(), renderScrollY()]);
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
759
|
+
}, scrollbarYToLeft ? [$xeGanttView.renderScrollY(h), $xeGanttView.renderViewport(h)] : [$xeGanttView.renderViewport(h), $xeGanttView.renderScrollY(h)]);
|
|
760
|
+
},
|
|
761
|
+
renderVN: function renderVN(h) {
|
|
762
|
+
var $xeGanttView = this;
|
|
763
|
+
var $xeGantt = $xeGanttView.$xeGantt;
|
|
764
|
+
var reactData = $xeGanttView.reactData;
|
|
765
|
+
var overflowX = reactData.overflowX,
|
|
766
|
+
overflowY = reactData.overflowY,
|
|
767
|
+
scrollXLoad = reactData.scrollXLoad,
|
|
768
|
+
scrollYLoad = reactData.scrollYLoad;
|
|
769
|
+
var taskViewOpts = $xeGantt.computeTaskViewOpts;
|
|
770
|
+
var scrollbarXToTop = $xeGantt.computeScrollbarXToTop;
|
|
771
|
+
return h('div', {
|
|
772
|
+
ref: 'refElem',
|
|
773
|
+
class: ['vxe-gantt-view', "mode--".concat(taskViewOpts.mode || 'day'), {
|
|
772
774
|
'is--scroll-y': overflowY,
|
|
773
775
|
'is--scroll-x': overflowX,
|
|
774
776
|
'is--virtual-x': scrollXLoad,
|
|
775
777
|
'is--virtual-y': scrollYLoad
|
|
776
778
|
}]
|
|
777
|
-
}, [
|
|
779
|
+
}, [h('div', {
|
|
778
780
|
class: 'vxe-gantt-view--render-wrapper'
|
|
779
|
-
}, scrollbarXToTop ? [renderScrollX(), renderBody()] : [renderBody(), renderScrollX()]),
|
|
781
|
+
}, scrollbarXToTop ? [$xeGanttView.renderScrollX(h), $xeGanttView.renderBody(h)] : [$xeGanttView.renderBody(h), $xeGanttView.renderScrollX(h)]), h('div', {
|
|
780
782
|
class: 'vxe-gantt-view--render-vars'
|
|
781
|
-
}, [
|
|
782
|
-
ref: refColInfoElem,
|
|
783
|
+
}, [h('div', {
|
|
784
|
+
ref: 'refColInfoElem',
|
|
783
785
|
class: 'vxe-gantt-view--column-info'
|
|
784
786
|
})])]);
|
|
785
|
-
}
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
});
|
|
803
|
-
$xeGanttView.renderVN = renderVN;
|
|
804
|
-
(0, _vue.provide)('$xeGanttView', $xeGanttView);
|
|
805
|
-
return $xeGanttView;
|
|
787
|
+
}
|
|
788
|
+
},
|
|
789
|
+
watch: {
|
|
790
|
+
'reactData.tableData': function reactDataTableData() {
|
|
791
|
+
var $xeGanttView = this;
|
|
792
|
+
handleUpdateData($xeGanttView);
|
|
793
|
+
}
|
|
794
|
+
},
|
|
795
|
+
mounted: function mounted() {
|
|
796
|
+
var $xeGanttView = this;
|
|
797
|
+
globalEvents.on($xeGanttView, 'resize', $xeGanttView.handleGlobalResizeEvent);
|
|
798
|
+
},
|
|
799
|
+
beforeDestroy: function beforeDestroy() {
|
|
800
|
+
var $xeGanttView = this;
|
|
801
|
+
var internalData = $xeGanttView.internalData;
|
|
802
|
+
globalEvents.off($xeGanttView, 'keydown');
|
|
803
|
+
_xeUtils.default.assign(internalData, createInternalData());
|
|
806
804
|
},
|
|
807
|
-
render() {
|
|
808
|
-
return this.renderVN();
|
|
805
|
+
render: function render(h) {
|
|
806
|
+
return this.renderVN(h);
|
|
809
807
|
}
|
|
810
808
|
});
|