vxe-gantt 4.0.27 → 4.1.1
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/emits.js +2 -0
- package/es/gantt/src/gantt-chart.js +28 -18
- package/es/gantt/src/gantt-header.js +18 -6
- package/es/gantt/src/gantt-view.js +307 -47
- package/es/gantt/src/gantt.js +151 -8
- package/es/gantt/src/util.js +11 -0
- package/es/ui/index.js +4 -1
- package/es/ui/src/log.js +1 -1
- package/lib/gantt/src/emits.js +1 -1
- package/lib/gantt/src/emits.min.js +1 -1
- package/lib/gantt/src/gantt-chart.js +36 -16
- package/lib/gantt/src/gantt-chart.min.js +1 -1
- package/lib/gantt/src/gantt-header.js +15 -5
- package/lib/gantt/src/gantt-header.min.js +1 -1
- package/lib/gantt/src/gantt-view.js +357 -50
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +163 -6
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/gantt/src/util.js +12 -0
- package/lib/gantt/src/util.min.js +1 -1
- package/lib/index.umd.js +590 -80
- package/lib/index.umd.min.js +1 -1
- package/lib/ui/index.js +4 -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/package.json +3 -3
- package/packages/gantt/src/emits.ts +2 -0
- package/packages/gantt/src/gantt-chart.ts +34 -13
- package/packages/gantt/src/gantt-header.ts +15 -6
- package/packages/gantt/src/gantt-view.ts +310 -46
- package/packages/gantt/src/gantt.ts +162 -8
- package/packages/gantt/src/util.ts +13 -0
- package/packages/ui/index.ts +3 -0
|
@@ -18,6 +18,8 @@ const {
|
|
|
18
18
|
globalEvents
|
|
19
19
|
} = _core.VxeUI;
|
|
20
20
|
const sourceType = 'gantt';
|
|
21
|
+
const minuteMs = 1000 * 60;
|
|
22
|
+
const dayMs = minuteMs * 60 * 24;
|
|
21
23
|
function createInternalData() {
|
|
22
24
|
return {
|
|
23
25
|
xeTable: null,
|
|
@@ -55,7 +57,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
55
57
|
computeEndField,
|
|
56
58
|
computeScrollbarOpts,
|
|
57
59
|
computeScrollbarXToTop,
|
|
58
|
-
computeScrollbarYToLeft
|
|
60
|
+
computeScrollbarYToLeft,
|
|
61
|
+
computeScaleUnit,
|
|
62
|
+
computeWeekScale,
|
|
63
|
+
computeMinScale
|
|
59
64
|
} = $xeGantt.getComputeMaps();
|
|
60
65
|
const refElem = (0, _vue.ref)();
|
|
61
66
|
const refScrollXVirtualElem = (0, _vue.ref)();
|
|
@@ -105,7 +110,80 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
105
110
|
const refMaps = {
|
|
106
111
|
refElem
|
|
107
112
|
};
|
|
108
|
-
const
|
|
113
|
+
const computeScaleDateList = (0, _vue.computed)(() => {
|
|
114
|
+
const {
|
|
115
|
+
minViewDate,
|
|
116
|
+
maxViewDate
|
|
117
|
+
} = reactData;
|
|
118
|
+
const minScale = computeMinScale.value;
|
|
119
|
+
const dateList = [];
|
|
120
|
+
if (!minViewDate || !maxViewDate) {
|
|
121
|
+
return dateList;
|
|
122
|
+
}
|
|
123
|
+
const startTime = minViewDate.getTime();
|
|
124
|
+
const endTime = maxViewDate.getTime();
|
|
125
|
+
switch (minScale.type) {
|
|
126
|
+
case 'year':
|
|
127
|
+
{
|
|
128
|
+
let currDate = _xeUtils.default.getWhatYear(minViewDate, 0, 'first');
|
|
129
|
+
while (currDate <= maxViewDate) {
|
|
130
|
+
const itemDate = currDate;
|
|
131
|
+
dateList.push(itemDate);
|
|
132
|
+
currDate = _xeUtils.default.getWhatYear(currDate, 1);
|
|
133
|
+
}
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
case 'quarter':
|
|
137
|
+
{
|
|
138
|
+
let currDate = _xeUtils.default.getWhatQuarter(minViewDate, 0, 'first');
|
|
139
|
+
while (currDate <= maxViewDate) {
|
|
140
|
+
const itemDate = currDate;
|
|
141
|
+
dateList.push(itemDate);
|
|
142
|
+
currDate = _xeUtils.default.getWhatQuarter(currDate, 1);
|
|
143
|
+
}
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
case 'month':
|
|
147
|
+
{
|
|
148
|
+
let currDate = _xeUtils.default.getWhatMonth(minViewDate, 0, 'first');
|
|
149
|
+
while (currDate <= maxViewDate) {
|
|
150
|
+
const itemDate = currDate;
|
|
151
|
+
dateList.push(itemDate);
|
|
152
|
+
currDate = _xeUtils.default.getWhatMonth(currDate, 1);
|
|
153
|
+
}
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case 'week':
|
|
157
|
+
{
|
|
158
|
+
let currDate = _xeUtils.default.getWhatWeek(minViewDate, 0, minScale.startDay, minScale.startDay);
|
|
159
|
+
while (currDate <= maxViewDate) {
|
|
160
|
+
const itemDate = currDate;
|
|
161
|
+
dateList.push(itemDate);
|
|
162
|
+
currDate = _xeUtils.default.getWhatWeek(currDate, 1);
|
|
163
|
+
}
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
case 'day':
|
|
167
|
+
case 'date':
|
|
168
|
+
case 'hour':
|
|
169
|
+
case 'minute':
|
|
170
|
+
case 'second':
|
|
171
|
+
{
|
|
172
|
+
const gapTime = (0, _util.getStandardGapTime)(minScale.type);
|
|
173
|
+
let currTime = startTime;
|
|
174
|
+
while (currTime <= endTime) {
|
|
175
|
+
const itemDate = new Date(currTime);
|
|
176
|
+
dateList.push(itemDate);
|
|
177
|
+
currTime += gapTime;
|
|
178
|
+
}
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return dateList;
|
|
183
|
+
});
|
|
184
|
+
const computeMaps = {
|
|
185
|
+
computeScaleDateList
|
|
186
|
+
};
|
|
109
187
|
const $xeGanttView = {
|
|
110
188
|
xID,
|
|
111
189
|
props,
|
|
@@ -146,44 +224,18 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
146
224
|
second: `${yyyy}_${MM}_${dd}_${HH}_${mm}_${ss}`
|
|
147
225
|
};
|
|
148
226
|
};
|
|
149
|
-
const
|
|
150
|
-
const ganttProps = $xeGantt.props;
|
|
227
|
+
const handleColumnHeader = () => {
|
|
151
228
|
const ganttReactData = $xeGantt.reactData;
|
|
152
|
-
const {
|
|
153
|
-
treeConfig
|
|
154
|
-
} = ganttProps;
|
|
155
229
|
const {
|
|
156
230
|
taskScaleList
|
|
157
231
|
} = ganttReactData;
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const minScale = _xeUtils.default.last(taskScaleList);
|
|
232
|
+
const scaleUnit = computeScaleUnit.value;
|
|
233
|
+
const minScale = computeMinScale.value;
|
|
234
|
+
const weekScale = computeWeekScale.value;
|
|
235
|
+
const scaleDateList = computeScaleDateList.value;
|
|
163
236
|
const fullCols = [];
|
|
164
237
|
const groupCols = [];
|
|
165
|
-
if (minScale &&
|
|
166
|
-
const minSType = minScale.type;
|
|
167
|
-
const weekScale = taskScaleList.find(item => item.type === 'week');
|
|
168
|
-
let gapTime = 1000 * 60 * 60 * 24;
|
|
169
|
-
switch (minScale.type) {
|
|
170
|
-
case 'hour':
|
|
171
|
-
gapTime = 1000 * 60 * 60;
|
|
172
|
-
break;
|
|
173
|
-
case 'minute':
|
|
174
|
-
gapTime = 1000 * 60;
|
|
175
|
-
break;
|
|
176
|
-
case 'second':
|
|
177
|
-
gapTime = 1000;
|
|
178
|
-
break;
|
|
179
|
-
default:
|
|
180
|
-
{
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
const currTime = minViewDate.getTime();
|
|
185
|
-
const diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
|
|
186
|
-
const countSize = Math.max(5, Math.floor(diffDayNum / gapTime) + 1);
|
|
238
|
+
if (minScale && scaleUnit && scaleDateList.length) {
|
|
187
239
|
const renderListMaps = {
|
|
188
240
|
year: [],
|
|
189
241
|
quarter: [],
|
|
@@ -207,7 +259,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
207
259
|
second: {}
|
|
208
260
|
};
|
|
209
261
|
const handleData = (type, colMaps, minCol) => {
|
|
210
|
-
if (
|
|
262
|
+
if (minScale.type === type) {
|
|
211
263
|
return;
|
|
212
264
|
}
|
|
213
265
|
const currCol = colMaps[type];
|
|
@@ -225,14 +277,15 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
225
277
|
currGpCol.children.push(minCol);
|
|
226
278
|
}
|
|
227
279
|
};
|
|
228
|
-
for (let i = 0; i <
|
|
229
|
-
const itemDate =
|
|
280
|
+
for (let i = 0; i < scaleDateList.length; i++) {
|
|
281
|
+
const itemDate = scaleDateList[i];
|
|
230
282
|
const [yyyy, MM, dd, HH, mm, ss] = _xeUtils.default.toDateString(itemDate, 'yyyy-M-d-H-m-s').split('-');
|
|
231
283
|
const e = itemDate.getDay();
|
|
232
284
|
const E = e + 1;
|
|
233
285
|
const q = Math.ceil((itemDate.getMonth() + 1) / 3);
|
|
234
286
|
const W = _xeUtils.default.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined);
|
|
235
287
|
const dateObj = {
|
|
288
|
+
date: itemDate,
|
|
236
289
|
yy: yyyy,
|
|
237
290
|
M: MM,
|
|
238
291
|
d: dd,
|
|
@@ -291,14 +344,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
291
344
|
dateObj
|
|
292
345
|
}
|
|
293
346
|
};
|
|
294
|
-
const minCol = colMaps[
|
|
347
|
+
const minCol = colMaps[minScale.type];
|
|
295
348
|
if (minScale.level < 19) {
|
|
296
349
|
handleData('year', colMaps, minCol);
|
|
297
350
|
}
|
|
298
351
|
if (minScale.level < 17) {
|
|
299
352
|
handleData('quarter', colMaps, minCol);
|
|
300
353
|
}
|
|
301
|
-
if (minScale.level <
|
|
354
|
+
if (minScale.level < 15) {
|
|
302
355
|
handleData('month', colMaps, minCol);
|
|
303
356
|
}
|
|
304
357
|
if (minScale.level < 13) {
|
|
@@ -307,7 +360,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
307
360
|
if (minScale.level < 11) {
|
|
308
361
|
handleData('day', colMaps, minCol);
|
|
309
362
|
}
|
|
310
|
-
if (minScale.level <
|
|
363
|
+
if (minScale.level < 9) {
|
|
311
364
|
handleData('date', colMaps, minCol);
|
|
312
365
|
}
|
|
313
366
|
if (minScale.level < 7) {
|
|
@@ -316,10 +369,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
316
369
|
if (minScale.level < 5) {
|
|
317
370
|
handleData('minute', colMaps, minCol);
|
|
318
371
|
}
|
|
372
|
+
if (minScale.level < 3) {
|
|
373
|
+
handleData('second', colMaps, minCol);
|
|
374
|
+
}
|
|
319
375
|
fullCols.push(minCol);
|
|
320
376
|
}
|
|
321
377
|
taskScaleList.forEach(scaleItem => {
|
|
322
|
-
if (scaleItem.type ===
|
|
378
|
+
if (scaleItem.type === minScale.type) {
|
|
323
379
|
groupCols.push({
|
|
324
380
|
scaleItem,
|
|
325
381
|
columns: fullCols
|
|
@@ -338,6 +394,249 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
338
394
|
columns: list
|
|
339
395
|
});
|
|
340
396
|
});
|
|
397
|
+
}
|
|
398
|
+
return {
|
|
399
|
+
fullCols,
|
|
400
|
+
groupCols
|
|
401
|
+
};
|
|
402
|
+
};
|
|
403
|
+
const createChartRender = fullCols => {
|
|
404
|
+
const {
|
|
405
|
+
minViewDate
|
|
406
|
+
} = reactData;
|
|
407
|
+
const minScale = computeMinScale.value;
|
|
408
|
+
const scaleUnit = computeScaleUnit.value;
|
|
409
|
+
const weekScale = computeWeekScale.value;
|
|
410
|
+
switch (scaleUnit) {
|
|
411
|
+
case 'year':
|
|
412
|
+
{
|
|
413
|
+
const indexMaps = {};
|
|
414
|
+
fullCols.forEach(({
|
|
415
|
+
dateObj
|
|
416
|
+
}, i) => {
|
|
417
|
+
const yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy');
|
|
418
|
+
indexMaps[yyyyMM] = i;
|
|
419
|
+
});
|
|
420
|
+
return (startValue, endValue) => {
|
|
421
|
+
const startDate = parseStringDate(startValue);
|
|
422
|
+
const endDate = parseStringDate(endValue);
|
|
423
|
+
const startStr = _xeUtils.default.toDateString(startDate, 'yyyy');
|
|
424
|
+
const startFirstDate = _xeUtils.default.getWhatYear(startDate, 0, 'first');
|
|
425
|
+
const endStr = _xeUtils.default.toDateString(endDate, 'yyyy');
|
|
426
|
+
const endFirstDate = _xeUtils.default.getWhatYear(endDate, 0, 'first');
|
|
427
|
+
const dateSize = Math.floor((_xeUtils.default.getWhatYear(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / dayMs);
|
|
428
|
+
const subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
|
|
429
|
+
const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
|
|
430
|
+
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
431
|
+
return {
|
|
432
|
+
offsetLeftSize,
|
|
433
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
434
|
+
};
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
case 'quarter':
|
|
438
|
+
{
|
|
439
|
+
const indexMaps = {};
|
|
440
|
+
fullCols.forEach(({
|
|
441
|
+
dateObj
|
|
442
|
+
}, i) => {
|
|
443
|
+
const q = _xeUtils.default.toDateString(dateObj.date, 'yyyy-q');
|
|
444
|
+
indexMaps[q] = i;
|
|
445
|
+
});
|
|
446
|
+
return (startValue, endValue) => {
|
|
447
|
+
const startDate = parseStringDate(startValue);
|
|
448
|
+
const endDate = parseStringDate(endValue);
|
|
449
|
+
const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-q');
|
|
450
|
+
const startFirstDate = _xeUtils.default.getWhatQuarter(startDate, 0, 'first');
|
|
451
|
+
const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-q');
|
|
452
|
+
const endFirstDate = _xeUtils.default.getWhatQuarter(endDate, 0, 'first');
|
|
453
|
+
const dateSize = Math.floor((_xeUtils.default.getWhatQuarter(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / dayMs);
|
|
454
|
+
const subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
|
|
455
|
+
const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
|
|
456
|
+
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
457
|
+
return {
|
|
458
|
+
offsetLeftSize,
|
|
459
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
460
|
+
};
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
case 'month':
|
|
464
|
+
{
|
|
465
|
+
const indexMaps = {};
|
|
466
|
+
fullCols.forEach(({
|
|
467
|
+
dateObj
|
|
468
|
+
}, i) => {
|
|
469
|
+
const yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM');
|
|
470
|
+
indexMaps[yyyyMM] = i;
|
|
471
|
+
});
|
|
472
|
+
return (startValue, endValue) => {
|
|
473
|
+
const startDate = parseStringDate(startValue);
|
|
474
|
+
const endDate = parseStringDate(endValue);
|
|
475
|
+
const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM');
|
|
476
|
+
const startFirstDate = _xeUtils.default.getWhatMonth(startDate, 0, 'first');
|
|
477
|
+
const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM');
|
|
478
|
+
const endFirstDate = _xeUtils.default.getWhatMonth(endDate, 0, 'first');
|
|
479
|
+
const dateSize = Math.floor((_xeUtils.default.getWhatMonth(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / dayMs);
|
|
480
|
+
const subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
|
|
481
|
+
const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
|
|
482
|
+
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
483
|
+
return {
|
|
484
|
+
offsetLeftSize,
|
|
485
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
486
|
+
};
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
case 'week':
|
|
490
|
+
{
|
|
491
|
+
const indexMaps = {};
|
|
492
|
+
fullCols.forEach(({
|
|
493
|
+
dateObj
|
|
494
|
+
}, i) => {
|
|
495
|
+
const yyyyW = _xeUtils.default.toDateString(dateObj.date, 'yyyy-W', {
|
|
496
|
+
firstDay: weekScale ? weekScale.startDay : undefined
|
|
497
|
+
});
|
|
498
|
+
indexMaps[yyyyW] = i;
|
|
499
|
+
});
|
|
500
|
+
return (startValue, endValue) => {
|
|
501
|
+
const startDate = parseStringDate(startValue);
|
|
502
|
+
const endDate = parseStringDate(endValue);
|
|
503
|
+
const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-W', {
|
|
504
|
+
firstDay: weekScale ? weekScale.startDay : undefined
|
|
505
|
+
});
|
|
506
|
+
const startFirstDate = _xeUtils.default.getWhatWeek(startDate, 0, weekScale ? weekScale.startDay : undefined, weekScale ? weekScale.startDay : undefined);
|
|
507
|
+
const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-W', {
|
|
508
|
+
firstDay: weekScale ? weekScale.startDay : undefined
|
|
509
|
+
});
|
|
510
|
+
const endFirstDate = _xeUtils.default.getWhatWeek(endDate, 0, weekScale ? weekScale.startDay : undefined, weekScale ? weekScale.startDay : undefined);
|
|
511
|
+
const dateSize = Math.floor((_xeUtils.default.getWhatWeek(endDate, 1, weekScale ? weekScale.startDay : undefined, weekScale ? weekScale.startDay : undefined).getTime() - endFirstDate.getTime()) / dayMs);
|
|
512
|
+
const subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
|
|
513
|
+
const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
|
|
514
|
+
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
515
|
+
return {
|
|
516
|
+
offsetLeftSize,
|
|
517
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
518
|
+
};
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
case 'day':
|
|
522
|
+
case 'date':
|
|
523
|
+
{
|
|
524
|
+
const indexMaps = {};
|
|
525
|
+
fullCols.forEach(({
|
|
526
|
+
dateObj
|
|
527
|
+
}, i) => {
|
|
528
|
+
const yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM-dd');
|
|
529
|
+
indexMaps[yyyyMM] = i;
|
|
530
|
+
});
|
|
531
|
+
return (startValue, endValue) => {
|
|
532
|
+
const startDate = parseStringDate(startValue);
|
|
533
|
+
const endDate = parseStringDate(endValue);
|
|
534
|
+
const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM-dd');
|
|
535
|
+
const startFirstDate = _xeUtils.default.getWhatDay(startDate, 0, 'first');
|
|
536
|
+
const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM-dd');
|
|
537
|
+
const endFirstDate = _xeUtils.default.getWhatDay(endDate, 0, 'first');
|
|
538
|
+
const minuteSize = Math.floor((_xeUtils.default.getWhatDay(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / minuteMs);
|
|
539
|
+
const subtract = (startDate.getTime() - startFirstDate.getTime()) / minuteMs / minuteSize;
|
|
540
|
+
const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / minuteMs + 1) / minuteSize;
|
|
541
|
+
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
542
|
+
return {
|
|
543
|
+
offsetLeftSize,
|
|
544
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
545
|
+
};
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
case 'hour':
|
|
549
|
+
{
|
|
550
|
+
const indexMaps = {};
|
|
551
|
+
fullCols.forEach(({
|
|
552
|
+
dateObj
|
|
553
|
+
}, i) => {
|
|
554
|
+
const yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM-dd HH');
|
|
555
|
+
indexMaps[yyyyMM] = i;
|
|
556
|
+
});
|
|
557
|
+
return (startValue, endValue) => {
|
|
558
|
+
const startDate = parseStringDate(startValue);
|
|
559
|
+
const endDate = parseStringDate(endValue);
|
|
560
|
+
const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM-dd HH');
|
|
561
|
+
const startFirstDate = _xeUtils.default.getWhatHours(startDate, 0, 'first');
|
|
562
|
+
const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM-dd HH');
|
|
563
|
+
const endFirstDate = _xeUtils.default.getWhatHours(endDate, 0, 'first');
|
|
564
|
+
const minuteSize = Math.floor((_xeUtils.default.getWhatHours(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / minuteMs);
|
|
565
|
+
const subtract = (startDate.getTime() - startFirstDate.getTime()) / minuteMs / minuteSize;
|
|
566
|
+
const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / minuteMs + 1) / minuteSize;
|
|
567
|
+
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
568
|
+
return {
|
|
569
|
+
offsetLeftSize,
|
|
570
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
571
|
+
};
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
case 'minute':
|
|
575
|
+
{
|
|
576
|
+
const indexMaps = {};
|
|
577
|
+
fullCols.forEach(({
|
|
578
|
+
dateObj
|
|
579
|
+
}, i) => {
|
|
580
|
+
const yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM-dd HH:mm');
|
|
581
|
+
indexMaps[yyyyMM] = i;
|
|
582
|
+
});
|
|
583
|
+
return (startValue, endValue) => {
|
|
584
|
+
const startDate = parseStringDate(startValue);
|
|
585
|
+
const endDate = parseStringDate(endValue);
|
|
586
|
+
const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM-dd HH:mm');
|
|
587
|
+
const startFirstDate = _xeUtils.default.getWhatMinutes(startDate, 0, 'first');
|
|
588
|
+
const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM-dd HH:mm');
|
|
589
|
+
const endFirstDate = _xeUtils.default.getWhatMinutes(endDate, 0, 'first');
|
|
590
|
+
const minuteSize = Math.floor((_xeUtils.default.getWhatMinutes(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / minuteMs);
|
|
591
|
+
const subtract = (startDate.getTime() - startFirstDate.getTime()) / minuteMs / minuteSize;
|
|
592
|
+
const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / minuteMs + 1) / minuteSize;
|
|
593
|
+
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
594
|
+
return {
|
|
595
|
+
offsetLeftSize,
|
|
596
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
597
|
+
};
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
case 'second':
|
|
601
|
+
{
|
|
602
|
+
const gapTime = (0, _util.getStandardGapTime)(minScale.type);
|
|
603
|
+
return (startValue, endValue) => {
|
|
604
|
+
const startDate = parseStringDate(startValue);
|
|
605
|
+
const endDate = parseStringDate(endValue);
|
|
606
|
+
let offsetLeftSize = 0;
|
|
607
|
+
let offsetWidthSize = 0;
|
|
608
|
+
if (minViewDate) {
|
|
609
|
+
offsetLeftSize = (startDate.getTime() - minViewDate.getTime()) / gapTime;
|
|
610
|
+
offsetWidthSize = (endDate.getTime() - startDate.getTime()) / gapTime + 1;
|
|
611
|
+
}
|
|
612
|
+
return {
|
|
613
|
+
offsetLeftSize,
|
|
614
|
+
offsetWidthSize
|
|
615
|
+
};
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
return () => {
|
|
620
|
+
return {
|
|
621
|
+
offsetLeftSize: 0,
|
|
622
|
+
offsetWidthSize: 0
|
|
623
|
+
};
|
|
624
|
+
};
|
|
625
|
+
};
|
|
626
|
+
const handleParseColumn = () => {
|
|
627
|
+
const ganttProps = $xeGantt.props;
|
|
628
|
+
const {
|
|
629
|
+
treeConfig
|
|
630
|
+
} = ganttProps;
|
|
631
|
+
const {
|
|
632
|
+
minViewDate,
|
|
633
|
+
maxViewDate
|
|
634
|
+
} = reactData;
|
|
635
|
+
const {
|
|
636
|
+
fullCols,
|
|
637
|
+
groupCols
|
|
638
|
+
} = handleColumnHeader();
|
|
639
|
+
if (minViewDate && maxViewDate && fullCols.length) {
|
|
341
640
|
const $xeTable = internalData.xeTable;
|
|
342
641
|
if ($xeTable) {
|
|
343
642
|
const startField = computeStartField.value;
|
|
@@ -363,20 +662,21 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
363
662
|
} = treeOpts;
|
|
364
663
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
365
664
|
const ctMaps = {};
|
|
665
|
+
const renderFn = createChartRender(fullCols);
|
|
366
666
|
const handleParseRender = row => {
|
|
367
667
|
const rowid = $xeTable.getRowid(row);
|
|
368
668
|
const startValue = _xeUtils.default.get(row, startField);
|
|
369
669
|
const endValue = _xeUtils.default.get(row, endField);
|
|
370
670
|
if (startValue && endValue) {
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
671
|
+
const {
|
|
672
|
+
offsetLeftSize,
|
|
673
|
+
offsetWidthSize
|
|
674
|
+
} = renderFn(startValue, endValue);
|
|
375
675
|
ctMaps[rowid] = {
|
|
376
676
|
row,
|
|
377
677
|
rowid,
|
|
378
|
-
oLeftSize,
|
|
379
|
-
oWidthSize
|
|
678
|
+
oLeftSize: offsetLeftSize,
|
|
679
|
+
oWidthSize: offsetWidthSize
|
|
380
680
|
};
|
|
381
681
|
}
|
|
382
682
|
};
|
|
@@ -665,13 +965,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
665
965
|
rceRunTime
|
|
666
966
|
} = internalData;
|
|
667
967
|
const $xeTable = internalData.xeTable;
|
|
668
|
-
let refreshDelay =
|
|
968
|
+
let refreshDelay = 30;
|
|
669
969
|
if ($xeTable) {
|
|
670
970
|
const {
|
|
671
971
|
computeResizeOpts
|
|
672
972
|
} = $xeTable.getComputeMaps();
|
|
673
973
|
const resizeOpts = computeResizeOpts.value;
|
|
674
|
-
refreshDelay = resizeOpts.refreshDelay ||
|
|
974
|
+
refreshDelay = resizeOpts.refreshDelay || refreshDelay;
|
|
675
975
|
}
|
|
676
976
|
if (rceTimeout) {
|
|
677
977
|
clearTimeout(rceTimeout);
|
|
@@ -1022,7 +1322,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1022
1322
|
const ganttViewMethods = {
|
|
1023
1323
|
refreshData() {
|
|
1024
1324
|
handleUpdateData();
|
|
1025
|
-
|
|
1325
|
+
handleRecalculateStyle();
|
|
1326
|
+
return (0, _vue.nextTick)().then(() => {
|
|
1327
|
+
const $xeTable = internalData.xeTable;
|
|
1328
|
+
handleRecalculateStyle();
|
|
1329
|
+
if ($xeTable) {
|
|
1330
|
+
return $xeTable.recalculate();
|
|
1331
|
+
}
|
|
1332
|
+
});
|
|
1026
1333
|
},
|
|
1027
1334
|
updateViewData() {
|
|
1028
1335
|
const $xeTable = internalData.xeTable;
|
|
@@ -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,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()}});
|
|
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",minuteMs=6e4,dayMs=60*minuteMs*24;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(r,u){var e=_xeUtils.default.uniqueId();let T=(0,_vue.inject)("$xeGantt",{}),{computeTaskOpts:h,computeStartField:m,computeEndField:y,computeScrollbarOpts:S,computeScrollbarXToTop:b,computeScrollbarYToLeft:w,computeScaleUnit:o,computeWeekScale:M,computeMinScale:D}=T.getComputeMaps(),i=(0,_vue.ref)(),U=(0,_vue.ref)(),W=(0,_vue.ref)(),E=(0,_vue.ref)(),H=(0,_vue.ref)(),L=(0,_vue.ref)(),z=(0,_vue.ref)(),R=(0,_vue.ref)(),k=(0,_vue.ref)(),C=(0,_vue.ref)(),I=(0,_vue.ref)(),d=(0,_vue.ref)(),n=(0,_vue.ref)(),$=(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}),q=createInternalData(),x={refElem:i},X=(0,_vue.computed)(()=>{var{minViewDate:t,maxViewDate:l}=Y,a=D.value,r=[];if(t&&l){var i=t.getTime(),o=l.getTime();switch(a.type){case"year":{let e=_xeUtils.default.getWhatYear(t,0,"first");for(;e<=l;){var s=e;r.push(s),e=_xeUtils.default.getWhatYear(e,1)}break}case"quarter":{let e=_xeUtils.default.getWhatQuarter(t,0,"first");for(;e<=l;){var d=e;r.push(d),e=_xeUtils.default.getWhatQuarter(e,1)}break}case"month":{let e=_xeUtils.default.getWhatMonth(t,0,"first");for(;e<=l;){var u=e;r.push(u),e=_xeUtils.default.getWhatMonth(e,1)}break}case"week":{let e=_xeUtils.default.getWhatWeek(t,0,a.startDay,a.startDay);for(;e<=l;){var n=e;r.push(n),e=_xeUtils.default.getWhatWeek(e,1)}break}case"day":case"date":case"hour":case"minute":case"second":{var c=(0,_util.getStandardGapTime)(a.type);let e=i;for(;e<=o;){var v=new Date(e);r.push(v),e+=c}break}}}return r}),_={computeScaleDateList:X},t={xID:e,props:r,context:u,reactData:Y,internalData:q,getRefMaps:()=>x,getComputeMaps:()=>_},g=e=>{var t=h.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},p=()=>{var e=T.reactData.taskScaleList,e=e.find(e=>"week"===e.type),t=new Date,[l,a,r,i,o,s]=_xeUtils.default.toDateString(t,"yyyy-M-d-H-m-s").split("-"),d=t.getDay()+1,u=Math.ceil((t.getMonth()+1)/3),t=_xeUtils.default.getYearWeek(t,e?e.startDay:void 0);q.todayDateMaps={year:l,quarter:l+"_q"+u,month:l+"_"+a,week:l+"_W"+t,day:l+`_${a}_${r}_E`+d,date:l+`_${a}_`+r,hour:l+`_${a}_${r}_`+i,minute:l+`_${a}_${r}_${i}_`+o,second:l+`_${a}_${r}_${i}_${o}_`+s}},O=()=>{var e=T.reactData.taskScaleList,t=o.value;let s=D.value;var l=M.value,a=X.value;let r=[],d=[];if(s&&t&&a.length){let i={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},o={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}};var u=(t,l,a)=>{if(s.type!==t){var l=l[t],r=""+l.field;let e=o[t][r];e||(e=l,o[t][r]=e,i[t].push(e)),e&&(e.children||(e.children=[]),e.children.push(a))}};for(let e=0;e<a.length;e++){var n=a[e],[c,v,f,h,g,m]=_xeUtils.default.toDateString(n,"yyyy-M-d-H-m-s").split("-"),y=n.getDay(),x=y+1,_=Math.ceil((n.getMonth()+1)/3),p=_xeUtils.default.getYearWeek(n,l?l.startDay:void 0),n={date:n,yy:c,M:v,d:f,H:h,m:g,s:m,q:_,W:p,E:x,e:y},y={year:{field:c,title:c,dateObj:n},quarter:{field:c+"_q"+_,title:""+_,dateObj:n},month:{field:c+"_"+v,title:v,dateObj:n},week:{field:c+"_W"+p,title:""+p,dateObj:n},day:{field:c+`_${v}_${f}_E`+x,title:""+x,dateObj:n},date:{field:c+`_${v}_`+f,title:f,dateObj:n},hour:{field:c+`_${v}_${f}_`+h,title:h,dateObj:n},minute:{field:c+`_${v}_${f}_${h}_`+g,title:g,dateObj:n},second:{field:c+`_${v}_${f}_${h}_${g}_`+m,title:m,dateObj:n}},_=y[s.type];s.level<19&&u("year",y,_),s.level<17&&u("quarter",y,_),s.level<15&&u("month",y,_),s.level<13&&u("week",y,_),s.level<11&&u("day",y,_),s.level<9&&u("date",y,_),s.level<7&&u("hour",y,_),s.level<5&&u("minute",y,_),s.level<3&&u("second",y,_),r.push(_)}e.forEach(e=>{var t;e.type===s.type?d.push({scaleItem:e,columns:r}):((t=i[e.type]||[])&&t.forEach(e=>{e.childCount=e.children?e.children.length:0,e.children=void 0}),d.push({scaleItem:e,columns:t}))})}return{fullCols:r,groupCols:d}},F=e=>{let i=Y.minViewDate;var t=D.value,l=o.value;let d=M.value;switch(l){case"year":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy"),a=_xeUtils.default.getWhatYear(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy"),i=_xeUtils.default.getWhatYear(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatYear(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a}}}case"quarter":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-q");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-q"),a=_xeUtils.default.getWhatQuarter(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-q"),i=_xeUtils.default.getWhatQuarter(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatQuarter(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a}}}case"month":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM"),a=_xeUtils.default.getWhatMonth(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM"),i=_xeUtils.default.getWhatMonth(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatMonth(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a}}}case"week":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-W",{firstDay:d?d.startDay:void 0});s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-W",{firstDay:d?d.startDay:void 0}),a=_xeUtils.default.getWhatWeek(e,0,d?d.startDay:void 0,d?d.startDay:void 0),r=_xeUtils.default.toDateString(t,"yyyy-W",{firstDay:d?d.startDay:void 0}),i=_xeUtils.default.getWhatWeek(t,0,d?d.startDay:void 0,d?d.startDay:void 0),o=Math.floor((_xeUtils.default.getWhatWeek(t,1,d?d.startDay:void 0,d?d.startDay:void 0).getTime()-i.getTime())/dayMs),e=(e.getTime()-a.getTime())/dayMs/o,a=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a}}}case"day":case"date":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM-dd"),a=_xeUtils.default.getWhatDay(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd"),i=_xeUtils.default.getWhatDay(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatDay(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/o,a=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a}}}case"hour":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd HH");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM-dd HH"),a=_xeUtils.default.getWhatHours(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd HH"),i=_xeUtils.default.getWhatHours(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatHours(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/o,a=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a}}}case"minute":{let s={};return e.forEach(({dateObj:e},t)=>{e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd HH:mm");s[e]=t}),(e,t)=>{var e=g(e),t=g(t),l=_xeUtils.default.toDateString(e,"yyyy-MM-dd HH:mm"),a=_xeUtils.default.getWhatMinutes(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd HH:mm"),i=_xeUtils.default.getWhatMinutes(t,0,"first"),o=Math.floor((_xeUtils.default.getWhatMinutes(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-a.getTime())/minuteMs/o,a=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/o,t=(s[l]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+a}}}case"second":{let r=(0,_util.getStandardGapTime)(t.type);return(e,t)=>{e=g(e),t=g(t);let l=0,a=0;return i&&(l=(e.getTime()-i.getTime())/r,a=(t.getTime()-e.getTime())/r+1),{offsetLeftSize:l,offsetWidthSize:a}}}}return()=>({offsetLeftSize:0,offsetWidthSize:0})},j=()=>{var e=T.props.treeConfig,t=q.scrollXStore,r=q.xeTable;let i=null,o=null;if(r){let l=m.value,a=y.value;var{computeAggregateOpts:s,computeTreeOpts:d}=r.getComputeMaps(),u=r.reactData.isRowGroupStatus,{afterFullData:r,afterTreeFullData:n,afterGroupFullData:c}=r.internalData,s=s.value,d=d.value,v=d.transform,f=d.children||d.childrenField,h=e=>{var t=_xeUtils.default.get(e,l),e=_xeUtils.default.get(e,a);t&&e&&(t=g(t),(!i||i.getTime()>t.getTime())&&(i=t),t=g(e),!o||o.getTime()<t.getTime())&&(o=t)};u?(u=s.mapChildrenField)&&_xeUtils.default.eachTree(c,h,{children:u}):e?_xeUtils.default.eachTree(n,h,{children:v?d.mapChildrenField:f}):r.forEach(h)}t.startIndex=0,t.endIndex=Math.max(1,t.visibleSize),Y.minViewDate=i,Y.maxViewDate=o,q.startMaps={},q.endMaps={},(()=>{var e=T.props.treeConfig,{minViewDate:t,maxViewDate:l}=Y,{fullCols:a,groupCols:r}=O();if(t&&l&&a.length){let d=q.xeTable;if(d){let r=m.value,i=y.value;var{computeAggregateOpts:t,computeTreeOpts:l}=d.getComputeMaps(),u=d.reactData.isRowGroupStatus,{afterFullData:n,afterTreeFullData:c,afterGroupFullData:v}=d.internalData,t=t.value,l=l.value,f=l.transform,h=l.children||l.childrenField;let o={},s=F(a);var g=e=>{var t=d.getRowid(e),l=_xeUtils.default.get(e,r),a=_xeUtils.default.get(e,i);l&&a&&({offsetLeftSize:l,offsetWidthSize:a}=s(l,a),o[t]={row:e,rowid:t,oLeftSize:l,oWidthSize:a})};u?(u=t.mapChildrenField)&&_xeUtils.default.eachTree(v,g,{children:u}):e?_xeUtils.default.eachTree(c,g,{children:f?l.mapChildrenField:h}):n.forEach(g),q.chartMaps=o}}q.visibleColumn=a,Y.headerGroups=r,p(),N(),J()})()},c=()=>{var{scrollXWidth:e,scrollYHeight:t}=Y,l=q.elemStore,a=S.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),r=E.value,i=z.value;l&&(t=t>l.clientHeight,i&&(Y.scrollbarWidth=a.width||i.offsetWidth-i.clientWidth||14),Y.overflowY=t,i=e>l.clientWidth,r&&(Y.scrollbarHeight=a.height||r.offsetHeight-r.clientHeight||14),Y.overflowX=i)},B=()=>{let l=Y.viewCellWidth,{elemStore:e,chartMaps:a}=q;var t=(0,_util.getRefElem)(e["main-chart-wrapper"]);return t&&_xeUtils.default.arrayEach(t.children,e=>{var t=e.children[0];t&&(e=(e=e.getAttribute("rowid"))?a[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:d,headerGroups:u,tableColumn:n}=Y,{elemStore:c,visibleColumn:v}=q,f=q.xeTable,h=i.value;if(h){var g=S.value,m=b.value,y=w.value,x=H.value,_=L.value,p=U.value;let e=s;s=d;let t=0,l=0,a=0,r=(f&&(d=f.internalData,t=d.tBodyHeight,l=d.tHeaderHeight,a=d.tFooterHeight),"visible");(y||g.y&&!1===g.y.visible)&&(e=0,r="hidden");f=(0,_util.getRefElem)(c["main-header-scroll"]),d=(f&&(f.style.height=l+"px",f.style.setProperty("--vxe-ui-gantt-view-cell-height",l/u.length+"px")),(0,_util.getRefElem)(c["main-body-scroll"])),y=(d&&(d.style.height=t+"px"),(0,_util.getRefElem)(c["main-footer-scroll"])),g=(y&&(y.style.height=a+"px"),p&&(p.style.height=s+"px",p.style.visibility="visible"),k.value),f=(g&&(g.style.left=m?e+"px":"",g.style.width=h.clientWidth-e+"px"),x&&(x.style.width=m?e+"px":"",x.style.display=m&&s?"block":""),_&&(_.style.width=m?"":e+"px",_.style.display=!m&&s?"block":""),W.value),u=(f&&(f.style.width=e+"px",f.style.height=t+l+a+"px",f.style.visibility=r),R.value),y=(u&&(u.style.height=l+"px",u.style.display=l?"block":""),C.value),p=(y&&(y.style.height=t+"px",y.style.top=l+"px"),I.value),g=(p&&(p.style.height=a+"px",p.style.top=l+t+"px",p.style.display=a?"block":""),$.value);let i=40,o=(i=g?g.clientWidth||40:i)*v.length;d&&0<(x=(h=d.clientWidth)-o)&&(i+=x/v.length,o=h),Y.viewCellWidth=i;_=(0,_util.getRefElem)(c["main-header-table"]),m=(0,_util.getRefElem)(c["main-body-table"]),s=i*n.length;return _&&(_.style.width=o+"px"),m&&(m.style.width=s+"px"),Y.scrollXWidth=o,B()}},s=()=>{var e=i.value;return q.rceRunTime=Date.now(),e&&e.clientWidth?(c(),v(),B(),(0,_vue.nextTick)().then(()=>{var e,t=Y.scrollXLoad,l=q.scrollXStore;t?({toVisibleIndex:t,visibleSize:e}=A(),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),P().then(()=>{Q()})):a()})):(0,_vue.nextTick)()},G=()=>new Promise(e=>{var{rceTimeout:t,rceRunTime:l}=q,a=q.xeTable;let r=30;a&&(a=a.getComputeMaps().computeResizeOpts,a=a.value,r=a.refreshDelay||r),!t||(clearTimeout(t),l&&l+(r-5)<Date.now())?e(s()):(0,_vue.nextTick)(()=>{e()}),q.rceTimeout=setTimeout(()=>{q.rceTimeout=void 0,s()},r)}),A=()=>{var e,t=Y.viewCellWidth,l=q.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}},Q=()=>{var e=Y.isScrollXBig,t=q.scrollXStore,{preloadSize:l,startIndex:a,endIndex:r,offsetSize:i}=t,{toVisibleIndex:o,visibleSize:s}=A(),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<=a||r-s-1<=o)||a===i&&r===l||(t.startIndex=i,t.endIndex=l,P())},P=()=>(J(),a(),(0,_vue.nextTick)()),N=()=>Y.scrollXLoad=!0,J=()=>{var e=Y.scrollXLoad,{visibleColumn:t,scrollXStore:l}=q,e=e?t.slice(l.startIndex,l.endIndex):t.slice(0);Y.tableColumn=e},a=()=>{let{scrollXLoad:t,scrollXWidth:l,viewCellWidth:e}=Y,{elemStore:a,scrollXStore:r}=q;var i=(0,_util.getRefElem)(a["main-body-table"]),o=r.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)(a[`main-${e}-xSpace`]);e&&(e.style.width=t?l+"px":"")});o=d.value;return o&&(o.style.width=l+"px"),c(),(0,_vue.nextTick)()},K=()=>{Q()},Z=(e,t)=>{var l=q.lcsTimeout;Y.lazScrollLoading=!0,l&&clearTimeout(l),q.lcsTimeout=setTimeout(()=>{q.lcsRunTime=Date.now(),q.lcsTimeout=void 0,q.intoRunScroll=!1,q.inVirtualScroll=!1,q.inWheelScroll=!1,q.inHeaderScroll=!1,q.inBodyScroll=!1,q.inFooterScroll=!1,Y.lazScrollLoading=!1},200)},V=(e,t,l,a)=>{t&&(q.lastScrollLeft=a),e&&(q.lastScrollTop=l),Y.lastScrollTime=Date.now(),Z(t,e)},f=(u,n,c,v,f)=>{var h=q.xeTable,{lastScrollLeft:g,lastScrollTop:m}=q,y=E.value,x=z.value;if(y&&x&&h){var{computeScrollXThreshold:h,computeScrollYThreshold:_}=h.getComputeMaps(),p=x.clientHeight,S=y.clientWidth,x=x.scrollHeight,y=y.scrollWidth;let e=!1,t=!1,l=!1,a=!1,r="",i=!1,o=!1,s=!1,d=!1;c&&(h=h.value,(l=f<=0)||(a=y-1<=f+S),g<f?(r="right",y-h<=f+S&&(d=!0)):(r="left",f<=h&&(s=!0))),n&&(g=_.value,(e=v<=0)||(t=x-1<=v+p),m<v?(r="bottom",x-g<=v+p&&(o=!0)):(r="top",v<=g&&(i=!0))),V(n,c,v,f);h={source:sourceType,scrollTop:v,scrollLeft:f,bodyHeight:p,bodyWidth:S,scrollHeight:x,scrollWidth:y,isX:c,isY:n,isTop:e,isBottom:t,isLeft:l,isRight:a,direction:r};(o||i||d||s)&&T.dispatchEvent("scroll-boundary",h,u),T.dispatchEvent("scroll",h,u)}},ee=e=>{var t=q.xeTable;t&&(t=t.internalData.elemStore,t=(0,_util.getRefElem)(t["main-body-scroll"]))&&(t.scrollTop=e)};e={handleUpdateStyle:v,handleLazyRecalculate:G,handleUpdateCurrentRow(e){var t,l,a=q.xeTable,r=i.value;a&&r&&(e?(t=a.props,l=a.getComputeMaps().computeRowOpts,(l.value.isCurrent||t.highlightCurrentRow)&&_xeUtils.default.arrayEach(r.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${a.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--current"))):_xeUtils.default.arrayEach(r.querySelectorAll(".vxe-gantt-view--body-row.row--current"),e=>(0,_dom.removeClass)(e,"row--current")))},handleUpdateHoverRow(e){var t=q.xeTable,l=i.value;t&&l&&(e?_xeUtils.default.arrayEach(l.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${t.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--hover")):_xeUtils.default.arrayEach(l.querySelectorAll(".vxe-gantt-view--body-row.row--hover"),e=>(0,_dom.removeClass)(e,"row--hover")))},triggerHeaderScrollEvent(e){var{elemStore:t,inVirtualScroll:l,inBodyScroll:a,inFooterScroll:r}=q;l||a||r||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),r=E.value,a&&l&&(t=l.scrollLeft,q.inHeaderScroll=!0,(0,_dom.setScrollLeft)(r,t),(0,_dom.setScrollLeft)(a,t),f(e,!1,!0,l.scrollTop,t)))},triggerBodyScrollEvent(e){var t,l,a=Y.scrollXLoad,{elemStore:r,inVirtualScroll:i,inHeaderScroll:o,inFooterScroll:s,lastScrollLeft:d,lastScrollTop:u}=q;i||o||s||(i=e.currentTarget,o=(0,_util.getRefElem)(r["main-header-scroll"]),s=E.value,r=z.value,d=(t=i.scrollLeft)!==d,u=(l=i.scrollTop)!==u,q.inBodyScroll=!0,q.scrollRenderType="",u&&((0,_dom.setScrollTop)(r,l),ee(l)),d&&(q.inBodyScroll=!0,(0,_dom.setScrollLeft)(s,t),(0,_dom.setScrollLeft)(o,t),a)&&K(),u&&V(u,d,i.scrollTop,t),d&&f(e,u,d,i.scrollTop,t))},triggerVirtualScrollXEvent(e){var t,l=Y.scrollXLoad,{elemStore:a,inHeaderScroll:r,inBodyScroll:i}=q;r||i||(r=e.currentTarget,i=(0,_util.getRefElem)(a["main-header-scroll"]),a=(0,_util.getRefElem)(a["main-body-scroll"]),r&&(t=r.scrollLeft,q.inVirtualScroll=!0,(0,_dom.setScrollLeft)(i,t),(0,_dom.setScrollLeft)(a,t),l&&K(),f(e,!1,!0,r.scrollTop,t)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:a}=q;l||a||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,q.inVirtualScroll=!0,(0,_dom.setScrollTop)(a,e),ee(e),V(!0,!1,e,l.scrollLeft)))},handleUpdateSXSpace(){return a()},handleUpdateSYSpace(){return(()=>{var e=q.elemStore,t=q.xeTable,l=(0,_util.getRefElem)(e["main-body-scroll"]),a=(0,_util.getRefElem)(e["main-body-table"]);let r=0,i=0,o=!1,s=(t&&(t=t.reactData,r=t.scrollYTop,i=t.scrollYHeight,o=t.isScrollYBig),i),d=r,u=0;l&&(u=l.clientHeight),o&&(d=l&&a&&l.scrollTop+u>=maxYHeight?maxYHeight-a.clientHeight:(maxYHeight-u)*(r/(i-u)),s=maxYHeight);t=(0,_util.getRefElem)(e["main-chart-wrapper"]),a&&(a.style.transform=`translate(${Y.scrollXLeft||0}px, ${d}px)`),t&&(t.style.transform=`translate(${Y.scrollXLeft||0}px, ${d}px)`),l=(0,_util.getRefElem)(e["main-body-ySpace"]),l&&(l.style.height=s?s+"px":""),a=n.value;return a&&(a.style.height=s?s+"px":""),Y.scrollYTop=d,Y.scrollYHeight=i,Y.isScrollYBig=o,c(),(0,_vue.nextTick)().then(()=>{v()})})()},handleUpdateSYStatus(e){Y.scrollYLoad=e}};let te=()=>{G()},le=(Object.assign(t,{refreshData(){return j(),s(),(0,_vue.nextTick)().then(()=>{var e=q.xeTable;if(s(),e)return e.recalculate()})},updateViewData(){var e=q.xeTable;return e&&(e=e.reactData.tableData,Y.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(q.xeTable=e),(0,_vue.nextTick)()}},e),()=>(0,_vue.h)("div",{key:"vsx",ref:U,class:"vxe-gantt-view--scroll-x-virtual"},[(0,_vue.h)("div",{ref:H,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:k,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:d,class:"vxe-gantt-view--scroll-x-space"})]),(0,_vue.h)("div",{class:"vxe-gantt-view--scroll-x-handle-appearance"})]),(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--scroll-x-right-corner"})])),ae=()=>(0,_vue.h)("div",{ref:W,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:R,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:C,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:z,class:"vxe-gantt-view--scroll-y-handle",onScroll:t.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--scroll-y-space"})]),(0,_vue.h)("div",{class:"vxe-gantt-view--scroll-y-handle-appearance"})]),(0,_vue.h)("div",{ref:I,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),re=()=>(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)]),ie=()=>{var e=w.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[ae(),re()]:[re(),ae()])};let l=(0,_vue.ref)(0);return(0,_vue.watch)(()=>Y.tableData,()=>{l.value++}),(0,_vue.watch)(()=>Y.tableData.length,()=>{l.value++}),(0,_vue.watch)(l,()=>{j()}),(0,_vue.onMounted)(()=>{globalEvents.on(t,"resize",te)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(t,"keydown"),_xeUtils.default.assign(q,createInternalData())}),t.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:a}=Y,r=b.value;return(0,_vue.h)("div",{ref:i,class:["vxe-gantt-view",{"is--scroll-y":t,"is--scroll-x":e,"is--virtual-x":l,"is--virtual-y":a}]},[(0,_vue.h)("div",{class:"vxe-gantt-view--render-wrapper"},r?[le(),ie()]:[ie(),le()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:$,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",t),t},render(){return this.renderVN()}});
|