vxe-gantt 3.0.22 → 3.0.24

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.
@@ -1,5 +1,7 @@
1
1
  import { defineVxeComponent } from '../../ui/src/comp';
2
2
  import { getCellRestHeight } from './util';
3
+ import { getClass } from '../../ui/src/utils';
4
+ import XEUtils from 'xe-utils';
3
5
  import GanttViewChartComponent from './gantt-chart';
4
6
  const sourceType = 'gantt';
5
7
  const viewType = 'body';
@@ -35,9 +37,10 @@ export default defineVxeComponent({
35
37
  const { headerGroups } = reactData;
36
38
  const { todayDateMaps } = internalData;
37
39
  const taskViewOpts = $xeGantt.computeTaskViewOpts;
38
- const { showNowLine } = taskViewOpts;
40
+ const { showNowLine, viewStyle } = taskViewOpts;
39
41
  const { scaleItem } = headerGroups[headerGroups.length - 1] || {};
40
- const { field } = column;
42
+ const { field, dateObj } = column;
43
+ const { cellClassName, cellStyle } = viewStyle || {};
41
44
  const todayValue = showNowLine && scaleItem ? todayDateMaps[scaleItem.type] : null;
42
45
  const rowRest = fullAllDataRowIdData[rowid] || {};
43
46
  const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
@@ -78,16 +81,24 @@ export default defineVxeComponent({
78
81
  }
79
82
  }));
80
83
  }
81
- const ctParams = { source: sourceType, type: viewType, row, column, $rowIndex, rowIndex, _rowIndex };
84
+ const ctParams = { source: sourceType, type: viewType, dateObj, row, column, $rowIndex, rowIndex, _rowIndex };
82
85
  return h('td', {
83
86
  key: $columnIndex,
84
- class: ['vxe-gantt-view--body-column', {
87
+ class: [
88
+ 'vxe-gantt-view--body-column',
89
+ {
85
90
  'is--now': showNowLine && todayValue === field,
86
91
  'col--rs-height': isRsHeight
87
- }],
88
- style: {
89
- height: `${cellHeight}px`
90
- },
92
+ },
93
+ getClass(cellClassName, ctParams)
94
+ ],
95
+ style: cellStyle
96
+ ? Object.assign({}, XEUtils.isFunction(cellStyle) ? cellStyle(ctParams) : cellStyle, {
97
+ height: `${cellHeight}px`
98
+ })
99
+ : {
100
+ height: `${cellHeight}px`
101
+ },
91
102
  on: {
92
103
  click(evnt) {
93
104
  $xeGantt.handleTaskCellClickEvent(evnt, { row, column });
@@ -104,6 +115,7 @@ export default defineVxeComponent({
104
115
  renderRows(h, $xeTable, tableData) {
105
116
  const _vm = this;
106
117
  const $xeGanttView = _vm.$xeGanttView;
118
+ const $xeGantt = _vm.$xeGantt;
107
119
  const { reactData } = $xeGanttView;
108
120
  const tableProps = $xeTable;
109
121
  const { treeConfig, stripe, highlightHoverRow, editConfig } = tableProps;
@@ -117,6 +129,9 @@ export default defineVxeComponent({
117
129
  const treeOpts = $xeTable.computeTreeOpts;
118
130
  const { transform } = treeOpts;
119
131
  const childrenField = treeOpts.children || treeOpts.childrenField;
132
+ const taskViewOpts = $xeGantt.computeTaskViewOpts;
133
+ const { viewStyle } = taskViewOpts;
134
+ const { rowClassName, rowStyle } = viewStyle || {};
120
135
  const { tableColumn, scrollYLoad } = reactData;
121
136
  const trVNs = [];
122
137
  tableData.forEach((row, $rowIndex) => {
@@ -149,15 +164,21 @@ export default defineVxeComponent({
149
164
  trOns.dragend = $xeTable.handleRowDragDragendEvent;
150
165
  trOns.dragover = $xeTable.handleRowDragDragoverEvent;
151
166
  }
167
+ const rowParams = { source: sourceType, type: viewType, row, rowIndex, $rowIndex, _rowIndex };
152
168
  trVNs.push(h('tr', {
153
169
  key: treeConfig ? rowid : $rowIndex,
154
- class: ['vxe-gantt-view--body-row', {
170
+ class: [
171
+ 'vxe-gantt-view--body-row',
172
+ {
155
173
  'row--stripe': stripe && (_rowIndex + 1) % 2 === 0,
156
174
  'is--new': isNewRow,
157
175
  'row--radio': radioOpts.highlight && $xeTable.eqRow(selectRadioRow, row),
158
176
  'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
159
177
  'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid]
160
- }],
178
+ },
179
+ getClass(rowClassName, rowParams)
180
+ ],
181
+ style: rowStyle ? XEUtils.isFunction(rowStyle) ? rowStyle(rowParams) : rowStyle : undefined,
161
182
  attrs: {
162
183
  rowid
163
184
  },
@@ -7,6 +7,7 @@ import GanttViewHeaderComponent from './gantt-header';
7
7
  import GanttViewBodyComponent from './gantt-body';
8
8
  import GanttViewFooterComponent from './gantt-footer';
9
9
  const { globalEvents } = VxeUI;
10
+ const sourceType = 'gantt';
10
11
  function createInternalData() {
11
12
  return {
12
13
  xeTable: null,
@@ -751,10 +752,104 @@ function checkLastSyncScroll($xeGanttView, isRollX, isRollY) {
751
752
  reactData.lazScrollLoading = false;
752
753
  }, 200);
753
754
  }
754
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
755
- function handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, scrollTop, scrollLeft) {
755
+ function handleScrollData($xeGanttView, isRollY, isRollX, scrollTop, scrollLeft) {
756
+ const reactData = $xeGanttView.reactData;
757
+ const internalData = $xeGanttView.internalData;
758
+ if (isRollX) {
759
+ internalData.lastScrollLeft = scrollLeft;
760
+ }
761
+ if (isRollY) {
762
+ internalData.lastScrollTop = scrollTop;
763
+ }
764
+ reactData.lastScrollTime = Date.now();
756
765
  checkLastSyncScroll($xeGanttView, isRollX, isRollY);
757
766
  }
767
+ function handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, scrollTop, scrollLeft) {
768
+ const $xeGantt = $xeGanttView.$xeGantt;
769
+ const internalData = $xeGanttView.internalData;
770
+ const $xeTable = internalData.xeTable;
771
+ const { lastScrollLeft, lastScrollTop } = internalData;
772
+ const xHandleEl = $xeGanttView.$refs.refScrollXHandleElem;
773
+ const yHandleEl = $xeGanttView.$refs.refScrollYHandleElem;
774
+ if (!xHandleEl || !yHandleEl) {
775
+ return;
776
+ }
777
+ if (!$xeTable) {
778
+ return;
779
+ }
780
+ const bodyHeight = yHandleEl.clientHeight;
781
+ const bodyWidth = xHandleEl.clientWidth;
782
+ const scrollHeight = yHandleEl.scrollHeight;
783
+ const scrollWidth = xHandleEl.scrollWidth;
784
+ let isTop = false;
785
+ let isBottom = false;
786
+ let isLeft = false;
787
+ let isRight = false;
788
+ let direction = '';
789
+ let isTopBoundary = false;
790
+ let isBottomBoundary = false;
791
+ let isLeftBoundary = false;
792
+ let isRightBoundary = false;
793
+ if (isRollX) {
794
+ const xThreshold = $xeTable.computeScrollXThreshold;
795
+ isLeft = scrollLeft <= 0;
796
+ if (!isLeft) {
797
+ isRight = scrollLeft + bodyWidth >= scrollWidth - 1;
798
+ }
799
+ if (scrollLeft > lastScrollLeft) {
800
+ direction = 'right';
801
+ if (scrollLeft + bodyWidth >= scrollWidth - xThreshold) {
802
+ isRightBoundary = true;
803
+ }
804
+ }
805
+ else {
806
+ direction = 'left';
807
+ if (scrollLeft <= xThreshold) {
808
+ isLeftBoundary = true;
809
+ }
810
+ }
811
+ }
812
+ if (isRollY) {
813
+ const yThreshold = $xeTable.computeScrollYThreshold;
814
+ isTop = scrollTop <= 0;
815
+ if (!isTop) {
816
+ isBottom = scrollTop + bodyHeight >= scrollHeight - 1;
817
+ }
818
+ if (scrollTop > lastScrollTop) {
819
+ direction = 'bottom';
820
+ if (scrollTop + bodyHeight >= scrollHeight - yThreshold) {
821
+ isBottomBoundary = true;
822
+ }
823
+ }
824
+ else {
825
+ direction = 'top';
826
+ if (scrollTop <= yThreshold) {
827
+ isTopBoundary = true;
828
+ }
829
+ }
830
+ }
831
+ handleScrollData($xeGanttView, isRollY, isRollX, scrollTop, scrollLeft);
832
+ const evntParams = {
833
+ source: sourceType,
834
+ scrollTop,
835
+ scrollLeft,
836
+ bodyHeight,
837
+ bodyWidth,
838
+ scrollHeight,
839
+ scrollWidth,
840
+ isX: isRollX,
841
+ isY: isRollY,
842
+ isTop,
843
+ isBottom,
844
+ isLeft,
845
+ isRight,
846
+ direction
847
+ };
848
+ if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
849
+ $xeGantt.dispatchEvent('scroll-boundary', evntParams, evnt);
850
+ }
851
+ $xeGantt.dispatchEvent('scroll', evntParams, evnt);
852
+ }
758
853
  /**
759
854
  * 同步表格滚动
760
855
  */
package/es/ui/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  import { errLog } from './src/log';
3
3
  const { setConfig, setIcon, checkVersion } = VxeUI;
4
- VxeUI.ganttVersion = "3.0.22";
4
+ VxeUI.ganttVersion = "3.0.24";
5
5
  setConfig({
6
6
  gantt: {
7
7
  // size: null,
package/es/ui/src/dom.js CHANGED
@@ -39,7 +39,7 @@ function getNodeOffset(elem, container, rest) {
39
39
  return rest;
40
40
  }
41
41
  export function isPx(val) {
42
- return val && /^\d+(\.\d+)?px?$/.test(val);
42
+ return val && /^\d+(\.\d+)?(px)?$/.test(val);
43
43
  }
44
44
  export function isScale(val) {
45
45
  return val && /^\d+(\.\d+)?%$/.test(val);
package/es/ui/src/log.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { log } = VxeUI;
3
- const version = `gantt v${"3.0.22"}`;
3
+ const version = `gantt v${"3.0.24"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);
@@ -39,3 +39,6 @@ export function eqEmptyValue(cellValue) {
39
39
  export function getStringValue(cellValue) {
40
40
  return eqEmptyValue(cellValue) ? '' : cellValue;
41
41
  }
42
+ export function getClass(property, params) {
43
+ return property ? XEUtils.isFunction(property) ? property(params) : property : '';
44
+ }
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _comp = require("../../ui/src/comp");
8
8
  var _util = require("./util");
9
+ var _utils = require("../../ui/src/utils");
10
+ var _xeUtils = _interopRequireDefault(require("xe-utils"));
9
11
  var _ganttChart = _interopRequireDefault(require("./gantt-chart"));
10
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
13
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
@@ -50,10 +52,15 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
50
52
  var headerGroups = reactData.headerGroups;
51
53
  var todayDateMaps = internalData.todayDateMaps;
52
54
  var taskViewOpts = $xeGantt.computeTaskViewOpts;
53
- var showNowLine = taskViewOpts.showNowLine;
55
+ var showNowLine = taskViewOpts.showNowLine,
56
+ viewStyle = taskViewOpts.viewStyle;
54
57
  var _ref = headerGroups[headerGroups.length - 1] || {},
55
58
  scaleItem = _ref.scaleItem;
56
- var field = column.field;
59
+ var field = column.field,
60
+ dateObj = column.dateObj;
61
+ var _ref2 = viewStyle || {},
62
+ cellClassName = _ref2.cellClassName,
63
+ cellStyle = _ref2.cellStyle;
57
64
  var todayValue = showNowLine && scaleItem ? todayDateMaps[scaleItem.type] : null;
58
65
  var rowRest = fullAllDataRowIdData[rowid] || {};
59
66
  var resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
@@ -101,6 +108,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
101
108
  var ctParams = {
102
109
  source: sourceType,
103
110
  type: viewType,
111
+ dateObj: dateObj,
104
112
  row: row,
105
113
  column: column,
106
114
  $rowIndex: $rowIndex,
@@ -112,8 +120,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
112
120
  class: ['vxe-gantt-view--body-column', {
113
121
  'is--now': showNowLine && todayValue === field,
114
122
  'col--rs-height': isRsHeight
115
- }],
116
- style: {
123
+ }, (0, _utils.getClass)(cellClassName, ctParams)],
124
+ style: cellStyle ? Object.assign({}, _xeUtils.default.isFunction(cellStyle) ? cellStyle(ctParams) : cellStyle, {
125
+ height: "".concat(cellHeight, "px")
126
+ }) : {
117
127
  height: "".concat(cellHeight, "px")
118
128
  },
119
129
  on: {
@@ -138,6 +148,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
138
148
  renderRows: function renderRows(h, $xeTable, tableData) {
139
149
  var _vm = this;
140
150
  var $xeGanttView = _vm.$xeGanttView;
151
+ var $xeGantt = _vm.$xeGantt;
141
152
  var reactData = $xeGanttView.reactData;
142
153
  var tableProps = $xeTable;
143
154
  var treeConfig = tableProps.treeConfig,
@@ -159,6 +170,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
159
170
  var treeOpts = $xeTable.computeTreeOpts;
160
171
  var transform = treeOpts.transform;
161
172
  var childrenField = treeOpts.children || treeOpts.childrenField;
173
+ var taskViewOpts = $xeGantt.computeTaskViewOpts;
174
+ var viewStyle = taskViewOpts.viewStyle;
175
+ var _ref3 = viewStyle || {},
176
+ rowClassName = _ref3.rowClassName,
177
+ rowStyle = _ref3.rowStyle;
162
178
  var tableColumn = reactData.tableColumn,
163
179
  scrollYLoad = reactData.scrollYLoad;
164
180
  var trVNs = [];
@@ -195,6 +211,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
195
211
  trOns.dragend = $xeTable.handleRowDragDragendEvent;
196
212
  trOns.dragover = $xeTable.handleRowDragDragoverEvent;
197
213
  }
214
+ var rowParams = {
215
+ source: sourceType,
216
+ type: viewType,
217
+ row: row,
218
+ rowIndex: rowIndex,
219
+ $rowIndex: $rowIndex,
220
+ _rowIndex: _rowIndex
221
+ };
198
222
  trVNs.push(h('tr', {
199
223
  key: treeConfig ? rowid : $rowIndex,
200
224
  class: ['vxe-gantt-view--body-row', {
@@ -203,7 +227,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
203
227
  'row--radio': radioOpts.highlight && $xeTable.eqRow(selectRadioRow, row),
204
228
  'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
205
229
  'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid]
206
- }],
230
+ }, (0, _utils.getClass)(rowClassName, rowParams)],
231
+ style: rowStyle ? _xeUtils.default.isFunction(rowStyle) ? rowStyle(rowParams) : rowStyle : undefined,
207
232
  attrs: {
208
233
  rowid: rowid
209
234
  },
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _comp=require("../../ui/src/comp"),_util=require("./util"),_ganttChart=_interopRequireDefault(require("./gantt-chart"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){var r;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(r="Object"===(r={}.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:r)||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var sourceType="gantt",viewType="body",_default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewBody",inject:{$xeGantt:{default:null},$xeGanttView:{default:null}},computed:Object.assign({},{}),methods:{renderColumn:function(e,t,r,n,o,a,l,i,c){var d,u=this.$xeGanttView,s=this.$xeGantt,p=u.reactData,w=t.resizeHeightFlag,y=t.fullAllDataRowIdData,f=t.visibleColumn,h=t.computeCellOpts,m=t.computeRowOpts,v=t.computeResizableOpts.isAllRowDrag,p=p.headerGroups,u=u.internalData.todayDateMaps,g=s.computeTaskViewOpts.showNowLine,p=(p[p.length-1]||{}).scaleItem,x=i.field,u=g&&p?u[p.type]:null,p=y[n]||{},y=0<(w?p.resizeHeight:0),w=(0,_util.getCellRestHeight)(p,h,m,t.computeDefaultRowHeight),p=[],b=(v&&m.resizable&&(d={$table:t,$grid:null,$gantt:s,seq:-1,rowid:n,row:r,rowIndex:o,$rowIndex:a,_rowIndex:l,column:f[0],columnIndex:0,$columnIndex:0,_columnIndex:0,fixed:"",source:sourceType,type:viewType,isHidden:!1,isEdit:!1,level:-1,visibleData:[],data:[],items:[]},p.push(e("div",{class:"vxe-gantt-view-cell--row-resizable",on:{mousedown:function(e){return t.handleRowResizeMousedownEvent(e,d)},dblclick:function(e){return t.handleRowResizeDblclickEvent(e,d)}}}))),{source:sourceType,type:viewType,row:r,column:i,$rowIndex:a,rowIndex:o,_rowIndex:l});return e("td",{key:c,class:["vxe-gantt-view--body-column",{"is--now":g&&u===x,"col--rs-height":y}],style:{height:"".concat(w,"px")},on:{click:function(e){s.handleTaskCellClickEvent(e,{row:r,column:i})},dblclick:function(e){s.handleTaskCellDblclickEvent(e,{row:r,column:i})},contextmenu:function(e){s.handleTaskBodyContextmenuEvent(e,b)}}},p)},renderRows:function(i,c,e){var d=this,t=d.$xeGanttView.reactData,u=c.treeConfig,s=c.stripe,p=c.highlightHoverRow,w=c.editConfig,y=c.treeExpandedFlag,f=c.selectRadioRow,h=c.pendingRowFlag,m=c.isRowGroupStatus,v=c.fullAllDataRowIdData,g=c.treeExpandedMaps,x=c.pendingRowMaps,b=c.computeRadioOpts,R=c.computeCheckboxOpts,_=c.computeRowOpts,r=c.computeTreeOpts,D=r.transform,T=r.children||r.childrenField,C=t.tableColumn,I=t.scrollYLoad,k=[];return e.forEach(function(r,n){var o=c.getRowid(r),e=v[o]||{},t={},a=n,l=-1,e=(e&&(a=e.index,l=e._index),!1),e=(w&&(e=c.isInsertByRow(r)),(_.isHover||p)&&(t.mouseenter=function(e){c.triggerHoverEvent(e,{row:r,rowIndex:a})},t.mouseleave=function(){c.clearHoverRow()}),!_.drag||m||u&&!D||(t.dragstart=c.handleRowDragDragstartEvent,t.dragend=c.handleRowDragDragendEvent,t.dragover=c.handleRowDragDragoverEvent),k.push(i("tr",{key:u?o:n,class:["vxe-gantt-view--body-row",{"row--stripe":s&&(l+1)%2==0,"is--new":e,"row--radio":b.highlight&&c.eqRow(f,r),"row--checked":R.highlight&&c.isCheckedByCheckboxRow(r),"row--pending":!!h&&!!x[o]}],attrs:{rowid:o},on:t},C.map(function(e,t){return d.renderColumn(i,c,r,o,a,n,l,e,t)}))),!1),t=[];!u||I||D||(t=r[T],e=!!y&&t&&0<t.length&&!!g[o]),e&&k.push.apply(k,_toConsumableArray(d.renderRows(i,c,t)))}),k},renderVN:function(r){var t=this.$xeGantt,e=this.$xeGanttView,n=e.reactData,o=e.internalData.xeTable,a=n.tableData,l=n.tableColumn,i=n.viewCellWidth;return r("div",{ref:"refElem",class:"vxe-gantt-view--body-wrapper"},[r("div",{ref:"refBodyScroll",class:"vxe-gantt-view--body-inner-wrapper",on:{scroll:e.triggerBodyScrollEvent,contextmenu:function(e){t.handleTaskBodyContextmenuEvent(e,{source:sourceType,type:viewType,rowIndex:-1,$rowIndex:-1,_rowIndex:-1})}}},[r("div",{ref:"refBodyXSpace",class:"vxe-body--x-space"}),r("div",{ref:"refBodyYSpace",class:"vxe-body--y-space"}),r("table",{ref:"refBodyTable",class:"vxe-gantt-view--body-table"},[r("colgroup",{},l.map(function(e,t){return r("col",{key:t,style:{width:"".concat(i,"px")}})})),r("tbody",{},o?this.renderRows(r,o,a):[])]),r(_ganttChart.default)])])}},mounted:function(){var e=this,t=e.$xeGanttView.internalData.elemStore,r="main-body-";t["".concat(r,"wrapper")]=e.$refs.refElem,t["".concat(r,"scroll")]=e.$refs.refBodyScroll,t["".concat(r,"table")]=e.$refs.refBodyTable,t["".concat(r,"xSpace")]=e.$refs.refBodyXSpace,t["".concat(r,"ySpace")]=e.$refs.refBodyYSpace},destroyed:function(){var e=this.$xeGanttView.internalData.elemStore,t="main-body-";e["".concat(t,"wrapper")]=null,e["".concat(t,"scroll")]=null,e["".concat(t,"table")]=null,e["".concat(t,"xSpace")]=null,e["".concat(t,"ySpace")]=null},render:function(e){return this.renderVN(e)}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _comp=require("../../ui/src/comp"),_util=require("./util"),_utils=require("../../ui/src/utils"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ganttChart=_interopRequireDefault(require("./gantt-chart"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){var r;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(r="Object"===(r={}.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:r)||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var sourceType="gantt",viewType="body",_default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewBody",inject:{$xeGantt:{default:null},$xeGanttView:{default:null}},computed:Object.assign({},{}),methods:{renderColumn:function(e,t,r,n,o,a,l,i,s){var c,u=this.$xeGanttView,d=this.$xeGantt,p=u.reactData,w=t.resizeHeightFlag,y=t.fullAllDataRowIdData,f=t.visibleColumn,h=t.computeCellOpts,m=t.computeRowOpts,v=t.computeResizableOpts.isAllRowDrag,p=p.headerGroups,u=u.internalData.todayDateMaps,g=d.computeTaskViewOpts,x=g.showNowLine,p=(p[p.length-1]||{}).scaleItem,b=i.field,_=i.dateObj,g=g.viewStyle||{},R=g.cellClassName,g=g.cellStyle,u=x&&p?u[p.type]:null,p=y[n]||{},y=0<(w?p.resizeHeight:0),w=(0,_util.getCellRestHeight)(p,h,m,t.computeDefaultRowHeight),p=[],T=(v&&m.resizable&&(c={$table:t,$grid:null,$gantt:d,seq:-1,rowid:n,row:r,rowIndex:o,$rowIndex:a,_rowIndex:l,column:f[0],columnIndex:0,$columnIndex:0,_columnIndex:0,fixed:"",source:sourceType,type:viewType,isHidden:!1,isEdit:!1,level:-1,visibleData:[],data:[],items:[]},p.push(e("div",{class:"vxe-gantt-view-cell--row-resizable",on:{mousedown:function(e){return t.handleRowResizeMousedownEvent(e,c)},dblclick:function(e){return t.handleRowResizeDblclickEvent(e,c)}}}))),{source:sourceType,type:viewType,dateObj:_,row:r,column:i,$rowIndex:a,rowIndex:o,_rowIndex:l});return e("td",{key:s,class:["vxe-gantt-view--body-column",{"is--now":x&&u===b,"col--rs-height":y},(0,_utils.getClass)(R,T)],style:g?Object.assign({},_xeUtils.default.isFunction(g)?g(T):g,{height:"".concat(w,"px")}):{height:"".concat(w,"px")},on:{click:function(e){d.handleTaskCellClickEvent(e,{row:r,column:i})},dblclick:function(e){d.handleTaskCellDblclickEvent(e,{row:r,column:i})},contextmenu:function(e){d.handleTaskBodyContextmenuEvent(e,T)}}},p)},renderRows:function(s,c,e){var u=this,t=u.$xeGanttView.reactData,d=c.treeConfig,p=c.stripe,w=c.highlightHoverRow,y=c.editConfig,f=c.treeExpandedFlag,h=c.selectRadioRow,m=c.pendingRowFlag,v=c.isRowGroupStatus,g=c.fullAllDataRowIdData,x=c.treeExpandedMaps,b=c.pendingRowMaps,_=c.computeRadioOpts,R=c.computeCheckboxOpts,T=c.computeRowOpts,r=c.computeTreeOpts,C=r.transform,D=r.children||r.childrenField,r=u.$xeGantt.computeTaskViewOpts.viewStyle||{},I=r.rowClassName,S=r.rowStyle,$=t.tableColumn,k=t.scrollYLoad,A=[];return e.forEach(function(r,n){var o=c.getRowid(r),e=g[o]||{},t={},a=n,l=-1,e=(e&&(a=e.index,l=e._index),!1),i=(y&&(e=c.isInsertByRow(r)),(T.isHover||w)&&(t.mouseenter=function(e){c.triggerHoverEvent(e,{row:r,rowIndex:a})},t.mouseleave=function(){c.clearHoverRow()}),!T.drag||v||d&&!C||(t.dragstart=c.handleRowDragDragstartEvent,t.dragend=c.handleRowDragDragendEvent,t.dragover=c.handleRowDragDragoverEvent),{source:sourceType,type:viewType,row:r,rowIndex:a,$rowIndex:n,_rowIndex:l}),e=(A.push(s("tr",{key:d?o:n,class:["vxe-gantt-view--body-row",{"row--stripe":p&&(l+1)%2==0,"is--new":e,"row--radio":_.highlight&&c.eqRow(h,r),"row--checked":R.highlight&&c.isCheckedByCheckboxRow(r),"row--pending":!!m&&!!b[o]},(0,_utils.getClass)(I,i)],style:S?_xeUtils.default.isFunction(S)?S(i):S:void 0,attrs:{rowid:o},on:t},$.map(function(e,t){return u.renderColumn(s,c,r,o,a,n,l,e,t)}))),!1),i=[];!d||k||C||(i=r[D],e=!!f&&i&&0<i.length&&!!x[o]),e&&A.push.apply(A,_toConsumableArray(u.renderRows(s,c,i)))}),A},renderVN:function(r){var t=this.$xeGantt,e=this.$xeGanttView,n=e.reactData,o=e.internalData.xeTable,a=n.tableData,l=n.tableColumn,i=n.viewCellWidth;return r("div",{ref:"refElem",class:"vxe-gantt-view--body-wrapper"},[r("div",{ref:"refBodyScroll",class:"vxe-gantt-view--body-inner-wrapper",on:{scroll:e.triggerBodyScrollEvent,contextmenu:function(e){t.handleTaskBodyContextmenuEvent(e,{source:sourceType,type:viewType,rowIndex:-1,$rowIndex:-1,_rowIndex:-1})}}},[r("div",{ref:"refBodyXSpace",class:"vxe-body--x-space"}),r("div",{ref:"refBodyYSpace",class:"vxe-body--y-space"}),r("table",{ref:"refBodyTable",class:"vxe-gantt-view--body-table"},[r("colgroup",{},l.map(function(e,t){return r("col",{key:t,style:{width:"".concat(i,"px")}})})),r("tbody",{},o?this.renderRows(r,o,a):[])]),r(_ganttChart.default)])])}},mounted:function(){var e=this,t=e.$xeGanttView.internalData.elemStore,r="main-body-";t["".concat(r,"wrapper")]=e.$refs.refElem,t["".concat(r,"scroll")]=e.$refs.refBodyScroll,t["".concat(r,"table")]=e.$refs.refBodyTable,t["".concat(r,"xSpace")]=e.$refs.refBodyXSpace,t["".concat(r,"ySpace")]=e.$refs.refBodyYSpace},destroyed:function(){var e=this.$xeGanttView.internalData.elemStore,t="main-body-";e["".concat(t,"wrapper")]=null,e["".concat(t,"scroll")]=null,e["".concat(t,"table")]=null,e["".concat(t,"xSpace")]=null,e["".concat(t,"ySpace")]=null},render:function(e){return this.renderVN(e)}});
@@ -20,6 +20,7 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
20
20
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
21
21
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
22
22
  var globalEvents = _core.VxeUI.globalEvents;
23
+ var sourceType = 'gantt';
23
24
  function createInternalData() {
24
25
  return {
25
26
  xeTable: null,
@@ -825,10 +826,103 @@ function checkLastSyncScroll($xeGanttView, isRollX, isRollY) {
825
826
  reactData.lazScrollLoading = false;
826
827
  }, 200);
827
828
  }
828
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
829
- function handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, scrollTop, scrollLeft) {
829
+ function handleScrollData($xeGanttView, isRollY, isRollX, scrollTop, scrollLeft) {
830
+ var reactData = $xeGanttView.reactData;
831
+ var internalData = $xeGanttView.internalData;
832
+ if (isRollX) {
833
+ internalData.lastScrollLeft = scrollLeft;
834
+ }
835
+ if (isRollY) {
836
+ internalData.lastScrollTop = scrollTop;
837
+ }
838
+ reactData.lastScrollTime = Date.now();
830
839
  checkLastSyncScroll($xeGanttView, isRollX, isRollY);
831
840
  }
841
+ function handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, scrollTop, scrollLeft) {
842
+ var $xeGantt = $xeGanttView.$xeGantt;
843
+ var internalData = $xeGanttView.internalData;
844
+ var $xeTable = internalData.xeTable;
845
+ var lastScrollLeft = internalData.lastScrollLeft,
846
+ lastScrollTop = internalData.lastScrollTop;
847
+ var xHandleEl = $xeGanttView.$refs.refScrollXHandleElem;
848
+ var yHandleEl = $xeGanttView.$refs.refScrollYHandleElem;
849
+ if (!xHandleEl || !yHandleEl) {
850
+ return;
851
+ }
852
+ if (!$xeTable) {
853
+ return;
854
+ }
855
+ var bodyHeight = yHandleEl.clientHeight;
856
+ var bodyWidth = xHandleEl.clientWidth;
857
+ var scrollHeight = yHandleEl.scrollHeight;
858
+ var scrollWidth = xHandleEl.scrollWidth;
859
+ var isTop = false;
860
+ var isBottom = false;
861
+ var isLeft = false;
862
+ var isRight = false;
863
+ var direction = '';
864
+ var isTopBoundary = false;
865
+ var isBottomBoundary = false;
866
+ var isLeftBoundary = false;
867
+ var isRightBoundary = false;
868
+ if (isRollX) {
869
+ var xThreshold = $xeTable.computeScrollXThreshold;
870
+ isLeft = scrollLeft <= 0;
871
+ if (!isLeft) {
872
+ isRight = scrollLeft + bodyWidth >= scrollWidth - 1;
873
+ }
874
+ if (scrollLeft > lastScrollLeft) {
875
+ direction = 'right';
876
+ if (scrollLeft + bodyWidth >= scrollWidth - xThreshold) {
877
+ isRightBoundary = true;
878
+ }
879
+ } else {
880
+ direction = 'left';
881
+ if (scrollLeft <= xThreshold) {
882
+ isLeftBoundary = true;
883
+ }
884
+ }
885
+ }
886
+ if (isRollY) {
887
+ var yThreshold = $xeTable.computeScrollYThreshold;
888
+ isTop = scrollTop <= 0;
889
+ if (!isTop) {
890
+ isBottom = scrollTop + bodyHeight >= scrollHeight - 1;
891
+ }
892
+ if (scrollTop > lastScrollTop) {
893
+ direction = 'bottom';
894
+ if (scrollTop + bodyHeight >= scrollHeight - yThreshold) {
895
+ isBottomBoundary = true;
896
+ }
897
+ } else {
898
+ direction = 'top';
899
+ if (scrollTop <= yThreshold) {
900
+ isTopBoundary = true;
901
+ }
902
+ }
903
+ }
904
+ handleScrollData($xeGanttView, isRollY, isRollX, scrollTop, scrollLeft);
905
+ var evntParams = {
906
+ source: sourceType,
907
+ scrollTop: scrollTop,
908
+ scrollLeft: scrollLeft,
909
+ bodyHeight: bodyHeight,
910
+ bodyWidth: bodyWidth,
911
+ scrollHeight: scrollHeight,
912
+ scrollWidth: scrollWidth,
913
+ isX: isRollX,
914
+ isY: isRollY,
915
+ isTop: isTop,
916
+ isBottom: isBottom,
917
+ isLeft: isLeft,
918
+ isRight: isRight,
919
+ direction: direction
920
+ };
921
+ if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
922
+ $xeGantt.dispatchEvent('scroll-boundary', evntParams, evnt);
923
+ }
924
+ $xeGantt.dispatchEvent('scroll', evntParams, evnt);
925
+ }
832
926
  /**
833
927
  * 同步表格滚动
834
928
  */
@@ -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 l;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(l="Object"===(l={}.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:l)||"Set"===l?Array.from(e):"Arguments"===l||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?_arrayLikeToArray(e,t):void 0}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var l=0,a=Array(t);l<t;l++)a[l]=e[l];return a}function _iterableToArrayLimit(e,t){var l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a,r,o,n,c=[],i=!0,s=!1;try{if(o=(l=l.call(e)).next,0===t){if(Object(l)!==l)return;i=!1}else for(;!(i=(a=o.call(l)).done)&&(c.push(a.value),c.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{if(!i&&null!=l.return&&(n=l.return(),Object(n)!==n))return}finally{if(s)throw r}}return c}}function _arrayWithHoles(e){if(Array.isArray(e))return e}var globalEvents=_core.VxeUI.globalEvents;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}}var maxYHeight=5e6;function parseStringDate(e,t){e=e.$xeGantt.computeTaskOpts.dateFormat;return _xeUtils.default.toStringDate(t,e||null)}function updateTodayData(e){var t=e.$xeGantt,e=e.internalData,t=t.reactData.taskScaleList.find(function(e){return"week"===e.type}),l=new Date,a=_slicedToArray(_xeUtils.default.toDateString(l,"yyyy-M-d-H-m-s").split("-"),6),r=a[0],o=a[1],n=a[2],c=a[3],i=a[4],a=a[5],s=l.getDay()+1,d=Math.ceil((l.getMonth()+1)/3),l=_xeUtils.default.getYearWeek(l,t?t.startDay:void 0);e.todayDateMaps={year:r,quarter:"".concat(r,"_q").concat(d),month:"".concat(r,"_").concat(o),week:"".concat(r,"_W").concat(l),day:"".concat(r,"_").concat(o,"_").concat(n,"_E").concat(s),date:"".concat(r,"_").concat(o,"_").concat(n),hour:"".concat(r,"_").concat(o,"_").concat(n,"_").concat(c),minute:"".concat(r,"_").concat(o,"_").concat(n,"_").concat(c,"_").concat(i),second:"".concat(r,"_").concat(o,"_").concat(n,"_").concat(c,"_").concat(i,"_").concat(a)}}function handleParseColumn(o){var e=o.$xeGantt,t=o.reactData,l=o.internalData,a=e.reactData,k=e.treeConfig,a=a.taskScaleList,n=t.minViewDate,r=t.maxViewDate,c=_xeUtils.default.last(a),i=[],s=[];if(c&&n&&r){var d=c.type,u=a.find(function(e){return"week"===e.type}),f=864e5;switch(c.type){case"hour":f=36e5;break;case"minute":f=6e4;break;case"second":f=1e3}for(var M=n.getTime(),r=r.getTime()-n.getTime(),U=Math.max(5,Math.floor(r/f)+1),h={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},p={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}},m=function(e,t,l){var a,r;d!==e&&(t=t[e],a="".concat(t.field),(r=p[e][a])||(p[e][a]=r=t,h[e].push(r)),r)&&(r.children||(r.children=[]),r.children.push(l))},S=0;S<U;S++){var v=new Date(M+S*f),y=_slicedToArray(_xeUtils.default.toDateString(v,"yyyy-M-d-H-m-s").split("-"),6),g=y[0],x=y[1],_=y[2],b=y[3],D=y[4],y=y[5],w=v.getDay(),T=w+1,E=Math.ceil((v.getMonth()+1)/3),v=_xeUtils.default.getYearWeek(v,u?u.startDay:void 0),w={yy:g,M:x,d:_,H:b,m:D,s:y,q:E,W:v,E:T,e:w},E={year:{field:g,title:g,dateObj:w},quarter:{field:"".concat(g,"_q").concat(E),title:"".concat(E),dateObj:w},month:{field:"".concat(g,"_").concat(x),title:x,dateObj:w},week:{field:"".concat(g,"_W").concat(v),title:"".concat(v),dateObj:w},day:{field:"".concat(g,"_").concat(x,"_").concat(_,"_E").concat(T),title:"".concat(T),dateObj:w},date:{field:"".concat(g,"_").concat(x,"_").concat(_),title:_,dateObj:w},hour:{field:"".concat(g,"_").concat(x,"_").concat(_,"_").concat(b),title:b,dateObj:w},minute:{field:"".concat(g,"_").concat(x,"_").concat(_,"_").concat(b,"_").concat(D),title:D,dateObj:w},second:{field:"".concat(g,"_").concat(x,"_").concat(_,"_").concat(b,"_").concat(D,"_").concat(y),title:y,dateObj:w}},v=E[d];c.level<19&&m("year",E,v),c.level<17&&m("quarter",E,v),c.level<14&&m("month",E,v),c.level<13&&m("week",E,v),c.level<11&&m("day",E,v),c.level<12&&m("date",E,v),c.level<7&&m("hour",E,v),c.level<5&&m("minute",E,v),i.push(v)}a.forEach(function(e){var t;e.type===d?s.push({scaleItem:e,columns:i}):((t=h[e.type]||[])&&t.forEach(function(e){e.childCount=e.children?e.children.length:0,e.children=void 0}),s.push({scaleItem:e,columns:t}))});var X,L,R,Y,I,C,H,V,$=l.xeTable;$&&(X=e.computeStartField,L=e.computeEndField,r=$.isRowGroupStatus,a=$.afterFullData,e=$.afterTreeFullData,R=$.computeAggregateOpts,I=(Y=$.computeTreeOpts).transform,C=Y.children||Y.childrenField,H={},V=function(e){var t,l=$.getRowid(e),a=_xeUtils.default.get(e,X),r=_xeUtils.default.get(e,L);a&&r&&(a=parseStringDate(o,a),r=parseStringDate(o,r),t=Math.floor((a.getTime()-n.getTime())/f),r=Math.floor((r.getTime()-a.getTime())/f)+1,H[l]={row:e,rowid:l,oLeftSize:t,oWidthSize:r})},r?(r=R.mapChildrenField)&&_xeUtils.default.eachTree($.afterGroupFullData,V,{children:r}):k?_xeUtils.default.eachTree(e,V,{children:I?Y.mapChildrenField:C}):a.forEach(V),l.chartMaps=H)}l.visibleColumn=i,t.headerGroups=s,updateTodayData(o),updateScrollXStatus(o),handleTableColumn(o)}function handleUpdateData(l){var a,r,e,t,o,n,c,i,s,d=l.$xeGantt,u=l.reactData,f=l.internalData,h=d.treeConfig,p=f.scrollXStore,m=f.xeTable,S=null,v=null;m&&(a=d.computeStartField,r=d.computeEndField,d=m.isRowGroupStatus,e=m.afterFullData,t=m.afterTreeFullData,o=m.computeAggregateOpts,c=(n=m.computeTreeOpts).transform,i=n.children||n.childrenField,s=function(e){var t=_xeUtils.default.get(e,a),e=_xeUtils.default.get(e,r);t&&e&&(t=parseStringDate(l,t),(!S||S.getTime()>t.getTime())&&(S=t),t=parseStringDate(l,e),!v||v.getTime()<t.getTime())&&(v=t)},d?(d=o.mapChildrenField)&&_xeUtils.default.eachTree(m.afterGroupFullData,s,{children:d}):h?_xeUtils.default.eachTree(t,s,{children:c?n.mapChildrenField:i}):e.forEach(s)),p.startIndex=0,p.endIndex=Math.max(1,p.visibleSize),u.minViewDate=S,u.maxViewDate=v,f.startMaps={},f.endMaps={},handleParseColumn(l)}function calcScrollbar(e){var t=e.$xeGantt,l=e.reactData,a=l.scrollXWidth,r=l.scrollYHeight,o=e.internalData.elemStore,t=t.computeScrollbarOpts,o=(0,_util.getRefElem)(o["main-body-wrapper"]),n=e.$refs.refScrollXHandleElem,e=e.$refs.refScrollYHandleElem;o&&(r=r>o.clientHeight,e&&(l.scrollbarWidth=t.width||e.offsetWidth-e.clientWidth||14),l.overflowY=r,e=a>o.clientWidth,n&&(l.scrollbarHeight=t.height||n.offsetHeight-n.clientHeight||14),l.overflowX=e)}function updateChart(e){var t=e.reactData,l=e.internalData,a=t.viewCellWidth,t=l.elemStore,r=l.chartMaps,l=(0,_util.getRefElem)(t["main-chart-wrapper"]);return l&&_xeUtils.default.arrayEach(l.children,function(e){var t=e.children[0];t&&(e=(e=e.getAttribute("rowid"))?r[e]:null,t.style.left="".concat(e?a*e.oLeftSize:0,"px"),t.style.width="".concat(e?a*e.oWidthSize:0,"px"))}),e.$nextTick()}function updateStyle(e){var t,l,a,r,o,n,c,i,s,d=e.$xeGantt,u=e.reactData,f=e.internalData,h=u.scrollbarWidth,p=u.headerGroups,m=u.tableColumn,S=f.elemStore,v=f.visibleColumn,f=f.xeTable,y=e.$refs.refElem;if(y)return r=d.computeScrollbarOpts,c=d.computeScrollbarXToTop,n=e.$refs.refScrollXLeftCornerElem,o=e.$refs.refScrollXRightCornerElem,s=e.$refs.refScrollXVirtualElem,h=h,i=u.scrollbarHeight,a=l=t=0,f&&(t=f.tBodyHeight,l=f.tHeaderHeight,a=f.tFooterHeight),f="visible",(d.computeScrollbarYToLeft||r.y&&!1===r.y.visible)&&(h=0,f="hidden"),(d=(0,_util.getRefElem)(S["main-header-scroll"]))&&(d.style.height="".concat(l,"px"),d.style.setProperty("--vxe-ui-gantt-view-cell-height","".concat(l/p.length,"px"))),(r=(0,_util.getRefElem)(S["main-body-scroll"]))&&(r.style.height="".concat(t,"px")),(d=(0,_util.getRefElem)(S["main-footer-scroll"]))&&(d.style.height="".concat(a,"px")),s&&(s.style.height="".concat(i,"px"),s.style.visibility="visible"),(p=e.$refs.refScrollXWrapperElem)&&(p.style.left=c?"".concat(h,"px"):"",p.style.width="".concat(y.clientWidth-h,"px")),n&&(n.style.width=c?"".concat(h,"px"):"",n.style.display=c&&i?"block":""),o&&(o.style.width=c?"":"".concat(h,"px"),o.style.display=!c&&i?"block":""),(d=e.$refs.refScrollYVirtualElem)&&(d.style.width="".concat(h,"px"),d.style.height="".concat(t+l+a,"px"),d.style.visibility=f),(s=e.$refs.refScrollYTopCornerElem)&&(s.style.height="".concat(l,"px"),s.style.display=l?"block":""),(p=e.$refs.refScrollYWrapperElem)&&(p.style.height="".concat(t,"px"),p.style.top="".concat(l,"px")),(y=e.$refs.refScrollYBottomCornerElem)&&(y.style.height="".concat(a,"px"),y.style.top="".concat(l+t,"px"),y.style.display=a?"block":""),n=40,c=(n=(o=e.$refs.refColInfoElem)?o.clientWidth||40:n)*v.length,r&&0<(h=(i=r.clientWidth)-c)&&(n+=h/v.length,c=i),u.viewCellWidth=n,d=(0,_util.getRefElem)(S["main-header-table"]),f=(0,_util.getRefElem)(S["main-body-table"]),s=n*m.length,d&&(d.style.width="".concat(c,"px")),f&&(f.style.width="".concat(s,"px")),u.scrollXWidth=c,updateChart(e)}function handleRecalculateStyle(e){var t=e.internalData,l=e.$refs.refElem;return t.rceRunTime=Date.now(),l&&l.clientWidth?(calcScrollbar(e),updateStyle(e),updateChart(e),computeScrollLoad(e)):e.$nextTick()}function _handleLazyRecalculate(o){var n=o.internalData;return new Promise(function(e){var t=n.rceTimeout,l=n.rceRunTime,a=n.xeTable,r=50;a&&(r=a.computeResizeOpts.refreshDelay||50),!t||(clearTimeout(t),l&&l+(r-5)<Date.now())?e(handleRecalculateStyle(o)):o.$nextTick(function(){e()}),n.rceTimeout=setTimeout(function(){n.rceTimeout=void 0,handleRecalculateStyle(o)},r)})}function computeScrollLoad(a){var r=a.reactData,o=a.internalData;return a.$nextTick().then(function(){var e,t=r.scrollXLoad,l=o.scrollXStore;t?(e=(t=handleVirtualXVisible(a)).toVisibleIndex,t=t.visibleSize,l.preloadSize=1,l.offsetSize=2,l.visibleSize=t,l.endIndex=Math.max(l.startIndex+l.visibleSize+2,l.endIndex),l.visibleStartIndex=Math.max(l.startIndex,e),l.visibleEndIndex=Math.min(l.endIndex,e+t),updateScrollXData(a).then(function(){loadScrollXData(a)})):updateScrollXSpace(a)})}function handleVirtualXVisible(e){var t,l=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/l)-1,t=Math.ceil(t/l)+1,{toVisibleIndex:Math.max(0,e),visibleSize:Math.max(1,t)}):{toVisibleIndex:0,visibleSize:6}}function loadScrollXData(e){var t=e.reactData.isScrollXBig,l=e.internalData.scrollXStore,a=l.preloadSize,r=l.startIndex,o=l.endIndex,n=l.offsetSize,c=handleVirtualXVisible(e),i=c.toVisibleIndex,c=c.visibleSize,t={startIndex:Math.max(0,t?i-1:i-1-n-a),endIndex:t?i+c:i+c+n+a},n=(l.visibleStartIndex=i-1,l.visibleEndIndex=i+c+1,t.startIndex),a=t.endIndex;!(i<=r||o-c-1<=i)||r===n&&o===a||(l.startIndex=n,l.endIndex=a,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,l=t.scrollXLoad,a=e.visibleColumn,e=e.scrollXStore,l=l?a.slice(e.startIndex,e.endIndex):a.slice(0);t.tableColumn=l}function updateScrollXSpace(e){var t=e.reactData,l=e.internalData,a=t.scrollXLoad,r=t.scrollXWidth,o=t.viewCellWidth,n=l.elemStore,l=l.scrollXStore,c=(0,_util.getRefElem)(n["main-body-table"]),l=l.startIndex,i=0,l=(a&&(i=Math.max(0,l*o)),c&&(c.style.transform="translate(".concat(i,"px, ").concat(t.scrollYTop||0,"px)")),["header","body","footer"].forEach(function(e){e=(0,_util.getRefElem)(n["main-".concat(e,"-xSpace")]);e&&(e.style.width=a?"".concat(r,"px"):"")}),e.$refs.refScrollXSpaceElem);return l&&(l.style.width="".concat(r,"px")),calcScrollbar(e),e.$nextTick()}function triggerScrollXEvent(e){loadScrollXData(e)}function updateScrollYSpace(e){var t=e.reactData,l=e.internalData,a=t.scrollYLoad,r=t.overflowY,o=l.elemStore,l=l.xeTable,n=(0,_util.getRefElem)(o["main-body-scroll"]),c=(0,_util.getRefElem)(o["main-body-table"]),i=0,s=0,d=!1,l=(l&&(i=l.scrollYTop,s=l.scrollYHeight,d=l.isScrollYBig),s),u=i,f=0,n=(n&&(f=n.clientHeight),d&&(u=n&&c&&n.scrollTop+f>=maxYHeight?maxYHeight-c.clientHeight:i/(s-f)*(maxYHeight-f),l=maxYHeight),a&&r||(u=0),(0,_util.getRefElem)(o["main-chart-wrapper"])),i=(c&&(c.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(u,"px)")),n&&(n.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(u,"px)")),(0,_util.getRefElem)(o["main-body-ySpace"])),f=(i&&(i.style.height=l?"".concat(l,"px"):""),e.$refs.refScrollYSpaceElem);return f&&(f.style.height=l?"".concat(l,"px"):""),t.scrollYTop=u,t.scrollYHeight=s,t.isScrollYBig=d,calcScrollbar(e),e.$nextTick().then(function(){updateStyle(e)})}function checkLastSyncScroll(e,t,l){var a=e.reactData,r=e.internalData,e=r.lcsTimeout;a.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,a.lazScrollLoading=!1},200)}function handleScrollEvent(e,t,l,a,r,o){checkLastSyncScroll(e,a,l)}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:{scrollXLoad:!1,scrollYLoad:!1,overflowY:!0,overflowX:!0,scrollbarWidth:0,scrollbarHeight:0,lastScrollTime:0,lazScrollLoading:!1,scrollVMLoading:!1,scrollYHeight:0,scrollYTop:0,isScrollYBig:!1,scrollXLeft:0,scrollXWidth:0,isScrollXBig:!1,minViewDate:null,maxViewDate:null,tableData:[],tableColumn:[],headerGroups:[],viewCellWidth:20},internalData:createInternalData()}},computed:Object.assign({},{}),methods:{refreshData:function(){return handleUpdateData(this),_handleLazyRecalculate(this)},updateViewData:function(){var e=this.reactData,t=this.internalData.xeTable;return t&&(t=t.tableData,e.tableData=t),this.$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,l=this.$refs.refElem;t&&l&&(e?(t.computeRowOpts.isCurrent||t.highlightCurrentRow)&&_xeUtils.default.arrayEach(l.querySelectorAll('[rowid="'.concat(t.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--current")}):_xeUtils.default.arrayEach(l.querySelectorAll(".row--current"),function(e){return(0,_dom.removeClass)(e,"row--current")}))},handleUpdateHoverRow:function(e){var t=this.internalData.xeTable,l=this.$refs.refElem;t&&l&&(e?_xeUtils.default.arrayEach(l.querySelectorAll('.vxe-body--row[rowid="'.concat(t.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--hover")}):_xeUtils.default.arrayEach(l.querySelectorAll(".vxe-body--row.row--hover"),function(e){return(0,_dom.removeClass)(e,"row--hover")}))},triggerHeaderScrollEvent:function(e){var t,l,a,r=this.internalData,o=r.elemStore;r.inVirtualScroll||r.inBodyScroll||r.inFooterScroll||(t=e.currentTarget,o=(0,_util.getRefElem)(o["main-body-scroll"]),l=this.$refs.refScrollXHandleElem,o&&t&&(a=t.scrollLeft,r.inHeaderScroll=!0,(0,_dom.setScrollLeft)(l,a),(0,_dom.setScrollLeft)(o,a),handleScrollEvent(this,e,!1,!0,t.scrollTop,a)))},triggerBodyScrollEvent:function(e){var t,l,a,r,o,n=this,c=n.reactData,i=n.internalData,c=c.scrollXLoad,s=i.elemStore,d=i.lastScrollLeft,u=i.lastScrollTop;i.inVirtualScroll||i.inHeaderScroll||i.inFooterScroll||(t=e.currentTarget,s=(0,_util.getRefElem)(s["main-header-scroll"]),l=n.$refs.refScrollXHandleElem,a=n.$refs.refScrollYHandleElem,d=(r=t.scrollLeft)!==d,u=(o=t.scrollTop)!==u,i.inBodyScroll=!0,i.scrollRenderType="",u&&((0,_dom.setScrollTop)(a,o),syncTableScrollTop(n,o)),d&&(i.inBodyScroll=!0,(0,_dom.setScrollLeft)(l,r),(0,_dom.setScrollLeft)(s,r),c)&&triggerScrollXEvent(n),handleScrollEvent(n,e,u,d,t.scrollTop,r))},triggerVirtualScrollXEvent:function(e){var t,l,a,r=this.reactData,o=this.internalData,r=r.scrollXLoad,n=o.elemStore;o.inHeaderScroll||o.inBodyScroll||(t=e.currentTarget,l=(0,_util.getRefElem)(n["main-header-scroll"]),n=(0,_util.getRefElem)(n["main-body-scroll"]),t&&(a=t.scrollLeft,o.inVirtualScroll=!0,(0,_dom.setScrollLeft)(l,a),(0,_dom.setScrollLeft)(n,a),r&&triggerScrollXEvent(this),handleScrollEvent(this,e,!1,!0,t.scrollTop,a)))},triggerVirtualScrollYEvent:function(e){var t,l,a=this.internalData,r=a.elemStore;a.inHeaderScroll||a.inBodyScroll||(t=e.currentTarget,r=(0,_util.getRefElem)(r["main-body-scroll"]),t&&(l=t.scrollTop,a.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,l),syncTableScrollTop(this,l),handleScrollEvent(this,e,!0,!1,l,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,l=t.$xeGantt,a=t.reactData,r=a.overflowX;return e("div",{ref:"refElem",class:["vxe-gantt-view",{"is--scroll-y":a.overflowY,"is--scroll-x":r,"is--virtual-x":a.scrollXLoad,"is--virtual-y":a.scrollYLoad}]},[e("div",{class:"vxe-gantt-view--render-wrapper"},l.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"})])])}},watch:{"reactData.tableData":function(){handleUpdateData(this)}},mounted:function(){globalEvents.on(this,"resize",this.handleGlobalResizeEvent)},beforeDestroy:function(){var e=this.internalData;globalEvents.off(this,"keydown"),_xeUtils.default.assign(e,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 l;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(l="Object"===(l={}.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:l)||"Set"===l?Array.from(e):"Arguments"===l||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?_arrayLikeToArray(e,t):void 0}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var l=0,a=Array(t);l<t;l++)a[l]=e[l];return a}function _iterableToArrayLimit(e,t){var l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a,r,o,n,c=[],i=!0,s=!1;try{if(o=(l=l.call(e)).next,0===t){if(Object(l)!==l)return;i=!1}else for(;!(i=(a=o.call(l)).done)&&(c.push(a.value),c.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{if(!i&&null!=l.return&&(n=l.return(),Object(n)!==n))return}finally{if(s)throw r}}return c}}function _arrayWithHoles(e){if(Array.isArray(e))return e}var globalEvents=_core.VxeUI.globalEvents,sourceType="gantt";function createInternalData(){return{xeTable:null,visibleColumn:[],startMaps:{},endMaps:{},chartMaps:{},todayDateMaps:{},elemStore:{},scrollXStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0},lastScrollTop:0,lastScrollLeft:0}}var maxYHeight=5e6;function parseStringDate(e,t){e=e.$xeGantt.computeTaskOpts.dateFormat;return _xeUtils.default.toStringDate(t,e||null)}function updateTodayData(e){var t=e.$xeGantt,e=e.internalData,t=t.reactData.taskScaleList.find(function(e){return"week"===e.type}),l=new Date,a=_slicedToArray(_xeUtils.default.toDateString(l,"yyyy-M-d-H-m-s").split("-"),6),r=a[0],o=a[1],n=a[2],c=a[3],i=a[4],a=a[5],s=l.getDay()+1,d=Math.ceil((l.getMonth()+1)/3),l=_xeUtils.default.getYearWeek(l,t?t.startDay:void 0);e.todayDateMaps={year:r,quarter:"".concat(r,"_q").concat(d),month:"".concat(r,"_").concat(o),week:"".concat(r,"_W").concat(l),day:"".concat(r,"_").concat(o,"_").concat(n,"_E").concat(s),date:"".concat(r,"_").concat(o,"_").concat(n),hour:"".concat(r,"_").concat(o,"_").concat(n,"_").concat(c),minute:"".concat(r,"_").concat(o,"_").concat(n,"_").concat(c,"_").concat(i),second:"".concat(r,"_").concat(o,"_").concat(n,"_").concat(c,"_").concat(i,"_").concat(a)}}function handleParseColumn(o){var e=o.$xeGantt,t=o.reactData,l=o.internalData,a=e.reactData,W=e.treeConfig,a=a.taskScaleList,n=t.minViewDate,r=t.maxViewDate,c=_xeUtils.default.last(a),i=[],s=[];if(c&&n&&r){var d=c.type,u=a.find(function(e){return"week"===e.type}),f=864e5;switch(c.type){case"hour":f=36e5;break;case"minute":f=6e4;break;case"second":f=1e3}for(var k=n.getTime(),r=r.getTime()-n.getTime(),M=Math.max(5,Math.floor(r/f)+1),h={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},p={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}},m=function(e,t,l){var a,r;d!==e&&(t=t[e],a="".concat(t.field),(r=p[e][a])||(p[e][a]=r=t,h[e].push(r)),r)&&(r.children||(r.children=[]),r.children.push(l))},S=0;S<M;S++){var v=new Date(k+S*f),y=_slicedToArray(_xeUtils.default.toDateString(v,"yyyy-M-d-H-m-s").split("-"),6),g=y[0],x=y[1],b=y[2],_=y[3],T=y[4],y=y[5],D=v.getDay(),w=D+1,E=Math.ceil((v.getMonth()+1)/3),v=_xeUtils.default.getYearWeek(v,u?u.startDay:void 0),D={yy:g,M:x,d:b,H:_,m:T,s:y,q:E,W:v,E:w,e:D},E={year:{field:g,title:g,dateObj:D},quarter:{field:"".concat(g,"_q").concat(E),title:"".concat(E),dateObj:D},month:{field:"".concat(g,"_").concat(x),title:x,dateObj:D},week:{field:"".concat(g,"_W").concat(v),title:"".concat(v),dateObj:D},day:{field:"".concat(g,"_").concat(x,"_").concat(b,"_E").concat(w),title:"".concat(w),dateObj:D},date:{field:"".concat(g,"_").concat(x,"_").concat(b),title:b,dateObj:D},hour:{field:"".concat(g,"_").concat(x,"_").concat(b,"_").concat(_),title:_,dateObj:D},minute:{field:"".concat(g,"_").concat(x,"_").concat(b,"_").concat(_,"_").concat(T),title:T,dateObj:D},second:{field:"".concat(g,"_").concat(x,"_").concat(b,"_").concat(_,"_").concat(T,"_").concat(y),title:y,dateObj:D}},v=E[d];c.level<19&&m("year",E,v),c.level<17&&m("quarter",E,v),c.level<14&&m("month",E,v),c.level<13&&m("week",E,v),c.level<11&&m("day",E,v),c.level<12&&m("date",E,v),c.level<7&&m("hour",E,v),c.level<5&&m("minute",E,v),i.push(v)}a.forEach(function(e){var t;e.type===d?s.push({scaleItem:e,columns:i}):((t=h[e.type]||[])&&t.forEach(function(e){e.childCount=e.children?e.children.length:0,e.children=void 0}),s.push({scaleItem:e,columns:t}))});var X,L,R,Y,H,I,C,$,V=l.xeTable;V&&(X=e.computeStartField,L=e.computeEndField,r=V.isRowGroupStatus,a=V.afterFullData,e=V.afterTreeFullData,R=V.computeAggregateOpts,H=(Y=V.computeTreeOpts).transform,I=Y.children||Y.childrenField,C={},$=function(e){var t,l=V.getRowid(e),a=_xeUtils.default.get(e,X),r=_xeUtils.default.get(e,L);a&&r&&(a=parseStringDate(o,a),r=parseStringDate(o,r),t=Math.floor((a.getTime()-n.getTime())/f),r=Math.floor((r.getTime()-a.getTime())/f)+1,C[l]={row:e,rowid:l,oLeftSize:t,oWidthSize:r})},r?(r=R.mapChildrenField)&&_xeUtils.default.eachTree(V.afterGroupFullData,$,{children:r}):W?_xeUtils.default.eachTree(e,$,{children:H?Y.mapChildrenField:I}):a.forEach($),l.chartMaps=C)}l.visibleColumn=i,t.headerGroups=s,updateTodayData(o),updateScrollXStatus(o),handleTableColumn(o)}function handleUpdateData(l){var a,r,e,t,o,n,c,i,s,d=l.$xeGantt,u=l.reactData,f=l.internalData,h=d.treeConfig,p=f.scrollXStore,m=f.xeTable,S=null,v=null;m&&(a=d.computeStartField,r=d.computeEndField,d=m.isRowGroupStatus,e=m.afterFullData,t=m.afterTreeFullData,o=m.computeAggregateOpts,c=(n=m.computeTreeOpts).transform,i=n.children||n.childrenField,s=function(e){var t=_xeUtils.default.get(e,a),e=_xeUtils.default.get(e,r);t&&e&&(t=parseStringDate(l,t),(!S||S.getTime()>t.getTime())&&(S=t),t=parseStringDate(l,e),!v||v.getTime()<t.getTime())&&(v=t)},d?(d=o.mapChildrenField)&&_xeUtils.default.eachTree(m.afterGroupFullData,s,{children:d}):h?_xeUtils.default.eachTree(t,s,{children:c?n.mapChildrenField:i}):e.forEach(s)),p.startIndex=0,p.endIndex=Math.max(1,p.visibleSize),u.minViewDate=S,u.maxViewDate=v,f.startMaps={},f.endMaps={},handleParseColumn(l)}function calcScrollbar(e){var t=e.$xeGantt,l=e.reactData,a=l.scrollXWidth,r=l.scrollYHeight,o=e.internalData.elemStore,t=t.computeScrollbarOpts,o=(0,_util.getRefElem)(o["main-body-wrapper"]),n=e.$refs.refScrollXHandleElem,e=e.$refs.refScrollYHandleElem;o&&(r=r>o.clientHeight,e&&(l.scrollbarWidth=t.width||e.offsetWidth-e.clientWidth||14),l.overflowY=r,e=a>o.clientWidth,n&&(l.scrollbarHeight=t.height||n.offsetHeight-n.clientHeight||14),l.overflowX=e)}function updateChart(e){var t=e.reactData,l=e.internalData,a=t.viewCellWidth,t=l.elemStore,r=l.chartMaps,l=(0,_util.getRefElem)(t["main-chart-wrapper"]);return l&&_xeUtils.default.arrayEach(l.children,function(e){var t=e.children[0];t&&(e=(e=e.getAttribute("rowid"))?r[e]:null,t.style.left="".concat(e?a*e.oLeftSize:0,"px"),t.style.width="".concat(e?a*e.oWidthSize:0,"px"))}),e.$nextTick()}function updateStyle(e){var t,l,a,r,o,n,c,i,s,d=e.$xeGantt,u=e.reactData,f=e.internalData,h=u.scrollbarWidth,p=u.headerGroups,m=u.tableColumn,S=f.elemStore,v=f.visibleColumn,f=f.xeTable,y=e.$refs.refElem;if(y)return r=d.computeScrollbarOpts,c=d.computeScrollbarXToTop,n=e.$refs.refScrollXLeftCornerElem,o=e.$refs.refScrollXRightCornerElem,s=e.$refs.refScrollXVirtualElem,h=h,i=u.scrollbarHeight,a=l=t=0,f&&(t=f.tBodyHeight,l=f.tHeaderHeight,a=f.tFooterHeight),f="visible",(d.computeScrollbarYToLeft||r.y&&!1===r.y.visible)&&(h=0,f="hidden"),(d=(0,_util.getRefElem)(S["main-header-scroll"]))&&(d.style.height="".concat(l,"px"),d.style.setProperty("--vxe-ui-gantt-view-cell-height","".concat(l/p.length,"px"))),(r=(0,_util.getRefElem)(S["main-body-scroll"]))&&(r.style.height="".concat(t,"px")),(d=(0,_util.getRefElem)(S["main-footer-scroll"]))&&(d.style.height="".concat(a,"px")),s&&(s.style.height="".concat(i,"px"),s.style.visibility="visible"),(p=e.$refs.refScrollXWrapperElem)&&(p.style.left=c?"".concat(h,"px"):"",p.style.width="".concat(y.clientWidth-h,"px")),n&&(n.style.width=c?"".concat(h,"px"):"",n.style.display=c&&i?"block":""),o&&(o.style.width=c?"":"".concat(h,"px"),o.style.display=!c&&i?"block":""),(d=e.$refs.refScrollYVirtualElem)&&(d.style.width="".concat(h,"px"),d.style.height="".concat(t+l+a,"px"),d.style.visibility=f),(s=e.$refs.refScrollYTopCornerElem)&&(s.style.height="".concat(l,"px"),s.style.display=l?"block":""),(p=e.$refs.refScrollYWrapperElem)&&(p.style.height="".concat(t,"px"),p.style.top="".concat(l,"px")),(y=e.$refs.refScrollYBottomCornerElem)&&(y.style.height="".concat(a,"px"),y.style.top="".concat(l+t,"px"),y.style.display=a?"block":""),n=40,c=(n=(o=e.$refs.refColInfoElem)?o.clientWidth||40:n)*v.length,r&&0<(h=(i=r.clientWidth)-c)&&(n+=h/v.length,c=i),u.viewCellWidth=n,d=(0,_util.getRefElem)(S["main-header-table"]),f=(0,_util.getRefElem)(S["main-body-table"]),s=n*m.length,d&&(d.style.width="".concat(c,"px")),f&&(f.style.width="".concat(s,"px")),u.scrollXWidth=c,updateChart(e)}function handleRecalculateStyle(e){var t=e.internalData,l=e.$refs.refElem;return t.rceRunTime=Date.now(),l&&l.clientWidth?(calcScrollbar(e),updateStyle(e),updateChart(e),computeScrollLoad(e)):e.$nextTick()}function _handleLazyRecalculate(o){var n=o.internalData;return new Promise(function(e){var t=n.rceTimeout,l=n.rceRunTime,a=n.xeTable,r=50;a&&(r=a.computeResizeOpts.refreshDelay||50),!t||(clearTimeout(t),l&&l+(r-5)<Date.now())?e(handleRecalculateStyle(o)):o.$nextTick(function(){e()}),n.rceTimeout=setTimeout(function(){n.rceTimeout=void 0,handleRecalculateStyle(o)},r)})}function computeScrollLoad(a){var r=a.reactData,o=a.internalData;return a.$nextTick().then(function(){var e,t=r.scrollXLoad,l=o.scrollXStore;t?(e=(t=handleVirtualXVisible(a)).toVisibleIndex,t=t.visibleSize,l.preloadSize=1,l.offsetSize=2,l.visibleSize=t,l.endIndex=Math.max(l.startIndex+l.visibleSize+2,l.endIndex),l.visibleStartIndex=Math.max(l.startIndex,e),l.visibleEndIndex=Math.min(l.endIndex,e+t),updateScrollXData(a).then(function(){loadScrollXData(a)})):updateScrollXSpace(a)})}function handleVirtualXVisible(e){var t,l=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/l)-1,t=Math.ceil(t/l)+1,{toVisibleIndex:Math.max(0,e),visibleSize:Math.max(1,t)}):{toVisibleIndex:0,visibleSize:6}}function loadScrollXData(e){var t=e.reactData.isScrollXBig,l=e.internalData.scrollXStore,a=l.preloadSize,r=l.startIndex,o=l.endIndex,n=l.offsetSize,c=handleVirtualXVisible(e),i=c.toVisibleIndex,c=c.visibleSize,t={startIndex:Math.max(0,t?i-1:i-1-n-a),endIndex:t?i+c:i+c+n+a},n=(l.visibleStartIndex=i-1,l.visibleEndIndex=i+c+1,t.startIndex),a=t.endIndex;!(i<=r||o-c-1<=i)||r===n&&o===a||(l.startIndex=n,l.endIndex=a,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,l=t.scrollXLoad,a=e.visibleColumn,e=e.scrollXStore,l=l?a.slice(e.startIndex,e.endIndex):a.slice(0);t.tableColumn=l}function updateScrollXSpace(e){var t=e.reactData,l=e.internalData,a=t.scrollXLoad,r=t.scrollXWidth,o=t.viewCellWidth,n=l.elemStore,l=l.scrollXStore,c=(0,_util.getRefElem)(n["main-body-table"]),l=l.startIndex,i=0,l=(a&&(i=Math.max(0,l*o)),c&&(c.style.transform="translate(".concat(i,"px, ").concat(t.scrollYTop||0,"px)")),["header","body","footer"].forEach(function(e){e=(0,_util.getRefElem)(n["main-".concat(e,"-xSpace")]);e&&(e.style.width=a?"".concat(r,"px"):"")}),e.$refs.refScrollXSpaceElem);return l&&(l.style.width="".concat(r,"px")),calcScrollbar(e),e.$nextTick()}function triggerScrollXEvent(e){loadScrollXData(e)}function updateScrollYSpace(e){var t=e.reactData,l=e.internalData,a=t.scrollYLoad,r=t.overflowY,o=l.elemStore,l=l.xeTable,n=(0,_util.getRefElem)(o["main-body-scroll"]),c=(0,_util.getRefElem)(o["main-body-table"]),i=0,s=0,d=!1,l=(l&&(i=l.scrollYTop,s=l.scrollYHeight,d=l.isScrollYBig),s),u=i,f=0,n=(n&&(f=n.clientHeight),d&&(u=n&&c&&n.scrollTop+f>=maxYHeight?maxYHeight-c.clientHeight:i/(s-f)*(maxYHeight-f),l=maxYHeight),a&&r||(u=0),(0,_util.getRefElem)(o["main-chart-wrapper"])),i=(c&&(c.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(u,"px)")),n&&(n.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(u,"px)")),(0,_util.getRefElem)(o["main-body-ySpace"])),f=(i&&(i.style.height=l?"".concat(l,"px"):""),e.$refs.refScrollYSpaceElem);return f&&(f.style.height=l?"".concat(l,"px"):""),t.scrollYTop=u,t.scrollYHeight=s,t.isScrollYBig=d,calcScrollbar(e),e.$nextTick().then(function(){updateStyle(e)})}function checkLastSyncScroll(e,t,l){var a=e.reactData,r=e.internalData,e=r.lcsTimeout;a.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,a.lazScrollLoading=!1},200)}function handleScrollData(e,t,l,a,r){var o=e.reactData,n=e.internalData;l&&(n.lastScrollLeft=r),t&&(n.lastScrollTop=a),o.lastScrollTime=Date.now(),checkLastSyncScroll(e,l,t)}function handleScrollEvent(e,t,l,a,r,o){var n,c,i,s,d,u,f,h,p,m,S,v,y=e.$xeGantt,g=e.internalData,x=g.xeTable,b=e.$refs.refScrollXHandleElem,_=e.$refs.refScrollYHandleElem;b&&_&&x&&(n=_.clientHeight,c=b.clientWidth,_=_.scrollHeight,b=b.scrollWidth,d="",p=h=f=u=s=m=i=v=!1,a&&(S=x.computeScrollXThreshold,(m=o<=0)||(s=b-1<=o+c),g.lastScrollLeft<o?(d="right",b-S<=o+c&&(p=!0)):(d="left",o<=S&&(h=!0))),l&&(S=x.computeScrollYThreshold,(v=r<=0)||(i=_-1<=r+n),g.lastScrollTop<r?(d="bottom",_-S<=r+n&&(f=!0)):(d="top",r<=S&&(u=!0))),handleScrollData(e,l,a,r,o),x={source:sourceType,scrollTop:r,scrollLeft:o,bodyHeight:n,bodyWidth:c,scrollHeight:_,scrollWidth:b,isX:a,isY:l,isTop:v,isBottom:i,isLeft:m,isRight:s,direction:d},(f||u||p||h)&&y.dispatchEvent("scroll-boundary",x,t),y.dispatchEvent("scroll",x,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:{scrollXLoad:!1,scrollYLoad:!1,overflowY:!0,overflowX:!0,scrollbarWidth:0,scrollbarHeight:0,lastScrollTime:0,lazScrollLoading:!1,scrollVMLoading:!1,scrollYHeight:0,scrollYTop:0,isScrollYBig:!1,scrollXLeft:0,scrollXWidth:0,isScrollXBig:!1,minViewDate:null,maxViewDate:null,tableData:[],tableColumn:[],headerGroups:[],viewCellWidth:20},internalData:createInternalData()}},computed:Object.assign({},{}),methods:{refreshData:function(){return handleUpdateData(this),_handleLazyRecalculate(this)},updateViewData:function(){var e=this.reactData,t=this.internalData.xeTable;return t&&(t=t.tableData,e.tableData=t),this.$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,l=this.$refs.refElem;t&&l&&(e?(t.computeRowOpts.isCurrent||t.highlightCurrentRow)&&_xeUtils.default.arrayEach(l.querySelectorAll('[rowid="'.concat(t.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--current")}):_xeUtils.default.arrayEach(l.querySelectorAll(".row--current"),function(e){return(0,_dom.removeClass)(e,"row--current")}))},handleUpdateHoverRow:function(e){var t=this.internalData.xeTable,l=this.$refs.refElem;t&&l&&(e?_xeUtils.default.arrayEach(l.querySelectorAll('.vxe-body--row[rowid="'.concat(t.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--hover")}):_xeUtils.default.arrayEach(l.querySelectorAll(".vxe-body--row.row--hover"),function(e){return(0,_dom.removeClass)(e,"row--hover")}))},triggerHeaderScrollEvent:function(e){var t,l,a,r=this.internalData,o=r.elemStore;r.inVirtualScroll||r.inBodyScroll||r.inFooterScroll||(t=e.currentTarget,o=(0,_util.getRefElem)(o["main-body-scroll"]),l=this.$refs.refScrollXHandleElem,o&&t&&(a=t.scrollLeft,r.inHeaderScroll=!0,(0,_dom.setScrollLeft)(l,a),(0,_dom.setScrollLeft)(o,a),handleScrollEvent(this,e,!1,!0,t.scrollTop,a)))},triggerBodyScrollEvent:function(e){var t,l,a,r,o,n=this,c=n.reactData,i=n.internalData,c=c.scrollXLoad,s=i.elemStore,d=i.lastScrollLeft,u=i.lastScrollTop;i.inVirtualScroll||i.inHeaderScroll||i.inFooterScroll||(t=e.currentTarget,s=(0,_util.getRefElem)(s["main-header-scroll"]),l=n.$refs.refScrollXHandleElem,a=n.$refs.refScrollYHandleElem,d=(r=t.scrollLeft)!==d,u=(o=t.scrollTop)!==u,i.inBodyScroll=!0,i.scrollRenderType="",u&&((0,_dom.setScrollTop)(a,o),syncTableScrollTop(n,o)),d&&(i.inBodyScroll=!0,(0,_dom.setScrollLeft)(l,r),(0,_dom.setScrollLeft)(s,r),c)&&triggerScrollXEvent(n),handleScrollEvent(n,e,u,d,t.scrollTop,r))},triggerVirtualScrollXEvent:function(e){var t,l,a,r=this.reactData,o=this.internalData,r=r.scrollXLoad,n=o.elemStore;o.inHeaderScroll||o.inBodyScroll||(t=e.currentTarget,l=(0,_util.getRefElem)(n["main-header-scroll"]),n=(0,_util.getRefElem)(n["main-body-scroll"]),t&&(a=t.scrollLeft,o.inVirtualScroll=!0,(0,_dom.setScrollLeft)(l,a),(0,_dom.setScrollLeft)(n,a),r&&triggerScrollXEvent(this),handleScrollEvent(this,e,!1,!0,t.scrollTop,a)))},triggerVirtualScrollYEvent:function(e){var t,l,a=this.internalData,r=a.elemStore;a.inHeaderScroll||a.inBodyScroll||(t=e.currentTarget,r=(0,_util.getRefElem)(r["main-body-scroll"]),t&&(l=t.scrollTop,a.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,l),syncTableScrollTop(this,l),handleScrollEvent(this,e,!0,!1,l,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,l=t.$xeGantt,a=t.reactData,r=a.overflowX;return e("div",{ref:"refElem",class:["vxe-gantt-view",{"is--scroll-y":a.overflowY,"is--scroll-x":r,"is--virtual-x":a.scrollXLoad,"is--virtual-y":a.scrollYLoad}]},[e("div",{class:"vxe-gantt-view--render-wrapper"},l.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"})])])}},watch:{"reactData.tableData":function(){handleUpdateData(this)}},mounted:function(){globalEvents.on(this,"resize",this.handleGlobalResizeEvent)},beforeDestroy:function(){var e=this.internalData;globalEvents.off(this,"keydown"),_xeUtils.default.assign(e,createInternalData())},render:function(e){return this.renderVN(e)}});