vxe-gantt 3.0.5 → 3.0.7

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.
Files changed (42) hide show
  1. package/es/gantt/src/gantt-chart.js +18 -4
  2. package/es/gantt/src/gantt-header.js +19 -10
  3. package/es/gantt/src/gantt-view.js +265 -154
  4. package/es/gantt/src/gantt.js +10 -10
  5. package/es/gantt/style.css +7 -1
  6. package/es/gantt/style.min.css +1 -1
  7. package/es/style.css +1 -1
  8. package/es/style.min.css +1 -1
  9. package/es/ui/index.js +1 -1
  10. package/es/ui/src/log.js +1 -1
  11. package/es/vxe-gantt/style.css +7 -1
  12. package/es/vxe-gantt/style.min.css +1 -1
  13. package/lib/gantt/src/gantt-chart.js +22 -5
  14. package/lib/gantt/src/gantt-chart.min.js +1 -1
  15. package/lib/gantt/src/gantt-header.js +24 -15
  16. package/lib/gantt/src/gantt-header.min.js +1 -1
  17. package/lib/gantt/src/gantt-view.js +285 -158
  18. package/lib/gantt/src/gantt-view.min.js +1 -1
  19. package/lib/gantt/src/gantt.js +9 -9
  20. package/lib/gantt/src/gantt.min.js +1 -1
  21. package/lib/gantt/style/style.css +7 -1
  22. package/lib/gantt/style/style.min.css +1 -1
  23. package/lib/index.umd.js +345 -190
  24. package/lib/index.umd.min.js +1 -1
  25. package/lib/style.css +1 -1
  26. package/lib/style.min.css +1 -1
  27. package/lib/ui/index.js +1 -1
  28. package/lib/ui/index.min.js +1 -1
  29. package/lib/ui/src/log.js +1 -1
  30. package/lib/ui/src/log.min.js +1 -1
  31. package/lib/vxe-gantt/style/style.css +7 -1
  32. package/lib/vxe-gantt/style/style.min.css +1 -1
  33. package/package.json +3 -3
  34. package/packages/gantt/src/gantt-chart.ts +20 -4
  35. package/packages/gantt/src/gantt-header.ts +20 -11
  36. package/packages/gantt/src/gantt-view.ts +289 -168
  37. package/packages/gantt/src/gantt.ts +8 -8
  38. package/styles/components/gantt-module/gantt-chart.scss +2 -0
  39. package/styles/components/gantt.scss +6 -1
  40. package/styles/theme/base.scss +1 -1
  41. package/styles/theme/dark.scss +1 -0
  42. package/styles/theme/light.scss +1 -0
package/lib/index.umd.js CHANGED
@@ -7643,7 +7643,7 @@ var core_ = __webpack_require__(4345);
7643
7643
  ;// CONCATENATED MODULE: ./packages/ui/src/log.ts
7644
7644
 
7645
7645
  var log = core_.VxeUI.log;
7646
- var version = "gantt v".concat("3.0.5");
7646
+ var version = "gantt v".concat("3.0.7");
7647
7647
  var warnLog = log.create('warn', version);
7648
7648
  var errLog = log.create('error', version);
7649
7649
  ;// CONCATENATED MODULE: ./packages/ui/index.ts
@@ -7653,7 +7653,7 @@ var errLog = log.create('error', version);
7653
7653
  var setConfig = core_.VxeUI.setConfig,
7654
7654
  setIcon = core_.VxeUI.setIcon,
7655
7655
  checkVersion = core_.VxeUI.checkVersion;
7656
- core_.VxeUI.ganttVersion = "3.0.5";
7656
+ core_.VxeUI.ganttVersion = "3.0.7";
7657
7657
  setConfig({
7658
7658
  gantt: {
7659
7659
  // size: null,
@@ -8444,11 +8444,13 @@ var getI18n = core_.VxeUI.getI18n;
8444
8444
  //
8445
8445
  renderVN: function renderVN(h) {
8446
8446
  var _vm = this;
8447
+ var $xeGantt = _vm.$xeGantt;
8447
8448
  var $xeGanttView = _vm.$xeGanttView;
8448
8449
  var reactData = $xeGanttView.reactData;
8449
- var tableColumn = reactData.tableColumn,
8450
- headerGroups = reactData.headerGroups,
8450
+ var internalData = $xeGanttView.internalData;
8451
+ var headerGroups = reactData.headerGroups,
8451
8452
  viewCellWidth = reactData.viewCellWidth;
8453
+ var visibleColumn = internalData.visibleColumn;
8452
8454
  return h('div', {
8453
8455
  ref: 'refElem',
8454
8456
  class: 'vxe-gantt-view--header-wrapper'
@@ -8464,7 +8466,7 @@ var getI18n = core_.VxeUI.getI18n;
8464
8466
  }), h('table', {
8465
8467
  ref: 'refHeaderTable',
8466
8468
  class: 'vxe-gantt-view--header-table'
8467
- }, [h('colgroup', {}, tableColumn.map(function (column, cIndex) {
8469
+ }, [h('colgroup', {}, visibleColumn.map(function (column, cIndex) {
8468
8470
  return h('col', {
8469
8471
  key: cIndex,
8470
8472
  style: {
@@ -8475,11 +8477,14 @@ var getI18n = core_.VxeUI.getI18n;
8475
8477
  var scaleItem = _ref.scaleItem,
8476
8478
  columns = _ref.columns;
8477
8479
  var type = scaleItem.type,
8478
- titleMethod = scaleItem.titleMethod;
8480
+ titleMethod = scaleItem.titleMethod,
8481
+ slots = scaleItem.slots;
8482
+ var titleSlot = slots ? slots.title : null;
8479
8483
  return h('tr', {
8480
8484
  key: $rowIndex
8481
8485
  }, columns.map(function (column, cIndex) {
8482
- var dateObj = column.params;
8486
+ var childCount = column.childCount,
8487
+ dateObj = column.dateObj;
8483
8488
  var label = "".concat(column.title);
8484
8489
  if ($rowIndex < headerGroups.length - 1) {
8485
8490
  if (scaleItem.type === 'day') {
@@ -8488,22 +8493,26 @@ var getI18n = core_.VxeUI.getI18n;
8488
8493
  label = getI18n("vxe.gantt.".concat(!$rowIndex && headerGroups.length > 1 ? 'tFullFormat' : 'tSimpleFormat', ".").concat(type), dateObj);
8489
8494
  }
8490
8495
  }
8491
- if (titleMethod) {
8492
- label = "".concat(titleMethod({
8493
- scaleObj: scaleItem,
8494
- title: label,
8495
- dateObj: dateObj,
8496
- $rowIndex: $rowIndex
8497
- }));
8496
+ var cellVNs = label;
8497
+ var ctParams = {
8498
+ scaleObj: scaleItem,
8499
+ title: label,
8500
+ dateObj: dateObj,
8501
+ $rowIndex: $rowIndex
8502
+ };
8503
+ if (titleSlot) {
8504
+ cellVNs = $xeGantt.callSlot(titleSlot, ctParams, h);
8505
+ } else if (titleMethod) {
8506
+ cellVNs = "".concat(titleMethod(ctParams));
8498
8507
  }
8499
8508
  return h('th', {
8500
8509
  key: cIndex,
8501
8510
  class: 'vxe-gantt-view--header-column',
8502
8511
  attrs: {
8503
- colspan: column.childCount || null,
8504
- title: label
8512
+ colspan: childCount || null,
8513
+ title: titleSlot ? null : label
8505
8514
  }
8506
- }, label);
8515
+ }, cellVNs);
8507
8516
  }));
8508
8517
  }))])])]);
8509
8518
  }
@@ -8586,14 +8595,32 @@ var renderEmptyElement = core_.VxeUI.renderEmptyElement;
8586
8595
  showContent = taskBarOpts.showContent,
8587
8596
  contentMethod = taskBarOpts.contentMethod,
8588
8597
  barStyle = taskBarOpts.barStyle;
8589
- var _ref = barStyle || {},
8590
- round = _ref.round;
8598
+ var isBarRowStyle = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(barStyle);
8599
+ var barStyObj = (barStyle ? isBarRowStyle ? barStyle({
8600
+ row: row,
8601
+ $gantt: $xeGantt
8602
+ }) : barStyle : {}) || {};
8603
+ var round = barStyObj.round;
8591
8604
  var rowRest = fullAllDataRowIdData[rowid] || {};
8592
8605
  var resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
8593
8606
  var isRsHeight = resizeHeight > 0;
8594
8607
  var cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
8595
8608
  var title = getStringValue(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, titleField));
8596
8609
  var progressValue = showProgress ? Math.min(100, Math.max(0, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, progressField)))) : 0;
8610
+ var vbStyle = {};
8611
+ var vpStyle = {
8612
+ width: "".concat(progressValue || 0, "%")
8613
+ };
8614
+ if (isBarRowStyle) {
8615
+ var bgColor = barStyObj.bgColor,
8616
+ completedBgColor = barStyObj.completedBgColor;
8617
+ if (bgColor) {
8618
+ vbStyle.backgroundColor = bgColor;
8619
+ }
8620
+ if (completedBgColor) {
8621
+ vpStyle.backgroundColor = completedBgColor;
8622
+ }
8623
+ }
8597
8624
  if (contentMethod) {
8598
8625
  title = getStringValue(contentMethod({
8599
8626
  row: row,
@@ -8614,6 +8641,7 @@ var renderEmptyElement = core_.VxeUI.renderEmptyElement;
8614
8641
  }
8615
8642
  }, [h('div', {
8616
8643
  class: taskBarSlot ? 'vxe-gantt-view--chart-custom-bar' : 'vxe-gantt-view--chart-bar',
8644
+ style: vbStyle,
8617
8645
  attrs: {
8618
8646
  rowid: rowid
8619
8647
  },
@@ -8633,9 +8661,7 @@ var renderEmptyElement = core_.VxeUI.renderEmptyElement;
8633
8661
  row: row
8634
8662
  }, h) : [showProgress ? h('div', {
8635
8663
  class: 'vxe-gantt-view--chart-progress',
8636
- style: {
8637
- width: "".concat(progressValue, "%")
8638
- }
8664
+ style: vpStyle
8639
8665
  }) : renderEmptyElement($xeGantt), showContent ? h('div', {
8640
8666
  class: 'vxe-gantt-view--chart-content'
8641
8667
  }, title) : renderEmptyElement($xeGantt)])]);
@@ -9027,10 +9053,13 @@ var renderEmptyElement = core_.VxeUI.renderEmptyElement;
9027
9053
 
9028
9054
 
9029
9055
 
9056
+
9057
+
9030
9058
  var globalEvents = core_.VxeUI.globalEvents;
9031
9059
  function createInternalData() {
9032
9060
  return {
9033
9061
  xeTable: null,
9062
+ visibleColumn: [],
9034
9063
  startMaps: {},
9035
9064
  endMaps: {},
9036
9065
  chartMaps: {},
@@ -9045,16 +9074,9 @@ function createInternalData() {
9045
9074
  startIndex: 0,
9046
9075
  endIndex: 0
9047
9076
  },
9048
- // 存放纵向 Y 虚拟滚动相关信息
9049
- scrollYStore: {
9050
- preloadSize: 0,
9051
- offsetSize: 0,
9052
- visibleSize: 0,
9053
- visibleStartIndex: 0,
9054
- visibleEndIndex: 0,
9055
- startIndex: 0,
9056
- endIndex: 0
9057
- }
9077
+ // 最后滚动位置
9078
+ lastScrollTop: 0,
9079
+ lastScrollLeft: 0
9058
9080
  };
9059
9081
  }
9060
9082
  var maxYHeight = 5e6;
@@ -9075,9 +9097,12 @@ function handleParseColumn($xeGanttView) {
9075
9097
  var taskScaleList = ganttReactData.taskScaleList;
9076
9098
  var minViewDate = reactData.minViewDate,
9077
9099
  maxViewDate = reactData.maxViewDate;
9100
+ var scrollXStore = internalData.scrollXStore;
9078
9101
  var minScale = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().last(taskScaleList);
9079
9102
  var fullCols = [];
9080
9103
  var groupCols = [];
9104
+ scrollXStore.startIndex = 0;
9105
+ scrollXStore.endIndex = 1;
9081
9106
  if (minScale && minViewDate && maxViewDate) {
9082
9107
  var minSType = minScale.type;
9083
9108
  var weekScale = taskScaleList.find(function (item) {
@@ -9102,37 +9127,37 @@ function handleParseColumn($xeGanttView) {
9102
9127
  var currTime = minViewDate.getTime();
9103
9128
  var diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
9104
9129
  var countSize = Math.max(5, Math.floor(diffDayNum / gapTime) + 1);
9105
- switch (minScale.type) {
9106
- case 'day':
9107
- case 'date':
9108
- if (diffDayNum > 1000 * 60 * 60 * 24 * 366 * 3) {
9109
- reactData.tableColumn = [];
9110
- reactData.headerGroups = [];
9111
- return;
9112
- }
9113
- break;
9114
- case 'hour':
9115
- if (diffDayNum > 1000 * 60 * 60 * 24 * 31 * 3) {
9116
- reactData.tableColumn = [];
9117
- reactData.headerGroups = [];
9118
- return;
9119
- }
9120
- break;
9121
- case 'minute':
9122
- if (diffDayNum > 1000 * 60 * 60 * 24 * 3) {
9123
- reactData.tableColumn = [];
9124
- reactData.headerGroups = [];
9125
- return;
9126
- }
9127
- break;
9128
- case 'second':
9129
- if (diffDayNum > 1000 * 60 * 60 * 3) {
9130
- reactData.tableColumn = [];
9131
- reactData.headerGroups = [];
9132
- return;
9133
- }
9134
- break;
9135
- }
9130
+ // switch (minScale.type) {
9131
+ // case 'day':
9132
+ // case 'date':
9133
+ // if (diffDayNum > (1000 * 60 * 60 * 24 * 366 * 3)) {
9134
+ // reactData.tableColumn = []
9135
+ // reactData.headerGroups = []
9136
+ // return
9137
+ // }
9138
+ // break
9139
+ // case 'hour':
9140
+ // if (diffDayNum > (1000 * 60 * 60 * 24 * 31 * 3)) {
9141
+ // reactData.tableColumn = []
9142
+ // reactData.headerGroups = []
9143
+ // return
9144
+ // }
9145
+ // break
9146
+ // case 'minute':
9147
+ // if (diffDayNum > (1000 * 60 * 60 * 24 * 3)) {
9148
+ // reactData.tableColumn = []
9149
+ // reactData.headerGroups = []
9150
+ // return
9151
+ // }
9152
+ // break
9153
+ // case 'second':
9154
+ // if (diffDayNum > (1000 * 60 * 60 * 3)) {
9155
+ // reactData.tableColumn = []
9156
+ // reactData.headerGroups = []
9157
+ // return
9158
+ // }
9159
+ // break
9160
+ // }
9136
9161
  var renderListMaps = {
9137
9162
  year: [],
9138
9163
  quarter: [],
@@ -9204,47 +9229,47 @@ function handleParseColumn($xeGanttView) {
9204
9229
  year: {
9205
9230
  field: yyyy,
9206
9231
  title: yyyy,
9207
- params: dateObj
9232
+ dateObj: dateObj
9208
9233
  },
9209
9234
  quarter: {
9210
9235
  field: "".concat(yyyy, "_q").concat(q),
9211
- title: q,
9212
- params: dateObj
9236
+ title: "".concat(q),
9237
+ dateObj: dateObj
9213
9238
  },
9214
9239
  month: {
9215
9240
  field: "".concat(yyyy, "_").concat(MM),
9216
9241
  title: MM,
9217
- params: dateObj
9242
+ dateObj: dateObj
9218
9243
  },
9219
9244
  week: {
9220
9245
  field: "".concat(yyyy, "_W").concat(W),
9221
- title: W,
9222
- params: dateObj
9246
+ title: "".concat(W),
9247
+ dateObj: dateObj
9223
9248
  },
9224
9249
  day: {
9225
9250
  field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_E").concat(E),
9226
- title: E,
9227
- params: dateObj
9251
+ title: "".concat(E),
9252
+ dateObj: dateObj
9228
9253
  },
9229
9254
  date: {
9230
9255
  field: "".concat(yyyy, "_").concat(MM, "_").concat(dd),
9231
9256
  title: dd,
9232
- params: dateObj
9257
+ dateObj: dateObj
9233
9258
  },
9234
9259
  hour: {
9235
9260
  field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH),
9236
9261
  title: HH,
9237
- params: dateObj
9262
+ dateObj: dateObj
9238
9263
  },
9239
9264
  minute: {
9240
9265
  field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH, "_").concat(mm),
9241
9266
  title: mm,
9242
- params: dateObj
9267
+ dateObj: dateObj
9243
9268
  },
9244
9269
  second: {
9245
9270
  field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH, "_").concat(mm, "_").concat(ss),
9246
9271
  title: ss,
9247
- params: dateObj
9272
+ dateObj: dateObj
9248
9273
  }
9249
9274
  };
9250
9275
  var minCol = colMaps[minSType];
@@ -9332,8 +9357,10 @@ function handleParseColumn($xeGanttView) {
9332
9357
  internalData.chartMaps = ctMaps;
9333
9358
  }
9334
9359
  }
9335
- reactData.tableColumn = fullCols;
9360
+ internalData.visibleColumn = fullCols;
9336
9361
  reactData.headerGroups = groupCols;
9362
+ updateScrollXStatus($xeGanttView);
9363
+ handleTableColumn($xeGanttView);
9337
9364
  }
9338
9365
  function handleUpdateData($xeGanttView) {
9339
9366
  var $xeGantt = $xeGanttView.$xeGantt;
@@ -9438,9 +9465,10 @@ function updateStyle($xeGanttView) {
9438
9465
  var internalData = $xeGanttView.internalData;
9439
9466
  var scrollbarWidth = reactData.scrollbarWidth,
9440
9467
  scrollbarHeight = reactData.scrollbarHeight,
9441
- tableColumn = reactData.tableColumn,
9442
- headerGroups = reactData.headerGroups;
9443
- var elemStore = internalData.elemStore;
9468
+ headerGroups = reactData.headerGroups,
9469
+ tableColumn = reactData.tableColumn;
9470
+ var elemStore = internalData.elemStore,
9471
+ visibleColumn = internalData.visibleColumn;
9444
9472
  var $xeTable = internalData.xeTable;
9445
9473
  var el = $xeGanttView.$refs.refElem;
9446
9474
  if (!el || !el.clientHeight) {
@@ -9521,82 +9549,210 @@ function updateStyle($xeGanttView) {
9521
9549
  yBottomCornerEl.style.display = tFooterHeight ? 'block' : '';
9522
9550
  }
9523
9551
  var colInfoElem = $xeGanttView.$refs.refColInfoElem;
9552
+ var viewCellWidth = 40;
9524
9553
  if (colInfoElem) {
9525
- reactData.viewCellWidth = colInfoElem.clientWidth || 40;
9554
+ viewCellWidth = colInfoElem.clientWidth || 40;
9526
9555
  }
9527
- var viewTableWidth = reactData.viewCellWidth * tableColumn.length;
9556
+ var viewTableWidth = viewCellWidth * visibleColumn.length;
9528
9557
  if (bodyScrollElem) {
9529
9558
  var viewWidth = bodyScrollElem.clientWidth;
9530
9559
  var remainWidth = viewWidth - viewTableWidth;
9531
9560
  if (remainWidth > 0) {
9532
- reactData.viewCellWidth += Math.floor(remainWidth / tableColumn.length);
9561
+ viewCellWidth += Math.floor(remainWidth / visibleColumn.length);
9533
9562
  viewTableWidth = viewWidth;
9534
9563
  }
9535
9564
  }
9565
+ reactData.viewCellWidth = viewCellWidth;
9536
9566
  var headerTableElem = getRefElem(elemStore['main-header-table']);
9537
9567
  var bodyTableElem = getRefElem(elemStore['main-body-table']);
9568
+ var vmTableWidth = viewCellWidth * tableColumn.length;
9538
9569
  if (headerTableElem) {
9539
9570
  headerTableElem.style.width = "".concat(viewTableWidth, "px");
9540
9571
  }
9541
9572
  if (bodyTableElem) {
9542
- bodyTableElem.style.width = "".concat(viewTableWidth, "px");
9573
+ bodyTableElem.style.width = "".concat(vmTableWidth, "px");
9543
9574
  }
9544
9575
  reactData.scrollXWidth = viewTableWidth;
9545
9576
  return updateChart($xeGanttView);
9546
9577
  }
9547
- function _handleLazyRecalculate($xeGanttView) {
9578
+ function handleRecalculateStyle($xeGanttView) {
9579
+ var internalData = $xeGanttView.internalData;
9580
+ var el = $xeGanttView.$refs.refElem;
9581
+ internalData.rceRunTime = Date.now();
9582
+ if (!el || !el.clientWidth) {
9583
+ return $xeGanttView.$nextTick();
9584
+ }
9548
9585
  calcScrollbar($xeGanttView);
9549
9586
  updateStyle($xeGanttView);
9550
9587
  updateChart($xeGanttView);
9588
+ return computeScrollLoad($xeGanttView);
9589
+ }
9590
+ function _handleLazyRecalculate($xeGanttView) {
9591
+ var internalData = $xeGanttView.internalData;
9592
+ return new Promise(function (resolve) {
9593
+ var rceTimeout = internalData.rceTimeout,
9594
+ rceRunTime = internalData.rceRunTime;
9595
+ var $xeTable = internalData.xeTable;
9596
+ var refreshDelay = 50;
9597
+ if ($xeTable) {
9598
+ var resizeOpts = $xeTable.computeResizeOpts;
9599
+ refreshDelay = resizeOpts.refreshDelay || 50;
9600
+ }
9601
+ if (rceTimeout) {
9602
+ clearTimeout(rceTimeout);
9603
+ if (rceRunTime && rceRunTime + (refreshDelay - 5) < Date.now()) {
9604
+ resolve(handleRecalculateStyle($xeGanttView));
9605
+ } else {
9606
+ $xeGanttView.$nextTick(function () {
9607
+ resolve();
9608
+ });
9609
+ }
9610
+ } else {
9611
+ resolve(handleRecalculateStyle($xeGanttView));
9612
+ }
9613
+ internalData.rceTimeout = setTimeout(function () {
9614
+ internalData.rceTimeout = undefined;
9615
+ handleRecalculateStyle($xeGanttView);
9616
+ }, refreshDelay);
9617
+ });
9618
+ }
9619
+ function computeScrollLoad($xeGanttView) {
9620
+ var reactData = $xeGanttView.reactData;
9621
+ var internalData = $xeGanttView.internalData;
9622
+ return $xeGanttView.$nextTick().then(function () {
9623
+ var scrollXLoad = reactData.scrollXLoad;
9624
+ var scrollXStore = internalData.scrollXStore;
9625
+ // 计算 X 逻辑
9626
+ if (scrollXLoad) {
9627
+ var _handleVirtualXVisibl = handleVirtualXVisible($xeGanttView),
9628
+ toXVisibleIndex = _handleVirtualXVisibl.toVisibleIndex,
9629
+ visibleXSize = _handleVirtualXVisibl.visibleSize;
9630
+ var offsetXSize = 2;
9631
+ scrollXStore.preloadSize = 1;
9632
+ scrollXStore.offsetSize = offsetXSize;
9633
+ scrollXStore.visibleSize = visibleXSize;
9634
+ scrollXStore.endIndex = Math.max(scrollXStore.startIndex + scrollXStore.visibleSize + offsetXSize, scrollXStore.endIndex);
9635
+ scrollXStore.visibleStartIndex = Math.max(scrollXStore.startIndex, toXVisibleIndex);
9636
+ scrollXStore.visibleEndIndex = Math.min(scrollXStore.endIndex, toXVisibleIndex + visibleXSize);
9637
+ updateScrollXData($xeGanttView).then(function () {
9638
+ loadScrollXData($xeGanttView);
9639
+ });
9640
+ } else {
9641
+ updateScrollXSpace($xeGanttView);
9642
+ }
9643
+ });
9644
+ }
9645
+ function handleVirtualXVisible($xeGanttView) {
9646
+ var reactData = $xeGanttView.reactData;
9647
+ var internalData = $xeGanttView.internalData;
9648
+ var viewCellWidth = reactData.viewCellWidth;
9649
+ var elemStore = internalData.elemStore;
9650
+ var bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
9651
+ if (bodyScrollElem) {
9652
+ var clientWidth = bodyScrollElem.clientWidth;
9653
+ var scrollLeft = bodyScrollElem.scrollLeft;
9654
+ var toVisibleIndex = Math.floor(scrollLeft / viewCellWidth) - 1;
9655
+ var visibleSize = Math.ceil(clientWidth / viewCellWidth) + 1;
9656
+ return {
9657
+ toVisibleIndex: Math.max(0, toVisibleIndex),
9658
+ visibleSize: Math.max(1, visibleSize)
9659
+ };
9660
+ }
9661
+ return {
9662
+ toVisibleIndex: 0,
9663
+ visibleSize: 6
9664
+ };
9665
+ }
9666
+ function loadScrollXData($xeGanttView) {
9667
+ var reactData = $xeGanttView.reactData;
9668
+ var internalData = $xeGanttView.internalData;
9669
+ var isScrollXBig = reactData.isScrollXBig;
9670
+ var scrollXStore = internalData.scrollXStore;
9671
+ var preloadSize = scrollXStore.preloadSize,
9672
+ startIndex = scrollXStore.startIndex,
9673
+ endIndex = scrollXStore.endIndex,
9674
+ offsetSize = scrollXStore.offsetSize;
9675
+ var _handleVirtualXVisibl2 = handleVirtualXVisible($xeGanttView),
9676
+ toVisibleIndex = _handleVirtualXVisibl2.toVisibleIndex,
9677
+ visibleSize = _handleVirtualXVisibl2.visibleSize;
9678
+ var offsetItem = {
9679
+ startIndex: Math.max(0, isScrollXBig ? toVisibleIndex - 1 : toVisibleIndex - 1 - offsetSize - preloadSize),
9680
+ endIndex: isScrollXBig ? toVisibleIndex + visibleSize : toVisibleIndex + visibleSize + offsetSize + preloadSize
9681
+ };
9682
+ scrollXStore.visibleStartIndex = toVisibleIndex - 1;
9683
+ scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
9684
+ var offsetStartIndex = offsetItem.startIndex,
9685
+ offsetEndIndex = offsetItem.endIndex;
9686
+ if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
9687
+ if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
9688
+ scrollXStore.startIndex = offsetStartIndex;
9689
+ scrollXStore.endIndex = offsetEndIndex;
9690
+ updateScrollXData($xeGanttView);
9691
+ }
9692
+ }
9693
+ }
9694
+ function updateScrollXData($xeGanttView) {
9695
+ handleTableColumn($xeGanttView);
9696
+ updateScrollXSpace($xeGanttView);
9551
9697
  return $xeGanttView.$nextTick();
9552
9698
  }
9553
- // function updateScrollXSpace ($xeGanttView: VxeGanttViewConstructor & VxeGanttViewPrivateMethods) {
9554
- // const reactData = $xeGanttView.reactData
9555
- // const internalData = $xeGanttView.internalData
9556
- // const { scrollXLoad, scrollXWidth } = reactData
9557
- // const { elemStore } = internalData
9558
- // const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
9559
- // const bodyTableElem = getRefElem(elemStore['main-body-table'])
9560
- // let xSpaceLeft = 0
9561
- // let clientWidth = 0
9562
- // if (bodyScrollElem) {
9563
- // clientWidth = bodyScrollElem.clientWidth
9564
- // }
9565
- // // 虚拟渲染
9566
- // let isScrollXBig = false
9567
- // let ySpaceWidth = scrollXWidth
9568
- // if (scrollXWidth > maxXWidth) {
9569
- // // 触右
9570
- // if (bodyScrollElem && bodyTableElem && bodyScrollElem.scrollLeft + clientWidth >= maxXWidth) {
9571
- // xSpaceLeft = maxXWidth - bodyTableElem.clientWidth
9572
- // } else {
9573
- // xSpaceLeft = (maxXWidth - clientWidth) * (xSpaceLeft / (scrollXWidth - clientWidth))
9574
- // }
9575
- // ySpaceWidth = maxXWidth
9576
- // isScrollXBig = true
9577
- // }
9578
- // if (bodyTableElem) {
9579
- // bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`
9580
- // }
9581
- // const layoutList = ['header', 'body', 'footer']
9582
- // layoutList.forEach(layout => {
9583
- // const xSpaceElem = getRefElem(elemStore[`main-${layout}-xSpace`])
9584
- // if (xSpaceElem) {
9585
- // xSpaceElem.style.width = scrollXLoad ? `${ySpaceWidth}px` : ''
9586
- // }
9587
- // })
9588
- // reactData.scrollXLeft = xSpaceLeft
9589
- // reactData.scrollXWidth = ySpaceWidth
9590
- // reactData.isScrollXBig = isScrollXBig
9591
- // const scrollXSpaceEl = $xeGanttView.$refs.refScrollXSpaceElem as HTMLDivElement
9592
- // if (scrollXSpaceEl) {
9593
- // scrollXSpaceEl.style.width = `${ySpaceWidth}px`
9594
- // }
9595
- // calcScrollbar($xeGanttView)
9596
- // return $xeGanttView.$nextTick().then(() => {
9597
- // updateStyle($xeGanttView)
9598
- // })
9599
- // }
9699
+ function updateScrollXStatus($xeGanttView) {
9700
+ var reactData = $xeGanttView.reactData;
9701
+ var scrollXLoad = true;
9702
+ reactData.scrollXLoad = scrollXLoad;
9703
+ return scrollXLoad;
9704
+ }
9705
+ function handleTableColumn($xeGanttView) {
9706
+ var reactData = $xeGanttView.reactData;
9707
+ var internalData = $xeGanttView.internalData;
9708
+ var scrollXLoad = reactData.scrollXLoad;
9709
+ var visibleColumn = internalData.visibleColumn,
9710
+ scrollXStore = internalData.scrollXStore;
9711
+ var tableColumn = scrollXLoad ? visibleColumn.slice(scrollXStore.startIndex, scrollXStore.endIndex) : visibleColumn.slice(0);
9712
+ reactData.tableColumn = tableColumn;
9713
+ }
9714
+ function updateScrollXSpace($xeGanttView) {
9715
+ var reactData = $xeGanttView.reactData;
9716
+ var internalData = $xeGanttView.internalData;
9717
+ var scrollXLoad = reactData.scrollXLoad,
9718
+ scrollXWidth = reactData.scrollXWidth,
9719
+ viewCellWidth = reactData.viewCellWidth;
9720
+ var elemStore = internalData.elemStore,
9721
+ scrollXStore = internalData.scrollXStore;
9722
+ var bodyTableElem = getRefElem(elemStore['main-body-table']);
9723
+ // const headerTableElem = getRefElem(elemStore['main-header-table'])
9724
+ // const footerTableElem = getRefElem(elemStore['main-footer-table'])
9725
+ var startIndex = scrollXStore.startIndex;
9726
+ var xSpaceLeft = 0;
9727
+ if (scrollXLoad) {
9728
+ xSpaceLeft = Math.max(0, startIndex * viewCellWidth);
9729
+ }
9730
+ // if (headerTableElem) {
9731
+ // headerTableElem.style.transform = `translate(${xSpaceLeft}px, 0px)`
9732
+ // }
9733
+ if (bodyTableElem) {
9734
+ bodyTableElem.style.transform = "translate(".concat(xSpaceLeft, "px, ").concat(reactData.scrollYTop || 0, "px)");
9735
+ }
9736
+ // if (footerTableElem) {
9737
+ // footerTableElem.style.transform = `translate(${xSpaceLeft}px, 0px)`
9738
+ // }
9739
+ var layoutList = ['header', 'body', 'footer'];
9740
+ layoutList.forEach(function (layout) {
9741
+ var xSpaceElem = getRefElem(elemStore["main-".concat(layout, "-xSpace")]);
9742
+ if (xSpaceElem) {
9743
+ xSpaceElem.style.width = scrollXLoad ? "".concat(scrollXWidth, "px") : '';
9744
+ }
9745
+ });
9746
+ var scrollXSpaceEl = $xeGanttView.$refs.refScrollXSpaceElem;
9747
+ if (scrollXSpaceEl) {
9748
+ scrollXSpaceEl.style.width = "".concat(scrollXWidth, "px");
9749
+ }
9750
+ calcScrollbar($xeGanttView);
9751
+ return $xeGanttView.$nextTick();
9752
+ }
9753
+ function triggerScrollXEvent($xeGanttView) {
9754
+ loadScrollXData($xeGanttView);
9755
+ }
9600
9756
  function updateScrollYSpace($xeGanttView) {
9601
9757
  var reactData = $xeGanttView.reactData;
9602
9758
  var internalData = $xeGanttView.internalData;
@@ -9725,6 +9881,8 @@ function syncTableScrollTop($xeGanttView, scrollTop) {
9725
9881
  scrollbarWidth: 0,
9726
9882
  // 横向滚动条的高度
9727
9883
  scrollbarHeight: 0,
9884
+ // 最后滚动时间戳
9885
+ lastScrollTime: 0,
9728
9886
  lazScrollLoading: false,
9729
9887
  scrollVMLoading: false,
9730
9888
  scrollYHeight: 0,
@@ -9853,11 +10011,15 @@ function syncTableScrollTop($xeGanttView, scrollTop) {
9853
10011
  },
9854
10012
  triggerBodyScrollEvent: function triggerBodyScrollEvent(evnt) {
9855
10013
  var $xeGanttView = this;
10014
+ var reactData = $xeGanttView.reactData;
9856
10015
  var internalData = $xeGanttView.internalData;
10016
+ var scrollXLoad = reactData.scrollXLoad;
9857
10017
  var elemStore = internalData.elemStore,
9858
10018
  inVirtualScroll = internalData.inVirtualScroll,
9859
10019
  inHeaderScroll = internalData.inHeaderScroll,
9860
- inFooterScroll = internalData.inFooterScroll;
10020
+ inFooterScroll = internalData.inFooterScroll,
10021
+ lastScrollLeft = internalData.lastScrollLeft,
10022
+ lastScrollTop = internalData.lastScrollTop;
9861
10023
  if (inVirtualScroll) {
9862
10024
  return;
9863
10025
  }
@@ -9868,42 +10030,49 @@ function syncTableScrollTop($xeGanttView, scrollTop) {
9868
10030
  var headerScrollElem = getRefElem(elemStore['main-header-scroll']);
9869
10031
  var xHandleEl = $xeGanttView.$refs.refScrollXHandleElem;
9870
10032
  var yHandleEl = $xeGanttView.$refs.refScrollYHandleElem;
9871
- if (headerScrollElem && wrapperEl) {
9872
- var isRollX = true;
9873
- var isRollY = true;
9874
- var currLeftNum = wrapperEl.scrollLeft;
9875
- var currTopNum = wrapperEl.scrollTop;
10033
+ var scrollLeft = wrapperEl.scrollLeft;
10034
+ var scrollTop = wrapperEl.scrollTop;
10035
+ var isRollX = scrollLeft !== lastScrollLeft;
10036
+ var isRollY = scrollTop !== lastScrollTop;
10037
+ internalData.inBodyScroll = true;
10038
+ internalData.scrollRenderType = '';
10039
+ if (isRollY) {
10040
+ setScrollTop(yHandleEl, scrollTop);
10041
+ syncTableScrollTop($xeGanttView, scrollTop);
10042
+ }
10043
+ if (isRollX) {
9876
10044
  internalData.inBodyScroll = true;
9877
- setScrollLeft(xHandleEl, currLeftNum);
9878
- setScrollLeft(headerScrollElem, currLeftNum);
9879
- setScrollTop(yHandleEl, currTopNum);
9880
- syncTableScrollTop($xeGanttView, currTopNum);
9881
- handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
9882
- }
9883
- },
9884
- triggerFooterScrollEvent: function triggerFooterScrollEvent(evnt) {
9885
- var $xeGanttView = this;
9886
- var internalData = $xeGanttView.internalData;
9887
- var inVirtualScroll = internalData.inVirtualScroll,
9888
- inHeaderScroll = internalData.inHeaderScroll,
9889
- inBodyScroll = internalData.inBodyScroll;
9890
- if (inVirtualScroll) {
9891
- return;
9892
- }
9893
- if (inHeaderScroll || inBodyScroll) {
9894
- return;
9895
- }
9896
- var wrapperEl = evnt.currentTarget;
9897
- if (wrapperEl) {
9898
- var isRollX = true;
9899
- var isRollY = false;
9900
- var currLeftNum = wrapperEl.scrollLeft;
9901
- handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
10045
+ setScrollLeft(xHandleEl, scrollLeft);
10046
+ setScrollLeft(headerScrollElem, scrollLeft);
10047
+ if (scrollXLoad) {
10048
+ triggerScrollXEvent($xeGanttView);
10049
+ }
9902
10050
  }
9903
- },
10051
+ handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, scrollLeft);
10052
+ },
10053
+ // triggerFooterScrollEvent (evnt: Event) {
10054
+ // const $xeGanttView = this
10055
+ // const internalData = $xeGanttView.internalData
10056
+ // const { inVirtualScroll, inHeaderScroll, inBodyScroll } = internalData
10057
+ // if (inVirtualScroll) {
10058
+ // return
10059
+ // }
10060
+ // if (inHeaderScroll || inBodyScroll) {
10061
+ // return
10062
+ // }
10063
+ // const wrapperEl = evnt.currentTarget as HTMLDivElement
10064
+ // if (wrapperEl) {
10065
+ // const isRollX = true
10066
+ // const isRollY = false
10067
+ // const currLeftNum = wrapperEl.scrollLeft
10068
+ // handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum)
10069
+ // }
10070
+ // },
9904
10071
  triggerVirtualScrollXEvent: function triggerVirtualScrollXEvent(evnt) {
9905
10072
  var $xeGanttView = this;
10073
+ var reactData = $xeGanttView.reactData;
9906
10074
  var internalData = $xeGanttView.internalData;
10075
+ var scrollXLoad = reactData.scrollXLoad;
9907
10076
  var elemStore = internalData.elemStore,
9908
10077
  inHeaderScroll = internalData.inHeaderScroll,
9909
10078
  inBodyScroll = internalData.inBodyScroll;
@@ -9920,6 +10089,9 @@ function syncTableScrollTop($xeGanttView, scrollTop) {
9920
10089
  internalData.inVirtualScroll = true;
9921
10090
  setScrollLeft(headerScrollElem, currLeftNum);
9922
10091
  setScrollLeft(bodyScrollElem, currLeftNum);
10092
+ if (scrollXLoad) {
10093
+ triggerScrollXEvent($xeGanttView);
10094
+ }
9923
10095
  handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
9924
10096
  }
9925
10097
  },
@@ -9946,24 +10118,7 @@ function syncTableScrollTop($xeGanttView, scrollTop) {
9946
10118
  },
9947
10119
  handleUpdateSXSpace: function handleUpdateSXSpace() {
9948
10120
  var $xeGanttView = this;
9949
- var reactData = $xeGanttView.reactData;
9950
- var internalData = $xeGanttView.internalData;
9951
- var scrollXLoad = reactData.scrollXLoad,
9952
- scrollXWidth = reactData.scrollXWidth;
9953
- var elemStore = internalData.elemStore;
9954
- var layoutList = ['header', 'body', 'footer'];
9955
- layoutList.forEach(function (layout) {
9956
- var xSpaceElem = getRefElem(elemStore["main-".concat(layout, "-xSpace")]);
9957
- if (xSpaceElem) {
9958
- xSpaceElem.style.width = scrollXLoad ? "".concat(scrollXWidth, "px") : '';
9959
- }
9960
- });
9961
- var scrollXSpaceEl = $xeGanttView.$refs.refScrollXSpaceElem;
9962
- if (scrollXSpaceEl) {
9963
- scrollXSpaceEl.style.width = "".concat(scrollXWidth, "px");
9964
- }
9965
- calcScrollbar($xeGanttView);
9966
- return $xeGanttView.$nextTick();
10121
+ return updateScrollXSpace($xeGanttView);
9967
10122
  },
9968
10123
  handleUpdateSYSpace: function handleUpdateSYSpace() {
9969
10124
  var $xeGanttView = this;
@@ -10371,7 +10526,7 @@ function gantt_createInternalData() {
10371
10526
  stys.maxHeight = maxHeight === 'auto' || maxHeight === '100%' ? '100%' : toCssUnit(maxHeight);
10372
10527
  }
10373
10528
  }
10374
- if (barStyle) {
10529
+ if (barStyle && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(barStyle)) {
10375
10530
  var bgColor = barStyle.bgColor,
10376
10531
  completedBgColor = barStyle.completedBgColor;
10377
10532
  if (bgColor) {
@@ -10604,8 +10759,8 @@ function gantt_createInternalData() {
10604
10759
  type: 'month',
10605
10760
  level: viewTypeLevelMaps.month
10606
10761
  }, {
10607
- type: 'day',
10608
- level: viewTypeLevelMaps.day
10762
+ type: 'date',
10763
+ level: viewTypeLevelMaps.date
10609
10764
  });
10610
10765
  }
10611
10766
  reactData.taskScaleList = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(scaleConfs, {
@@ -10904,20 +11059,20 @@ function gantt_createInternalData() {
10904
11059
  var tipHeight = 0;
10905
11060
  if (rsNumLeftEl) {
10906
11061
  if (offsetLeft < 0) {
11062
+ rsNumLeftEl.style.display = 'none';
11063
+ } else {
10907
11064
  rsNumLeftEl.textContent = "".concat(targetTableWidth, "px");
10908
11065
  rsNumLeftEl.style.display = 'block';
10909
11066
  tipHeight = rsNumLeftEl.offsetHeight;
10910
- } else {
10911
- rsNumLeftEl.style.display = 'none';
10912
11067
  }
10913
11068
  }
10914
11069
  if (rsNumRightEl) {
10915
11070
  if (offsetLeft < 0) {
10916
- rsNumRightEl.style.display = 'none';
10917
- } else {
10918
11071
  rsNumRightEl.textContent = "".concat(Math.floor(containerRect.width - targetTableWidth), "px");
10919
11072
  rsNumRightEl.style.display = 'block';
10920
11073
  tipHeight = rsNumRightEl.offsetHeight;
11074
+ } else {
11075
+ rsNumRightEl.style.display = 'none';
10921
11076
  }
10922
11077
  }
10923
11078
  var tipTop = evnt.clientY - containerRect.top - tipHeight / 2;
@@ -12209,9 +12364,9 @@ function gantt_createInternalData() {
12209
12364
  class: 'vxe-gantt--resizable-split-tip-number'
12210
12365
  }, [h('div', {
12211
12366
  class: 'vxe-gantt--resizable-split-number-left'
12212
- }, '10px'), h('div', {
12367
+ }), h('div', {
12213
12368
  class: 'vxe-gantt--resizable-split-number-right'
12214
- }, '20px')])]), h('div', {
12369
+ })])]), h('div', {
12215
12370
  class: 'vxe-gantt--border-line'
12216
12371
  })]));
12217
12372
  break;