vxe-gantt 3.0.3 → 3.0.5

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 (41) hide show
  1. package/es/gantt/src/gantt-body.js +47 -5
  2. package/es/gantt/src/gantt-header.js +22 -6
  3. package/es/gantt/src/gantt-view.js +230 -87
  4. package/es/gantt/src/gantt.js +64 -2
  5. package/es/gantt/style.css +35 -3
  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 +6 -1
  10. package/es/ui/src/log.js +1 -1
  11. package/es/vxe-gantt/style.css +35 -3
  12. package/es/vxe-gantt/style.min.css +1 -1
  13. package/lib/gantt/src/gantt-body.js +53 -5
  14. package/lib/gantt/src/gantt-body.min.js +1 -1
  15. package/lib/gantt/src/gantt-header.js +29 -6
  16. package/lib/gantt/src/gantt-header.min.js +1 -1
  17. package/lib/gantt/src/gantt-view.js +261 -91
  18. package/lib/gantt/src/gantt-view.min.js +1 -1
  19. package/lib/gantt/src/gantt.js +75 -1
  20. package/lib/gantt/src/gantt.min.js +1 -1
  21. package/lib/gantt/style/style.css +35 -3
  22. package/lib/gantt/style/style.min.css +1 -1
  23. package/lib/index.umd.js +550 -112
  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 +6 -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 +35 -3
  32. package/lib/vxe-gantt/style/style.min.css +1 -1
  33. package/package.json +3 -3
  34. package/packages/gantt/src/gantt-body.ts +51 -6
  35. package/packages/gantt/src/gantt-header.ts +23 -7
  36. package/packages/gantt/src/gantt-view.ts +241 -91
  37. package/packages/gantt/src/gantt.ts +73 -1
  38. package/packages/ui/index.ts +5 -0
  39. package/styles/components/gantt-module/gantt-chart.scss +10 -0
  40. package/styles/components/gantt.scss +37 -3
  41. package/styles/theme/base.scss +1 -1
package/lib/index.umd.js CHANGED
@@ -4901,6 +4901,36 @@ $({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
4901
4901
  });
4902
4902
 
4903
4903
 
4904
+ /***/ }),
4905
+
4906
+ /***/ 113:
4907
+ /***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
4908
+
4909
+ "use strict";
4910
+
4911
+ var $ = __webpack_require__(6518);
4912
+ var $find = (__webpack_require__(9213).find);
4913
+ var addToUnscopables = __webpack_require__(6469);
4914
+
4915
+ var FIND = 'find';
4916
+ var SKIPS_HOLES = true;
4917
+
4918
+ // Shouldn't skip holes
4919
+ // eslint-disable-next-line es/no-array-prototype-find -- testing
4920
+ if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
4921
+
4922
+ // `Array.prototype.find` method
4923
+ // https://tc39.es/ecma262/#sec-array.prototype.find
4924
+ $({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
4925
+ find: function find(callbackfn /* , that = undefined */) {
4926
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
4927
+ }
4928
+ });
4929
+
4930
+ // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
4931
+ addToUnscopables(FIND);
4932
+
4933
+
4904
4934
  /***/ }),
4905
4935
 
4906
4936
  /***/ 3418:
@@ -5024,6 +5054,33 @@ if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {
5024
5054
  } catch (error) { /* empty */ }
5025
5055
 
5026
5056
 
5057
+ /***/ }),
5058
+
5059
+ /***/ 8598:
5060
+ /***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
5061
+
5062
+ "use strict";
5063
+
5064
+ var $ = __webpack_require__(6518);
5065
+ var uncurryThis = __webpack_require__(9504);
5066
+ var IndexedObject = __webpack_require__(7055);
5067
+ var toIndexedObject = __webpack_require__(5397);
5068
+ var arrayMethodIsStrict = __webpack_require__(4598);
5069
+
5070
+ var nativeJoin = uncurryThis([].join);
5071
+
5072
+ var ES3_STRINGS = IndexedObject !== Object;
5073
+ var FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');
5074
+
5075
+ // `Array.prototype.join` method
5076
+ // https://tc39.es/ecma262/#sec-array.prototype.join
5077
+ $({ target: 'Array', proto: true, forced: FORCED }, {
5078
+ join: function join(separator) {
5079
+ return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);
5080
+ }
5081
+ });
5082
+
5083
+
5027
5084
  /***/ }),
5028
5085
 
5029
5086
  /***/ 2062:
@@ -7586,7 +7643,7 @@ var core_ = __webpack_require__(4345);
7586
7643
  ;// CONCATENATED MODULE: ./packages/ui/src/log.ts
7587
7644
 
7588
7645
  var log = core_.VxeUI.log;
7589
- var version = "gantt v".concat("3.0.3");
7646
+ var version = "gantt v".concat("3.0.5");
7590
7647
  var warnLog = log.create('warn', version);
7591
7648
  var errLog = log.create('error', version);
7592
7649
  ;// CONCATENATED MODULE: ./packages/ui/index.ts
@@ -7596,7 +7653,7 @@ var errLog = log.create('error', version);
7596
7653
  var setConfig = core_.VxeUI.setConfig,
7597
7654
  setIcon = core_.VxeUI.setIcon,
7598
7655
  checkVersion = core_.VxeUI.checkVersion;
7599
- core_.VxeUI.ganttVersion = "3.0.3";
7656
+ core_.VxeUI.ganttVersion = "3.0.5";
7600
7657
  setConfig({
7601
7658
  gantt: {
7602
7659
  // size: null,
@@ -7635,6 +7692,11 @@ setConfig({
7635
7692
  // beforeSave: null,
7636
7693
  // afterSave: null
7637
7694
  },
7695
+ taskViewScaleConfs: {
7696
+ week: {
7697
+ startDay: 1
7698
+ }
7699
+ },
7638
7700
  taskSplitConfig: {
7639
7701
  enabled: true,
7640
7702
  resize: true,
@@ -7853,6 +7915,8 @@ function _objectSpread2(e) {
7853
7915
 
7854
7916
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.includes.js
7855
7917
  var es_array_includes = __webpack_require__(4423);
7918
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.join.js
7919
+ var es_array_join = __webpack_require__(8598);
7856
7920
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js
7857
7921
  var es_array_map = __webpack_require__(2062);
7858
7922
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.sort.js
@@ -8287,6 +8351,65 @@ function getSlotVNs(vns) {
8287
8351
  }
8288
8352
  return [vns];
8289
8353
  }
8354
+ ;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
8355
+ function _arrayWithHoles(r) {
8356
+ if (Array.isArray(r)) return r;
8357
+ }
8358
+
8359
+ ;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
8360
+
8361
+
8362
+
8363
+
8364
+
8365
+
8366
+
8367
+
8368
+ function _iterableToArrayLimit(r, l) {
8369
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
8370
+ if (null != t) {
8371
+ var e,
8372
+ n,
8373
+ i,
8374
+ u,
8375
+ a = [],
8376
+ f = !0,
8377
+ o = !1;
8378
+ try {
8379
+ if (i = (t = t.call(r)).next, 0 === l) {
8380
+ if (Object(t) !== t) return;
8381
+ f = !1;
8382
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
8383
+ } catch (r) {
8384
+ o = !0, n = r;
8385
+ } finally {
8386
+ try {
8387
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
8388
+ } finally {
8389
+ if (o) throw n;
8390
+ }
8391
+ }
8392
+ return a;
8393
+ }
8394
+ }
8395
+
8396
+ ;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
8397
+
8398
+ function _nonIterableRest() {
8399
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
8400
+ }
8401
+
8402
+ ;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js
8403
+
8404
+
8405
+
8406
+
8407
+ function _slicedToArray(r, e) {
8408
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
8409
+ }
8410
+
8411
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.find.js
8412
+ var es_array_find = __webpack_require__(113);
8290
8413
  ;// CONCATENATED MODULE: ./packages/gantt/src/util.ts
8291
8414
  function getRefElem(refEl) {
8292
8415
  if (refEl) {
@@ -8301,6 +8424,9 @@ function getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) {
8301
8424
 
8302
8425
 
8303
8426
 
8427
+
8428
+
8429
+ var getI18n = core_.VxeUI.getI18n;
8304
8430
  /* harmony default export */ var gantt_header = (defineVxeComponent({
8305
8431
  name: 'VxeGanttViewHeader',
8306
8432
  inject: {
@@ -8345,18 +8471,39 @@ function getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) {
8345
8471
  width: "".concat(viewCellWidth, "px")
8346
8472
  }
8347
8473
  });
8348
- })), h('thead', {}, headerGroups.map(function (cols, rIndex) {
8474
+ })), h('thead', {}, headerGroups.map(function (_ref, $rowIndex) {
8475
+ var scaleItem = _ref.scaleItem,
8476
+ columns = _ref.columns;
8477
+ var type = scaleItem.type,
8478
+ titleMethod = scaleItem.titleMethod;
8349
8479
  return h('tr', {
8350
- key: rIndex
8351
- }, cols.map(function (column, cIndex) {
8480
+ key: $rowIndex
8481
+ }, columns.map(function (column, cIndex) {
8482
+ var dateObj = column.params;
8483
+ var label = "".concat(column.title);
8484
+ if ($rowIndex < headerGroups.length - 1) {
8485
+ if (scaleItem.type === 'day') {
8486
+ label = getI18n("vxe.gantt.dayss.w".concat(dateObj.e));
8487
+ } else {
8488
+ label = getI18n("vxe.gantt.".concat(!$rowIndex && headerGroups.length > 1 ? 'tFullFormat' : 'tSimpleFormat', ".").concat(type), dateObj);
8489
+ }
8490
+ }
8491
+ if (titleMethod) {
8492
+ label = "".concat(titleMethod({
8493
+ scaleObj: scaleItem,
8494
+ title: label,
8495
+ dateObj: dateObj,
8496
+ $rowIndex: $rowIndex
8497
+ }));
8498
+ }
8352
8499
  return h('th', {
8353
8500
  key: cIndex,
8354
8501
  class: 'vxe-gantt-view--header-column',
8355
8502
  attrs: {
8356
- colspan: column.children ? column.children.length : null,
8357
- title: "".concat(column.field)
8503
+ colspan: column.childCount || null,
8504
+ title: label
8358
8505
  }
8359
- }, column.title);
8506
+ }, label);
8360
8507
  }));
8361
8508
  }))])])]);
8362
8509
  }
@@ -8581,20 +8728,61 @@ var renderEmptyElement = core_.VxeUI.renderEmptyElement;
8581
8728
  //
8582
8729
  // Render
8583
8730
  //
8584
- renderColumn: function renderColumn(h, $xeTable, row, rowid, $rowIndex, column, $columnIndex) {
8731
+ renderColumn: function renderColumn(h, $xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, column, $columnIndex) {
8585
8732
  var _vm = this;
8586
8733
  var $xeGantt = _vm.$xeGantt;
8587
8734
  var tableReactData = $xeTable;
8588
8735
  var resizeHeightFlag = tableReactData.resizeHeightFlag;
8589
8736
  var tableInternalData = $xeTable;
8590
- var fullAllDataRowIdData = tableInternalData.fullAllDataRowIdData;
8737
+ var fullAllDataRowIdData = tableInternalData.fullAllDataRowIdData,
8738
+ visibleColumn = tableInternalData.visibleColumn;
8591
8739
  var cellOpts = $xeTable.computeCellOpts;
8592
8740
  var rowOpts = $xeTable.computeRowOpts;
8593
8741
  var defaultRowHeight = $xeTable.computeDefaultRowHeight;
8742
+ var resizableOpts = $xeTable.computeResizableOpts;
8743
+ var isAllRowDrag = resizableOpts.isAllRowDrag;
8594
8744
  var rowRest = fullAllDataRowIdData[rowid] || {};
8595
8745
  var resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
8596
8746
  var isRsHeight = resizeHeight > 0;
8597
8747
  var cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
8748
+ var tdVNs = [];
8749
+ if (isAllRowDrag && rowOpts.resizable) {
8750
+ var cellParams = {
8751
+ $table: $xeTable,
8752
+ $grid: null,
8753
+ $gantt: $xeGantt,
8754
+ seq: -1,
8755
+ rowid: rowid,
8756
+ row: row,
8757
+ rowIndex: rowIndex,
8758
+ $rowIndex: $rowIndex,
8759
+ _rowIndex: _rowIndex,
8760
+ column: visibleColumn[0],
8761
+ columnIndex: 0,
8762
+ $columnIndex: 0,
8763
+ _columnIndex: 0,
8764
+ fixed: '',
8765
+ type: '',
8766
+ isHidden: false,
8767
+ isEdit: false,
8768
+ level: -1,
8769
+ // 已废弃属性
8770
+ visibleData: [],
8771
+ data: [],
8772
+ items: []
8773
+ };
8774
+ tdVNs.push(h('div', {
8775
+ class: 'vxe-gantt-view-cell--row-resizable',
8776
+ on: {
8777
+ mousedown: function mousedown(evnt) {
8778
+ return $xeTable.handleRowResizeMousedownEvent(evnt, cellParams);
8779
+ },
8780
+ dblclick: function dblclick(evnt) {
8781
+ return $xeTable.handleRowResizeDblclickEvent(evnt, cellParams);
8782
+ }
8783
+ }
8784
+ }));
8785
+ }
8598
8786
  return h('td', {
8599
8787
  key: $columnIndex,
8600
8788
  class: ['vxe-gantt-view--body-column', {
@@ -8617,7 +8805,7 @@ var renderEmptyElement = core_.VxeUI.renderEmptyElement;
8617
8805
  });
8618
8806
  }
8619
8807
  }
8620
- });
8808
+ }, tdVNs);
8621
8809
  },
8622
8810
  renderRows: function renderRows(h, $xeTable, tableData) {
8623
8811
  var _vm = this;
@@ -8631,7 +8819,8 @@ var renderEmptyElement = core_.VxeUI.renderEmptyElement;
8631
8819
  var tableReactData = $xeTable;
8632
8820
  var treeExpandedFlag = tableReactData.treeExpandedFlag,
8633
8821
  selectRadioRow = tableReactData.selectRadioRow,
8634
- pendingRowFlag = tableReactData.pendingRowFlag;
8822
+ pendingRowFlag = tableReactData.pendingRowFlag,
8823
+ isRowGroupStatus = tableReactData.isRowGroupStatus;
8635
8824
  var tableInternalData = $xeTable;
8636
8825
  var fullAllDataRowIdData = tableInternalData.fullAllDataRowIdData,
8637
8826
  treeExpandedMaps = tableInternalData.treeExpandedMaps,
@@ -8672,6 +8861,12 @@ var renderEmptyElement = core_.VxeUI.renderEmptyElement;
8672
8861
  $xeTable.clearHoverRow();
8673
8862
  };
8674
8863
  }
8864
+ // 拖拽行事件
8865
+ if (rowOpts.drag && !isRowGroupStatus && (!treeConfig || transform)) {
8866
+ trOns.dragstart = $xeTable.handleRowDragDragstartEvent;
8867
+ trOns.dragend = $xeTable.handleRowDragDragendEvent;
8868
+ trOns.dragover = $xeTable.handleRowDragDragoverEvent;
8869
+ }
8675
8870
  trVNs.push(h('tr', {
8676
8871
  key: treeConfig ? rowid : $rowIndex,
8677
8872
  class: ['vxe-gantt-view--body-row', {
@@ -8686,7 +8881,7 @@ var renderEmptyElement = core_.VxeUI.renderEmptyElement;
8686
8881
  },
8687
8882
  on: trOns
8688
8883
  }, tableColumn.map(function (column, $columnIndex) {
8689
- return _vm.renderColumn(h, $xeTable, row, rowid, $rowIndex, column, $columnIndex);
8884
+ return _vm.renderColumn(h, $xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, column, $columnIndex);
8690
8885
  })));
8691
8886
  var isExpandTree = false;
8692
8887
  var rowChildren = [];
@@ -8830,6 +9025,8 @@ var renderEmptyElement = core_.VxeUI.renderEmptyElement;
8830
9025
 
8831
9026
 
8832
9027
 
9028
+
9029
+
8833
9030
  var globalEvents = core_.VxeUI.globalEvents;
8834
9031
  function createInternalData() {
8835
9032
  return {
@@ -8873,95 +9070,267 @@ function handleParseColumn($xeGanttView) {
8873
9070
  var reactData = $xeGanttView.reactData;
8874
9071
  var internalData = $xeGanttView.internalData;
8875
9072
  var ganttProps = $xeGantt;
9073
+ var ganttReactData = $xeGantt.reactData;
8876
9074
  var treeConfig = ganttProps.treeConfig;
9075
+ var taskScaleList = ganttReactData.taskScaleList;
8877
9076
  var minViewDate = reactData.minViewDate,
8878
9077
  maxViewDate = reactData.maxViewDate;
8879
- var taskViewOpts = $xeGantt.computeTaskViewOpts;
9078
+ var minScale = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().last(taskScaleList);
8880
9079
  var fullCols = [];
8881
9080
  var groupCols = [];
8882
- switch (taskViewOpts.mode) {
8883
- case 'year':
8884
- break;
8885
- case 'quarter':
8886
- break;
8887
- case 'month':
8888
- break;
8889
- case 'week':
8890
- break;
8891
- default:
8892
- {
8893
- if (minViewDate && maxViewDate) {
8894
- var currTime = minViewDate.getTime();
8895
- var diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
8896
- var countDayNum = Math.max(6, Math.floor(diffDayNum / 86400000) + 1);
8897
- var groupList = [];
8898
- var colList = [];
8899
- var groupMaps = {};
8900
- for (var i = 0; i < countDayNum; i++) {
8901
- var itemDate = new Date(currTime + i * 86400000);
8902
- var yyyyy = "".concat(itemDate.getFullYear(), "-").concat(itemDate.getMonth() + 1);
8903
- var mmDd = "".concat(itemDate.getDate());
8904
- var groupCol = groupMaps[yyyyy];
8905
- var column = {
8906
- field: "".concat(yyyyy, "-").concat(mmDd),
8907
- title: mmDd
8908
- };
8909
- if (groupCol) {
8910
- groupCol.children.push(column);
8911
- fullCols.push(groupCol);
8912
- } else {
8913
- groupCol = {
8914
- field: yyyyy,
8915
- title: yyyyy,
8916
- children: [column]
8917
- };
8918
- groupList.push(groupCol);
8919
- fullCols.push(groupCol);
8920
- groupMaps[yyyyy] = groupCol;
8921
- }
8922
- colList.push(column);
8923
- }
8924
- groupCols.push(groupList, colList);
8925
- var $xeTable = internalData.xeTable;
8926
- if ($xeTable) {
8927
- var startField = $xeGantt.computeStartField;
8928
- var endField = $xeGantt.computeEndField;
8929
- var tableInternalData = $xeTable;
8930
- var afterFullData = tableInternalData.afterFullData,
8931
- afterTreeFullData = tableInternalData.afterTreeFullData;
8932
- var treeOpts = $xeTable.computeTreeOpts;
8933
- var transform = treeOpts.transform;
8934
- var childrenField = treeOpts.children || treeOpts.childrenField;
8935
- var ctMaps = {};
8936
- var handleParseRender = function handleParseRender(row) {
8937
- var rowid = $xeTable.getRowid(row);
8938
- var startValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, startField);
8939
- var endValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, endField);
8940
- if (startValue && endValue) {
8941
- var startDate = parseStringDate($xeGanttView, startValue);
8942
- var endDate = parseStringDate($xeGanttView, endValue);
8943
- var oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / 86400000);
8944
- var oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / 86400000) + 1;
8945
- ctMaps[rowid] = {
8946
- row: row,
8947
- rowid: rowid,
8948
- oLeftSize: oLeftSize,
8949
- oWidthSize: oWidthSize
8950
- };
8951
- }
8952
- };
8953
- if (treeConfig) {
8954
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterTreeFullData, handleParseRender, {
8955
- children: transform ? treeOpts.mapChildrenField : childrenField
8956
- });
8957
- } else {
8958
- afterFullData.forEach(handleParseRender);
8959
- }
8960
- internalData.chartMaps = ctMaps;
8961
- }
9081
+ if (minScale && minViewDate && maxViewDate) {
9082
+ var minSType = minScale.type;
9083
+ var weekScale = taskScaleList.find(function (item) {
9084
+ return item.type === 'week';
9085
+ });
9086
+ var gapTime = 1000 * 60 * 60 * 24;
9087
+ switch (minScale.type) {
9088
+ case 'hour':
9089
+ gapTime = 1000 * 60 * 60;
9090
+ break;
9091
+ case 'minute':
9092
+ gapTime = 1000 * 60;
9093
+ break;
9094
+ case 'second':
9095
+ gapTime = 1000;
9096
+ break;
9097
+ default:
9098
+ {
9099
+ break;
9100
+ }
9101
+ }
9102
+ var currTime = minViewDate.getTime();
9103
+ var diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
9104
+ 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;
8962
9112
  }
8963
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
+ }
9136
+ var renderListMaps = {
9137
+ year: [],
9138
+ quarter: [],
9139
+ month: [],
9140
+ week: [],
9141
+ day: [],
9142
+ date: [],
9143
+ hour: [],
9144
+ minute: [],
9145
+ second: []
9146
+ };
9147
+ var tempTypeMaps = {
9148
+ year: {},
9149
+ quarter: {},
9150
+ month: {},
9151
+ week: {},
9152
+ day: {},
9153
+ date: {},
9154
+ hour: {},
9155
+ minute: {},
9156
+ second: {}
9157
+ };
9158
+ var handleData = function handleData(type, colMaps, minCol) {
9159
+ if (minSType === type) {
9160
+ return;
9161
+ }
9162
+ var currCol = colMaps[type];
9163
+ var currKey = "".concat(currCol.field);
9164
+ var currGpCol = tempTypeMaps[type][currKey];
9165
+ if (!currGpCol) {
9166
+ currGpCol = currCol;
9167
+ tempTypeMaps[type][currKey] = currGpCol;
9168
+ renderListMaps[type].push(currGpCol);
9169
+ }
9170
+ if (currGpCol) {
9171
+ if (!currGpCol.children) {
9172
+ currGpCol.children = [];
9173
+ }
9174
+ currGpCol.children.push(minCol);
9175
+ }
9176
+ };
9177
+ for (var i = 0; i < countSize; i++) {
9178
+ var itemDate = new Date(currTime + i * gapTime);
9179
+ var _XEUtils$toDateString = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(itemDate, 'yyyy-M-d-H-m-s').split('-'),
9180
+ _XEUtils$toDateString2 = _slicedToArray(_XEUtils$toDateString, 6),
9181
+ yyyy = _XEUtils$toDateString2[0],
9182
+ MM = _XEUtils$toDateString2[1],
9183
+ dd = _XEUtils$toDateString2[2],
9184
+ HH = _XEUtils$toDateString2[3],
9185
+ mm = _XEUtils$toDateString2[4],
9186
+ ss = _XEUtils$toDateString2[5];
9187
+ var e = itemDate.getDay();
9188
+ var E = e + 1;
9189
+ var q = Math.ceil((itemDate.getMonth() + 1) / 3);
9190
+ var W = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined);
9191
+ var dateObj = {
9192
+ yy: yyyy,
9193
+ M: MM,
9194
+ d: dd,
9195
+ H: HH,
9196
+ m: mm,
9197
+ s: ss,
9198
+ q: q,
9199
+ W: W,
9200
+ E: E,
9201
+ e: e
9202
+ };
9203
+ var colMaps = {
9204
+ year: {
9205
+ field: yyyy,
9206
+ title: yyyy,
9207
+ params: dateObj
9208
+ },
9209
+ quarter: {
9210
+ field: "".concat(yyyy, "_q").concat(q),
9211
+ title: q,
9212
+ params: dateObj
9213
+ },
9214
+ month: {
9215
+ field: "".concat(yyyy, "_").concat(MM),
9216
+ title: MM,
9217
+ params: dateObj
9218
+ },
9219
+ week: {
9220
+ field: "".concat(yyyy, "_W").concat(W),
9221
+ title: W,
9222
+ params: dateObj
9223
+ },
9224
+ day: {
9225
+ field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_E").concat(E),
9226
+ title: E,
9227
+ params: dateObj
9228
+ },
9229
+ date: {
9230
+ field: "".concat(yyyy, "_").concat(MM, "_").concat(dd),
9231
+ title: dd,
9232
+ params: dateObj
9233
+ },
9234
+ hour: {
9235
+ field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH),
9236
+ title: HH,
9237
+ params: dateObj
9238
+ },
9239
+ minute: {
9240
+ field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH, "_").concat(mm),
9241
+ title: mm,
9242
+ params: dateObj
9243
+ },
9244
+ second: {
9245
+ field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH, "_").concat(mm, "_").concat(ss),
9246
+ title: ss,
9247
+ params: dateObj
9248
+ }
9249
+ };
9250
+ var minCol = colMaps[minSType];
9251
+ if (minScale.level < 19) {
9252
+ handleData('year', colMaps, minCol);
9253
+ }
9254
+ if (minScale.level < 17) {
9255
+ handleData('quarter', colMaps, minCol);
9256
+ }
9257
+ if (minScale.level < 14) {
9258
+ handleData('month', colMaps, minCol);
9259
+ }
9260
+ if (minScale.level < 13) {
9261
+ handleData('week', colMaps, minCol);
9262
+ }
9263
+ if (minScale.level < 11) {
9264
+ handleData('day', colMaps, minCol);
9265
+ }
9266
+ if (minScale.level < 12) {
9267
+ handleData('date', colMaps, minCol);
9268
+ }
9269
+ if (minScale.level < 7) {
9270
+ handleData('hour', colMaps, minCol);
9271
+ }
9272
+ if (minScale.level < 5) {
9273
+ handleData('minute', colMaps, minCol);
8964
9274
  }
9275
+ fullCols.push(minCol);
9276
+ }
9277
+ taskScaleList.forEach(function (scaleItem) {
9278
+ if (scaleItem.type === minSType) {
9279
+ groupCols.push({
9280
+ scaleItem: scaleItem,
9281
+ columns: fullCols
9282
+ });
9283
+ return;
9284
+ }
9285
+ var list = renderListMaps[scaleItem.type] || [];
9286
+ if (list) {
9287
+ list.forEach(function (item) {
9288
+ item.childCount = item.children ? item.children.length : 0;
9289
+ item.children = undefined;
9290
+ });
9291
+ }
9292
+ groupCols.push({
9293
+ scaleItem: scaleItem,
9294
+ columns: list
9295
+ });
9296
+ });
9297
+ var $xeTable = internalData.xeTable;
9298
+ if ($xeTable) {
9299
+ var startField = $xeGantt.computeStartField;
9300
+ var endField = $xeGantt.computeEndField;
9301
+ var tableInternalData = $xeTable;
9302
+ var afterFullData = tableInternalData.afterFullData,
9303
+ afterTreeFullData = tableInternalData.afterTreeFullData;
9304
+ var treeOpts = $xeTable.computeTreeOpts;
9305
+ var transform = treeOpts.transform;
9306
+ var childrenField = treeOpts.children || treeOpts.childrenField;
9307
+ var ctMaps = {};
9308
+ var handleParseRender = function handleParseRender(row) {
9309
+ var rowid = $xeTable.getRowid(row);
9310
+ var startValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, startField);
9311
+ var endValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, endField);
9312
+ if (startValue && endValue) {
9313
+ var startDate = parseStringDate($xeGanttView, startValue);
9314
+ var endDate = parseStringDate($xeGanttView, endValue);
9315
+ var oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / gapTime);
9316
+ var oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / gapTime) + 1;
9317
+ ctMaps[rowid] = {
9318
+ row: row,
9319
+ rowid: rowid,
9320
+ oLeftSize: oLeftSize,
9321
+ oWidthSize: oWidthSize
9322
+ };
9323
+ }
9324
+ };
9325
+ if (treeConfig) {
9326
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterTreeFullData, handleParseRender, {
9327
+ children: transform ? treeOpts.mapChildrenField : childrenField
9328
+ });
9329
+ } else {
9330
+ afterFullData.forEach(handleParseRender);
9331
+ }
9332
+ internalData.chartMaps = ctMaps;
9333
+ }
8965
9334
  }
8966
9335
  reactData.tableColumn = fullCols;
8967
9336
  reactData.headerGroups = groupCols;
@@ -9369,14 +9738,7 @@ function syncTableScrollTop($xeGanttView, scrollTop) {
9369
9738
  tableData: [],
9370
9739
  tableColumn: [],
9371
9740
  headerGroups: [],
9372
- viewCellWidth: 40,
9373
- rowHeightStore: {
9374
- large: 52,
9375
- default: 48,
9376
- medium: 44,
9377
- small: 40,
9378
- mini: 36
9379
- }
9741
+ viewCellWidth: 20
9380
9742
  };
9381
9743
  var internalData = createInternalData();
9382
9744
  return {
@@ -9691,11 +10053,10 @@ function syncTableScrollTop($xeGanttView, scrollTop) {
9691
10053
  overflowY = reactData.overflowY,
9692
10054
  scrollXLoad = reactData.scrollXLoad,
9693
10055
  scrollYLoad = reactData.scrollYLoad;
9694
- var taskViewOpts = $xeGantt.computeTaskViewOpts;
9695
10056
  var scrollbarXToTop = $xeGantt.computeScrollbarXToTop;
9696
10057
  return h('div', {
9697
10058
  ref: 'refElem',
9698
- class: ['vxe-gantt-view', "mode--".concat(taskViewOpts.mode || 'day'), {
10059
+ class: ['vxe-gantt-view', {
9699
10060
  'is--scroll-y': overflowY,
9700
10061
  'is--scroll-x': overflowX,
9701
10062
  'is--virtual-x': scrollXLoad,
@@ -9753,13 +10114,16 @@ var external_root_VxeUITable_commonjs_vxe_table_commonjs2_vxe_table_amd_vxe_tabl
9753
10114
 
9754
10115
 
9755
10116
 
10117
+
10118
+
10119
+
9756
10120
 
9757
10121
 
9758
10122
 
9759
10123
 
9760
10124
  var gantt_getConfig = core_.VxeUI.getConfig,
9761
10125
  getIcon = core_.VxeUI.getIcon,
9762
- getI18n = core_.VxeUI.getI18n,
10126
+ gantt_getI18n = core_.VxeUI.getI18n,
9763
10127
  commands = core_.VxeUI.commands,
9764
10128
  globalMixins = core_.VxeUI.globalMixins,
9765
10129
  createEvent = core_.VxeUI.createEvent,
@@ -9770,6 +10134,20 @@ var tableProps = external_root_VxeUITable_commonjs_vxe_table_commonjs2_vxe_table
9770
10134
  var tableMethods = {};
9771
10135
  var propKeys = Object.keys(tableProps);
9772
10136
  var defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Gantt', 'Bottom', 'Pager']];
10137
+ var viewTypeLevelMaps = {
10138
+ year: 19,
10139
+ quarter: 17,
10140
+ month: 15,
10141
+ week: 13,
10142
+ day: 11,
10143
+ date: 9,
10144
+ hour: 7,
10145
+ minute: 5,
10146
+ second: 3
10147
+ };
10148
+ function getViewTypeLevel(type) {
10149
+ return viewTypeLevelMaps[type || 'date'] || viewTypeLevelMaps.date;
10150
+ }
9773
10151
  function getTableOns($xeGantt) {
9774
10152
  var _vm = $xeGantt;
9775
10153
  var $listeners = _vm.$listeners;
@@ -9821,6 +10199,7 @@ function gantt_createInternalData() {
9821
10199
  zoomConfig: Object,
9822
10200
  layouts: Array,
9823
10201
  taskConfig: Object,
10202
+ taskViewScaleConfs: Object,
9824
10203
  taskViewConfig: Object,
9825
10204
  taskBarConfig: Object,
9826
10205
  taskSplitConfig: Object,
@@ -9857,7 +10236,8 @@ function gantt_createInternalData() {
9857
10236
  currentPage: 1
9858
10237
  },
9859
10238
  showLeftView: true,
9860
- showRightView: true
10239
+ showRightView: true,
10240
+ taskScaleList: []
9861
10241
  };
9862
10242
  var internalData = gantt_createInternalData();
9863
10243
  return {
@@ -9907,6 +10287,11 @@ function gantt_createInternalData() {
9907
10287
  var props = $xeGantt;
9908
10288
  return Object.assign({}, gantt_getConfig().gantt.taskConfig, props.taskConfig);
9909
10289
  },
10290
+ computeTaskViewScaleMapsOpts: function computeTaskViewScaleMapsOpts() {
10291
+ var $xeGantt = this;
10292
+ var props = $xeGantt;
10293
+ return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().merge({}, gantt_getConfig().gantt.taskViewScaleConfs, props.taskViewScaleConfs);
10294
+ },
9910
10295
  computeTaskViewOpts: function computeTaskViewOpts() {
9911
10296
  var $xeGantt = this;
9912
10297
  var props = $xeGantt;
@@ -9922,6 +10307,12 @@ function gantt_createInternalData() {
9922
10307
  var props = $xeGantt;
9923
10308
  return Object.assign({}, gantt_getConfig().gantt.taskSplitConfig, props.taskSplitConfig);
9924
10309
  },
10310
+ computeTaskScaleConfs: function computeTaskScaleConfs() {
10311
+ var $xeGantt = this;
10312
+ var taskViewOpts = $xeGantt.computeTaskViewOpts;
10313
+ var scales = taskViewOpts.scales;
10314
+ return scales;
10315
+ },
9925
10316
  computeTitleField: function computeTitleField() {
9926
10317
  var $xeGantt = this;
9927
10318
  var taskOpts = $xeGantt.computeTaskOpts;
@@ -10167,6 +10558,10 @@ function gantt_createInternalData() {
10167
10558
  proxyConfig: function proxyConfig() {
10168
10559
  var $xeGantt = this;
10169
10560
  $xeGantt.initProxy();
10561
+ },
10562
+ computeTaskScaleConfs: function computeTaskScaleConfs() {
10563
+ var $xeGantt = this;
10564
+ $xeGantt.handleTaskScaleConfig();
10170
10565
  }
10171
10566
  },
10172
10567
  methods: _objectSpread2(_objectSpread2({}, tableMethods), {}, {
@@ -10177,6 +10572,47 @@ function gantt_createInternalData() {
10177
10572
  $gantt: $xeGantt
10178
10573
  }, params));
10179
10574
  },
10575
+ handleTaskScaleConfig: function handleTaskScaleConfig() {
10576
+ var $xeGantt = this;
10577
+ var reactData = $xeGantt.reactData;
10578
+ var taskScaleConfs = $xeGantt.computeTaskScaleConfs;
10579
+ var taskViewScaleMapsOpts = $xeGantt.computeTaskViewScaleMapsOpts;
10580
+ var scaleConfs = [];
10581
+ if (taskScaleConfs) {
10582
+ var keyMaps = {};
10583
+ taskScaleConfs.forEach(function (conf) {
10584
+ var sConf = !conf || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(conf) ? {
10585
+ type: conf
10586
+ } : conf;
10587
+ var type = sConf.type;
10588
+ if (!type || !viewTypeLevelMaps[type]) {
10589
+ errLog('vxe.error.errProp', ["type=".concat(type), external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(viewTypeLevelMaps).join(',')]);
10590
+ return;
10591
+ }
10592
+ if (keyMaps[type]) {
10593
+ errLog('vxe.error.repeatProp', ['type', type]);
10594
+ return;
10595
+ }
10596
+ keyMaps[type] = true;
10597
+ scaleConfs.push(Object.assign({}, type ? taskViewScaleMapsOpts[type] || {} : {}, sConf, {
10598
+ level: getViewTypeLevel(type)
10599
+ }));
10600
+ });
10601
+ }
10602
+ if (!scaleConfs.length) {
10603
+ scaleConfs.push({
10604
+ type: 'month',
10605
+ level: viewTypeLevelMaps.month
10606
+ }, {
10607
+ type: 'day',
10608
+ level: viewTypeLevelMaps.day
10609
+ });
10610
+ }
10611
+ reactData.taskScaleList = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(scaleConfs, {
10612
+ field: 'level',
10613
+ order: 'desc'
10614
+ });
10615
+ },
10180
10616
  initToolbar: function initToolbar() {
10181
10617
  var $xeGantt = this;
10182
10618
  $xeGantt.$nextTick(function () {
@@ -10236,7 +10672,7 @@ function gantt_createInternalData() {
10236
10672
  if (core_.VxeUI.modal) {
10237
10673
  core_.VxeUI.modal.message({
10238
10674
  id: code,
10239
- content: getI18n('vxe.grid.selectOneRecord'),
10675
+ content: gantt_getI18n('vxe.grid.selectOneRecord'),
10240
10676
  status: 'warning'
10241
10677
  });
10242
10678
  }
@@ -10258,7 +10694,7 @@ function gantt_createInternalData() {
10258
10694
  $gantt: $xeGantt
10259
10695
  }) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(rest, messageProp);
10260
10696
  }
10261
- return msg || getI18n(defaultMsg);
10697
+ return msg || gantt_getI18n(defaultMsg);
10262
10698
  },
10263
10699
  handleDeleteRow: function handleDeleteRow(code, alertKey, callback) {
10264
10700
  var $xeGantt = this;
@@ -10269,7 +10705,7 @@ function gantt_createInternalData() {
10269
10705
  if (core_.VxeUI.modal) {
10270
10706
  return core_.VxeUI.modal.confirm({
10271
10707
  id: "cfm_".concat(code),
10272
- content: getI18n(alertKey),
10708
+ content: gantt_getI18n(alertKey),
10273
10709
  escClosable: true
10274
10710
  }).then(function (type) {
10275
10711
  if (type === 'confirm') {
@@ -10281,7 +10717,7 @@ function gantt_createInternalData() {
10281
10717
  if (core_.VxeUI.modal) {
10282
10718
  core_.VxeUI.modal.message({
10283
10719
  id: "msg_".concat(code),
10284
- content: getI18n('vxe.grid.selectOneRecord'),
10720
+ content: gantt_getI18n('vxe.grid.selectOneRecord'),
10285
10721
  status: 'warning'
10286
10722
  });
10287
10723
  }
@@ -10924,7 +11360,7 @@ function gantt_createInternalData() {
10924
11360
  }
10925
11361
  core_.VxeUI.modal.message({
10926
11362
  id: code,
10927
- content: getI18n('vxe.grid.selectOneRecord'),
11363
+ content: gantt_getI18n('vxe.grid.selectOneRecord'),
10928
11364
  status: 'warning'
10929
11365
  });
10930
11366
  }
@@ -11036,7 +11472,7 @@ function gantt_createInternalData() {
11036
11472
  }
11037
11473
  core_.VxeUI.modal.message({
11038
11474
  id: code,
11039
- content: getI18n('vxe.grid.dataUnchanged'),
11475
+ content: gantt_getI18n('vxe.grid.dataUnchanged'),
11040
11476
  status: 'info'
11041
11477
  });
11042
11478
  }
@@ -11638,6 +12074,7 @@ function gantt_createInternalData() {
11638
12074
  var slots = $xeGantt.$scopedSlots;
11639
12075
  var tableProps = $xeGantt.computeTableProps;
11640
12076
  return h('div', {
12077
+ ref: 'refTableWrapper',
11641
12078
  class: 'vxe-gantt--table-wrapper'
11642
12079
  }, [h(external_root_VxeUITable_commonjs_vxe_table_commonjs2_vxe_table_amd_vxe_table_.VxeTable, {
11643
12080
  key: 'table',
@@ -11873,6 +12310,7 @@ function gantt_createInternalData() {
11873
12310
  }
11874
12311
  }
11875
12312
  });
12313
+ $xeGantt.handleTaskScaleConfig();
11876
12314
  $xeGantt.initPages();
11877
12315
  },
11878
12316
  mounted: function mounted() {