vxe-gantt 3.4.9 → 3.5.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.
@@ -21,8 +21,10 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
21
21
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
22
22
  var globalEvents = _core.VxeUI.globalEvents;
23
23
  var sourceType = 'gantt';
24
+ var secondMs = 1000;
24
25
  var minuteMs = 1000 * 60;
25
- var dayMs = minuteMs * 60 * 24;
26
+ var hourMs = 1000 * 60 * 60;
27
+ var dayMs = hourMs * 24;
26
28
  function createInternalData() {
27
29
  return {
28
30
  xeTable: null,
@@ -83,8 +85,7 @@ var maxYHeight = 5e6;
83
85
  // const maxXWidth = 5e6
84
86
  function parseStringDate($xeGanttView, dateValue) {
85
87
  var $xeGantt = $xeGanttView.$xeGantt;
86
- var taskOpts = $xeGantt.computeTaskOpts;
87
- var dateFormat = taskOpts.dateFormat;
88
+ var dateFormat = $xeGantt.computeDateFormat;
88
89
  return _xeUtils.default.toStringDate(dateValue, dateFormat || null);
89
90
  }
90
91
  function updateTodayData($xeGanttView) {
@@ -359,15 +360,16 @@ function parseWeekObj(date, firstDay) {
359
360
  }
360
361
  function createChartRender($xeGanttView, fullCols) {
361
362
  var $xeGantt = $xeGanttView.$xeGantt;
362
- var reactData = $xeGanttView.reactData;
363
- var minViewDate = reactData.minViewDate;
364
363
  var minScale = $xeGantt.computeMinScale;
365
364
  var scaleUnit = $xeGantt.computeScaleUnit;
366
365
  var weekScale = $xeGantt.computeWeekScale;
366
+ var dateFormat = $xeGantt.computeDateFormat;
367
367
  if (minScale) {
368
368
  switch (scaleUnit) {
369
369
  case 'year':
370
370
  {
371
+ var showActualProgress = /M|d|H|mm|ss|S/.test(dateFormat);
372
+ var renderFormat = 'yyyy';
371
373
  var indexMaps = {};
372
374
  fullCols.forEach(function (_ref, i) {
373
375
  var dateObj = _ref.dateObj;
@@ -375,74 +377,106 @@ function createChartRender($xeGanttView, fullCols) {
375
377
  indexMaps[yyyyMM] = i;
376
378
  });
377
379
  return function (startValue, endValue) {
378
- var startDate = parseStringDate($xeGanttView, startValue);
379
- var endDate = parseStringDate($xeGanttView, endValue);
380
- var startStr = _xeUtils.default.toDateString(startDate, 'yyyy');
381
- var startFirstDate = _xeUtils.default.getWhatYear(startDate, 0, 'first');
382
- var endStr = _xeUtils.default.toDateString(endDate, 'yyyy');
380
+ var startValDate = parseStringDate($xeGanttView, startValue);
381
+ var endValDate = parseStringDate($xeGanttView, endValue);
382
+ var startStr = _xeUtils.default.toDateString(startValDate, renderFormat);
383
+ var startDate = showActualProgress ? startValDate : _xeUtils.default.getWhatYear(startValDate, 0, 'first');
384
+ var startFirstDate = _xeUtils.default.getWhatYear(startValDate, 0, 'first');
385
+ var endStr = _xeUtils.default.toDateString(endValDate, renderFormat);
386
+ var endDate = showActualProgress ? endValDate : _xeUtils.default.getWhatYear(endValDate, 0, 'last');
383
387
  var endFirstDate = _xeUtils.default.getWhatYear(endDate, 0, 'first');
384
- var dateSize = Math.floor((_xeUtils.default.getWhatYear(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / dayMs);
385
- var subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
386
- var addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
387
- var offsetLeftSize = (indexMaps[startStr] || 0) + subtract;
388
+ // 当前是年维度,当指定解析格式精确到天时,显示实际进度
389
+ var startSubtractSize = 0;
390
+ var endSubtractSize = 1;
391
+ if (showActualProgress) {
392
+ // 按年的天数比计算
393
+ var syDaySize = _xeUtils.default.getDayOfYear(startDate, 0);
394
+ startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / dayMs / syDaySize;
395
+ var eyDaySize = _xeUtils.default.getDayOfYear(endDate, 0);
396
+ endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / dayMs / eyDaySize;
397
+ }
398
+ var offsetLeftSize = (indexMaps[startStr] || 0) + startSubtractSize;
388
399
  return {
389
400
  offsetLeftSize: offsetLeftSize,
390
- offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + addSize
401
+ offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + endSubtractSize
391
402
  };
392
403
  };
393
404
  }
394
405
  case 'quarter':
395
406
  {
407
+ var _showActualProgress = /M|d|H|mm|ss|S/.test(dateFormat);
408
+ var _renderFormat = 'yyyy-q';
396
409
  var _indexMaps = {};
397
410
  fullCols.forEach(function (_ref2, i) {
398
411
  var dateObj = _ref2.dateObj;
399
- var q = _xeUtils.default.toDateString(dateObj.date, 'yyyy-q');
412
+ var q = _xeUtils.default.toDateString(dateObj.date, _renderFormat);
400
413
  _indexMaps[q] = i;
401
414
  });
402
415
  return function (startValue, endValue) {
403
- var startDate = parseStringDate($xeGanttView, startValue);
404
- var endDate = parseStringDate($xeGanttView, endValue);
405
- var startStr = _xeUtils.default.toDateString(startDate, 'yyyy-q');
406
- var startFirstDate = _xeUtils.default.getWhatQuarter(startDate, 0, 'first');
407
- var endStr = _xeUtils.default.toDateString(endDate, 'yyyy-q');
416
+ var startValDate = parseStringDate($xeGanttView, startValue);
417
+ var endValDate = parseStringDate($xeGanttView, endValue);
418
+ var startStr = _xeUtils.default.toDateString(startValDate, _renderFormat);
419
+ var startDate = _showActualProgress ? startValDate : _xeUtils.default.getWhatQuarter(startValDate, 0, 'first');
420
+ var startFirstDate = _xeUtils.default.getWhatQuarter(startValDate, 0, 'first');
421
+ var endStr = _xeUtils.default.toDateString(endValDate, _renderFormat);
422
+ var endDate = _showActualProgress ? endValDate : _xeUtils.default.getWhatQuarter(endValDate, 0, 'last');
408
423
  var endFirstDate = _xeUtils.default.getWhatQuarter(endDate, 0, 'first');
409
- var dateSize = Math.floor((_xeUtils.default.getWhatQuarter(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / dayMs);
410
- var subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
411
- var addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
412
- var offsetLeftSize = (_indexMaps[startStr] || 0) + subtract;
424
+ // 当前是季度维度,当指定解析格式精确到天时,显示实际进度
425
+ var startSubtractSize = 0;
426
+ var endSubtractSize = 1;
427
+ if (_showActualProgress) {
428
+ // 按季度天数比计算
429
+ var sqDaySize = _xeUtils.default.getDayOfQuarter(startDate, 0);
430
+ startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / dayMs / sqDaySize;
431
+ var eqDaySize = _xeUtils.default.getDayOfQuarter(endDate, 0);
432
+ endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / dayMs / eqDaySize;
433
+ }
434
+ var offsetLeftSize = (_indexMaps[startStr] || 0) + startSubtractSize;
413
435
  return {
414
436
  offsetLeftSize: offsetLeftSize,
415
- offsetWidthSize: (_indexMaps[endStr] || 0) - offsetLeftSize + addSize
437
+ offsetWidthSize: (_indexMaps[endStr] || 0) - offsetLeftSize + endSubtractSize
416
438
  };
417
439
  };
418
440
  }
419
441
  case 'month':
420
442
  {
443
+ var _renderFormat2 = 'yyyy-MM';
444
+ var _showActualProgress2 = /d|H|mm|ss|S/.test(dateFormat);
421
445
  var _indexMaps2 = {};
422
446
  fullCols.forEach(function (_ref3, i) {
423
447
  var dateObj = _ref3.dateObj;
424
- var yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM');
448
+ var yyyyMM = _xeUtils.default.toDateString(dateObj.date, _renderFormat2);
425
449
  _indexMaps2[yyyyMM] = i;
426
450
  });
427
451
  return function (startValue, endValue) {
428
- var startDate = parseStringDate($xeGanttView, startValue);
429
- var endDate = parseStringDate($xeGanttView, endValue);
430
- var startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM');
431
- var startFirstDate = _xeUtils.default.getWhatMonth(startDate, 0, 'first');
432
- var endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM');
452
+ var startValDate = parseStringDate($xeGanttView, startValue);
453
+ var endValDate = parseStringDate($xeGanttView, endValue);
454
+ var startStr = _xeUtils.default.toDateString(startValDate, _renderFormat2);
455
+ var startDate = _showActualProgress2 ? startValDate : _xeUtils.default.getWhatMonth(startValDate, 0, 'first');
456
+ var startFirstDate = _xeUtils.default.getWhatMonth(startValDate, 0, 'first');
457
+ var endStr = _xeUtils.default.toDateString(endValDate, _renderFormat2);
458
+ var endDate = _showActualProgress2 ? endValDate : _xeUtils.default.getWhatMonth(endValDate, 0, 'last');
433
459
  var endFirstDate = _xeUtils.default.getWhatMonth(endDate, 0, 'first');
434
- var dateSize = Math.floor((_xeUtils.default.getWhatMonth(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / dayMs);
435
- var subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
436
- var addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
437
- var offsetLeftSize = (_indexMaps2[startStr] || 0) + subtract;
460
+ // 当前是月维度,当指定解析格式精确到天时,显示实际进度
461
+ var startSubtractSize = 0;
462
+ var endSubtractSize = 1;
463
+ if (_showActualProgress2) {
464
+ // 按月天数比计算
465
+ var smDaySize = _xeUtils.default.getDayOfMonth(startDate, 0);
466
+ startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / dayMs / smDaySize;
467
+ var emDaySize = _xeUtils.default.getDayOfMonth(endDate, 0);
468
+ endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / dayMs / emDaySize;
469
+ }
470
+ var offsetLeftSize = (_indexMaps2[startStr] || 0) + startSubtractSize;
438
471
  return {
439
472
  offsetLeftSize: offsetLeftSize,
440
- offsetWidthSize: (_indexMaps2[endStr] || 0) - offsetLeftSize + addSize
473
+ offsetWidthSize: (_indexMaps2[endStr] || 0) - offsetLeftSize + endSubtractSize
441
474
  };
442
475
  };
443
476
  }
444
477
  case 'week':
445
478
  {
479
+ var _showActualProgress3 = /d|mm|ss|S/.test(dateFormat);
446
480
  var _indexMaps3 = {};
447
481
  fullCols.forEach(function (_ref4, i) {
448
482
  var dateObj = _ref4.dateObj;
@@ -450,120 +484,162 @@ function createChartRender($xeGanttView, fullCols) {
450
484
  _indexMaps3[yyyyW] = i;
451
485
  });
452
486
  return function (startValue, endValue) {
453
- var startDate = parseStringDate($xeGanttView, startValue);
454
- var endDate = parseStringDate($xeGanttView, endValue);
455
- var startWeekObj = parseWeekObj(startDate, weekScale ? weekScale.startDay : undefined);
487
+ var weekStartDay = weekScale ? weekScale.startDay : undefined;
488
+ var startValDate = parseStringDate($xeGanttView, startValue);
489
+ var endValDate = parseStringDate($xeGanttView, endValue);
490
+ var startDate = _showActualProgress3 ? startValDate : _xeUtils.default.getWhatWeek(startValDate, 0, 'first', weekStartDay);
491
+ var startWeekObj = parseWeekObj(startDate, weekStartDay);
456
492
  var startStr = "".concat(startWeekObj.yyyy, "-").concat(startWeekObj.W);
457
- var startFirstDate = _xeUtils.default.getWhatWeek(startDate, 0, weekScale ? weekScale.startDay : undefined, weekScale ? weekScale.startDay : undefined);
458
- var endWeekObj = parseWeekObj(endDate, weekScale ? weekScale.startDay : undefined);
493
+ var startFirstDate = _xeUtils.default.getWhatWeek(startDate, 0, 'first', weekStartDay);
494
+ var endDate = _showActualProgress3 ? endValDate : _xeUtils.default.getWhatWeek(endValDate, 0, 'first', weekStartDay);
495
+ var endWeekObj = parseWeekObj(endDate, weekStartDay);
459
496
  var endStr = "".concat(endWeekObj.yyyy, "-").concat(endWeekObj.W);
460
- var endFirstDate = _xeUtils.default.getWhatWeek(endDate, 0, weekScale ? weekScale.startDay : undefined, weekScale ? weekScale.startDay : undefined);
461
- var dateSize = Math.floor((_xeUtils.default.getWhatWeek(endDate, 1, weekScale ? weekScale.startDay : undefined, weekScale ? weekScale.startDay : undefined).getTime() - endFirstDate.getTime()) / dayMs);
462
- var subtract = (startDate.getTime() - startFirstDate.getTime()) / dayMs / dateSize;
463
- var addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / dayMs + 1) / dateSize;
464
- var offsetLeftSize = (_indexMaps3[startStr] || 0) + subtract;
497
+ var endFirstDate = _xeUtils.default.getWhatWeek(endDate, 0, 'first', weekStartDay);
498
+ // 当前是周维度,当指定解析格式精确到天时,显示实际进度
499
+ var startSubtractSize = 0;
500
+ var endSubtractSize = 1;
501
+ if (_showActualProgress3) {
502
+ // 按周天数比计算
503
+ startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / dayMs / 7;
504
+ endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / dayMs / 7;
505
+ }
506
+ var offsetLeftSize = (_indexMaps3[startStr] || 0) + startSubtractSize;
465
507
  return {
466
508
  offsetLeftSize: offsetLeftSize,
467
- offsetWidthSize: (_indexMaps3[endStr] || 0) - offsetLeftSize + addSize
509
+ offsetWidthSize: (_indexMaps3[endStr] || 0) - offsetLeftSize + endSubtractSize
468
510
  };
469
511
  };
470
512
  }
471
513
  case 'day':
472
514
  case 'date':
473
515
  {
516
+ var _renderFormat3 = 'yyyy-MM-dd';
517
+ var _showActualProgress4 = /mm|ss|S/.test(dateFormat);
474
518
  var _indexMaps4 = {};
475
519
  fullCols.forEach(function (_ref5, i) {
476
520
  var dateObj = _ref5.dateObj;
477
- var yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM-dd');
521
+ var yyyyMM = _xeUtils.default.toDateString(dateObj.date, _renderFormat3);
478
522
  _indexMaps4[yyyyMM] = i;
479
523
  });
480
524
  return function (startValue, endValue) {
481
- var startDate = parseStringDate($xeGanttView, startValue);
482
- var endDate = parseStringDate($xeGanttView, endValue);
483
- var startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM-dd');
525
+ var startValDate = parseStringDate($xeGanttView, startValue);
526
+ var endValDate = parseStringDate($xeGanttView, endValue);
527
+ var startStr = _xeUtils.default.toDateString(startValDate, _renderFormat3);
528
+ var startDate = _showActualProgress4 ? startValDate : _xeUtils.default.getWhatDay(startValDate, 0, 'first');
484
529
  var startFirstDate = _xeUtils.default.getWhatDay(startDate, 0, 'first');
485
- var endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM-dd');
530
+ var endStr = _xeUtils.default.toDateString(endValDate, _renderFormat3);
531
+ var endDate = _showActualProgress4 ? endValDate : _xeUtils.default.getWhatDay(endValDate, 0, 'last');
486
532
  var endFirstDate = _xeUtils.default.getWhatDay(endDate, 0, 'first');
487
- var minuteSize = Math.floor((_xeUtils.default.getWhatDay(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / minuteMs);
488
- // 开始和结束时间是否存在偏移时
489
- var startSubtract = (startDate.getTime() - startFirstDate.getTime()) / minuteMs / minuteSize;
490
- var endSubtract = (endDate.getTime() - endFirstDate.getTime()) / minuteMs / minuteSize;
491
- var addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / minuteMs + 1) / minuteSize;
492
- var offsetLeftSize = (_indexMaps4[startStr] || 0) + startSubtract;
493
- // 如果最小轴为天,当存在时分秒时,在当前单元格内渲染维度;如果不存在,则填充满单元格
533
+ // 当前是天维度,当指定解析格式精确到时分秒豪秒时,显示实际进度
534
+ var startSubtractSize = 0;
535
+ var endSubtractSize = 1;
536
+ if (_showActualProgress4) {
537
+ startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / dayMs;
538
+ endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / dayMs;
539
+ }
540
+ var offsetLeftSize = (_indexMaps4[startStr] || 0) + startSubtractSize;
494
541
  return {
495
542
  offsetLeftSize: offsetLeftSize,
496
- offsetWidthSize: (_indexMaps4[endStr] || 0) - offsetLeftSize + addSize + (startSubtract || endSubtract ? 0 : 1)
543
+ offsetWidthSize: (_indexMaps4[endStr] || 0) - offsetLeftSize + endSubtractSize
497
544
  };
498
545
  };
499
546
  }
500
547
  case 'hour':
501
548
  {
549
+ var _renderFormat4 = 'yyyy-MM-dd HH';
550
+ var _showActualProgress5 = /mm|ss|S/.test(dateFormat);
502
551
  var _indexMaps5 = {};
503
552
  fullCols.forEach(function (_ref6, i) {
504
553
  var dateObj = _ref6.dateObj;
505
- var yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM-dd HH');
554
+ var yyyyMM = _xeUtils.default.toDateString(dateObj.date, _renderFormat4);
506
555
  _indexMaps5[yyyyMM] = i;
507
556
  });
508
557
  return function (startValue, endValue) {
509
- var startDate = parseStringDate($xeGanttView, startValue);
510
- var endDate = parseStringDate($xeGanttView, endValue);
511
- var startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM-dd HH');
558
+ var startValDate = parseStringDate($xeGanttView, startValue);
559
+ var endValDate = parseStringDate($xeGanttView, endValue);
560
+ var startStr = _xeUtils.default.toDateString(startValDate, _renderFormat4);
561
+ var startDate = _showActualProgress5 ? startValDate : _xeUtils.default.getWhatHours(startValDate, 0, 'first');
512
562
  var startFirstDate = _xeUtils.default.getWhatHours(startDate, 0, 'first');
513
- var endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM-dd HH');
563
+ var endStr = _xeUtils.default.toDateString(endValDate, _renderFormat4);
564
+ var endDate = _showActualProgress5 ? endValDate : _xeUtils.default.getWhatHours(endValDate, 0, 'last');
514
565
  var endFirstDate = _xeUtils.default.getWhatHours(endDate, 0, 'first');
515
- var minuteSize = Math.floor((_xeUtils.default.getWhatHours(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / minuteMs);
516
- // 开始和结束时间是否存在偏移时
517
- var startSubtract = (startDate.getTime() - startFirstDate.getTime()) / minuteMs / minuteSize;
518
- var endSubtract = (endDate.getTime() - endFirstDate.getTime()) / minuteMs / minuteSize;
519
- var addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / minuteMs + 1) / minuteSize;
520
- var offsetLeftSize = (_indexMaps5[startStr] || 0) + startSubtract;
566
+ // 当前是小时维度,当指定解析格式精确到分秒豪秒时,显示实际进度
567
+ var startSubtractSize = 0;
568
+ var endSubtractSize = 1;
569
+ if (_showActualProgress5) {
570
+ startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / hourMs;
571
+ endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / hourMs;
572
+ }
573
+ var offsetLeftSize = (_indexMaps5[startStr] || 0) + startSubtractSize;
521
574
  return {
522
575
  offsetLeftSize: offsetLeftSize,
523
- offsetWidthSize: (_indexMaps5[endStr] || 0) - offsetLeftSize + addSize + (startSubtract || endSubtract ? 0 : 1)
576
+ offsetWidthSize: (_indexMaps5[endStr] || 0) - offsetLeftSize + endSubtractSize
524
577
  };
525
578
  };
526
579
  }
527
580
  case 'minute':
528
581
  {
582
+ var _renderFormat5 = 'yyyy-MM-dd HH:mm';
583
+ var _showActualProgress6 = /ss|S/.test(dateFormat);
529
584
  var _indexMaps6 = {};
530
585
  fullCols.forEach(function (_ref7, i) {
531
586
  var dateObj = _ref7.dateObj;
532
- var yyyyMM = _xeUtils.default.toDateString(dateObj.date, 'yyyy-MM-dd HH:mm');
587
+ var yyyyMM = _xeUtils.default.toDateString(dateObj.date, _renderFormat5);
533
588
  _indexMaps6[yyyyMM] = i;
534
589
  });
535
590
  return function (startValue, endValue) {
536
- var startDate = parseStringDate($xeGanttView, startValue);
537
- var endDate = parseStringDate($xeGanttView, endValue);
538
- var startStr = _xeUtils.default.toDateString(startDate, 'yyyy-MM-dd HH:mm');
591
+ var startValDate = parseStringDate($xeGanttView, startValue);
592
+ var endValDate = parseStringDate($xeGanttView, endValue);
593
+ var startStr = _xeUtils.default.toDateString(startValDate, _renderFormat5);
594
+ var startDate = _showActualProgress6 ? startValDate : _xeUtils.default.getWhatMinutes(startValDate, 0, 'first');
539
595
  var startFirstDate = _xeUtils.default.getWhatMinutes(startDate, 0, 'first');
540
- var endStr = _xeUtils.default.toDateString(endDate, 'yyyy-MM-dd HH:mm');
596
+ var endStr = _xeUtils.default.toDateString(endValDate, _renderFormat5);
597
+ var endDate = _showActualProgress6 ? endValDate : _xeUtils.default.getWhatMinutes(endValDate, 0, 'last');
541
598
  var endFirstDate = _xeUtils.default.getWhatMinutes(endDate, 0, 'first');
542
- var minuteSize = Math.floor((_xeUtils.default.getWhatMinutes(endDate, 1, 'first').getTime() - endFirstDate.getTime()) / minuteMs);
543
- var subtract = (startDate.getTime() - startFirstDate.getTime()) / minuteMs / minuteSize;
544
- var addSize = Math.max(0, (endDate.getTime() - endFirstDate.getTime()) / minuteMs + 1) / minuteSize;
545
- var offsetLeftSize = (_indexMaps6[startStr] || 0) + subtract;
599
+ // 当前是分钟维度,当指定解析格式精确到秒豪秒时,显示实际进度
600
+ var startSubtractSize = 0;
601
+ var endSubtractSize = 1;
602
+ if (_showActualProgress6) {
603
+ startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / minuteMs;
604
+ endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / minuteMs;
605
+ }
606
+ var offsetLeftSize = (_indexMaps6[startStr] || 0) + startSubtractSize;
546
607
  return {
547
608
  offsetLeftSize: offsetLeftSize,
548
- offsetWidthSize: (_indexMaps6[endStr] || 0) - offsetLeftSize + addSize
609
+ offsetWidthSize: (_indexMaps6[endStr] || 0) - offsetLeftSize + endSubtractSize
549
610
  };
550
611
  };
551
612
  }
552
613
  case 'second':
553
614
  {
554
- var gapTime = (0, _util.getStandardGapTime)(minScale.type);
615
+ var _renderFormat6 = 'yyyy-MM-dd HH:mm:ss';
616
+ var _showActualProgress7 = /S/.test(dateFormat);
617
+ var _indexMaps7 = {};
618
+ fullCols.forEach(function (_ref8, i) {
619
+ var dateObj = _ref8.dateObj;
620
+ var yyyyMM = _xeUtils.default.toDateString(dateObj.date, _renderFormat6);
621
+ _indexMaps7[yyyyMM] = i;
622
+ });
555
623
  return function (startValue, endValue) {
556
- var startDate = parseStringDate($xeGanttView, startValue);
557
- var endDate = parseStringDate($xeGanttView, endValue);
558
- var offsetLeftSize = 0;
559
- var offsetWidthSize = 0;
560
- if (minViewDate) {
561
- offsetLeftSize = (startDate.getTime() - minViewDate.getTime()) / gapTime;
562
- offsetWidthSize = (endDate.getTime() - startDate.getTime()) / gapTime;
624
+ var startValDate = parseStringDate($xeGanttView, startValue);
625
+ var endValDate = parseStringDate($xeGanttView, endValue);
626
+ var startStr = _xeUtils.default.toDateString(startValDate, _renderFormat6);
627
+ var startDate = _showActualProgress7 ? startValDate : _xeUtils.default.getWhatSeconds(startValDate, 0, 'first');
628
+ var startFirstDate = _xeUtils.default.getWhatSeconds(startDate, 0, 'first');
629
+ var endStr = _xeUtils.default.toDateString(endValDate, _renderFormat6);
630
+ var endDate = _showActualProgress7 ? endValDate : _xeUtils.default.getWhatSeconds(endValDate, 0, 'last');
631
+ var endFirstDate = _xeUtils.default.getWhatSeconds(endDate, 0, 'first');
632
+ // 当前是秒维度,当指定解析格式精确到豪秒时,显示实际进度
633
+ var startSubtractSize = 0;
634
+ var endSubtractSize = 1;
635
+ if (_showActualProgress7) {
636
+ startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / secondMs;
637
+ endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / secondMs;
563
638
  }
639
+ var offsetLeftSize = (_indexMaps7[startStr] || 0) + startSubtractSize;
564
640
  return {
565
641
  offsetLeftSize: offsetLeftSize,
566
- offsetWidthSize: offsetWidthSize
642
+ offsetWidthSize: (_indexMaps7[endStr] || 0) - offsetLeftSize + endSubtractSize
567
643
  };
568
644
  };
569
645
  }
@@ -1595,8 +1671,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1595
1671
  }
1596
1672
  return $xeGanttView.$nextTick();
1597
1673
  },
1598
- connectUpdate: function connectUpdate(_ref8) {
1599
- var $table = _ref8.$table;
1674
+ connectUpdate: function connectUpdate(_ref9) {
1675
+ var $table = _ref9.$table;
1600
1676
  var $xeGanttView = this;
1601
1677
  var internalData = $xeGanttView.internalData;
1602
1678
  if ($table) {
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _comp=require("../../ui/src/comp"),_core=require("@vxe-ui/core"),_dom=require("../../ui/src/dom"),_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}}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){var a;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(a="Object"===(a={}.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:a)||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?_arrayLikeToArray(e,t):void 0}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,l=Array(t);a<t;a++)l[a]=e[a];return l}function _iterableToArrayLimit(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l,r,i,n,o=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(l=i.call(a)).done)&&(o.push(l.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(n=a.return(),Object(n)!==n))return}finally{if(s)throw r}}return o}}function _arrayWithHoles(e){if(Array.isArray(e))return e}var 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}}function createReactData(){return{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}}var maxYHeight=5e6;function parseStringDate(e,t){e=e.$xeGantt.computeTaskOpts.dateFormat;return _xeUtils.default.toStringDate(t,e||null)}function updateTodayData(e){var t,a,l,r,i,n,o,c,s,d,u=e.$xeGantt,e=e.internalData,f=u.reactData,h=f.taskScaleList,u=u.computeMinScale;u&&(h=h.find(function(e){return"week"===e.type}),u="week"===u.type,t=new Date,a=(c=_slicedToArray(_xeUtils.default.toDateString(t,"yyyy-M-MM-dd-HH-mm-ss").split("-"),7))[0],l=c[1],r=c[2],i=c[3],n=c[4],o=c[5],c=c[6],s=t.getDay()+1,d=Math.ceil((t.getMonth()+1)/3),h="".concat(_xeUtils.default.getYearWeek(t,h?h.startDay:void 0)),u&&checkWeekOfsetYear(h,l)&&(a="".concat(Number(a)+1),l="1",r="01"),f.nowTime=t.getTime(),e.todayDateMaps={year:a,quarter:"".concat(a,"_q").concat(d),month:"".concat(a,"_").concat(r),week:"".concat(a,"_W").concat(h),day:"".concat(a,"_").concat(r,"_").concat(i,"_E").concat(s),date:"".concat(a,"_").concat(r,"_").concat(i),hour:"".concat(a,"_").concat(r,"_").concat(i,"_").concat(n),minute:"".concat(a,"_").concat(r,"_").concat(i,"_").concat(n,"_").concat(o),second:"".concat(a,"_").concat(r,"_").concat(i,"_").concat(n,"_").concat(o,"_").concat(c)})}function handleColumnHeader(e){var t=e.$xeGantt,a=t.reactData.taskScaleList,i=t.computeMinScale,l=t.computeWeekScale,r=e.computeScaleDateList,n=[],o=[];if(i&&t.computeScaleUnit&&r.length){for(var c={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},s={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}},d="week"===i.type,u=function(e,t,a){var l,r;i.type!==e&&(t=t[e],l="".concat(t.field),(r=s[e][l])||(s[e][l]=r=t,c[e].push(r)),r)&&(r.children||(r.children=[]),r.children.push(a))},f=0;f<r.length;f++){var h=r[f],m=_slicedToArray(_xeUtils.default.toDateString(h,"yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss").split("-"),12),g=m[0],y=m[1],p=m[2],S=m[3],x=m[4],v=m[5],_=m[6],T=m[7],D=m[8],b=m[9],w=m[10],m=m[11],M=h.getDay(),E=M+1,W=Math.ceil((h.getMonth()+1)/3),U="".concat(_xeUtils.default.getYearWeek(h,l?l.startDay:void 0)),k=_xeUtils.default.padStart(U,2,"0"),h=(d&&checkWeekOfsetYear(U,p)&&(y="".concat(Number(y)+1),S="0"+(p="1")),{date:h,yy:g,yyyy:y,M:p,MM:S,d:x,dd:v,H:_,HH:T,m:D,mm:b,s:w,ss:m,q:W,W:U,WW:k,E:E,e:M}),g={year:{field:y,title:y,dateObj:h},quarter:{field:"".concat(y,"_q").concat(W),title:"".concat(W),dateObj:h},month:{field:"".concat(y,"_").concat(S),title:S,dateObj:h},week:{field:"".concat(y,"_W").concat(U),title:"".concat(U),dateObj:h},day:{field:"".concat(y,"_").concat(S,"_").concat(v,"_E").concat(E),title:"".concat(E),dateObj:h},date:{field:"".concat(y,"_").concat(S,"_").concat(v),title:v,dateObj:h},hour:{field:"".concat(y,"_").concat(S,"_").concat(v,"_").concat(T),title:T,dateObj:h},minute:{field:"".concat(y,"_").concat(S,"_").concat(v,"_").concat(T,"_").concat(b),title:b,dateObj:h},second:{field:"".concat(y,"_").concat(S,"_").concat(v,"_").concat(T,"_").concat(b,"_").concat(m),title:m,dateObj:h}},p=g[i.type];i.level<19&&u("year",g,p),i.level<17&&u("quarter",g,p),i.level<15&&u("month",g,p),i.level<13&&u("week",g,p),i.level<11&&u("day",g,p),i.level<9&&u("date",g,p),i.level<7&&u("hour",g,p),i.level<5&&u("minute",g,p),i.level<3&&u("second",g,p),n.push(p)}a.forEach(function(e){var t;e.type===i.type?o.push({scaleItem:e,columns:n}):((t=c[e.type]||[])&&t.forEach(function(e){e.childCount=e.children?e.children.length:0,e.children=void 0}),o.push({scaleItem:e,columns:t}))})}return{fullCols:n,groupCols:o}}function checkWeekOfsetYear(e,t){return"1"==="".concat(e)&&"12"==="".concat(t)}function parseWeekObj(e,t){var e=_xeUtils.default.toStringDate(e),a=e.getFullYear(),l=e.getMonth(),e=_xeUtils.default.getYearWeek(e,t);return checkWeekOfsetYear(e,l+1)&&a++,{yyyy:a,W:e}}function createChartRender(o,e){var t=o.$xeGantt,r=o.reactData.minViewDate,a=t.computeMinScale,c=t.computeWeekScale;if(a)switch(t.computeScaleUnit){case"year":var s={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,"yyyy");s[e]=t}),function(e,t){var e=parseStringDate(o,e),t=parseStringDate(o,t),a=_xeUtils.default.toDateString(e,"yyyy"),l=_xeUtils.default.getWhatYear(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy"),i=_xeUtils.default.getWhatYear(t,0,"first"),n=Math.floor((_xeUtils.default.getWhatYear(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-l.getTime())/dayMs/n,l=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/n,t=(s[a]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(s[r]||0)-t+l}};case"quarter":var d={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,"yyyy-q");d[e]=t}),function(e,t){var e=parseStringDate(o,e),t=parseStringDate(o,t),a=_xeUtils.default.toDateString(e,"yyyy-q"),l=_xeUtils.default.getWhatQuarter(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-q"),i=_xeUtils.default.getWhatQuarter(t,0,"first"),n=Math.floor((_xeUtils.default.getWhatQuarter(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-l.getTime())/dayMs/n,l=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/n,t=(d[a]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(d[r]||0)-t+l}};case"month":var u={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,"yyyy-MM");u[e]=t}),function(e,t){var e=parseStringDate(o,e),t=parseStringDate(o,t),a=_xeUtils.default.toDateString(e,"yyyy-MM"),l=_xeUtils.default.getWhatMonth(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM"),i=_xeUtils.default.getWhatMonth(t,0,"first"),n=Math.floor((_xeUtils.default.getWhatMonth(t,1,"first").getTime()-i.getTime())/dayMs),e=(e.getTime()-l.getTime())/dayMs/n,l=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/n,t=(u[a]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(u[r]||0)-t+l}};case"week":var f={};return e.forEach(function(e,t){e=e.dateObj,e="".concat(e.yyyy,"-").concat(e.W);f[e]=t}),function(e,t){var e=parseStringDate(o,e),t=parseStringDate(o,t),a=parseWeekObj(e,c?c.startDay:void 0),a="".concat(a.yyyy,"-").concat(a.W),l=_xeUtils.default.getWhatWeek(e,0,c?c.startDay:void 0,c?c.startDay:void 0),r=parseWeekObj(t,c?c.startDay:void 0),r="".concat(r.yyyy,"-").concat(r.W),i=_xeUtils.default.getWhatWeek(t,0,c?c.startDay:void 0,c?c.startDay:void 0),n=Math.floor((_xeUtils.default.getWhatWeek(t,1,c?c.startDay:void 0,c?c.startDay:void 0).getTime()-i.getTime())/dayMs),e=(e.getTime()-l.getTime())/dayMs/n,l=Math.max(0,(t.getTime()-i.getTime())/dayMs+1)/n,t=(f[a]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(f[r]||0)-t+l}};case"day":case"date":var h={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd");h[e]=t}),function(e,t){var e=parseStringDate(o,e),t=parseStringDate(o,t),a=_xeUtils.default.toDateString(e,"yyyy-MM-dd"),l=_xeUtils.default.getWhatDay(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd"),i=_xeUtils.default.getWhatDay(t,0,"first"),n=Math.floor((_xeUtils.default.getWhatDay(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-l.getTime())/minuteMs/n,l=(t.getTime()-i.getTime())/minuteMs/n,t=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/n,i=(h[a]||0)+e;return{offsetLeftSize:i,offsetWidthSize:(h[r]||0)-i+t+(e||l?0:1)}};case"hour":var m={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd HH");m[e]=t}),function(e,t){var e=parseStringDate(o,e),t=parseStringDate(o,t),a=_xeUtils.default.toDateString(e,"yyyy-MM-dd HH"),l=_xeUtils.default.getWhatHours(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd HH"),i=_xeUtils.default.getWhatHours(t,0,"first"),n=Math.floor((_xeUtils.default.getWhatHours(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-l.getTime())/minuteMs/n,l=(t.getTime()-i.getTime())/minuteMs/n,t=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/n,i=(m[a]||0)+e;return{offsetLeftSize:i,offsetWidthSize:(m[r]||0)-i+t+(e||l?0:1)}};case"minute":var g={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,"yyyy-MM-dd HH:mm");g[e]=t}),function(e,t){var e=parseStringDate(o,e),t=parseStringDate(o,t),a=_xeUtils.default.toDateString(e,"yyyy-MM-dd HH:mm"),l=_xeUtils.default.getWhatMinutes(e,0,"first"),r=_xeUtils.default.toDateString(t,"yyyy-MM-dd HH:mm"),i=_xeUtils.default.getWhatMinutes(t,0,"first"),n=Math.floor((_xeUtils.default.getWhatMinutes(t,1,"first").getTime()-i.getTime())/minuteMs),e=(e.getTime()-l.getTime())/minuteMs/n,l=Math.max(0,(t.getTime()-i.getTime())/minuteMs+1)/n,t=(g[a]||0)+e;return{offsetLeftSize:t,offsetWidthSize:(g[r]||0)-t+l}};case"second":var i=(0,_util.getStandardGapTime)(a.type);return function(e,t){var e=parseStringDate(o,e),t=parseStringDate(o,t),a=0,l=0;return r&&(a=(e.getTime()-r.getTime())/i,l=(t.getTime()-e.getTime())/i),{offsetLeftSize:a,offsetWidthSize:l}}}return function(){return{offsetLeftSize:0,offsetWidthSize:0}}}function handleParseColumn(e){var i,n,o,c,t,a,l,r,s,d,u,f,h=e.$xeGantt,m=e.reactData,g=e.internalData,y=h.treeConfig,p=m.minViewDate,S=m.maxViewDate,x=handleColumnHeader(e),v=x.fullCols,x=x.groupCols;p&&S&&(i=g.xeTable)&&(n=h.computeStartField,o=h.computeEndField,c=h.computeTypeField,p=i.isRowGroupStatus,S=i.afterFullData,h=i.afterTreeFullData,t=i.afterGroupFullData,a=i.computeAggregateOpts,r=(l=i.computeTreeOpts).transform,s=l.children||l.childrenField,d={},u=createChartRender(e,v),f=function(e){var t=i.getRowid(e),a=_xeUtils.default.get(e,n),l=_xeUtils.default.get(e,o),r=(0,_util.getTaskType)(_xeUtils.default.get(e,c));(0,_util.hasMilestoneTask)(r)&&(l=a=a||l),(0,_util.hasSubviewTask)(r)?d[t]={row:e,rowid:t,oLeftSize:0,oWidthSize:0}:a&&l&&(a=(r=u(a,l)).offsetLeftSize,d[t]={row:e,rowid:t,oLeftSize:a,oWidthSize:r.offsetWidthSize})},p?(p=a.mapChildrenField)&&_xeUtils.default.eachTree(t,f,{children:p}):y?_xeUtils.default.eachTree(h,f,{children:r?l.mapChildrenField:s}):S.forEach(f),g.chartMaps=d),g.visibleColumn=v,m.headerGroups=x,updateTodayData(e),updateScrollXStatus(e),handleTableColumn(e)}function handleUpdateData(l){var r,i,n,e,t,a,o,c,s,d,u=l.$xeGantt,f=l.reactData,h=l.internalData,m=u.treeConfig,g=h.scrollXStore,y=h.xeTable,p=null,S=null;y&&(r=u.computeStartField,i=u.computeEndField,n=u.computeTypeField,u=y.isRowGroupStatus,e=y.afterFullData,t=y.afterTreeFullData,a=y.computeAggregateOpts,c=(o=y.computeTreeOpts).transform,s=o.children||o.childrenField,d=function(e){var t=_xeUtils.default.get(e,r),a=_xeUtils.default.get(e,i),e=_xeUtils.default.get(e,n),t=t||a;!(0,_util.hasMilestoneTask)(e)&&a||(a=t),t&&(e=parseStringDate(l,t),!p||p.getTime()>e.getTime())&&(p=e),a&&(t=parseStringDate(l,a),!S||S.getTime()<t.getTime())&&(S=t)},u?(u=a.mapChildrenField)&&_xeUtils.default.eachTree(y.afterGroupFullData,d,{children:u}):m?_xeUtils.default.eachTree(t,d,{children:c?o.mapChildrenField:s}):e.forEach(d)),g.startIndex=0,g.endIndex=Math.max(1,g.visibleSize),f.minViewDate=p,f.maxViewDate=S,h.startMaps={},h.endMaps={},handleParseColumn(l)}function calcScrollbar(e){var t=e.$xeGantt,a=e.reactData,l=a.scrollXWidth,r=a.scrollYHeight,i=e.internalData.elemStore,t=t.computeScrollbarOpts,i=(0,_util.getRefElem)(i["main-body-wrapper"]),n=e.$refs.refScrollXHandleElem,e=e.$refs.refScrollYHandleElem;i&&(r=r>i.clientHeight,e&&(a.scrollbarWidth=t.width||e.offsetWidth-e.clientWidth||14),a.overflowY=r,e=l>i.clientWidth,n&&(a.scrollbarHeight=t.height||n.offsetHeight-n.clientHeight||14),a.overflowX=e)}function handleSubTaskMinMaxSize(e,a,t){var l=e.$xeGantt,r=e.internalData.chartMaps,e=a.computeTreeOpts,e=e.children||e.childrenField,i=l.computeTypeField,n=0,o=0;return _xeUtils.default.eachTree(t,function(e){var t=a.getRowid(e),e=_xeUtils.default.get(e,i);(0,_util.hasSubviewTask)(e)||(e=t?r[t]:null)&&(o=Math.max(o,e.oLeftSize+e.oWidthSize),n=n?Math.min(n,e.oLeftSize):e.oLeftSize)},{children:e}),{minSize:n,maxSize:o}}function updateTaskChartStyle(i){var n,e=i.$xeGantt,t=i.internalData,e=e.internalData,o=t.xeTable,c=e.dragBarRow,s=i.reactData.viewCellWidth,d=t.chartMaps,e=(0,_util.getRefElem)(t.elemStore["main-chart-task-wrapper"]);return e&&o&&(t=o.computeTreeOpts,n=t.children||t.childrenField,_xeUtils.default.arrayEach(e.children,function(e){var t,a,l,r=e.children[0];r&&(e=e.getAttribute("rowid"),c&&o.getRowid(c)===e||(l=(e=e?d[e]:null)?e.row:null,(0,_dom.hasClass)(r,"is--subview")?(t=r.firstElementChild)&&((0,_dom.hasClass)(t,"is--inline")?_xeUtils.default.arrayEach(t.children,function(e){var t,a,e=e.children[0],l=e.getAttribute("rowid")||"",l=l?d[l]:null;l&&(a=l.row,(0,_dom.hasClass)(e,"is--subview")?(a=a[n],t=(a=handleSubTaskMinMaxSize(i,o,a)).minSize,a=a.maxSize,e.style.left="".concat(s*t,"px"),e.style.width="".concat(s*(a-t),"px")):(e.style.left="".concat((0,_util.getTaskBarLeft)(l,s),"px"),(0,_dom.hasClass)(e,"is--milestone")||(e.style.width="".concat((0,_util.getTaskBarWidth)(l,s),"px"))))}):(t=(t=t.children[0])?t.children[0]:null)&&(l=l?l[n]:[],a=(l=handleSubTaskMinMaxSize(i,o,l)).minSize,l=l.maxSize,t.style.left="".concat(s*a,"px"),t.style.width="".concat(s*(l-a),"px"))):(r.style.left="".concat((0,_util.getTaskBarLeft)(e,s),"px"),(0,_dom.hasClass)(r,"is--milestone")||(r.style.width="".concat((0,_util.getTaskBarWidth)(e,s),"px")))))})),i.$nextTick()}function updateStyle(e){var t,a,l,r,i,n,o,c,s=e.$xeGantt,d=e.reactData,u=e.internalData,f=d.scrollbarWidth,h=d.scrollbarHeight,m=d.headerGroups,g=d.tableColumn,y=u.elemStore,p=u.visibleColumn,u=u.xeTable,S=e.$refs.refElem;if(S&&s)return r=s.computeScrollbarOpts,n=s.computeScrollbarXToTop,i=e.$refs.refScrollXLeftCornerElem,o=e.$refs.refScrollXRightCornerElem,c=e.$refs.refScrollXVirtualElem,f=f,h=h,l=a=t=0,u&&(t=u.tBodyHeight,a=u.tHeaderHeight,l=u.tFooterHeight),u="visible",(s.computeScrollbarYToLeft||r.y&&!1===r.y.visible)&&(f=0,u="hidden"),(r=(0,_util.getRefElem)(y["main-header-scroll"]))&&(r.style.height="".concat(a,"px"),r.style.setProperty("--vxe-ui-gantt-view-cell-height","".concat(a/m.length,"px"))),(r=(0,_util.getRefElem)(y["main-body-scroll"]))&&(r.style.height="".concat(t,"px")),(m=(0,_util.getRefElem)(y["main-footer-scroll"]))&&(m.style.height="".concat(l,"px")),c&&(c.style.height="".concat(h,"px"),c.style.visibility="visible"),(m=e.$refs.refScrollXWrapperElem)&&(m.style.left=n?"".concat(f,"px"):"",m.style.width="".concat(S.clientWidth-f,"px")),i&&(i.style.width=n?"".concat(f,"px"):"",i.style.display=n&&h?"block":""),o&&(o.style.width=n?"":"".concat(f,"px"),o.style.display=!n&&h?"block":""),(c=e.$refs.refScrollYVirtualElem)&&(c.style.width="".concat(f,"px"),c.style.height="".concat(t+a+l,"px"),c.style.visibility=u),(m=e.$refs.refScrollYTopCornerElem)&&(m.style.height="".concat(a,"px"),m.style.display=a?"block":""),(S=e.$refs.refScrollYWrapperElem)&&(S.style.height="".concat(t,"px"),S.style.top="".concat(a,"px")),(i=e.$refs.refScrollYBottomCornerElem)&&(i.style.height="".concat(l,"px"),i.style.top="".concat(a+t,"px"),i.style.display=l?"block":""),o=40,h=o=(n=e.$refs.refColInfoElem)?n.clientWidth||40:o,p.length&&(h=Math.max(0,o*p.length),r)&&0<(c=(f=r.clientWidth)-h)&&(o+=Math.max(0,c/p.length),h=f),d.viewCellWidth=o,u=(0,_util.getRefElem)(y["main-header-table"]),m=(0,_util.getRefElem)(y["main-body-table"]),S=o*g.length,u&&(u.style.width="".concat(h,"px")),m&&(m.style.width="".concat(S,"px")),d.scrollXWidth=h,Promise.all([updateTaskChartStyle(e),s.handleUpdateTaskLinkStyle?s.handleUpdateTaskLinkStyle(e):null])}function handleRecalculateStyle(e){var t=e.internalData,a=e.$xeGantt,l=e.$refs.refElem;return t.rceRunTime=Date.now(),l&&l.clientWidth&&a?(calcScrollbar(e),updateStyle(e),computeScrollLoad(e)):e.$nextTick()}function _handleLazyRecalculate(i){var n=i.internalData;return new Promise(function(e){var t=n.rceTimeout,a=n.rceRunTime,l=n.xeTable,r=30;l&&(r=l.computeResizeOpts.refreshDelay||r),!t||(clearTimeout(t),a&&a+(r-5)<Date.now())?e(handleRecalculateStyle(i)):i.$nextTick(function(){e()}),n.rceTimeout=setTimeout(function(){n.rceTimeout=void 0,handleRecalculateStyle(i)},r)})}function computeScrollLoad(l){var r=l.reactData,i=l.internalData;return l.$nextTick().then(function(){var e,t=r.scrollXLoad,a=i.scrollXStore;t?(e=(t=handleVirtualXVisible(l)).toVisibleIndex,t=t.visibleSize,a.preloadSize=1,a.offsetSize=2,a.visibleSize=t,a.endIndex=Math.max(a.startIndex+a.visibleSize+2,a.endIndex),a.visibleStartIndex=Math.max(a.startIndex,e),a.visibleEndIndex=Math.min(a.endIndex,e+t),updateScrollXData(l).then(function(){loadScrollXData(l)})):updateScrollXSpace(l)})}function handleVirtualXVisible(e){var t,a=e.reactData.viewCellWidth,e=e.internalData.elemStore,e=(0,_util.getRefElem)(e["main-body-scroll"]);return e?(t=e.clientWidth,e=e.scrollLeft,e=Math.floor(e/a)-1,t=Math.ceil(t/a)+1,{toVisibleIndex:Math.max(0,e),visibleSize:Math.max(1,t)}):{toVisibleIndex:0,visibleSize:6}}function loadScrollXData(e){var t=e.reactData.isScrollXBig,a=e.internalData.scrollXStore,l=a.preloadSize,r=a.startIndex,i=a.endIndex,n=a.offsetSize,o=handleVirtualXVisible(e),c=o.toVisibleIndex,o=o.visibleSize,t={startIndex:Math.max(0,t?c-1:c-1-n-l),endIndex:t?c+o:c+o+n+l},n=(a.visibleStartIndex=c-1,a.visibleEndIndex=c+o+1,t.startIndex),l=t.endIndex;!(c<=r||i-o-1<=c)||r===n&&i===l||(a.startIndex=n,a.endIndex=l,updateScrollXData(e))}function updateScrollXData(e){return handleTableColumn(e),updateScrollXSpace(e),e.$nextTick()}function updateScrollXStatus(e){return e.reactData.scrollXLoad=!0}function handleTableColumn(e){var t=e.reactData,e=e.internalData,a=t.scrollXLoad,l=e.visibleColumn,e=e.scrollXStore,a=a?l.slice(e.startIndex,e.endIndex):l.slice(0);t.tableColumn=a}function updateScrollXSpace(e){var t=e.reactData,a=e.internalData,l=t.scrollXLoad,r=t.scrollXWidth,i=t.viewCellWidth,n=a.elemStore,a=a.scrollXStore,o=(0,_util.getRefElem)(n["main-body-table"]),a=a.startIndex,c=0,s=(l&&(c=Math.max(0,a*i)),o&&(o.style.transform="translate(".concat(c,"px, ").concat(t.scrollYTop||0,"px)")),r),a=(["header","body","footer"].forEach(function(e){e=(0,_util.getRefElem)(n["main-".concat(e,"-xSpace")]);e&&(e.style.width=l?"".concat(s,"px"):"")}),e.$refs.refScrollXSpaceElem),i=(a&&(a.style.width="".concat(s,"px")),(0,_util.getRefElem)(n["main-chart-before-wrapper"])),o=i?i.firstElementChild:null,r=(o&&(o.style.width="".concat(s,"px")),(0,_util.getRefElem)(n["main-chart-after-wrapper"])),a=r?r.firstElementChild:null;return a&&(a.style.width="".concat(s,"px")),t.scrollXLeft=c,t.scrollXWidth=s,calcScrollbar(e),e.$nextTick()}function triggerScrollXEvent(e){loadScrollXData(e)}function updateScrollYSpace(e){var t=e.reactData,a=e.internalData,l=t.scrollYLoad,r=t.overflowY,i=a.elemStore,a=a.xeTable,n=(0,_util.getRefElem)(i["main-body-scroll"]),o=(0,_util.getRefElem)(i["main-body-table"]),c=0,s=0,d=!1,a=(a&&(c=a.scrollYTop,s=a.scrollYHeight,d=a.isScrollYBig),s),u=c,f=0,n=(n&&(f=n.clientHeight),d&&(u=n&&o&&n.scrollTop+f>=maxYHeight?maxYHeight-o.clientHeight:c/(s-f)*(maxYHeight-f),a=maxYHeight),l&&r||(u=0),(0,_util.getRefElem)(i["main-chart-task-wrapper"])),c=(o&&(o.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(u,"px)")),n&&(n.style.transform="translateY(".concat(u,"px)")),(0,_util.getRefElem)(i["main-body-ySpace"])),f=(c&&(c.style.height=a?"".concat(a,"px"):""),e.$refs.refScrollYSpaceElem),l=(f&&(f.style.height=a?"".concat(a,"px"):""),(0,_util.getRefElem)(i["main-chart-before-wrapper"])),r=l?l.firstElementChild:null,o=(r&&(r.style.height=a?"".concat(a,"px"):""),(0,_util.getRefElem)(i["main-chart-after-wrapper"])),n=o?o.firstElementChild:null,c=(n&&(n.style.height=a?"".concat(a,"px"):""),(0,_util.getRefElem)(i["main-chart-now-line"]));return c&&(c.style.height=a?"".concat(a,"px"):""),t.scrollYTop=u,t.scrollYHeight=s,t.isScrollYBig=d,calcScrollbar(e),e.$nextTick().then(function(){updateStyle(e)})}function checkLastSyncScroll(e,t,a){var l=e.reactData,r=e.internalData,e=r.lcsTimeout;l.lazScrollLoading=!0,e&&clearTimeout(e),r.lcsTimeout=setTimeout(function(){r.lcsRunTime=Date.now(),r.lcsTimeout=void 0,r.intoRunScroll=!1,r.inVirtualScroll=!1,r.inWheelScroll=!1,r.inHeaderScroll=!1,r.inBodyScroll=!1,r.inFooterScroll=!1,l.lazScrollLoading=!1},200)}function handleScrollData(e,t,a,l,r){var i=e.reactData,n=e.internalData;a&&(n.lastScrollLeft=r),t&&(n.lastScrollTop=l),i.lastScrollTime=Date.now(),checkLastSyncScroll(e,a,t)}function handleScrollEvent(e,t,a,l,r,i){var n,o,c,s,d,u,f,h,m,g,y,p,S=e.$xeGantt,x=e.internalData,v=x.xeTable,_=e.$refs.refScrollXHandleElem,T=e.$refs.refScrollYHandleElem;_&&T&&v&&(n=T.clientHeight,o=_.clientWidth,T=T.scrollHeight,_=_.scrollWidth,d="",m=h=f=u=s=g=c=p=!1,l&&(y=v.computeScrollXThreshold,(g=i<=0)||(s=_-1<=i+o),x.lastScrollLeft<i?(d="right",_-y<=i+o&&(m=!0)):(d="left",i<=y&&(h=!0))),a&&(y=v.computeScrollYThreshold,(p=r<=0)||(c=T-1<=r+n),x.lastScrollTop<r?(d="bottom",T-y<=r+n&&(f=!0)):(d="top",r<=y&&(u=!0))),handleScrollData(e,a,l,r,i),v={source:sourceType,scrollTop:r,scrollLeft:i,bodyHeight:n,bodyWidth:o,scrollHeight:T,scrollWidth:_,isX:l,isY:a,isTop:p,isBottom:c,isLeft:g,isRight:s,direction:d},(f||u||m||h)&&S.dispatchEvent("scroll-boundary",v,t),S.dispatchEvent("scroll",v,t))}function syncTableScrollTop(e,t){var e=e.internalData.xeTable;e&&(e=e.elemStore,e=(0,_util.getRefElem)(e["main-body-scroll"]))&&(e.scrollTop=t)}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",inject:{$xeGantt:{default:null}},provide:function(){return{$xeGanttView:this}},props:{},data:function(){return{xID:_xeUtils.default.uniqueId(),reactData:createReactData(),internalData:createInternalData()}},computed:Object.assign(Object.assign({},{}),{computeScaleDateList:function(){var e=this.$xeGantt,t=this.reactData,a=e.reactData,l=t.minViewDate,r=t.maxViewDate,i=e.computeMinScale,t=e.computeTaskViewOpts.gridding,n=[];if(i&&l&&r){var e=i.type,o=i.startDay,c=-(a.currLeftSpacing+_xeUtils.default.toNumber(t&&t.leftSpacing||0)),s=a.currRightSpacing+_xeUtils.default.toNumber(t&&t.rightSpacing||0);switch(e){case"year":for(var d=_xeUtils.default.getWhatYear(l,c,"first"),u=_xeUtils.default.getWhatYear(r,s,"first");d<=u;){var f=d;n.push(f),d=_xeUtils.default.getWhatYear(d,1)}break;case"quarter":for(var h=_xeUtils.default.getWhatQuarter(l,c,"first"),m=_xeUtils.default.getWhatQuarter(r,s,"first");h<=m;){var g=h;n.push(g),h=_xeUtils.default.getWhatQuarter(h,1)}break;case"month":for(var y=_xeUtils.default.getWhatMonth(l,c,"first"),p=_xeUtils.default.getWhatMonth(r,s,"first");y<=p;){var S=y;n.push(S),y=_xeUtils.default.getWhatMonth(y,1)}break;case"week":for(var x=_xeUtils.default.getWhatWeek(l,c,o,o),v=_xeUtils.default.getWhatWeek(r,s,o,o);x<=v;){var _=x;n.push(_),x=_xeUtils.default.getWhatWeek(x,1)}break;case"day":case"date":for(var T=_xeUtils.default.getWhatDay(l,c,"first"),D=_xeUtils.default.getWhatDay(r,s,"first");T<=D;){var b=T;n.push(b),T=_xeUtils.default.getWhatDay(T,1)}break;case"hour":case"minute":case"second":for(var w=+(0,_util.getStandardGapTime)(i.type),M=l.getTime()+c*w,E=r.getTime()+s*w;M<=E;){var W=new Date(M);n.push(W),M+=w}}}return n},computeNowLineLeft:function(){var e=this.$xeGantt,t=this.reactData,a=this.internalData,l=e.reactData,r=t.minViewDate,i=t.maxViewDate,n=t.viewCellWidth,o=a.visibleColumn,t=a.todayDateMaps,a=e.computeMinScale,c=e.computeTaskViewOpts.showNowLine,e=e.computeTaskNowLineOpts.mode,l=l.nowTime,s=0;if(c&&a&&r&&i&&l>=r.getTime()&&l<=i.getTime()){for(var d=t[a.type],u=null,f=null,h=0;h<o.length;h++){var m=o[h];if(m.field===d){u=m,s=h*n,f=o[h+1];break}}"progress"===e?u&&f&&(c=u.dateObj.date.getTime(),s+=Math.max(0,Math.min(1,(l-c)/(f.dateObj.date.getTime()-c)))*n):"center"===e?s+=n/2:"end"===e&&(s+=n-1)}return s}}),methods:{refreshData:function(){var t=this,a=t.internalData;return handleUpdateData(t),handleRecalculateStyle(t),t.$nextTick().then(function(){var e=a.xeTable;if(handleRecalculateStyle(t),e)return e.recalculate()})},updateViewData:function(e){var t=this,a=t.$xeGantt,l=t.reactData,a=a.reactData,r=t.internalData.xeTable;return r&&(r=r.tableData,l.tableData=r,e&&(a.currLeftSpacing=0,a.currRightSpacing=0,handleUpdateData(t)),handleRecalculateStyle(t)),t.$nextTick()},connectUpdate:function(e){var e=e.$table,t=this.internalData;return e&&(t.xeTable=e),this.$nextTick()},handleUpdateStyle:function(){return updateStyle(this)},handleLazyRecalculate:function(){return _handleLazyRecalculate(this)},handleUpdateCurrentRow:function(e){var t=this.internalData.xeTable,a=this.$refs.refElem;t&&a&&(e?(t.computeRowOpts.isCurrent||t.highlightCurrentRow)&&_xeUtils.default.arrayEach(a.querySelectorAll('[rowid="'.concat(t.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--current")}):_xeUtils.default.arrayEach(a.querySelectorAll(".row--current"),function(e){return(0,_dom.removeClass)(e,"row--current")}))},handleUpdateHoverRow:function(e){var t=this.internalData.xeTable,a=this.$refs.refElem;t&&a&&(e?_xeUtils.default.arrayEach(a.querySelectorAll('.vxe-body--row[rowid="'.concat(t.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--hover")}):_xeUtils.default.arrayEach(a.querySelectorAll(".vxe-body--row.row--hover"),function(e){return(0,_dom.removeClass)(e,"row--hover")}))},triggerHeaderScrollEvent:function(e){var t,a,l,r=this.internalData,i=r.elemStore;r.inVirtualScroll||r.inBodyScroll||r.inFooterScroll||(t=e.currentTarget,i=(0,_util.getRefElem)(i["main-body-scroll"]),a=this.$refs.refScrollXHandleElem,i&&t&&(l=t.scrollLeft,r.inHeaderScroll=!0,(0,_dom.setScrollLeft)(a,l),(0,_dom.setScrollLeft)(i,l),handleScrollEvent(this,e,!1,!0,t.scrollTop,l)))},triggerBodyScrollEvent:function(e){var t,a,l,r,i,n=this,o=n.reactData,c=n.internalData,o=o.scrollXLoad,s=c.elemStore,d=c.lastScrollLeft,u=c.lastScrollTop;c.inVirtualScroll||c.inHeaderScroll||c.inFooterScroll||(t=e.currentTarget,s=(0,_util.getRefElem)(s["main-header-scroll"]),a=n.$refs.refScrollXHandleElem,l=n.$refs.refScrollYHandleElem,d=(r=t.scrollLeft)!==d,u=(i=t.scrollTop)!==u,c.inBodyScroll=!0,c.scrollRenderType="",u&&((0,_dom.setScrollTop)(l,i),syncTableScrollTop(n,i)),d&&(c.inBodyScroll=!0,(0,_dom.setScrollLeft)(a,r),(0,_dom.setScrollLeft)(s,r),o)&&triggerScrollXEvent(n),handleScrollEvent(n,e,u,d,t.scrollTop,r))},triggerVirtualScrollXEvent:function(e){var t,a,l,r=this.reactData,i=this.internalData,r=r.scrollXLoad,n=i.elemStore;i.inHeaderScroll||i.inBodyScroll||(t=e.currentTarget,a=(0,_util.getRefElem)(n["main-header-scroll"]),n=(0,_util.getRefElem)(n["main-body-scroll"]),t&&(l=t.scrollLeft,i.inVirtualScroll=!0,(0,_dom.setScrollLeft)(a,l),(0,_dom.setScrollLeft)(n,l),r&&triggerScrollXEvent(this),handleScrollEvent(this,e,!1,!0,t.scrollTop,l)))},triggerVirtualScrollYEvent:function(e){var t,a,l=this.internalData,r=l.elemStore;l.inHeaderScroll||l.inBodyScroll||(t=e.currentTarget,r=(0,_util.getRefElem)(r["main-body-scroll"]),t&&(a=t.scrollTop,l.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,a),syncTableScrollTop(this,a),handleScrollEvent(this,e,!0,!1,a,t.scrollLeft)))},handleUpdateSXSpace:function(){return updateScrollXSpace(this)},handleUpdateSYSpace:function(){return updateScrollYSpace(this)},handleUpdateSYStatus:function(e){this.reactData.scrollYLoad=e},handleGlobalResizeEvent:function(){_handleLazyRecalculate(this)},renderScrollX:function(e){return e("div",{key:"vsx",ref:"refScrollXVirtualElem",class:"vxe-gantt-view--scroll-x-virtual"},[e("div",{ref:"refScrollXLeftCornerElem",class:"vxe-gantt-view--scroll-x-left-corner"}),e("div",{ref:"refScrollXWrapperElem",class:"vxe-gantt-view--scroll-x-wrapper"},[e("div",{ref:"refScrollXHandleElem",class:"vxe-gantt-view--scroll-x-handle",on:{scroll:this.triggerVirtualScrollXEvent}},[e("div",{ref:"refScrollXSpaceElem",class:"vxe-gantt-view--scroll-x-space"})]),e("div",{class:"vxe-gantt-view--scroll-x-handle-appearance"})]),e("div",{ref:"refScrollXRightCornerElem",class:"vxe-gantt-view--scroll-x-right-corner"})])},renderScrollY:function(e){return e("div",{ref:"refScrollYVirtualElem",class:"vxe-gantt-view--scroll-y-virtual"},[e("div",{ref:"refScrollYTopCornerElem",class:"vxe-gantt-view--scroll-y-top-corner"}),e("div",{ref:"refScrollYWrapperElem",class:"vxe-gantt-view--scroll-y-wrapper"},[e("div",{ref:"refScrollYHandleElem",class:"vxe-gantt-view--scroll-y-handle",on:{scroll:this.triggerVirtualScrollYEvent}},[e("div",{ref:"refScrollYSpaceElem",class:"vxe-gantt-view--scroll-y-space"})]),e("div",{class:"vxe-gantt-view--scroll-y-handle-appearance"})]),e("div",{ref:"refScrollYBottomCornerElem",class:"vxe-gantt-view--scroll-y-bottom-corner"})])},renderViewport:function(e){return e("div",{class:"vxe-gantt-view--viewport-wrapper"},[e(_ganttHeader.default),e(_ganttBody.default),e(_ganttFooter.default)])},renderBody:function(e){var t=this;return e("div",{class:"vxe-gantt-view--layout-wrapper"},t.$xeGantt.computeScrollbarYToLeft?[t.renderScrollY(e),t.renderViewport(e)]:[t.renderViewport(e),t.renderScrollY(e)])},renderVN:function(e){var t=this,a=t.$xeGantt,l=t.reactData,r=l.overflowX;return e("div",{ref:"refElem",class:["vxe-gantt-view",{"is--scroll-y":l.overflowY,"is--scroll-x":r,"is--virtual-x":l.scrollXLoad,"is--virtual-y":l.scrollYLoad}]},[e("div",{class:"vxe-gantt-view--render-wrapper"},a.computeScrollbarXToTop?[t.renderScrollX(e),t.renderBody(e)]:[t.renderBody(e),t.renderScrollX(e)]),e("div",{class:"vxe-gantt-view--render-vars"},[e("div",{ref:"refColInfoElem",class:"vxe-gantt-view--column-info"})])])}},mounted:function(){globalEvents.on(this,"resize",this.handleGlobalResizeEvent)},beforeDestroy:function(){var e=this.reactData,t=this.internalData;globalEvents.off(this,"keydown"),_xeUtils.default.assign(e,createReactData()),_xeUtils.default.assign(t,createInternalData())},render:function(e){return this.renderVN(e)}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _comp=require("../../ui/src/comp"),_core=require("@vxe-ui/core"),_dom=require("../../ui/src/dom"),_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}}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){var a;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(a="Object"===(a={}.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:a)||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?_arrayLikeToArray(e,t):void 0}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,l=Array(t);a<t;a++)l[a]=e[a];return l}function _iterableToArrayLimit(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l,r,i,n,o=[],c=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(l=i.call(a)).done)&&(o.push(l.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(n=a.return(),Object(n)!==n))return}finally{if(s)throw r}}return o}}function _arrayWithHoles(e){if(Array.isArray(e))return e}var globalEvents=_core.VxeUI.globalEvents,sourceType="gantt",secondMs=1e3,minuteMs=6e4,hourMs=36e5,dayMs=24*hourMs;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}}function createReactData(){return{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}}var maxYHeight=5e6;function parseStringDate(e,t){e=e.$xeGantt.computeDateFormat;return _xeUtils.default.toStringDate(t,e||null)}function updateTodayData(e){var t,a,l,r,i,n,o,c,s,d,u=e.$xeGantt,e=e.internalData,f=u.reactData,h=f.taskScaleList,u=u.computeMinScale;u&&(h=h.find(function(e){return"week"===e.type}),u="week"===u.type,t=new Date,a=(c=_slicedToArray(_xeUtils.default.toDateString(t,"yyyy-M-MM-dd-HH-mm-ss").split("-"),7))[0],l=c[1],r=c[2],i=c[3],n=c[4],o=c[5],c=c[6],s=t.getDay()+1,d=Math.ceil((t.getMonth()+1)/3),h="".concat(_xeUtils.default.getYearWeek(t,h?h.startDay:void 0)),u&&checkWeekOfsetYear(h,l)&&(a="".concat(Number(a)+1),l="1",r="01"),f.nowTime=t.getTime(),e.todayDateMaps={year:a,quarter:"".concat(a,"_q").concat(d),month:"".concat(a,"_").concat(r),week:"".concat(a,"_W").concat(h),day:"".concat(a,"_").concat(r,"_").concat(i,"_E").concat(s),date:"".concat(a,"_").concat(r,"_").concat(i),hour:"".concat(a,"_").concat(r,"_").concat(i,"_").concat(n),minute:"".concat(a,"_").concat(r,"_").concat(i,"_").concat(n,"_").concat(o),second:"".concat(a,"_").concat(r,"_").concat(i,"_").concat(n,"_").concat(o,"_").concat(c)})}function handleColumnHeader(e){var t=e.$xeGantt,a=t.reactData.taskScaleList,i=t.computeMinScale,l=t.computeWeekScale,r=e.computeScaleDateList,n=[],o=[];if(i&&t.computeScaleUnit&&r.length){for(var c={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},s={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}},d="week"===i.type,u=function(e,t,a){var l,r;i.type!==e&&(t=t[e],l="".concat(t.field),(r=s[e][l])||(s[e][l]=r=t,c[e].push(r)),r)&&(r.children||(r.children=[]),r.children.push(a))},f=0;f<r.length;f++){var h=r[f],m=_slicedToArray(_xeUtils.default.toDateString(h,"yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss").split("-"),12),g=m[0],p=m[1],S=m[2],y=m[3],x=m[4],v=m[5],_=m[6],D=m[7],T=m[8],b=m[9],w=m[10],m=m[11],W=h.getDay(),U=W+1,E=Math.ceil((h.getMonth()+1)/3),M="".concat(_xeUtils.default.getYearWeek(h,l?l.startDay:void 0)),k=_xeUtils.default.padStart(M,2,"0"),h=(d&&checkWeekOfsetYear(M,S)&&(p="".concat(Number(p)+1),y="0"+(S="1")),{date:h,yy:g,yyyy:p,M:S,MM:y,d:x,dd:v,H:_,HH:D,m:T,mm:b,s:w,ss:m,q:E,W:M,WW:k,E:U,e:W}),g={year:{field:p,title:p,dateObj:h},quarter:{field:"".concat(p,"_q").concat(E),title:"".concat(E),dateObj:h},month:{field:"".concat(p,"_").concat(y),title:y,dateObj:h},week:{field:"".concat(p,"_W").concat(M),title:"".concat(M),dateObj:h},day:{field:"".concat(p,"_").concat(y,"_").concat(v,"_E").concat(U),title:"".concat(U),dateObj:h},date:{field:"".concat(p,"_").concat(y,"_").concat(v),title:v,dateObj:h},hour:{field:"".concat(p,"_").concat(y,"_").concat(v,"_").concat(D),title:D,dateObj:h},minute:{field:"".concat(p,"_").concat(y,"_").concat(v,"_").concat(D,"_").concat(b),title:b,dateObj:h},second:{field:"".concat(p,"_").concat(y,"_").concat(v,"_").concat(D,"_").concat(b,"_").concat(m),title:m,dateObj:h}},S=g[i.type];i.level<19&&u("year",g,S),i.level<17&&u("quarter",g,S),i.level<15&&u("month",g,S),i.level<13&&u("week",g,S),i.level<11&&u("day",g,S),i.level<9&&u("date",g,S),i.level<7&&u("hour",g,S),i.level<5&&u("minute",g,S),i.level<3&&u("second",g,S),n.push(S)}a.forEach(function(e){var t;e.type===i.type?o.push({scaleItem:e,columns:n}):((t=c[e.type]||[])&&t.forEach(function(e){e.childCount=e.children?e.children.length:0,e.children=void 0}),o.push({scaleItem:e,columns:t}))})}return{fullCols:n,groupCols:o}}function checkWeekOfsetYear(e,t){return"1"==="".concat(e)&&"12"==="".concat(t)}function parseWeekObj(e,t){var e=_xeUtils.default.toStringDate(e),a=e.getFullYear(),l=e.getMonth(),e=_xeUtils.default.getYearWeek(e,t);return checkWeekOfsetYear(e,l+1)&&a++,{yyyy:a,W:e}}function createChartRender(s,e){var t=s.$xeGantt,a=t.computeMinScale,c=t.computeWeekScale,l=t.computeDateFormat;if(a)switch(t.computeScaleUnit){case"year":var d=/M|d|H|mm|ss|S/.test(l),u={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,"yyyy");u[e]=t}),function(e,t){var a,e=parseStringDate(s,e),t=parseStringDate(s,t),l=_xeUtils.default.toDateString(e,"yyyy"),r=d?e:_xeUtils.default.getWhatYear(e,0,"first"),e=_xeUtils.default.getWhatYear(e,0,"first"),i=_xeUtils.default.toDateString(t,"yyyy"),t=d?t:_xeUtils.default.getWhatYear(t,0,"last"),n=_xeUtils.default.getWhatYear(t,0,"first"),o=0,c=1,e=(d&&(a=_xeUtils.default.getDayOfYear(r,0),o=(r.getTime()-e.getTime())/dayMs/a,r=_xeUtils.default.getDayOfYear(t,0),c=(t.getTime()-n.getTime())/dayMs/r),(u[l]||0)+o);return{offsetLeftSize:e,offsetWidthSize:(u[i]||0)-e+c}};case"quarter":var f=/M|d|H|mm|ss|S/.test(l),h="yyyy-q",m={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,h);m[e]=t}),function(e,t){var a,e=parseStringDate(s,e),t=parseStringDate(s,t),l=_xeUtils.default.toDateString(e,h),r=f?e:_xeUtils.default.getWhatQuarter(e,0,"first"),e=_xeUtils.default.getWhatQuarter(e,0,"first"),i=_xeUtils.default.toDateString(t,h),t=f?t:_xeUtils.default.getWhatQuarter(t,0,"last"),n=_xeUtils.default.getWhatQuarter(t,0,"first"),o=0,c=1,e=(f&&(a=_xeUtils.default.getDayOfQuarter(r,0),o=(r.getTime()-e.getTime())/dayMs/a,r=_xeUtils.default.getDayOfQuarter(t,0),c=(t.getTime()-n.getTime())/dayMs/r),(m[l]||0)+o);return{offsetLeftSize:e,offsetWidthSize:(m[i]||0)-e+c}};case"month":var g="yyyy-MM",p=/d|H|mm|ss|S/.test(l),S={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,g);S[e]=t}),function(e,t){var a,e=parseStringDate(s,e),t=parseStringDate(s,t),l=_xeUtils.default.toDateString(e,g),r=p?e:_xeUtils.default.getWhatMonth(e,0,"first"),e=_xeUtils.default.getWhatMonth(e,0,"first"),i=_xeUtils.default.toDateString(t,g),t=p?t:_xeUtils.default.getWhatMonth(t,0,"last"),n=_xeUtils.default.getWhatMonth(t,0,"first"),o=0,c=1,e=(p&&(a=_xeUtils.default.getDayOfMonth(r,0),o=(r.getTime()-e.getTime())/dayMs/a,r=_xeUtils.default.getDayOfMonth(t,0),c=(t.getTime()-n.getTime())/dayMs/r),(S[l]||0)+o);return{offsetLeftSize:e,offsetWidthSize:(S[i]||0)-e+c}};case"week":var y=/d|mm|ss|S/.test(l),x={};return e.forEach(function(e,t){e=e.dateObj,e="".concat(e.yyyy,"-").concat(e.W);x[e]=t}),function(e,t){var a=c?c.startDay:void 0,e=parseStringDate(s,e),t=parseStringDate(s,t),e=y?e:_xeUtils.default.getWhatWeek(e,0,"first",a),l=parseWeekObj(e,a),l="".concat(l.yyyy,"-").concat(l.W),r=_xeUtils.default.getWhatWeek(e,0,"first",a),t=y?t:_xeUtils.default.getWhatWeek(t,0,"first",a),i=parseWeekObj(t,a),i="".concat(i.yyyy,"-").concat(i.W),a=_xeUtils.default.getWhatWeek(t,0,"first",a),n=0,o=1,e=(y&&(n=(e.getTime()-r.getTime())/dayMs/7,o=(t.getTime()-a.getTime())/dayMs/7),(x[l]||0)+n);return{offsetLeftSize:e,offsetWidthSize:(x[i]||0)-e+o}};case"day":case"date":var v="yyyy-MM-dd",_=/mm|ss|S/.test(l),D={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,v);D[e]=t}),function(e,t){var e=parseStringDate(s,e),t=parseStringDate(s,t),a=_xeUtils.default.toDateString(e,v),e=_?e:_xeUtils.default.getWhatDay(e,0,"first"),l=_xeUtils.default.getWhatDay(e,0,"first"),r=_xeUtils.default.toDateString(t,v),t=_?t:_xeUtils.default.getWhatDay(t,0,"last"),i=_xeUtils.default.getWhatDay(t,0,"first"),n=0,o=1,e=(_&&(n=(e.getTime()-l.getTime())/dayMs,o=(t.getTime()-i.getTime())/dayMs),(D[a]||0)+n);return{offsetLeftSize:e,offsetWidthSize:(D[r]||0)-e+o}};case"hour":var T="yyyy-MM-dd HH",b=/mm|ss|S/.test(l),w={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,T);w[e]=t}),function(e,t){var e=parseStringDate(s,e),t=parseStringDate(s,t),a=_xeUtils.default.toDateString(e,T),e=b?e:_xeUtils.default.getWhatHours(e,0,"first"),l=_xeUtils.default.getWhatHours(e,0,"first"),r=_xeUtils.default.toDateString(t,T),t=b?t:_xeUtils.default.getWhatHours(t,0,"last"),i=_xeUtils.default.getWhatHours(t,0,"first"),n=0,o=1,e=(b&&(n=(e.getTime()-l.getTime())/hourMs,o=(t.getTime()-i.getTime())/hourMs),(w[a]||0)+n);return{offsetLeftSize:e,offsetWidthSize:(w[r]||0)-e+o}};case"minute":var W="yyyy-MM-dd HH:mm",U=/ss|S/.test(l),E={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,W);E[e]=t}),function(e,t){var e=parseStringDate(s,e),t=parseStringDate(s,t),a=_xeUtils.default.toDateString(e,W),e=U?e:_xeUtils.default.getWhatMinutes(e,0,"first"),l=_xeUtils.default.getWhatMinutes(e,0,"first"),r=_xeUtils.default.toDateString(t,W),t=U?t:_xeUtils.default.getWhatMinutes(t,0,"last"),i=_xeUtils.default.getWhatMinutes(t,0,"first"),n=0,o=1,e=(U&&(n=(e.getTime()-l.getTime())/minuteMs,o=(t.getTime()-i.getTime())/minuteMs),(E[a]||0)+n);return{offsetLeftSize:e,offsetWidthSize:(E[r]||0)-e+o}};case"second":var M="yyyy-MM-dd HH:mm:ss",k=/S/.test(l),L={};return e.forEach(function(e,t){e=e.dateObj,e=_xeUtils.default.toDateString(e.date,M);L[e]=t}),function(e,t){var e=parseStringDate(s,e),t=parseStringDate(s,t),a=_xeUtils.default.toDateString(e,M),e=k?e:_xeUtils.default.getWhatSeconds(e,0,"first"),l=_xeUtils.default.getWhatSeconds(e,0,"first"),r=_xeUtils.default.toDateString(t,M),t=k?t:_xeUtils.default.getWhatSeconds(t,0,"last"),i=_xeUtils.default.getWhatSeconds(t,0,"first"),n=0,o=1,e=(k&&(n=(e.getTime()-l.getTime())/secondMs,o=(t.getTime()-i.getTime())/secondMs),(L[a]||0)+n);return{offsetLeftSize:e,offsetWidthSize:(L[r]||0)-e+o}}}return function(){return{offsetLeftSize:0,offsetWidthSize:0}}}function handleParseColumn(e){var i,n,o,c,t,a,l,r,s,d,u,f,h=e.$xeGantt,m=e.reactData,g=e.internalData,p=h.treeConfig,S=m.minViewDate,y=m.maxViewDate,x=handleColumnHeader(e),v=x.fullCols,x=x.groupCols;S&&y&&(i=g.xeTable)&&(n=h.computeStartField,o=h.computeEndField,c=h.computeTypeField,S=i.isRowGroupStatus,y=i.afterFullData,h=i.afterTreeFullData,t=i.afterGroupFullData,a=i.computeAggregateOpts,r=(l=i.computeTreeOpts).transform,s=l.children||l.childrenField,d={},u=createChartRender(e,v),f=function(e){var t=i.getRowid(e),a=_xeUtils.default.get(e,n),l=_xeUtils.default.get(e,o),r=(0,_util.getTaskType)(_xeUtils.default.get(e,c));(0,_util.hasMilestoneTask)(r)&&(l=a=a||l),(0,_util.hasSubviewTask)(r)?d[t]={row:e,rowid:t,oLeftSize:0,oWidthSize:0}:a&&l&&(a=(r=u(a,l)).offsetLeftSize,d[t]={row:e,rowid:t,oLeftSize:a,oWidthSize:r.offsetWidthSize})},S?(S=a.mapChildrenField)&&_xeUtils.default.eachTree(t,f,{children:S}):p?_xeUtils.default.eachTree(h,f,{children:r?l.mapChildrenField:s}):y.forEach(f),g.chartMaps=d),g.visibleColumn=v,m.headerGroups=x,updateTodayData(e),updateScrollXStatus(e),handleTableColumn(e)}function handleUpdateData(l){var r,i,n,e,t,a,o,c,s,d,u=l.$xeGantt,f=l.reactData,h=l.internalData,m=u.treeConfig,g=h.scrollXStore,p=h.xeTable,S=null,y=null;p&&(r=u.computeStartField,i=u.computeEndField,n=u.computeTypeField,u=p.isRowGroupStatus,e=p.afterFullData,t=p.afterTreeFullData,a=p.computeAggregateOpts,c=(o=p.computeTreeOpts).transform,s=o.children||o.childrenField,d=function(e){var t=_xeUtils.default.get(e,r),a=_xeUtils.default.get(e,i),e=_xeUtils.default.get(e,n),t=t||a;!(0,_util.hasMilestoneTask)(e)&&a||(a=t),t&&(e=parseStringDate(l,t),!S||S.getTime()>e.getTime())&&(S=e),a&&(t=parseStringDate(l,a),!y||y.getTime()<t.getTime())&&(y=t)},u?(u=a.mapChildrenField)&&_xeUtils.default.eachTree(p.afterGroupFullData,d,{children:u}):m?_xeUtils.default.eachTree(t,d,{children:c?o.mapChildrenField:s}):e.forEach(d)),g.startIndex=0,g.endIndex=Math.max(1,g.visibleSize),f.minViewDate=S,f.maxViewDate=y,h.startMaps={},h.endMaps={},handleParseColumn(l)}function calcScrollbar(e){var t=e.$xeGantt,a=e.reactData,l=a.scrollXWidth,r=a.scrollYHeight,i=e.internalData.elemStore,t=t.computeScrollbarOpts,i=(0,_util.getRefElem)(i["main-body-wrapper"]),n=e.$refs.refScrollXHandleElem,e=e.$refs.refScrollYHandleElem;i&&(r=r>i.clientHeight,e&&(a.scrollbarWidth=t.width||e.offsetWidth-e.clientWidth||14),a.overflowY=r,e=l>i.clientWidth,n&&(a.scrollbarHeight=t.height||n.offsetHeight-n.clientHeight||14),a.overflowX=e)}function handleSubTaskMinMaxSize(e,a,t){var l=e.$xeGantt,r=e.internalData.chartMaps,e=a.computeTreeOpts,e=e.children||e.childrenField,i=l.computeTypeField,n=0,o=0;return _xeUtils.default.eachTree(t,function(e){var t=a.getRowid(e),e=_xeUtils.default.get(e,i);(0,_util.hasSubviewTask)(e)||(e=t?r[t]:null)&&(o=Math.max(o,e.oLeftSize+e.oWidthSize),n=n?Math.min(n,e.oLeftSize):e.oLeftSize)},{children:e}),{minSize:n,maxSize:o}}function updateTaskChartStyle(i){var n,e=i.$xeGantt,t=i.internalData,e=e.internalData,o=t.xeTable,c=e.dragBarRow,s=i.reactData.viewCellWidth,d=t.chartMaps,e=(0,_util.getRefElem)(t.elemStore["main-chart-task-wrapper"]);return e&&o&&(t=o.computeTreeOpts,n=t.children||t.childrenField,_xeUtils.default.arrayEach(e.children,function(e){var t,a,l,r=e.children[0];r&&(e=e.getAttribute("rowid"),c&&o.getRowid(c)===e||(l=(e=e?d[e]:null)?e.row:null,(0,_dom.hasClass)(r,"is--subview")?(t=r.firstElementChild)&&((0,_dom.hasClass)(t,"is--inline")?_xeUtils.default.arrayEach(t.children,function(e){var t,a,e=e.children[0],l=e.getAttribute("rowid")||"",l=l?d[l]:null;l&&(a=l.row,(0,_dom.hasClass)(e,"is--subview")?(a=a[n],t=(a=handleSubTaskMinMaxSize(i,o,a)).minSize,a=a.maxSize,e.style.left="".concat(s*t,"px"),e.style.width="".concat(s*(a-t),"px")):(e.style.left="".concat((0,_util.getTaskBarLeft)(l,s),"px"),(0,_dom.hasClass)(e,"is--milestone")||(e.style.width="".concat((0,_util.getTaskBarWidth)(l,s),"px"))))}):(t=(t=t.children[0])?t.children[0]:null)&&(l=l?l[n]:[],a=(l=handleSubTaskMinMaxSize(i,o,l)).minSize,l=l.maxSize,t.style.left="".concat(s*a,"px"),t.style.width="".concat(s*(l-a),"px"))):(r.style.left="".concat((0,_util.getTaskBarLeft)(e,s),"px"),(0,_dom.hasClass)(r,"is--milestone")||(r.style.width="".concat((0,_util.getTaskBarWidth)(e,s),"px")))))})),i.$nextTick()}function updateStyle(e){var t,a,l,r,i,n,o,c,s=e.$xeGantt,d=e.reactData,u=e.internalData,f=d.scrollbarWidth,h=d.scrollbarHeight,m=d.headerGroups,g=d.tableColumn,p=u.elemStore,S=u.visibleColumn,u=u.xeTable,y=e.$refs.refElem;if(y&&s)return r=s.computeScrollbarOpts,n=s.computeScrollbarXToTop,i=e.$refs.refScrollXLeftCornerElem,o=e.$refs.refScrollXRightCornerElem,c=e.$refs.refScrollXVirtualElem,f=f,h=h,l=a=t=0,u&&(t=u.tBodyHeight,a=u.tHeaderHeight,l=u.tFooterHeight),u="visible",(s.computeScrollbarYToLeft||r.y&&!1===r.y.visible)&&(f=0,u="hidden"),(r=(0,_util.getRefElem)(p["main-header-scroll"]))&&(r.style.height="".concat(a,"px"),r.style.setProperty("--vxe-ui-gantt-view-cell-height","".concat(a/m.length,"px"))),(r=(0,_util.getRefElem)(p["main-body-scroll"]))&&(r.style.height="".concat(t,"px")),(m=(0,_util.getRefElem)(p["main-footer-scroll"]))&&(m.style.height="".concat(l,"px")),c&&(c.style.height="".concat(h,"px"),c.style.visibility="visible"),(m=e.$refs.refScrollXWrapperElem)&&(m.style.left=n?"".concat(f,"px"):"",m.style.width="".concat(y.clientWidth-f,"px")),i&&(i.style.width=n?"".concat(f,"px"):"",i.style.display=n&&h?"block":""),o&&(o.style.width=n?"":"".concat(f,"px"),o.style.display=!n&&h?"block":""),(c=e.$refs.refScrollYVirtualElem)&&(c.style.width="".concat(f,"px"),c.style.height="".concat(t+a+l,"px"),c.style.visibility=u),(m=e.$refs.refScrollYTopCornerElem)&&(m.style.height="".concat(a,"px"),m.style.display=a?"block":""),(y=e.$refs.refScrollYWrapperElem)&&(y.style.height="".concat(t,"px"),y.style.top="".concat(a,"px")),(i=e.$refs.refScrollYBottomCornerElem)&&(i.style.height="".concat(l,"px"),i.style.top="".concat(a+t,"px"),i.style.display=l?"block":""),o=40,h=o=(n=e.$refs.refColInfoElem)?n.clientWidth||40:o,S.length&&(h=Math.max(0,o*S.length),r)&&0<(c=(f=r.clientWidth)-h)&&(o+=Math.max(0,c/S.length),h=f),d.viewCellWidth=o,u=(0,_util.getRefElem)(p["main-header-table"]),m=(0,_util.getRefElem)(p["main-body-table"]),y=o*g.length,u&&(u.style.width="".concat(h,"px")),m&&(m.style.width="".concat(y,"px")),d.scrollXWidth=h,Promise.all([updateTaskChartStyle(e),s.handleUpdateTaskLinkStyle?s.handleUpdateTaskLinkStyle(e):null])}function handleRecalculateStyle(e){var t=e.internalData,a=e.$xeGantt,l=e.$refs.refElem;return t.rceRunTime=Date.now(),l&&l.clientWidth&&a?(calcScrollbar(e),updateStyle(e),computeScrollLoad(e)):e.$nextTick()}function _handleLazyRecalculate(i){var n=i.internalData;return new Promise(function(e){var t=n.rceTimeout,a=n.rceRunTime,l=n.xeTable,r=30;l&&(r=l.computeResizeOpts.refreshDelay||r),!t||(clearTimeout(t),a&&a+(r-5)<Date.now())?e(handleRecalculateStyle(i)):i.$nextTick(function(){e()}),n.rceTimeout=setTimeout(function(){n.rceTimeout=void 0,handleRecalculateStyle(i)},r)})}function computeScrollLoad(l){var r=l.reactData,i=l.internalData;return l.$nextTick().then(function(){var e,t=r.scrollXLoad,a=i.scrollXStore;t?(e=(t=handleVirtualXVisible(l)).toVisibleIndex,t=t.visibleSize,a.preloadSize=1,a.offsetSize=2,a.visibleSize=t,a.endIndex=Math.max(a.startIndex+a.visibleSize+2,a.endIndex),a.visibleStartIndex=Math.max(a.startIndex,e),a.visibleEndIndex=Math.min(a.endIndex,e+t),updateScrollXData(l).then(function(){loadScrollXData(l)})):updateScrollXSpace(l)})}function handleVirtualXVisible(e){var t,a=e.reactData.viewCellWidth,e=e.internalData.elemStore,e=(0,_util.getRefElem)(e["main-body-scroll"]);return e?(t=e.clientWidth,e=e.scrollLeft,e=Math.floor(e/a)-1,t=Math.ceil(t/a)+1,{toVisibleIndex:Math.max(0,e),visibleSize:Math.max(1,t)}):{toVisibleIndex:0,visibleSize:6}}function loadScrollXData(e){var t=e.reactData.isScrollXBig,a=e.internalData.scrollXStore,l=a.preloadSize,r=a.startIndex,i=a.endIndex,n=a.offsetSize,o=handleVirtualXVisible(e),c=o.toVisibleIndex,o=o.visibleSize,t={startIndex:Math.max(0,t?c-1:c-1-n-l),endIndex:t?c+o:c+o+n+l},n=(a.visibleStartIndex=c-1,a.visibleEndIndex=c+o+1,t.startIndex),l=t.endIndex;!(c<=r||i-o-1<=c)||r===n&&i===l||(a.startIndex=n,a.endIndex=l,updateScrollXData(e))}function updateScrollXData(e){return handleTableColumn(e),updateScrollXSpace(e),e.$nextTick()}function updateScrollXStatus(e){return e.reactData.scrollXLoad=!0}function handleTableColumn(e){var t=e.reactData,e=e.internalData,a=t.scrollXLoad,l=e.visibleColumn,e=e.scrollXStore,a=a?l.slice(e.startIndex,e.endIndex):l.slice(0);t.tableColumn=a}function updateScrollXSpace(e){var t=e.reactData,a=e.internalData,l=t.scrollXLoad,r=t.scrollXWidth,i=t.viewCellWidth,n=a.elemStore,a=a.scrollXStore,o=(0,_util.getRefElem)(n["main-body-table"]),a=a.startIndex,c=0,s=(l&&(c=Math.max(0,a*i)),o&&(o.style.transform="translate(".concat(c,"px, ").concat(t.scrollYTop||0,"px)")),r),a=(["header","body","footer"].forEach(function(e){e=(0,_util.getRefElem)(n["main-".concat(e,"-xSpace")]);e&&(e.style.width=l?"".concat(s,"px"):"")}),e.$refs.refScrollXSpaceElem),i=(a&&(a.style.width="".concat(s,"px")),(0,_util.getRefElem)(n["main-chart-before-wrapper"])),o=i?i.firstElementChild:null,r=(o&&(o.style.width="".concat(s,"px")),(0,_util.getRefElem)(n["main-chart-after-wrapper"])),a=r?r.firstElementChild:null;return a&&(a.style.width="".concat(s,"px")),t.scrollXLeft=c,t.scrollXWidth=s,calcScrollbar(e),e.$nextTick()}function triggerScrollXEvent(e){loadScrollXData(e)}function updateScrollYSpace(e){var t=e.reactData,a=e.internalData,l=t.scrollYLoad,r=t.overflowY,i=a.elemStore,a=a.xeTable,n=(0,_util.getRefElem)(i["main-body-scroll"]),o=(0,_util.getRefElem)(i["main-body-table"]),c=0,s=0,d=!1,a=(a&&(c=a.scrollYTop,s=a.scrollYHeight,d=a.isScrollYBig),s),u=c,f=0,n=(n&&(f=n.clientHeight),d&&(u=n&&o&&n.scrollTop+f>=maxYHeight?maxYHeight-o.clientHeight:c/(s-f)*(maxYHeight-f),a=maxYHeight),l&&r||(u=0),(0,_util.getRefElem)(i["main-chart-task-wrapper"])),c=(o&&(o.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(u,"px)")),n&&(n.style.transform="translateY(".concat(u,"px)")),(0,_util.getRefElem)(i["main-body-ySpace"])),f=(c&&(c.style.height=a?"".concat(a,"px"):""),e.$refs.refScrollYSpaceElem),l=(f&&(f.style.height=a?"".concat(a,"px"):""),(0,_util.getRefElem)(i["main-chart-before-wrapper"])),r=l?l.firstElementChild:null,o=(r&&(r.style.height=a?"".concat(a,"px"):""),(0,_util.getRefElem)(i["main-chart-after-wrapper"])),n=o?o.firstElementChild:null,c=(n&&(n.style.height=a?"".concat(a,"px"):""),(0,_util.getRefElem)(i["main-chart-now-line"]));return c&&(c.style.height=a?"".concat(a,"px"):""),t.scrollYTop=u,t.scrollYHeight=s,t.isScrollYBig=d,calcScrollbar(e),e.$nextTick().then(function(){updateStyle(e)})}function checkLastSyncScroll(e,t,a){var l=e.reactData,r=e.internalData,e=r.lcsTimeout;l.lazScrollLoading=!0,e&&clearTimeout(e),r.lcsTimeout=setTimeout(function(){r.lcsRunTime=Date.now(),r.lcsTimeout=void 0,r.intoRunScroll=!1,r.inVirtualScroll=!1,r.inWheelScroll=!1,r.inHeaderScroll=!1,r.inBodyScroll=!1,r.inFooterScroll=!1,l.lazScrollLoading=!1},200)}function handleScrollData(e,t,a,l,r){var i=e.reactData,n=e.internalData;a&&(n.lastScrollLeft=r),t&&(n.lastScrollTop=l),i.lastScrollTime=Date.now(),checkLastSyncScroll(e,a,t)}function handleScrollEvent(e,t,a,l,r,i){var n,o,c,s,d,u,f,h,m,g,p,S,y=e.$xeGantt,x=e.internalData,v=x.xeTable,_=e.$refs.refScrollXHandleElem,D=e.$refs.refScrollYHandleElem;_&&D&&v&&(n=D.clientHeight,o=_.clientWidth,D=D.scrollHeight,_=_.scrollWidth,d="",m=h=f=u=s=g=c=S=!1,l&&(p=v.computeScrollXThreshold,(g=i<=0)||(s=_-1<=i+o),x.lastScrollLeft<i?(d="right",_-p<=i+o&&(m=!0)):(d="left",i<=p&&(h=!0))),a&&(p=v.computeScrollYThreshold,(S=r<=0)||(c=D-1<=r+n),x.lastScrollTop<r?(d="bottom",D-p<=r+n&&(f=!0)):(d="top",r<=p&&(u=!0))),handleScrollData(e,a,l,r,i),v={source:sourceType,scrollTop:r,scrollLeft:i,bodyHeight:n,bodyWidth:o,scrollHeight:D,scrollWidth:_,isX:l,isY:a,isTop:S,isBottom:c,isLeft:g,isRight:s,direction:d},(f||u||m||h)&&y.dispatchEvent("scroll-boundary",v,t),y.dispatchEvent("scroll",v,t))}function syncTableScrollTop(e,t){var e=e.internalData.xeTable;e&&(e=e.elemStore,e=(0,_util.getRefElem)(e["main-body-scroll"]))&&(e.scrollTop=t)}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",inject:{$xeGantt:{default:null}},provide:function(){return{$xeGanttView:this}},props:{},data:function(){return{xID:_xeUtils.default.uniqueId(),reactData:createReactData(),internalData:createInternalData()}},computed:Object.assign(Object.assign({},{}),{computeScaleDateList:function(){var e=this.$xeGantt,t=this.reactData,a=e.reactData,l=t.minViewDate,r=t.maxViewDate,i=e.computeMinScale,t=e.computeTaskViewOpts.gridding,n=[];if(i&&l&&r){var e=i.type,o=i.startDay,c=-(a.currLeftSpacing+_xeUtils.default.toNumber(t&&t.leftSpacing||0)),s=a.currRightSpacing+_xeUtils.default.toNumber(t&&t.rightSpacing||0);switch(e){case"year":for(var d=_xeUtils.default.getWhatYear(l,c,"first"),u=_xeUtils.default.getWhatYear(r,s,"first");d<=u;){var f=d;n.push(f),d=_xeUtils.default.getWhatYear(d,1)}break;case"quarter":for(var h=_xeUtils.default.getWhatQuarter(l,c,"first"),m=_xeUtils.default.getWhatQuarter(r,s,"first");h<=m;){var g=h;n.push(g),h=_xeUtils.default.getWhatQuarter(h,1)}break;case"month":for(var p=_xeUtils.default.getWhatMonth(l,c,"first"),S=_xeUtils.default.getWhatMonth(r,s,"first");p<=S;){var y=p;n.push(y),p=_xeUtils.default.getWhatMonth(p,1)}break;case"week":for(var x=_xeUtils.default.getWhatWeek(l,c,o,o),v=_xeUtils.default.getWhatWeek(r,s,o,o);x<=v;){var _=x;n.push(_),x=_xeUtils.default.getWhatWeek(x,1)}break;case"day":case"date":for(var D=_xeUtils.default.getWhatDay(l,c,"first"),T=_xeUtils.default.getWhatDay(r,s,"first");D<=T;){var b=D;n.push(b),D=_xeUtils.default.getWhatDay(D,1)}break;case"hour":case"minute":case"second":for(var w=+(0,_util.getStandardGapTime)(i.type),W=l.getTime()+c*w,U=r.getTime()+s*w;W<=U;){var E=new Date(W);n.push(E),W+=w}}}return n},computeNowLineLeft:function(){var e=this.$xeGantt,t=this.reactData,a=this.internalData,l=e.reactData,r=t.minViewDate,i=t.maxViewDate,n=t.viewCellWidth,o=a.visibleColumn,t=a.todayDateMaps,a=e.computeMinScale,c=e.computeTaskViewOpts.showNowLine,e=e.computeTaskNowLineOpts.mode,l=l.nowTime,s=0;if(c&&a&&r&&i&&l>=r.getTime()&&l<=i.getTime()){for(var d=t[a.type],u=null,f=null,h=0;h<o.length;h++){var m=o[h];if(m.field===d){u=m,s=h*n,f=o[h+1];break}}"progress"===e?u&&f&&(c=u.dateObj.date.getTime(),s+=Math.max(0,Math.min(1,(l-c)/(f.dateObj.date.getTime()-c)))*n):"center"===e?s+=n/2:"end"===e&&(s+=n-1)}return s}}),methods:{refreshData:function(){var t=this,a=t.internalData;return handleUpdateData(t),handleRecalculateStyle(t),t.$nextTick().then(function(){var e=a.xeTable;if(handleRecalculateStyle(t),e)return e.recalculate()})},updateViewData:function(e){var t=this,a=t.$xeGantt,l=t.reactData,a=a.reactData,r=t.internalData.xeTable;return r&&(r=r.tableData,l.tableData=r,e&&(a.currLeftSpacing=0,a.currRightSpacing=0,handleUpdateData(t)),handleRecalculateStyle(t)),t.$nextTick()},connectUpdate:function(e){var e=e.$table,t=this.internalData;return e&&(t.xeTable=e),this.$nextTick()},handleUpdateStyle:function(){return updateStyle(this)},handleLazyRecalculate:function(){return _handleLazyRecalculate(this)},handleUpdateCurrentRow:function(e){var t=this.internalData.xeTable,a=this.$refs.refElem;t&&a&&(e?(t.computeRowOpts.isCurrent||t.highlightCurrentRow)&&_xeUtils.default.arrayEach(a.querySelectorAll('[rowid="'.concat(t.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--current")}):_xeUtils.default.arrayEach(a.querySelectorAll(".row--current"),function(e){return(0,_dom.removeClass)(e,"row--current")}))},handleUpdateHoverRow:function(e){var t=this.internalData.xeTable,a=this.$refs.refElem;t&&a&&(e?_xeUtils.default.arrayEach(a.querySelectorAll('.vxe-body--row[rowid="'.concat(t.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--hover")}):_xeUtils.default.arrayEach(a.querySelectorAll(".vxe-body--row.row--hover"),function(e){return(0,_dom.removeClass)(e,"row--hover")}))},triggerHeaderScrollEvent:function(e){var t,a,l,r=this.internalData,i=r.elemStore;r.inVirtualScroll||r.inBodyScroll||r.inFooterScroll||(t=e.currentTarget,i=(0,_util.getRefElem)(i["main-body-scroll"]),a=this.$refs.refScrollXHandleElem,i&&t&&(l=t.scrollLeft,r.inHeaderScroll=!0,(0,_dom.setScrollLeft)(a,l),(0,_dom.setScrollLeft)(i,l),handleScrollEvent(this,e,!1,!0,t.scrollTop,l)))},triggerBodyScrollEvent:function(e){var t,a,l,r,i,n=this,o=n.reactData,c=n.internalData,o=o.scrollXLoad,s=c.elemStore,d=c.lastScrollLeft,u=c.lastScrollTop;c.inVirtualScroll||c.inHeaderScroll||c.inFooterScroll||(t=e.currentTarget,s=(0,_util.getRefElem)(s["main-header-scroll"]),a=n.$refs.refScrollXHandleElem,l=n.$refs.refScrollYHandleElem,d=(r=t.scrollLeft)!==d,u=(i=t.scrollTop)!==u,c.inBodyScroll=!0,c.scrollRenderType="",u&&((0,_dom.setScrollTop)(l,i),syncTableScrollTop(n,i)),d&&(c.inBodyScroll=!0,(0,_dom.setScrollLeft)(a,r),(0,_dom.setScrollLeft)(s,r),o)&&triggerScrollXEvent(n),handleScrollEvent(n,e,u,d,t.scrollTop,r))},triggerVirtualScrollXEvent:function(e){var t,a,l,r=this.reactData,i=this.internalData,r=r.scrollXLoad,n=i.elemStore;i.inHeaderScroll||i.inBodyScroll||(t=e.currentTarget,a=(0,_util.getRefElem)(n["main-header-scroll"]),n=(0,_util.getRefElem)(n["main-body-scroll"]),t&&(l=t.scrollLeft,i.inVirtualScroll=!0,(0,_dom.setScrollLeft)(a,l),(0,_dom.setScrollLeft)(n,l),r&&triggerScrollXEvent(this),handleScrollEvent(this,e,!1,!0,t.scrollTop,l)))},triggerVirtualScrollYEvent:function(e){var t,a,l=this.internalData,r=l.elemStore;l.inHeaderScroll||l.inBodyScroll||(t=e.currentTarget,r=(0,_util.getRefElem)(r["main-body-scroll"]),t&&(a=t.scrollTop,l.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,a),syncTableScrollTop(this,a),handleScrollEvent(this,e,!0,!1,a,t.scrollLeft)))},handleUpdateSXSpace:function(){return updateScrollXSpace(this)},handleUpdateSYSpace:function(){return updateScrollYSpace(this)},handleUpdateSYStatus:function(e){this.reactData.scrollYLoad=e},handleGlobalResizeEvent:function(){_handleLazyRecalculate(this)},renderScrollX:function(e){return e("div",{key:"vsx",ref:"refScrollXVirtualElem",class:"vxe-gantt-view--scroll-x-virtual"},[e("div",{ref:"refScrollXLeftCornerElem",class:"vxe-gantt-view--scroll-x-left-corner"}),e("div",{ref:"refScrollXWrapperElem",class:"vxe-gantt-view--scroll-x-wrapper"},[e("div",{ref:"refScrollXHandleElem",class:"vxe-gantt-view--scroll-x-handle",on:{scroll:this.triggerVirtualScrollXEvent}},[e("div",{ref:"refScrollXSpaceElem",class:"vxe-gantt-view--scroll-x-space"})]),e("div",{class:"vxe-gantt-view--scroll-x-handle-appearance"})]),e("div",{ref:"refScrollXRightCornerElem",class:"vxe-gantt-view--scroll-x-right-corner"})])},renderScrollY:function(e){return e("div",{ref:"refScrollYVirtualElem",class:"vxe-gantt-view--scroll-y-virtual"},[e("div",{ref:"refScrollYTopCornerElem",class:"vxe-gantt-view--scroll-y-top-corner"}),e("div",{ref:"refScrollYWrapperElem",class:"vxe-gantt-view--scroll-y-wrapper"},[e("div",{ref:"refScrollYHandleElem",class:"vxe-gantt-view--scroll-y-handle",on:{scroll:this.triggerVirtualScrollYEvent}},[e("div",{ref:"refScrollYSpaceElem",class:"vxe-gantt-view--scroll-y-space"})]),e("div",{class:"vxe-gantt-view--scroll-y-handle-appearance"})]),e("div",{ref:"refScrollYBottomCornerElem",class:"vxe-gantt-view--scroll-y-bottom-corner"})])},renderViewport:function(e){return e("div",{class:"vxe-gantt-view--viewport-wrapper"},[e(_ganttHeader.default),e(_ganttBody.default),e(_ganttFooter.default)])},renderBody:function(e){var t=this;return e("div",{class:"vxe-gantt-view--layout-wrapper"},t.$xeGantt.computeScrollbarYToLeft?[t.renderScrollY(e),t.renderViewport(e)]:[t.renderViewport(e),t.renderScrollY(e)])},renderVN:function(e){var t=this,a=t.$xeGantt,l=t.reactData,r=l.overflowX;return e("div",{ref:"refElem",class:["vxe-gantt-view",{"is--scroll-y":l.overflowY,"is--scroll-x":r,"is--virtual-x":l.scrollXLoad,"is--virtual-y":l.scrollYLoad}]},[e("div",{class:"vxe-gantt-view--render-wrapper"},a.computeScrollbarXToTop?[t.renderScrollX(e),t.renderBody(e)]:[t.renderBody(e),t.renderScrollX(e)]),e("div",{class:"vxe-gantt-view--render-vars"},[e("div",{ref:"refColInfoElem",class:"vxe-gantt-view--column-info"})])])}},mounted:function(){globalEvents.on(this,"resize",this.handleGlobalResizeEvent)},beforeDestroy:function(){var e=this.reactData,t=this.internalData;globalEvents.off(this,"keydown"),_xeUtils.default.assign(e,createReactData()),_xeUtils.default.assign(t,createInternalData())},render:function(e){return this.renderVN(e)}});