vxe-gantt 4.0.27 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 computeMaps = {};
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 handleParseColumn = () => {
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
- minViewDate,
160
- maxViewDate
161
- } = reactData;
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 && minViewDate && maxViewDate) {
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 (minSType === type) {
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 < countSize; i++) {
229
- const itemDate = new Date(currTime + i * gapTime);
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,7 +344,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
291
344
  dateObj
292
345
  }
293
346
  };
294
- const minCol = colMaps[minSType];
347
+ const minCol = colMaps[minScale.type];
295
348
  if (minScale.level < 19) {
296
349
  handleData('year', colMaps, minCol);
297
350
  }
@@ -319,7 +372,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
319
372
  fullCols.push(minCol);
320
373
  }
321
374
  taskScaleList.forEach(scaleItem => {
322
- if (scaleItem.type === minSType) {
375
+ if (scaleItem.type === minScale.type) {
323
376
  groupCols.push({
324
377
  scaleItem,
325
378
  columns: fullCols
@@ -338,6 +391,249 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
338
391
  columns: list
339
392
  });
340
393
  });
394
+ }
395
+ return {
396
+ fullCols,
397
+ groupCols
398
+ };
399
+ };
400
+ const createChartRender = fullCols => {
401
+ const {
402
+ minViewDate
403
+ } = reactData;
404
+ const minScale = computeMinScale.value;
405
+ const scaleUnit = computeScaleUnit.value;
406
+ const weekScale = computeWeekScale.value;
407
+ switch (scaleUnit) {
408
+ case 'year':
409
+ {
410
+ const indexMaps = {};
411
+ fullCols.forEach(({
412
+ dateObj
413
+ }, i) => {
414
+ const yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy');
415
+ indexMaps[yyyyMM] = i;
416
+ });
417
+ return (startValue, endValue) => {
418
+ const startDate = parseStringDate(startValue);
419
+ const endDate = parseStringDate(endValue);
420
+ const startStr = _xeUtils.default.toDateString(startDate, 'yyyy');
421
+ const startFirstDate = _xeUtils.default.getWhatYear(startDate, 0, 'first');
422
+ const endStr = _xeUtils.default.toDateString(endDate, 'yyyy');
423
+ const endFirstDate = _xeUtils.default.getWhatYear(endDate, 0, 'first');
424
+ const dateSize = Math.floor((_xeUtils.default.getWhatYear(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / dayMs);
425
+ const subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
426
+ const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
427
+ const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
428
+ return {
429
+ offsetLeftSize,
430
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
431
+ };
432
+ };
433
+ }
434
+ case 'quarter':
435
+ {
436
+ const indexMaps = {};
437
+ fullCols.forEach(({
438
+ dateObj
439
+ }, i) => {
440
+ const q = _xeUtils.default.toDateString(dateObj.date, 'yyyy-q');
441
+ indexMaps[q] = i;
442
+ });
443
+ return (startValue, endValue) => {
444
+ const startDate = parseStringDate(startValue);
445
+ const endDate = parseStringDate(endValue);
446
+ const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-q');
447
+ const startFirstDate = _xeUtils.default.getWhatQuarter(startDate, 0, 'first');
448
+ const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-q');
449
+ const endFirstDate = _xeUtils.default.getWhatQuarter(endDate, 0, 'first');
450
+ const dateSize = Math.floor((_xeUtils.default.getWhatQuarter(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / dayMs);
451
+ const subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
452
+ const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
453
+ const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
454
+ return {
455
+ offsetLeftSize,
456
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
457
+ };
458
+ };
459
+ }
460
+ case 'month':
461
+ {
462
+ const indexMaps = {};
463
+ fullCols.forEach(({
464
+ dateObj
465
+ }, i) => {
466
+ const yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM');
467
+ indexMaps[yyyyMM] = i;
468
+ });
469
+ return (startValue, endValue) => {
470
+ const startDate = parseStringDate(startValue);
471
+ const endDate = parseStringDate(endValue);
472
+ const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM');
473
+ const startFirstDate = _xeUtils.default.getWhatMonth(startDate, 0, 'first');
474
+ const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM');
475
+ const endFirstDate = _xeUtils.default.getWhatMonth(endDate, 0, 'first');
476
+ const dateSize = Math.floor((_xeUtils.default.getWhatMonth(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / dayMs);
477
+ const subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
478
+ const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
479
+ const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
480
+ return {
481
+ offsetLeftSize,
482
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
483
+ };
484
+ };
485
+ }
486
+ case 'week':
487
+ {
488
+ const indexMaps = {};
489
+ fullCols.forEach(({
490
+ dateObj
491
+ }, i) => {
492
+ const yyyyW = _xeUtils.default.toDateString(dateObj.date, 'yyyy-W', {
493
+ firstDay: weekScale ? weekScale.startDay : undefined
494
+ });
495
+ indexMaps[yyyyW] = i;
496
+ });
497
+ return (startValue, endValue) => {
498
+ const startDate = parseStringDate(startValue);
499
+ const endDate = parseStringDate(endValue);
500
+ const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-W', {
501
+ firstDay: weekScale ? weekScale.startDay : undefined
502
+ });
503
+ const startFirstDate = _xeUtils.default.getWhatWeek(startDate, 0, weekScale ? weekScale.startDay : undefined, weekScale ? weekScale.startDay : undefined);
504
+ const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-W', {
505
+ firstDay: weekScale ? weekScale.startDay : undefined
506
+ });
507
+ const endFirstDate = _xeUtils.default.getWhatWeek(endDate, 0, weekScale ? weekScale.startDay : undefined, weekScale ? weekScale.startDay : undefined);
508
+ const dateSize = Math.floor((_xeUtils.default.getWhatWeek(endDate, 1, weekScale ? weekScale.startDay : undefined, weekScale ? weekScale.startDay : undefined).getTime() - endFirstDate.getTime()) / dayMs);
509
+ const subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
510
+ const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
511
+ const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
512
+ return {
513
+ offsetLeftSize,
514
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
515
+ };
516
+ };
517
+ }
518
+ case 'day':
519
+ case 'date':
520
+ {
521
+ const indexMaps = {};
522
+ fullCols.forEach(({
523
+ dateObj
524
+ }, i) => {
525
+ const yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM-dd');
526
+ indexMaps[yyyyMM] = i;
527
+ });
528
+ return (startValue, endValue) => {
529
+ const startDate = parseStringDate(startValue);
530
+ const endDate = parseStringDate(endValue);
531
+ const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM-dd');
532
+ const startFirstDate = _xeUtils.default.getWhatDay(startDate, 0, 'first');
533
+ const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM-dd');
534
+ const endFirstDate = _xeUtils.default.getWhatDay(endDate, 0, 'first');
535
+ const minuteSize = Math.floor((_xeUtils.default.getWhatDay(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / minuteMs);
536
+ const subtract = (startDate.getTime() - startFirstDate.getTime()) / minuteMs / minuteSize;
537
+ const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / minuteMs + 1) / minuteSize;
538
+ const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
539
+ return {
540
+ offsetLeftSize,
541
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
542
+ };
543
+ };
544
+ }
545
+ case 'hour':
546
+ {
547
+ const indexMaps = {};
548
+ fullCols.forEach(({
549
+ dateObj
550
+ }, i) => {
551
+ const yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM-dd HH');
552
+ indexMaps[yyyyMM] = i;
553
+ });
554
+ return (startValue, endValue) => {
555
+ const startDate = parseStringDate(startValue);
556
+ const endDate = parseStringDate(endValue);
557
+ const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM-dd HH');
558
+ const startFirstDate = _xeUtils.default.getWhatHours(startDate, 0, 'first');
559
+ const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM-dd HH');
560
+ const endFirstDate = _xeUtils.default.getWhatHours(endDate, 0, 'first');
561
+ const minuteSize = Math.floor((_xeUtils.default.getWhatHours(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / minuteMs);
562
+ const subtract = (startDate.getTime() - startFirstDate.getTime()) / minuteMs / minuteSize;
563
+ const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / minuteMs + 1) / minuteSize;
564
+ const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
565
+ return {
566
+ offsetLeftSize,
567
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
568
+ };
569
+ };
570
+ }
571
+ case 'minute':
572
+ {
573
+ const indexMaps = {};
574
+ fullCols.forEach(({
575
+ dateObj
576
+ }, i) => {
577
+ const yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM-dd HH:mm');
578
+ indexMaps[yyyyMM] = i;
579
+ });
580
+ return (startValue, endValue) => {
581
+ const startDate = parseStringDate(startValue);
582
+ const endDate = parseStringDate(endValue);
583
+ const startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM-dd HH:mm');
584
+ const startFirstDate = _xeUtils.default.getWhatMinutes(startDate, 0, 'first');
585
+ const endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM-dd HH:mm');
586
+ const endFirstDate = _xeUtils.default.getWhatMinutes(endDate, 0, 'first');
587
+ const minuteSize = Math.floor((_xeUtils.default.getWhatMinutes(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / minuteMs);
588
+ const subtract = (startDate.getTime() - startFirstDate.getTime()) / minuteMs / minuteSize;
589
+ const addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / minuteMs + 1) / minuteSize;
590
+ const offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
591
+ return {
592
+ offsetLeftSize,
593
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
594
+ };
595
+ };
596
+ }
597
+ case 'second':
598
+ {
599
+ const gapTime = (0, _util.getStandardGapTime)(minScale.type);
600
+ return (startValue, endValue) => {
601
+ const startDate = parseStringDate(startValue);
602
+ const endDate = parseStringDate(endValue);
603
+ let offsetLeftSize = 0;
604
+ let offsetWidthSize = 0;
605
+ if (minViewDate) {
606
+ offsetLeftSize = (startDate.getTime() - minViewDate.getTime()) / gapTime;
607
+ offsetWidthSize = (endDate.getTime() - startDate.getTime()) / gapTime + 1;
608
+ }
609
+ return {
610
+ offsetLeftSize,
611
+ offsetWidthSize
612
+ };
613
+ };
614
+ }
615
+ }
616
+ return () => {
617
+ return {
618
+ offsetLeftSize: 0,
619
+ offsetWidthSize: 0
620
+ };
621
+ };
622
+ };
623
+ const handleParseColumn = () => {
624
+ const ganttProps = $xeGantt.props;
625
+ const {
626
+ treeConfig
627
+ } = ganttProps;
628
+ const {
629
+ minViewDate,
630
+ maxViewDate
631
+ } = reactData;
632
+ const {
633
+ fullCols,
634
+ groupCols
635
+ } = handleColumnHeader();
636
+ if (minViewDate && maxViewDate && fullCols.length) {
341
637
  const $xeTable = internalData.xeTable;
342
638
  if ($xeTable) {
343
639
  const startField = computeStartField.value;
@@ -363,20 +659,21 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
363
659
  } = treeOpts;
364
660
  const childrenField = treeOpts.children || treeOpts.childrenField;
365
661
  const ctMaps = {};
662
+ const renderFn = createChartRender(fullCols);
366
663
  const handleParseRender = row => {
367
664
  const rowid = $xeTable.getRowid(row);
368
665
  const startValue = _xeUtils.default.get(row, startField);
369
666
  const endValue = _xeUtils.default.get(row, endField);
370
667
  if (startValue && endValue) {
371
- const startDate = parseStringDate(startValue);
372
- const endDate = parseStringDate(endValue);
373
- const oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / gapTime);
374
- const oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / gapTime) + 1;
668
+ const {
669
+ offsetLeftSize,
670
+ offsetWidthSize
671
+ } = renderFn(startValue, endValue);
375
672
  ctMaps[rowid] = {
376
673
  row,
377
674
  rowid,
378
- oLeftSize,
379
- oWidthSize
675
+ oLeftSize: offsetLeftSize,
676
+ oWidthSize: offsetWidthSize
380
677
  };
381
678
  }
382
679
  };
@@ -665,13 +962,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
665
962
  rceRunTime
666
963
  } = internalData;
667
964
  const $xeTable = internalData.xeTable;
668
- let refreshDelay = 50;
965
+ let refreshDelay = 30;
669
966
  if ($xeTable) {
670
967
  const {
671
968
  computeResizeOpts
672
969
  } = $xeTable.getComputeMaps();
673
970
  const resizeOpts = computeResizeOpts.value;
674
- refreshDelay = resizeOpts.refreshDelay || 50;
971
+ refreshDelay = resizeOpts.refreshDelay || refreshDelay;
675
972
  }
676
973
  if (rceTimeout) {
677
974
  clearTimeout(rceTimeout);
@@ -1022,7 +1319,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1022
1319
  const ganttViewMethods = {
1023
1320
  refreshData() {
1024
1321
  handleUpdateData();
1025
- return handleLazyRecalculate();
1322
+ handleRecalculateStyle();
1323
+ return (0, _vue.nextTick)().then(() => {
1324
+ const $xeTable = internalData.xeTable;
1325
+ handleRecalculateStyle();
1326
+ if ($xeTable) {
1327
+ return $xeTable.recalculate();
1328
+ }
1329
+ });
1026
1330
  },
1027
1331
  updateViewData() {
1028
1332
  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<14&&u("month",y,_),s.level<13&&u("week",y,_),s.level<11&&u("day",y,_),s.level<12&&u("date",y,_),s.level<7&&u("hour",y,_),s.level<5&&u("minute",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()}});
@@ -194,6 +194,22 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
194
194
  const computeTaskSplitOpts = (0, _vue.computed)(() => {
195
195
  return Object.assign({}, getConfig().gantt.taskSplitConfig, props.taskSplitConfig);
196
196
  });
197
+ const computeScaleUnit = (0, _vue.computed)(() => {
198
+ const minScale = computeMinScale.value;
199
+ return minScale ? minScale.type : 'date';
200
+ });
201
+ const computeMinScale = (0, _vue.computed)(() => {
202
+ const {
203
+ taskScaleList
204
+ } = reactData;
205
+ return _xeUtils.default.last(taskScaleList);
206
+ });
207
+ const computeWeekScale = (0, _vue.computed)(() => {
208
+ const {
209
+ taskScaleList
210
+ } = reactData;
211
+ return taskScaleList.find(item => item.type === 'week');
212
+ });
197
213
  const computeTaskScaleConfs = (0, _vue.computed)(() => {
198
214
  const taskViewOpts = computeTaskViewOpts.value;
199
215
  const {
@@ -455,6 +471,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
455
471
  computeTaskBarResizeOpts,
456
472
  computeTaskSplitOpts,
457
473
  computeTaskScaleConfs,
474
+ computeScaleUnit,
475
+ computeMinScale,
476
+ computeWeekScale,
458
477
  computeTitleField,
459
478
  computeStartField,
460
479
  computeEndField,
@@ -2400,6 +2419,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
2400
2419
  });
2401
2420
  (0, _vue.watch)(computeTaskScaleConfs, () => {
2402
2421
  handleTaskScaleConfig();
2422
+ $xeGantt.refreshTaskView();
2403
2423
  });
2404
2424
  hooks.forEach(options => {
2405
2425
  const {