vxe-gantt 4.1.15 → 4.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/gantt/src/gantt-view.js +31 -18
- package/es/gantt/src/gantt.js +4 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/gantt/src/gantt-view.js +34 -20
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +5 -1
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/index.umd.js +41 -23
- package/lib/index.umd.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +2 -2
- package/packages/gantt/src/gantt-view.ts +31 -20
- package/packages/gantt/src/gantt.ts +4 -1
|
@@ -99,20 +99,22 @@ export default defineVxeComponent({
|
|
|
99
99
|
const taskViewOpts = computeTaskViewOpts.value;
|
|
100
100
|
const minScale = computeMinScale.value;
|
|
101
101
|
const { gridding } = taskViewOpts;
|
|
102
|
+
const { type, startDay } = minScale;
|
|
102
103
|
const dateList = [];
|
|
103
104
|
if (!minViewDate || !maxViewDate) {
|
|
104
105
|
return dateList;
|
|
105
106
|
}
|
|
106
107
|
const leftSize = -XEUtils.toNumber(gridding ? gridding.leftSpacing || 0 : 0);
|
|
107
108
|
const rightSize = XEUtils.toNumber(gridding ? gridding.rightSpacing || 0 : 0);
|
|
108
|
-
|
|
109
|
+
const currStep = 1; // XEUtils.toNumber(step || 1) || 1
|
|
110
|
+
switch (type) {
|
|
109
111
|
case 'year': {
|
|
110
112
|
let currDate = XEUtils.getWhatYear(minViewDate, leftSize, 'first');
|
|
111
113
|
const endDate = XEUtils.getWhatYear(maxViewDate, rightSize, 'first');
|
|
112
114
|
while (currDate <= endDate) {
|
|
113
115
|
const itemDate = currDate;
|
|
114
116
|
dateList.push(itemDate);
|
|
115
|
-
currDate = XEUtils.getWhatYear(currDate,
|
|
117
|
+
currDate = XEUtils.getWhatYear(currDate, currStep);
|
|
116
118
|
}
|
|
117
119
|
break;
|
|
118
120
|
}
|
|
@@ -122,7 +124,7 @@ export default defineVxeComponent({
|
|
|
122
124
|
while (currDate <= endDate) {
|
|
123
125
|
const itemDate = currDate;
|
|
124
126
|
dateList.push(itemDate);
|
|
125
|
-
currDate = XEUtils.getWhatQuarter(currDate,
|
|
127
|
+
currDate = XEUtils.getWhatQuarter(currDate, currStep);
|
|
126
128
|
}
|
|
127
129
|
break;
|
|
128
130
|
}
|
|
@@ -132,17 +134,17 @@ export default defineVxeComponent({
|
|
|
132
134
|
while (currDate <= endDate) {
|
|
133
135
|
const itemDate = currDate;
|
|
134
136
|
dateList.push(itemDate);
|
|
135
|
-
currDate = XEUtils.getWhatMonth(currDate,
|
|
137
|
+
currDate = XEUtils.getWhatMonth(currDate, currStep);
|
|
136
138
|
}
|
|
137
139
|
break;
|
|
138
140
|
}
|
|
139
141
|
case 'week': {
|
|
140
|
-
let currDate = XEUtils.getWhatWeek(minViewDate, leftSize,
|
|
141
|
-
const endDate = XEUtils.getWhatWeek(maxViewDate, rightSize,
|
|
142
|
+
let currDate = XEUtils.getWhatWeek(minViewDate, leftSize, startDay, startDay);
|
|
143
|
+
const endDate = XEUtils.getWhatWeek(maxViewDate, rightSize, startDay, startDay);
|
|
142
144
|
while (currDate <= endDate) {
|
|
143
145
|
const itemDate = currDate;
|
|
144
146
|
dateList.push(itemDate);
|
|
145
|
-
currDate = XEUtils.getWhatWeek(currDate,
|
|
147
|
+
currDate = XEUtils.getWhatWeek(currDate, currStep);
|
|
146
148
|
}
|
|
147
149
|
break;
|
|
148
150
|
}
|
|
@@ -153,14 +155,14 @@ export default defineVxeComponent({
|
|
|
153
155
|
while (currDate <= endDate) {
|
|
154
156
|
const itemDate = currDate;
|
|
155
157
|
dateList.push(itemDate);
|
|
156
|
-
currDate = XEUtils.getWhatDay(currDate,
|
|
158
|
+
currDate = XEUtils.getWhatDay(currDate, currStep);
|
|
157
159
|
}
|
|
158
160
|
break;
|
|
159
161
|
}
|
|
160
162
|
case 'hour':
|
|
161
163
|
case 'minute':
|
|
162
164
|
case 'second': {
|
|
163
|
-
const gapTime = getStandardGapTime(minScale.type);
|
|
165
|
+
const gapTime = getStandardGapTime(minScale.type) * currStep;
|
|
164
166
|
let currTime = minViewDate.getTime() + (leftSize * gapTime);
|
|
165
167
|
const endTime = maxViewDate.getTime() + (rightSize * gapTime);
|
|
166
168
|
while (currTime <= endTime) {
|
|
@@ -244,6 +246,7 @@ export default defineVxeComponent({
|
|
|
244
246
|
minute: {},
|
|
245
247
|
second: {}
|
|
246
248
|
};
|
|
249
|
+
const isMinWeek = minScale.type === 'week';
|
|
247
250
|
const handleData = (type, colMaps, minCol) => {
|
|
248
251
|
if (minScale.type === type) {
|
|
249
252
|
return;
|
|
@@ -265,12 +268,22 @@ export default defineVxeComponent({
|
|
|
265
268
|
};
|
|
266
269
|
for (let i = 0; i < scaleDateList.length; i++) {
|
|
267
270
|
const itemDate = scaleDateList[i];
|
|
268
|
-
|
|
271
|
+
let [yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss] = XEUtils.toDateString(itemDate, 'yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss').split('-');
|
|
269
272
|
const e = itemDate.getDay();
|
|
270
273
|
const E = e + 1;
|
|
271
274
|
const q = Math.ceil((itemDate.getMonth() + 1) / 3);
|
|
272
275
|
const W = `${XEUtils.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined)}`;
|
|
273
276
|
const WW = XEUtils.padStart(W, 2, '0');
|
|
277
|
+
let wYear = yyyy;
|
|
278
|
+
// 周维度,由于年份和第几周是冲突的行为,所以需要特殊处理,判断是否跨年,例如
|
|
279
|
+
// '2024-12-31' 'yyyy-MM-dd W' >> '2024-12-31 1'
|
|
280
|
+
// '2025-01-01' 'yyyy-MM-dd W' >> '2025-01-01 1'
|
|
281
|
+
if (W === '1' && MM === '12') {
|
|
282
|
+
wYear = `${Number(yyyy) + 1}`;
|
|
283
|
+
if (isMinWeek) {
|
|
284
|
+
yyyy = wYear;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
274
287
|
const dateObj = { date: itemDate, yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss, q, W, WW, E, e };
|
|
275
288
|
const colMaps = {
|
|
276
289
|
year: {
|
|
@@ -400,7 +413,7 @@ export default defineVxeComponent({
|
|
|
400
413
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
401
414
|
return {
|
|
402
415
|
offsetLeftSize,
|
|
403
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
416
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
404
417
|
};
|
|
405
418
|
};
|
|
406
419
|
}
|
|
@@ -423,7 +436,7 @@ export default defineVxeComponent({
|
|
|
423
436
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
424
437
|
return {
|
|
425
438
|
offsetLeftSize,
|
|
426
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
439
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
427
440
|
};
|
|
428
441
|
};
|
|
429
442
|
}
|
|
@@ -446,14 +459,14 @@ export default defineVxeComponent({
|
|
|
446
459
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
447
460
|
return {
|
|
448
461
|
offsetLeftSize,
|
|
449
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
462
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
450
463
|
};
|
|
451
464
|
};
|
|
452
465
|
}
|
|
453
466
|
case 'week': {
|
|
454
467
|
const indexMaps = {};
|
|
455
468
|
fullCols.forEach(({ dateObj }, i) => {
|
|
456
|
-
const yyyyW =
|
|
469
|
+
const yyyyW = `${dateObj.yyyy}-${dateObj.W}`;
|
|
457
470
|
indexMaps[yyyyW] = i;
|
|
458
471
|
});
|
|
459
472
|
return (startValue, endValue) => {
|
|
@@ -469,7 +482,7 @@ export default defineVxeComponent({
|
|
|
469
482
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
470
483
|
return {
|
|
471
484
|
offsetLeftSize,
|
|
472
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
485
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
473
486
|
};
|
|
474
487
|
};
|
|
475
488
|
}
|
|
@@ -516,7 +529,7 @@ export default defineVxeComponent({
|
|
|
516
529
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
517
530
|
return {
|
|
518
531
|
offsetLeftSize,
|
|
519
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
532
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
520
533
|
};
|
|
521
534
|
};
|
|
522
535
|
}
|
|
@@ -539,7 +552,7 @@ export default defineVxeComponent({
|
|
|
539
552
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
540
553
|
return {
|
|
541
554
|
offsetLeftSize,
|
|
542
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
555
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
543
556
|
};
|
|
544
557
|
};
|
|
545
558
|
}
|
|
@@ -552,7 +565,7 @@ export default defineVxeComponent({
|
|
|
552
565
|
let offsetWidthSize = 0;
|
|
553
566
|
if (minViewDate) {
|
|
554
567
|
offsetLeftSize = (startDate.getTime() - minViewDate.getTime()) / gapTime;
|
|
555
|
-
offsetWidthSize = ((endDate.getTime() - startDate.getTime()) / gapTime)
|
|
568
|
+
offsetWidthSize = ((endDate.getTime() - startDate.getTime()) / gapTime);
|
|
556
569
|
}
|
|
557
570
|
return {
|
|
558
571
|
offsetLeftSize,
|
package/es/gantt/src/gantt.js
CHANGED
|
@@ -448,7 +448,10 @@ export default defineVxeComponent({
|
|
|
448
448
|
const scaleList = (taskScaleConfs && taskScaleConfs.length ? taskScaleConfs : ['month', 'date']);
|
|
449
449
|
scaleList.forEach(conf => {
|
|
450
450
|
const sConf = !conf || XEUtils.isString(conf) ? { type: conf } : conf;
|
|
451
|
-
const { type } = sConf;
|
|
451
|
+
const { type, step } = sConf;
|
|
452
|
+
if (step) {
|
|
453
|
+
errLog('vxe.error.errProp', [`step=${step}`, 'step=1']);
|
|
454
|
+
}
|
|
452
455
|
if (!type || !viewTypeLevelMaps[type]) {
|
|
453
456
|
errLog('vxe.error.errProp', [`type=${type}`, XEUtils.keys(viewTypeLevelMaps).join(',')]);
|
|
454
457
|
return;
|
package/es/ui/index.js
CHANGED
package/es/ui/src/log.js
CHANGED
|
@@ -127,13 +127,18 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
127
127
|
const {
|
|
128
128
|
gridding
|
|
129
129
|
} = taskViewOpts;
|
|
130
|
+
const {
|
|
131
|
+
type,
|
|
132
|
+
startDay
|
|
133
|
+
} = minScale;
|
|
130
134
|
const dateList = [];
|
|
131
135
|
if (!minViewDate || !maxViewDate) {
|
|
132
136
|
return dateList;
|
|
133
137
|
}
|
|
134
138
|
const leftSize = -_xeUtils.default.toNumber(gridding ? gridding.leftSpacing || 0 : 0);
|
|
135
139
|
const rightSize = _xeUtils.default.toNumber(gridding ? gridding.rightSpacing || 0 : 0);
|
|
136
|
-
|
|
140
|
+
const currStep = 1; // XEUtils.toNumber(step || 1) || 1
|
|
141
|
+
switch (type) {
|
|
137
142
|
case 'year':
|
|
138
143
|
{
|
|
139
144
|
let currDate = _xeUtils.default.getWhatYear(minViewDate, leftSize, 'first');
|
|
@@ -141,7 +146,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
141
146
|
while (currDate <= endDate) {
|
|
142
147
|
const itemDate = currDate;
|
|
143
148
|
dateList.push(itemDate);
|
|
144
|
-
currDate = _xeUtils.default.getWhatYear(currDate,
|
|
149
|
+
currDate = _xeUtils.default.getWhatYear(currDate, currStep);
|
|
145
150
|
}
|
|
146
151
|
break;
|
|
147
152
|
}
|
|
@@ -152,7 +157,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
152
157
|
while (currDate <= endDate) {
|
|
153
158
|
const itemDate = currDate;
|
|
154
159
|
dateList.push(itemDate);
|
|
155
|
-
currDate = _xeUtils.default.getWhatQuarter(currDate,
|
|
160
|
+
currDate = _xeUtils.default.getWhatQuarter(currDate, currStep);
|
|
156
161
|
}
|
|
157
162
|
break;
|
|
158
163
|
}
|
|
@@ -163,18 +168,18 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
163
168
|
while (currDate <= endDate) {
|
|
164
169
|
const itemDate = currDate;
|
|
165
170
|
dateList.push(itemDate);
|
|
166
|
-
currDate = _xeUtils.default.getWhatMonth(currDate,
|
|
171
|
+
currDate = _xeUtils.default.getWhatMonth(currDate, currStep);
|
|
167
172
|
}
|
|
168
173
|
break;
|
|
169
174
|
}
|
|
170
175
|
case 'week':
|
|
171
176
|
{
|
|
172
|
-
let currDate = _xeUtils.default.getWhatWeek(minViewDate, leftSize,
|
|
173
|
-
const endDate = _xeUtils.default.getWhatWeek(maxViewDate, rightSize,
|
|
177
|
+
let currDate = _xeUtils.default.getWhatWeek(minViewDate, leftSize, startDay, startDay);
|
|
178
|
+
const endDate = _xeUtils.default.getWhatWeek(maxViewDate, rightSize, startDay, startDay);
|
|
174
179
|
while (currDate <= endDate) {
|
|
175
180
|
const itemDate = currDate;
|
|
176
181
|
dateList.push(itemDate);
|
|
177
|
-
currDate = _xeUtils.default.getWhatWeek(currDate,
|
|
182
|
+
currDate = _xeUtils.default.getWhatWeek(currDate, currStep);
|
|
178
183
|
}
|
|
179
184
|
break;
|
|
180
185
|
}
|
|
@@ -186,7 +191,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
186
191
|
while (currDate <= endDate) {
|
|
187
192
|
const itemDate = currDate;
|
|
188
193
|
dateList.push(itemDate);
|
|
189
|
-
currDate = _xeUtils.default.getWhatDay(currDate,
|
|
194
|
+
currDate = _xeUtils.default.getWhatDay(currDate, currStep);
|
|
190
195
|
}
|
|
191
196
|
break;
|
|
192
197
|
}
|
|
@@ -194,7 +199,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
194
199
|
case 'minute':
|
|
195
200
|
case 'second':
|
|
196
201
|
{
|
|
197
|
-
const gapTime = (0, _util.getStandardGapTime)(minScale.type);
|
|
202
|
+
const gapTime = (0, _util.getStandardGapTime)(minScale.type) * currStep;
|
|
198
203
|
let currTime = minViewDate.getTime() + leftSize * gapTime;
|
|
199
204
|
const endTime = maxViewDate.getTime() + rightSize * gapTime;
|
|
200
205
|
while (currTime <= endTime) {
|
|
@@ -284,6 +289,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
284
289
|
minute: {},
|
|
285
290
|
second: {}
|
|
286
291
|
};
|
|
292
|
+
const isMinWeek = minScale.type === 'week';
|
|
287
293
|
const handleData = (type, colMaps, minCol) => {
|
|
288
294
|
if (minScale.type === type) {
|
|
289
295
|
return;
|
|
@@ -305,12 +311,22 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
305
311
|
};
|
|
306
312
|
for (let i = 0; i < scaleDateList.length; i++) {
|
|
307
313
|
const itemDate = scaleDateList[i];
|
|
308
|
-
|
|
314
|
+
let [yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss] = _xeUtils.default.toDateString(itemDate, 'yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss').split('-');
|
|
309
315
|
const e = itemDate.getDay();
|
|
310
316
|
const E = e + 1;
|
|
311
317
|
const q = Math.ceil((itemDate.getMonth() + 1) / 3);
|
|
312
318
|
const W = `${_xeUtils.default.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined)}`;
|
|
313
319
|
const WW = _xeUtils.default.padStart(W, 2, '0');
|
|
320
|
+
let wYear = yyyy;
|
|
321
|
+
// 周维度,由于年份和第几周是冲突的行为,所以需要特殊处理,判断是否跨年,例如
|
|
322
|
+
// '2024-12-31' 'yyyy-MM-dd W' >> '2024-12-31 1'
|
|
323
|
+
// '2025-01-01' 'yyyy-MM-dd W' >> '2025-01-01 1'
|
|
324
|
+
if (W === '1' && MM === '12') {
|
|
325
|
+
wYear = `${Number(yyyy) + 1}`;
|
|
326
|
+
if (isMinWeek) {
|
|
327
|
+
yyyy = wYear;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
314
330
|
const dateObj = {
|
|
315
331
|
date: itemDate,
|
|
316
332
|
yy,
|
|
@@ -464,7 +480,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
464
480
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
465
481
|
return {
|
|
466
482
|
offsetLeftSize,
|
|
467
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
483
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
468
484
|
};
|
|
469
485
|
};
|
|
470
486
|
}
|
|
@@ -490,7 +506,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
490
506
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
491
507
|
return {
|
|
492
508
|
offsetLeftSize,
|
|
493
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
509
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
494
510
|
};
|
|
495
511
|
};
|
|
496
512
|
}
|
|
@@ -516,7 +532,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
516
532
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
517
533
|
return {
|
|
518
534
|
offsetLeftSize,
|
|
519
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
535
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
520
536
|
};
|
|
521
537
|
};
|
|
522
538
|
}
|
|
@@ -526,9 +542,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
526
542
|
fullCols.forEach(({
|
|
527
543
|
dateObj
|
|
528
544
|
}, i) => {
|
|
529
|
-
const yyyyW =
|
|
530
|
-
firstDay: weekScale ? weekScale.startDay : undefined
|
|
531
|
-
});
|
|
545
|
+
const yyyyW = `${dateObj.yyyy}-${dateObj.W}`;
|
|
532
546
|
indexMaps[yyyyW] = i;
|
|
533
547
|
});
|
|
534
548
|
return (startValue, endValue) => {
|
|
@@ -548,7 +562,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
548
562
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
549
563
|
return {
|
|
550
564
|
offsetLeftSize,
|
|
551
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
565
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
552
566
|
};
|
|
553
567
|
};
|
|
554
568
|
}
|
|
@@ -601,7 +615,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
601
615
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
602
616
|
return {
|
|
603
617
|
offsetLeftSize,
|
|
604
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
618
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
605
619
|
};
|
|
606
620
|
};
|
|
607
621
|
}
|
|
@@ -627,7 +641,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
627
641
|
const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
|
|
628
642
|
return {
|
|
629
643
|
offsetLeftSize,
|
|
630
|
-
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
644
|
+
offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
|
|
631
645
|
};
|
|
632
646
|
};
|
|
633
647
|
}
|
|
@@ -641,7 +655,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
641
655
|
let offsetWidthSize = 0;
|
|
642
656
|
if (minViewDate) {
|
|
643
657
|
offsetLeftSize = (startDate.getTime() - minViewDate.getTime()) / gapTime;
|
|
644
|
-
offsetWidthSize = (endDate.getTime() - startDate.getTime()) / gapTime
|
|
658
|
+
offsetWidthSize = (endDate.getTime() - startDate.getTime()) / gapTime;
|
|
645
659
|
}
|
|
646
660
|
return {
|
|
647
661
|
offsetLeftSize,
|
|
@@ -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",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(l,r){var e=_xeUtils.default.uniqueId();let U=(0,_vue.inject)("$xeGantt",{}),u=U.internalData,{computeTaskOpts:h,computeTaskViewOpts:O,computeStartField:_,computeEndField:x,computeTypeField:p,computeScrollbarOpts:S,computeScrollbarXToTop:T,computeScrollbarYToLeft:b,computeScaleUnit:o,computeWeekScale:W,computeMinScale:E}=U.getComputeMaps(),i=(0,_vue.ref)(),w=(0,_vue.ref)(),M=(0,_vue.ref)(),D=(0,_vue.ref)(),H=(0,_vue.ref)(),L=(0,_vue.ref)(),k=(0,_vue.ref)(),R=(0,_vue.ref)(),z=(0,_vue.ref)(),C=(0,_vue.ref)(),I=(0,_vue.ref)(),d=(0,_vue.ref)(),n=(0,_vue.ref)(),Y=(0,_vue.ref)(),$=(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:40}),X=createInternalData(),g={refElem:i,refScrollXHandleElem:D,refScrollYHandleElem:k},F=(0,_vue.computed)(()=>{var{minViewDate:t,maxViewDate:l}=$,e=O.value,a=E.value,e=e.gridding,r=[];if(t&&l){var i=-_xeUtils.default.toNumber(e&&e.leftSpacing||0),o=_xeUtils.default.toNumber(e&&e.rightSpacing||0);switch(a.type){case"year":{let e=_xeUtils.default.getWhatYear(t,i,"first");for(var s=_xeUtils.default.getWhatYear(l,o,"first");e<=s;){var d=e;r.push(d),e=_xeUtils.default.getWhatYear(e,1)}break}case"quarter":{let e=_xeUtils.default.getWhatQuarter(t,i,"first");for(var u=_xeUtils.default.getWhatQuarter(l,o,"first");e<=u;){var n=e;r.push(n),e=_xeUtils.default.getWhatQuarter(e,1)}break}case"month":{let e=_xeUtils.default.getWhatMonth(t,i,"first");for(var c=_xeUtils.default.getWhatMonth(l,o,"first");e<=c;){var f=e;r.push(f),e=_xeUtils.default.getWhatMonth(e,1)}break}case"week":{let e=_xeUtils.default.getWhatWeek(t,i,a.startDay,a.startDay);for(var v=_xeUtils.default.getWhatWeek(l,o,a.startDay,a.startDay);e<=v;){var h=e;r.push(h),e=_xeUtils.default.getWhatWeek(e,1)}break}case"day":case"date":{let e=_xeUtils.default.getWhatDay(t,i,"first");for(var g=_xeUtils.default.getWhatDay(l,o,"first");e<=g;){var m=e;r.push(m),e=_xeUtils.default.getWhatDay(e,1)}break}case"hour":case"minute":case"second":{var y=(0,_util.getStandardGapTime)(a.type);let e=t.getTime()+i*y;for(var _=l.getTime()+o*y;e<=_;){var x=new Date(e);r.push(x),e+=y}break}}}return r}),y={computeScaleDateList:F},q={xID:e,props:l,context:r,reactData:$,internalData:X,getRefMaps:()=>g,getComputeMaps:()=>y},m=e=>{var t=h.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},j=()=>{var e=U.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);X.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}},B=()=>{var e=U.reactData.taskScaleList,t=o.value;let s=E.value;var l=W.value,a=F.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,f,v,h,g,m,y,_,x,p,S,T]=_xeUtils.default.toDateString(n,"yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss").split("-"),b=n.getDay(),w=b+1,M=Math.ceil((n.getMonth()+1)/3),D=""+_xeUtils.default.getYearWeek(n,l?l.startDay:void 0),n={date:n,yy:c,yyyy:f,M:v,MM:h,d:g,dd:m,H:y,HH:_,m:x,mm:p,s:S,ss:T,q:M,W:D,WW:_xeUtils.default.padStart(D,2,"0"),E:w,e:b},c={year:{field:f,title:f,dateObj:n},quarter:{field:f+"_q"+M,title:""+M,dateObj:n},month:{field:f+"_"+h,title:h,dateObj:n},week:{field:f+"_W"+D,title:D,dateObj:n},day:{field:f+`_${h}_${m}_E`+w,title:""+w,dateObj:n},date:{field:f+`_${h}_`+m,title:m,dateObj:n},hour:{field:f+`_${h}_${m}_`+_,title:_,dateObj:n},minute:{field:f+`_${h}_${m}_${_}_`+p,title:p,dateObj:n},second:{field:f+`_${h}_${m}_${_}_${p}_`+T,title:T,dateObj:n}},v=c[s.type];s.level<19&&u("year",c,v),s.level<17&&u("quarter",c,v),s.level<15&&u("month",c,v),s.level<13&&u("week",c,v),s.level<11&&u("day",c,v),s.level<9&&u("date",c,v),s.level<7&&u("hour",c,v),s.level<5&&u("minute",c,v),s.level<3&&u("second",c,v),r.push(v)}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}},G=e=>{let i=$.minViewDate;var t=E.value,l=o.value;let d=W.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=m(e),t=m(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+1}}}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=m(e),t=m(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+1}}}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=m(e),t=m(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+1}}}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=m(e),t=m(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+1}}}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=m(e),t=m(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+1}}}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=m(e),t=m(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+1}}}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=m(e),t=m(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+1}}}case"second":{let r=(0,_util.getStandardGapTime)(t.type);return(e,t)=>{e=m(e),t=m(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})},A=()=>{var e=U.props.treeConfig,t=X.scrollXStore,l=X.xeTable;let o=null,s=null;if(l){let a=_.value,r=x.value,i=p.value;var{computeAggregateOpts:d,computeTreeOpts:u}=l.getComputeMaps(),n=l.reactData.isRowGroupStatus,{afterFullData:l,afterTreeFullData:c,afterGroupFullData:f}=l.internalData,d=d.value,u=u.value,v=u.transform,h=u.children||u.childrenField,g=e=>{let t=_xeUtils.default.get(e,a),l=_xeUtils.default.get(e,r);var e=_xeUtils.default.get(e,i),e=(0,_util.hasMilestoneTask)(e);t=t||l,!e&&l||(l=t),t&&(e=m(t),!o||o.getTime()>e.getTime())&&(o=e),l&&(e=m(l),!s||s.getTime()<e.getTime())&&(s=e)};n?(n=d.mapChildrenField)&&_xeUtils.default.eachTree(f,g,{children:n}):e?_xeUtils.default.eachTree(c,g,{children:v?u.mapChildrenField:h}):l.forEach(g)}t.startIndex=0,t.endIndex=Math.max(1,t.visibleSize),$.minViewDate=o,$.maxViewDate=s,X.startMaps={},X.endMaps={},(()=>{var e=U.props.treeConfig,{minViewDate:t,maxViewDate:l}=$,{fullCols:a,groupCols:r}=B();if(t&&l&&a.length){let c=X.xeTable;if(c){let o=_.value,s=x.value,d=p.value;var{computeAggregateOpts:t,computeTreeOpts:l}=c.getComputeMaps(),i=c.reactData.isRowGroupStatus,{afterFullData:f,afterTreeFullData:v,afterGroupFullData:h}=c.internalData,t=t.value,l=l.value,g=l.transform,m=l.children||l.childrenField;let u={},n=G(a);var y=e=>{var t,l,a=c.getRowid(e);let r=_xeUtils.default.get(e,o),i=_xeUtils.default.get(e,s);(0,_util.hasMilestoneTask)(_xeUtils.default.get(e,d))&&(r=r||i,i=r),r&&i&&({offsetLeftSize:t,offsetWidthSize:l}=n(r,i),u[a]={row:e,rowid:a,oLeftSize:t,oWidthSize:l})};i?(i=t.mapChildrenField)&&_xeUtils.default.eachTree(h,y,{children:i}):e?_xeUtils.default.eachTree(v,y,{children:g?l.mapChildrenField:m}):f.forEach(y),X.chartMaps=u}}X.visibleColumn=a,$.headerGroups=r,j(),Z(),ee()})()},c=()=>{var{scrollXWidth:e,scrollYHeight:t}=$,l=X.elemStore,a=S.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),r=D.value,i=k.value;l&&(t=t>l.clientHeight,i&&($.scrollbarWidth=a.width||i.offsetWidth-i.clientWidth||14),$.overflowY=t,i=e>l.clientWidth,r&&($.scrollbarHeight=a.height||r.offsetHeight-r.clientHeight||14),$.overflowX=i)},Q=()=>{let l=u.dragBarRow,a=$.viewCellWidth,{elemStore:e,chartMaps:r}=X,i=X.xeTable;var t=(0,_util.getRefElem)(e["main-chart-task-wrapper"]);return t&&i&&_xeUtils.default.arrayEach(t.children,e=>{var t=e.children[0];t&&(e=e.getAttribute("rowid"),l&&i.getRowid(l)===e||(e=e?r[e]:null,t.style.left=(0,_util.getTaskBarLeft)(e,a)+"px",(0,_dom.hasClass)(t,"is--milestone"))||(t.style.width=(0,_util.getTaskBarWidth)(e,a)+"px"))}),(0,_vue.nextTick)()},f=()=>{var{scrollbarWidth:s,scrollbarHeight:d,headerGroups:u,tableColumn:n}=$,{elemStore:c,visibleColumn:f}=X,v=X.xeTable,h=i.value;if(h&&U){var g=S.value,m=T.value,y=b.value,_=H.value,x=L.value,p=w.value;let e=s;s=d;let t=0,l=0,a=0,r=(v&&(d=v.internalData,t=d.tBodyHeight,l=d.tHeaderHeight,a=d.tFooterHeight),"visible");(y||g.y&&!1===g.y.visible)&&(e=0,r="hidden");v=(0,_util.getRefElem)(c["main-header-scroll"]),d=(v&&(v.style.height=l+"px",v.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"),z.value),v=(g&&(g.style.left=m?e+"px":"",g.style.width=h.clientWidth-e+"px"),_&&(_.style.width=m?e+"px":"",_.style.display=m&&s?"block":""),x&&(x.style.width=m?"":e+"px",x.style.display=!m&&s?"block":""),M.value),u=(v&&(v.style.width=e+"px",v.style.height=t+l+a+"px",v.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":""),Y.value);let i=40,o=i=g?g.clientWidth||40:i;f.length&&(o=Math.max(0,i*f.length),d)&&0<(_=(h=d.clientWidth)-o)&&(i+=Math.max(0,_/f.length),o=h),$.viewCellWidth=i;x=(0,_util.getRefElem)(c["main-header-table"]),m=(0,_util.getRefElem)(c["main-body-table"]),s=i*n.length;return x&&(x.style.width=o+"px"),m&&(m.style.width=s+"px"),$.scrollXWidth=o,Promise.all([Q(),U.handleUpdateTaskLink?U.handleUpdateTaskLink(q):null])}},s=()=>{var e=i.value;return X.rceRunTime=Date.now(),e&&e.clientWidth&&U?(c(),f(),(0,_vue.nextTick)().then(()=>{var e,t=$.scrollXLoad,l=X.scrollXStore;t?({toVisibleIndex:t,visibleSize:e}=P(),l.preloadSize=1,l.offsetSize=2,l.visibleSize=e,l.endIndex=Math.max(l.startIndex+l.visibleSize+2,l.endIndex),l.visibleStartIndex=Math.max(l.startIndex,t),l.visibleEndIndex=Math.min(l.endIndex,t+e),K().then(()=>{J()})):a()})):(0,_vue.nextTick)()},N=()=>new Promise(e=>{var{rceTimeout:t,rceRunTime:l}=X,a=X.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()}),X.rceTimeout=setTimeout(()=>{X.rceTimeout=void 0,s()},r)}),P=()=>{var e,t=$.viewCellWidth,l=X.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}},J=()=>{var e=$.isScrollXBig,t=X.scrollXStore,{preloadSize:l,startIndex:a,endIndex:r,offsetSize:i}=t,{toVisibleIndex:o,visibleSize:s}=P(),e={startIndex:Math.max(0,e?o-1:o-1-i-l),endIndex:e?o+s:o+s+i+l},{startIndex:i,endIndex:l}=(t.visibleStartIndex=o-1,t.visibleEndIndex=o+s+1,e);!(o<=a||r-s-1<=o)||a===i&&r===l||(t.startIndex=i,t.endIndex=l,K())},K=()=>(ee(),a(),(0,_vue.nextTick)()),Z=()=>$.scrollXLoad=!0,ee=()=>{var e=$.scrollXLoad,{visibleColumn:t,scrollXStore:l}=X,e=e?t.slice(l.startIndex,l.endIndex):t.slice(0);$.tableColumn=e},a=()=>{let{scrollXLoad:t,scrollXWidth:l,viewCellWidth:e}=$,{elemStore:a,scrollXStore:r}=X;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, ${$.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,o&&(o.style.width=l+"px"),i=(0,_util.getRefElem)(a["main-chart-line-wrapper"]),o=i?i.firstElementChild:null;return o&&(o.style.width=l+"px"),c(),(0,_vue.nextTick)()},te=()=>{J()},le=(e,t)=>{var l=X.lcsTimeout;$.lazScrollLoading=!0,l&&clearTimeout(l),X.lcsTimeout=setTimeout(()=>{X.lcsRunTime=Date.now(),X.lcsTimeout=void 0,X.intoRunScroll=!1,X.inVirtualScroll=!1,X.inWheelScroll=!1,X.inHeaderScroll=!1,X.inBodyScroll=!1,X.inFooterScroll=!1,$.lazScrollLoading=!1},200)},V=(e,t,l,a)=>{t&&(X.lastScrollLeft=a),e&&(X.lastScrollTop=l),$.lastScrollTime=Date.now(),le(t,e)},v=(u,n,c,f,v)=>{var h=X.xeTable,{lastScrollLeft:g,lastScrollTop:m}=X,y=D.value,_=k.value;if(y&&_&&h){var{computeScrollXThreshold:h,computeScrollYThreshold:x}=h.getComputeMaps(),p=_.clientHeight,S=y.clientWidth,_=_.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=v<=0)||(a=y-1<=v+S),g<v?(r="right",y-h<=v+S&&(d=!0)):(r="left",v<=h&&(s=!0))),n&&(g=x.value,(e=f<=0)||(t=_-1<=f+p),m<f?(r="bottom",_-g<=f+p&&(o=!0)):(r="top",f<=g&&(i=!0))),V(n,c,f,v);h={source:sourceType,scrollTop:f,scrollLeft:v,bodyHeight:p,bodyWidth:S,scrollHeight:_,scrollWidth:y,isX:c,isY:n,isTop:e,isBottom:t,isLeft:l,isRight:a,direction:r};(o||i||d||s)&&U.dispatchEvent("scroll-boundary",h,u),U.dispatchEvent("scroll",h,u)}},ae=e=>{var t=X.xeTable;t&&(t=t.internalData.elemStore,t=(0,_util.getRefElem)(t["main-body-scroll"]))&&(t.scrollTop=e)};e={handleUpdateStyle:f,handleLazyRecalculate:N,handleUpdateCurrentRow(e){var t,l,a=X.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=X.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}=X;l||a||r||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),r=D.value,a&&l&&(t=l.scrollLeft,X.inHeaderScroll=!0,(0,_dom.setScrollLeft)(r,t),(0,_dom.setScrollLeft)(a,t),v(e,!1,!0,l.scrollTop,t)))},triggerBodyScrollEvent(e){var t,l,a=$.scrollXLoad,{elemStore:r,inVirtualScroll:i,inHeaderScroll:o,inFooterScroll:s,lastScrollLeft:d,lastScrollTop:u}=X;i||o||s||(i=e.currentTarget,o=(0,_util.getRefElem)(r["main-header-scroll"]),s=D.value,r=k.value,d=(t=i.scrollLeft)!==d,u=(l=i.scrollTop)!==u,X.inBodyScroll=!0,X.scrollRenderType="",u&&((0,_dom.setScrollTop)(r,l),ae(l)),d&&(X.inBodyScroll=!0,(0,_dom.setScrollLeft)(s,t),(0,_dom.setScrollLeft)(o,t),a)&&te(),u&&V(u,d,i.scrollTop,t),d&&v(e,u,d,i.scrollTop,t))},triggerVirtualScrollXEvent(e){var t,l=$.scrollXLoad,{elemStore:a,inHeaderScroll:r,inBodyScroll:i}=X;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,X.inVirtualScroll=!0,(0,_dom.setScrollLeft)(i,t),(0,_dom.setScrollLeft)(a,t),l&&te(),v(e,!1,!0,r.scrollTop,t)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:a}=X;l||a||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,X.inVirtualScroll=!0,(0,_dom.setScrollTop)(a,e),ae(e),V(!0,!1,e,l.scrollLeft)))},handleUpdateSXSpace(){return a()},handleUpdateSYSpace(){return(()=>{var e=X.elemStore,t=X.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-task-wrapper"]),a&&(a.style.transform=`translate(${$.scrollXLeft||0}px, ${d}px)`),t&&(t.style.transform=`translate(${$.scrollXLeft||0}px, ${d}px)`),l=(0,_util.getRefElem)(e["main-body-ySpace"]),l&&(l.style.height=s?s+"px":""),a=n.value,a&&(a.style.height=s?s+"px":""),t=(0,_util.getRefElem)(e["main-chart-line-wrapper"]),l=t?t.firstElementChild:null;return l&&(l.style.height=s?s+"px":""),$.scrollYTop=d,$.scrollYHeight=i,$.isScrollYBig=o,c(),(0,_vue.nextTick)().then(()=>{f()})})()},handleUpdateSYStatus(e){$.scrollYLoad=e}};let re=()=>{N()},ie=(Object.assign(q,{refreshData(){return A(),s(),(0,_vue.nextTick)().then(()=>{var e=X.xeTable;if(s(),e)return e.recalculate()})},updateViewData(){var e=X.xeTable;return e&&(e=e.reactData.tableData,$.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(X.xeTable=e),(0,_vue.nextTick)()}},e),()=>(0,_vue.h)("div",{key:"vsx",ref:w,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:z,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:D,class:"vxe-gantt-view--scroll-x-handle",onScroll:q.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"})])),oe=()=>(0,_vue.h)("div",{ref:M,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:k,class:"vxe-gantt-view--scroll-y-handle",onScroll:q.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"})]),se=()=>(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)]),de=()=>{var e=b.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[oe(),se()]:[se(),oe()])};let t=(0,_vue.ref)(0);return(0,_vue.watch)(()=>$.tableData,()=>{t.value++}),(0,_vue.watch)(()=>$.tableData.length,()=>{t.value++}),(0,_vue.watch)(t,()=>{A()}),(0,_vue.onMounted)(()=>{globalEvents.on(q,"resize",re)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(q,"keydown"),_xeUtils.default.assign(X,createInternalData())}),q.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:a}=$,r=T.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?[ie(),de()]:[de(),ie()]),(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",q),q},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(l,u){var e=_xeUtils.default.uniqueId();let M=(0,_vue.inject)("$xeGantt",{}),h=M.internalData,{computeTaskOpts:g,computeTaskViewOpts:V,computeStartField:_,computeEndField:x,computeTypeField:p,computeScrollbarOpts:S,computeScrollbarXToTop:T,computeScrollbarYToLeft:b,computeScaleUnit:a,computeWeekScale:r,computeMinScale:D}=M.getComputeMaps(),i=(0,_vue.ref)(),w=(0,_vue.ref)(),U=(0,_vue.ref)(),W=(0,_vue.ref)(),E=(0,_vue.ref)(),H=(0,_vue.ref)(),k=(0,_vue.ref)(),L=(0,_vue.ref)(),R=(0,_vue.ref)(),z=(0,_vue.ref)(),C=(0,_vue.ref)(),d=(0,_vue.ref)(),n=(0,_vue.ref)(),I=(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:40}),$=createInternalData(),y={refElem:i,refScrollXHandleElem:W,refScrollYHandleElem:k},O=(0,_vue.computed)(()=>{var{minViewDate:t,maxViewDate:l}=Y,e=V.value,a=D.value,e=e.gridding,{type:r,startDay:i}=a,o=[];if(t&&l){var s=-_xeUtils.default.toNumber(e&&e.leftSpacing||0),d=_xeUtils.default.toNumber(e&&e.rightSpacing||0);switch(r){case"year":{let e=_xeUtils.default.getWhatYear(t,s,"first");for(var u=_xeUtils.default.getWhatYear(l,d,"first");e<=u;){var n=e;o.push(n),e=_xeUtils.default.getWhatYear(e,1)}break}case"quarter":{let e=_xeUtils.default.getWhatQuarter(t,s,"first");for(var c=_xeUtils.default.getWhatQuarter(l,d,"first");e<=c;){var f=e;o.push(f),e=_xeUtils.default.getWhatQuarter(e,1)}break}case"month":{let e=_xeUtils.default.getWhatMonth(t,s,"first");for(var v=_xeUtils.default.getWhatMonth(l,d,"first");e<=v;){var h=e;o.push(h),e=_xeUtils.default.getWhatMonth(e,1)}break}case"week":{let e=_xeUtils.default.getWhatWeek(t,s,i,i);for(var g=_xeUtils.default.getWhatWeek(l,d,i,i);e<=g;){var m=e;o.push(m),e=_xeUtils.default.getWhatWeek(e,1)}break}case"day":case"date":{let e=_xeUtils.default.getWhatDay(t,s,"first");for(var y=_xeUtils.default.getWhatDay(l,d,"first");e<=y;){var _=e;o.push(_),e=_xeUtils.default.getWhatDay(e,1)}break}case"hour":case"minute":case"second":{var x=+(0,_util.getStandardGapTime)(a.type);let e=t.getTime()+s*x;for(var p=l.getTime()+d*x;e<=p;){var S=new Date(e);o.push(S),e+=x}break}}}return o}),F={computeScaleDateList:O},X={xID:e,props:l,context:u,reactData:Y,internalData:$,getRefMaps:()=>y,getComputeMaps:()=>F},m=e=>{var t=g.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},j=()=>{var e=M.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);$.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}},B=()=>{var e=M.reactData.taskScaleList,t=a.value;let v=D.value;var h=r.value,g=O.value;let m=[],l=[];if(v&&t&&g.length){let i={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},o={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}};var y="week"===v.type,_=(t,l,a)=>{if(v.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 f=0;f<g.length;f++){var x=g[f];let[e,t,l,a,r,i,o,s,d,u,n,c]=_xeUtils.default.toDateString(x,"yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss").split("-");var p=x.getDay(),S=p+1,T=Math.ceil((x.getMonth()+1)/3),b=""+_xeUtils.default.getYearWeek(x,h?h.startDay:void 0),w=_xeUtils.default.padStart(b,2,"0"),x=(t,{date:x,yy:e,yyyy:t="1"==b&&"12"===a&&(x=""+(Number(t)+1),y)?x:t,M:l,MM:a,d:r,dd:i,H:o,HH:s,m:d,mm:u,s:n,ss:c,q:T,W:b,WW:w,E:S,e:p}),w={year:{field:t,title:t,dateObj:x},quarter:{field:t+"_q"+T,title:""+T,dateObj:x},month:{field:t+"_"+a,title:a,dateObj:x},week:{field:t+"_W"+b,title:b,dateObj:x},day:{field:t+`_${a}_${i}_E`+S,title:""+S,dateObj:x},date:{field:t+`_${a}_`+i,title:i,dateObj:x},hour:{field:t+`_${a}_${i}_`+s,title:s,dateObj:x},minute:{field:t+`_${a}_${i}_${s}_`+u,title:u,dateObj:x},second:{field:t+`_${a}_${i}_${s}_${u}_`+c,title:c,dateObj:x}},p=w[v.type];v.level<19&&_("year",w,p),v.level<17&&_("quarter",w,p),v.level<15&&_("month",w,p),v.level<13&&_("week",w,p),v.level<11&&_("day",w,p),v.level<9&&_("date",w,p),v.level<7&&_("hour",w,p),v.level<5&&_("minute",w,p),v.level<3&&_("second",w,p),m.push(p)}e.forEach(e=>{var t;e.type===v.type?l.push({scaleItem:e,columns:m}):((t=i[e.type]||[])&&t.forEach(e=>{e.childCount=e.children?e.children.length:0,e.children=void 0}),l.push({scaleItem:e,columns:t}))})}return{fullCols:m,groupCols:l}},G=e=>{let i=Y.minViewDate;var t=D.value,l=a.value;let d=r.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=m(e),t=m(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=m(e),t=m(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=m(e),t=m(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=e.yyyy+"-"+e.W;s[e]=t}),(e,t)=>{var e=m(e),t=m(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=m(e),t=m(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+1}}}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=m(e),t=m(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=m(e),t=m(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=m(e),t=m(t);let l=0,a=0;return i&&(l=(e.getTime()-i.getTime())/r,a=(t.getTime()-e.getTime())/r),{offsetLeftSize:l,offsetWidthSize:a}}}}return()=>({offsetLeftSize:0,offsetWidthSize:0})},A=()=>{var e=M.props.treeConfig,t=$.scrollXStore,l=$.xeTable;let o=null,s=null;if(l){let a=_.value,r=x.value,i=p.value;var{computeAggregateOpts:d,computeTreeOpts:u}=l.getComputeMaps(),n=l.reactData.isRowGroupStatus,{afterFullData:l,afterTreeFullData:c,afterGroupFullData:f}=l.internalData,d=d.value,u=u.value,v=u.transform,h=u.children||u.childrenField,g=e=>{let t=_xeUtils.default.get(e,a),l=_xeUtils.default.get(e,r);var e=_xeUtils.default.get(e,i),e=(0,_util.hasMilestoneTask)(e);t=t||l,!e&&l||(l=t),t&&(e=m(t),!o||o.getTime()>e.getTime())&&(o=e),l&&(e=m(l),!s||s.getTime()<e.getTime())&&(s=e)};n?(n=d.mapChildrenField)&&_xeUtils.default.eachTree(f,g,{children:n}):e?_xeUtils.default.eachTree(c,g,{children:v?u.mapChildrenField:h}):l.forEach(g)}t.startIndex=0,t.endIndex=Math.max(1,t.visibleSize),Y.minViewDate=o,Y.maxViewDate=s,$.startMaps={},$.endMaps={},(()=>{var e=M.props.treeConfig,{minViewDate:t,maxViewDate:l}=Y,{fullCols:a,groupCols:r}=B();if(t&&l&&a.length){let c=$.xeTable;if(c){let o=_.value,s=x.value,d=p.value;var{computeAggregateOpts:t,computeTreeOpts:l}=c.getComputeMaps(),i=c.reactData.isRowGroupStatus,{afterFullData:f,afterTreeFullData:v,afterGroupFullData:h}=c.internalData,t=t.value,l=l.value,g=l.transform,m=l.children||l.childrenField;let u={},n=G(a);var y=e=>{var t,l,a=c.getRowid(e);let r=_xeUtils.default.get(e,o),i=_xeUtils.default.get(e,s);(0,_util.hasMilestoneTask)(_xeUtils.default.get(e,d))&&(r=r||i,i=r),r&&i&&({offsetLeftSize:t,offsetWidthSize:l}=n(r,i),u[a]={row:e,rowid:a,oLeftSize:t,oWidthSize:l})};i?(i=t.mapChildrenField)&&_xeUtils.default.eachTree(h,y,{children:i}):e?_xeUtils.default.eachTree(v,y,{children:g?l.mapChildrenField:m}):f.forEach(y),$.chartMaps=u}}$.visibleColumn=a,Y.headerGroups=r,j(),Z(),ee()})()},c=()=>{var{scrollXWidth:e,scrollYHeight:t}=Y,l=$.elemStore,a=S.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),r=W.value,i=k.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)},Q=()=>{let l=h.dragBarRow,a=Y.viewCellWidth,{elemStore:e,chartMaps:r}=$,i=$.xeTable;var t=(0,_util.getRefElem)(e["main-chart-task-wrapper"]);return t&&i&&_xeUtils.default.arrayEach(t.children,e=>{var t=e.children[0];t&&(e=e.getAttribute("rowid"),l&&i.getRowid(l)===e||(e=e?r[e]:null,t.style.left=(0,_util.getTaskBarLeft)(e,a)+"px",(0,_dom.hasClass)(t,"is--milestone"))||(t.style.width=(0,_util.getTaskBarWidth)(e,a)+"px"))}),(0,_vue.nextTick)()},f=()=>{var{scrollbarWidth:s,scrollbarHeight:d,headerGroups:u,tableColumn:n}=Y,{elemStore:c,visibleColumn:f}=$,v=$.xeTable,h=i.value;if(h&&M){var g=S.value,m=T.value,y=b.value,_=E.value,x=H.value,p=w.value;let e=s;s=d;let t=0,l=0,a=0,r=(v&&(d=v.internalData,t=d.tBodyHeight,l=d.tHeaderHeight,a=d.tFooterHeight),"visible");(y||g.y&&!1===g.y.visible)&&(e=0,r="hidden");v=(0,_util.getRefElem)(c["main-header-scroll"]),d=(v&&(v.style.height=l+"px",v.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"),R.value),v=(g&&(g.style.left=m?e+"px":"",g.style.width=h.clientWidth-e+"px"),_&&(_.style.width=m?e+"px":"",_.style.display=m&&s?"block":""),x&&(x.style.width=m?"":e+"px",x.style.display=!m&&s?"block":""),U.value),u=(v&&(v.style.width=e+"px",v.style.height=t+l+a+"px",v.style.visibility=r),L.value),y=(u&&(u.style.height=l+"px",u.style.display=l?"block":""),z.value),p=(y&&(y.style.height=t+"px",y.style.top=l+"px"),C.value),g=(p&&(p.style.height=a+"px",p.style.top=l+t+"px",p.style.display=a?"block":""),I.value);let i=40,o=i=g?g.clientWidth||40:i;f.length&&(o=Math.max(0,i*f.length),d)&&0<(_=(h=d.clientWidth)-o)&&(i+=Math.max(0,_/f.length),o=h),Y.viewCellWidth=i;x=(0,_util.getRefElem)(c["main-header-table"]),m=(0,_util.getRefElem)(c["main-body-table"]),s=i*n.length;return x&&(x.style.width=o+"px"),m&&(m.style.width=s+"px"),Y.scrollXWidth=o,Promise.all([Q(),M.handleUpdateTaskLink?M.handleUpdateTaskLink(X):null])}},o=()=>{var e=i.value;return $.rceRunTime=Date.now(),e&&e.clientWidth&&M?(c(),f(),(0,_vue.nextTick)().then(()=>{var e,t=Y.scrollXLoad,l=$.scrollXStore;t?({toVisibleIndex:t,visibleSize:e}=P(),l.preloadSize=1,l.offsetSize=2,l.visibleSize=e,l.endIndex=Math.max(l.startIndex+l.visibleSize+2,l.endIndex),l.visibleStartIndex=Math.max(l.startIndex,t),l.visibleEndIndex=Math.min(l.endIndex,t+e),K().then(()=>{J()})):s()})):(0,_vue.nextTick)()},N=()=>new Promise(e=>{var{rceTimeout:t,rceRunTime:l}=$,a=$.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(o()):(0,_vue.nextTick)(()=>{e()}),$.rceTimeout=setTimeout(()=>{$.rceTimeout=void 0,o()},r)}),P=()=>{var e,t=Y.viewCellWidth,l=$.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}},J=()=>{var e=Y.isScrollXBig,t=$.scrollXStore,{preloadSize:l,startIndex:a,endIndex:r,offsetSize:i}=t,{toVisibleIndex:o,visibleSize:s}=P(),e={startIndex:Math.max(0,e?o-1:o-1-i-l),endIndex:e?o+s:o+s+i+l},{startIndex:i,endIndex:l}=(t.visibleStartIndex=o-1,t.visibleEndIndex=o+s+1,e);!(o<=a||r-s-1<=o)||a===i&&r===l||(t.startIndex=i,t.endIndex=l,K())},K=()=>(ee(),s(),(0,_vue.nextTick)()),Z=()=>Y.scrollXLoad=!0,ee=()=>{var e=Y.scrollXLoad,{visibleColumn:t,scrollXStore:l}=$,e=e?t.slice(l.startIndex,l.endIndex):t.slice(0);Y.tableColumn=e},s=()=>{let{scrollXLoad:t,scrollXWidth:l,viewCellWidth:e}=Y,{elemStore:a,scrollXStore:r}=$;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,o&&(o.style.width=l+"px"),i=(0,_util.getRefElem)(a["main-chart-line-wrapper"]),o=i?i.firstElementChild:null;return o&&(o.style.width=l+"px"),c(),(0,_vue.nextTick)()},te=()=>{J()},le=(e,t)=>{var l=$.lcsTimeout;Y.lazScrollLoading=!0,l&&clearTimeout(l),$.lcsTimeout=setTimeout(()=>{$.lcsRunTime=Date.now(),$.lcsTimeout=void 0,$.intoRunScroll=!1,$.inVirtualScroll=!1,$.inWheelScroll=!1,$.inHeaderScroll=!1,$.inBodyScroll=!1,$.inFooterScroll=!1,Y.lazScrollLoading=!1},200)},q=(e,t,l,a)=>{t&&($.lastScrollLeft=a),e&&($.lastScrollTop=l),Y.lastScrollTime=Date.now(),le(t,e)},v=(u,n,c,f,v)=>{var h=$.xeTable,{lastScrollLeft:g,lastScrollTop:m}=$,y=W.value,_=k.value;if(y&&_&&h){var{computeScrollXThreshold:h,computeScrollYThreshold:x}=h.getComputeMaps(),p=_.clientHeight,S=y.clientWidth,_=_.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=v<=0)||(a=y-1<=v+S),g<v?(r="right",y-h<=v+S&&(d=!0)):(r="left",v<=h&&(s=!0))),n&&(g=x.value,(e=f<=0)||(t=_-1<=f+p),m<f?(r="bottom",_-g<=f+p&&(o=!0)):(r="top",f<=g&&(i=!0))),q(n,c,f,v);h={source:sourceType,scrollTop:f,scrollLeft:v,bodyHeight:p,bodyWidth:S,scrollHeight:_,scrollWidth:y,isX:c,isY:n,isTop:e,isBottom:t,isLeft:l,isRight:a,direction:r};(o||i||d||s)&&M.dispatchEvent("scroll-boundary",h,u),M.dispatchEvent("scroll",h,u)}},ae=e=>{var t=$.xeTable;t&&(t=t.internalData.elemStore,t=(0,_util.getRefElem)(t["main-body-scroll"]))&&(t.scrollTop=e)};e={handleUpdateStyle:f,handleLazyRecalculate:N,handleUpdateCurrentRow(e){var t,l,a=$.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=$.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}=$;l||a||r||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),r=W.value,a&&l&&(t=l.scrollLeft,$.inHeaderScroll=!0,(0,_dom.setScrollLeft)(r,t),(0,_dom.setScrollLeft)(a,t),v(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}=$;i||o||s||(i=e.currentTarget,o=(0,_util.getRefElem)(r["main-header-scroll"]),s=W.value,r=k.value,d=(t=i.scrollLeft)!==d,u=(l=i.scrollTop)!==u,$.inBodyScroll=!0,$.scrollRenderType="",u&&((0,_dom.setScrollTop)(r,l),ae(l)),d&&($.inBodyScroll=!0,(0,_dom.setScrollLeft)(s,t),(0,_dom.setScrollLeft)(o,t),a)&&te(),u&&q(u,d,i.scrollTop,t),d&&v(e,u,d,i.scrollTop,t))},triggerVirtualScrollXEvent(e){var t,l=Y.scrollXLoad,{elemStore:a,inHeaderScroll:r,inBodyScroll:i}=$;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,$.inVirtualScroll=!0,(0,_dom.setScrollLeft)(i,t),(0,_dom.setScrollLeft)(a,t),l&&te(),v(e,!1,!0,r.scrollTop,t)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:a}=$;l||a||(l=e.currentTarget,a=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,$.inVirtualScroll=!0,(0,_dom.setScrollTop)(a,e),ae(e),q(!0,!1,e,l.scrollLeft)))},handleUpdateSXSpace(){return s()},handleUpdateSYSpace(){return(()=>{var e=$.elemStore,t=$.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-task-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,a&&(a.style.height=s?s+"px":""),t=(0,_util.getRefElem)(e["main-chart-line-wrapper"]),l=t?t.firstElementChild:null;return l&&(l.style.height=s?s+"px":""),Y.scrollYTop=d,Y.scrollYHeight=i,Y.isScrollYBig=o,c(),(0,_vue.nextTick)().then(()=>{f()})})()},handleUpdateSYStatus(e){Y.scrollYLoad=e}};let re=()=>{N()},ie=(Object.assign(X,{refreshData(){return A(),o(),(0,_vue.nextTick)().then(()=>{var e=$.xeTable;if(o(),e)return e.recalculate()})},updateViewData(){var e=$.xeTable;return e&&(e=e.reactData.tableData,Y.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&($.xeTable=e),(0,_vue.nextTick)()}},e),()=>(0,_vue.h)("div",{key:"vsx",ref:w,class:"vxe-gantt-view--scroll-x-virtual"},[(0,_vue.h)("div",{ref:E,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:R,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:W,class:"vxe-gantt-view--scroll-x-handle",onScroll:X.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:H,class:"vxe-gantt-view--scroll-x-right-corner"})])),oe=()=>(0,_vue.h)("div",{ref:U,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:z,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:k,class:"vxe-gantt-view--scroll-y-handle",onScroll:X.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:C,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),se=()=>(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)]),de=()=>{var e=b.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[oe(),se()]:[se(),oe()])};let t=(0,_vue.ref)(0);return(0,_vue.watch)(()=>Y.tableData,()=>{t.value++}),(0,_vue.watch)(()=>Y.tableData.length,()=>{t.value++}),(0,_vue.watch)(t,()=>{A()}),(0,_vue.onMounted)(()=>{globalEvents.on(X,"resize",re)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(X,"keydown"),_xeUtils.default.assign($,createInternalData())}),X.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:a}=Y,r=T.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?[ie(),de()]:[de(),ie()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:I,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",X),X},render(){return this.renderVN()}});
|
package/lib/gantt/src/gantt.js
CHANGED
|
@@ -541,8 +541,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
541
541
|
type: conf
|
|
542
542
|
} : conf;
|
|
543
543
|
const {
|
|
544
|
-
type
|
|
544
|
+
type,
|
|
545
|
+
step
|
|
545
546
|
} = sConf;
|
|
547
|
+
if (step) {
|
|
548
|
+
(0, _log.errLog)('vxe.error.errProp', [`step=${step}`, 'step=1']);
|
|
549
|
+
}
|
|
546
550
|
if (!type || !viewTypeLevelMaps[type]) {
|
|
547
551
|
(0, _log.errLog)('vxe.error.errProp', [`type=${type}`, _xeUtils.default.keys(viewTypeLevelMaps).join(',')]);
|
|
548
552
|
return;
|