vxe-gantt 3.0.4 → 3.0.6

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 (40) hide show
  1. package/es/gantt/src/gantt-chart.js +18 -4
  2. package/es/gantt/src/gantt-header.js +29 -6
  3. package/es/gantt/src/gantt-view.js +230 -87
  4. package/es/gantt/src/gantt.js +64 -3
  5. package/es/gantt/style.css +2 -0
  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 +2 -0
  12. package/es/vxe-gantt/style.min.css +1 -1
  13. package/lib/gantt/src/gantt-chart.js +22 -5
  14. package/lib/gantt/src/gantt-chart.min.js +1 -1
  15. package/lib/gantt/src/gantt-header.js +37 -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 -2
  20. package/lib/gantt/src/gantt.min.js +1 -1
  21. package/lib/gantt/style/style.css +2 -0
  22. package/lib/gantt/style/style.min.css +1 -1
  23. package/lib/index.umd.js +527 -113
  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 +2 -0
  32. package/lib/vxe-gantt/style/style.min.css +1 -1
  33. package/package.json +3 -3
  34. package/packages/gantt/src/gantt-chart.ts +20 -4
  35. package/packages/gantt/src/gantt-header.ts +29 -6
  36. package/packages/gantt/src/gantt-view.ts +241 -91
  37. package/packages/gantt/src/gantt.ts +73 -2
  38. package/packages/ui/index.ts +5 -0
  39. package/styles/components/gantt-module/gantt-chart.scss +2 -0
  40. package/styles/theme/base.scss +1 -1
@@ -13,6 +13,12 @@ var _ganttHeader = _interopRequireDefault(require("./gantt-header"));
13
13
  var _ganttBody = _interopRequireDefault(require("./gantt-body"));
14
14
  var _ganttFooter = _interopRequireDefault(require("./gantt-footer"));
15
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
17
+ 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."); }
18
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
19
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
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
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
16
22
  var globalEvents = _core.VxeUI.globalEvents;
17
23
  function createInternalData() {
18
24
  return {
@@ -56,95 +62,267 @@ function handleParseColumn($xeGanttView) {
56
62
  var reactData = $xeGanttView.reactData;
57
63
  var internalData = $xeGanttView.internalData;
58
64
  var ganttProps = $xeGantt;
65
+ var ganttReactData = $xeGantt.reactData;
59
66
  var treeConfig = ganttProps.treeConfig;
67
+ var taskScaleList = ganttReactData.taskScaleList;
60
68
  var minViewDate = reactData.minViewDate,
61
69
  maxViewDate = reactData.maxViewDate;
62
- var taskViewOpts = $xeGantt.computeTaskViewOpts;
70
+ var minScale = _xeUtils.default.last(taskScaleList);
63
71
  var fullCols = [];
64
72
  var groupCols = [];
65
- switch (taskViewOpts.mode) {
66
- case 'year':
67
- break;
68
- case 'quarter':
69
- break;
70
- case 'month':
71
- break;
72
- case 'week':
73
- break;
74
- default:
75
- {
76
- if (minViewDate && maxViewDate) {
77
- var currTime = minViewDate.getTime();
78
- var diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
79
- var countDayNum = Math.max(6, Math.floor(diffDayNum / 86400000) + 1);
80
- var groupList = [];
81
- var colList = [];
82
- var groupMaps = {};
83
- for (var i = 0; i < countDayNum; i++) {
84
- var itemDate = new Date(currTime + i * 86400000);
85
- var yyyyy = "".concat(itemDate.getFullYear(), "-").concat(itemDate.getMonth() + 1);
86
- var mmDd = "".concat(itemDate.getDate());
87
- var groupCol = groupMaps[yyyyy];
88
- var column = {
89
- field: "".concat(yyyyy, "-").concat(mmDd),
90
- title: mmDd
91
- };
92
- if (groupCol) {
93
- groupCol.children.push(column);
94
- fullCols.push(groupCol);
95
- } else {
96
- groupCol = {
97
- field: yyyyy,
98
- title: yyyyy,
99
- children: [column]
100
- };
101
- groupList.push(groupCol);
102
- fullCols.push(groupCol);
103
- groupMaps[yyyyy] = groupCol;
104
- }
105
- colList.push(column);
106
- }
107
- groupCols.push(groupList, colList);
108
- var $xeTable = internalData.xeTable;
109
- if ($xeTable) {
110
- var startField = $xeGantt.computeStartField;
111
- var endField = $xeGantt.computeEndField;
112
- var tableInternalData = $xeTable;
113
- var afterFullData = tableInternalData.afterFullData,
114
- afterTreeFullData = tableInternalData.afterTreeFullData;
115
- var treeOpts = $xeTable.computeTreeOpts;
116
- var transform = treeOpts.transform;
117
- var childrenField = treeOpts.children || treeOpts.childrenField;
118
- var ctMaps = {};
119
- var handleParseRender = function handleParseRender(row) {
120
- var rowid = $xeTable.getRowid(row);
121
- var startValue = _xeUtils.default.get(row, startField);
122
- var endValue = _xeUtils.default.get(row, endField);
123
- if (startValue && endValue) {
124
- var startDate = parseStringDate($xeGanttView, startValue);
125
- var endDate = parseStringDate($xeGanttView, endValue);
126
- var oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / 86400000);
127
- var oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / 86400000) + 1;
128
- ctMaps[rowid] = {
129
- row: row,
130
- rowid: rowid,
131
- oLeftSize: oLeftSize,
132
- oWidthSize: oWidthSize
133
- };
134
- }
135
- };
136
- if (treeConfig) {
137
- _xeUtils.default.eachTree(afterTreeFullData, handleParseRender, {
138
- children: transform ? treeOpts.mapChildrenField : childrenField
139
- });
140
- } else {
141
- afterFullData.forEach(handleParseRender);
142
- }
143
- internalData.chartMaps = ctMaps;
144
- }
73
+ if (minScale && minViewDate && maxViewDate) {
74
+ var minSType = minScale.type;
75
+ var weekScale = taskScaleList.find(function (item) {
76
+ return item.type === 'week';
77
+ });
78
+ var gapTime = 1000 * 60 * 60 * 24;
79
+ switch (minScale.type) {
80
+ case 'hour':
81
+ gapTime = 1000 * 60 * 60;
82
+ break;
83
+ case 'minute':
84
+ gapTime = 1000 * 60;
85
+ break;
86
+ case 'second':
87
+ gapTime = 1000;
88
+ break;
89
+ default:
90
+ {
91
+ break;
92
+ }
93
+ }
94
+ var currTime = minViewDate.getTime();
95
+ var diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
96
+ var countSize = Math.max(5, Math.floor(diffDayNum / gapTime) + 1);
97
+ switch (minScale.type) {
98
+ case 'day':
99
+ case 'date':
100
+ if (diffDayNum > 1000 * 60 * 60 * 24 * 366 * 3) {
101
+ reactData.tableColumn = [];
102
+ reactData.headerGroups = [];
103
+ return;
145
104
  }
146
105
  break;
106
+ case 'hour':
107
+ if (diffDayNum > 1000 * 60 * 60 * 24 * 31 * 3) {
108
+ reactData.tableColumn = [];
109
+ reactData.headerGroups = [];
110
+ return;
111
+ }
112
+ break;
113
+ case 'minute':
114
+ if (diffDayNum > 1000 * 60 * 60 * 24 * 3) {
115
+ reactData.tableColumn = [];
116
+ reactData.headerGroups = [];
117
+ return;
118
+ }
119
+ break;
120
+ case 'second':
121
+ if (diffDayNum > 1000 * 60 * 60 * 3) {
122
+ reactData.tableColumn = [];
123
+ reactData.headerGroups = [];
124
+ return;
125
+ }
126
+ break;
127
+ }
128
+ var renderListMaps = {
129
+ year: [],
130
+ quarter: [],
131
+ month: [],
132
+ week: [],
133
+ day: [],
134
+ date: [],
135
+ hour: [],
136
+ minute: [],
137
+ second: []
138
+ };
139
+ var tempTypeMaps = {
140
+ year: {},
141
+ quarter: {},
142
+ month: {},
143
+ week: {},
144
+ day: {},
145
+ date: {},
146
+ hour: {},
147
+ minute: {},
148
+ second: {}
149
+ };
150
+ var handleData = function handleData(type, colMaps, minCol) {
151
+ if (minSType === type) {
152
+ return;
153
+ }
154
+ var currCol = colMaps[type];
155
+ var currKey = "".concat(currCol.field);
156
+ var currGpCol = tempTypeMaps[type][currKey];
157
+ if (!currGpCol) {
158
+ currGpCol = currCol;
159
+ tempTypeMaps[type][currKey] = currGpCol;
160
+ renderListMaps[type].push(currGpCol);
161
+ }
162
+ if (currGpCol) {
163
+ if (!currGpCol.children) {
164
+ currGpCol.children = [];
165
+ }
166
+ currGpCol.children.push(minCol);
147
167
  }
168
+ };
169
+ for (var i = 0; i < countSize; i++) {
170
+ var itemDate = new Date(currTime + i * gapTime);
171
+ var _XEUtils$toDateString = _xeUtils.default.toDateString(itemDate, 'yyyy-M-d-H-m-s').split('-'),
172
+ _XEUtils$toDateString2 = _slicedToArray(_XEUtils$toDateString, 6),
173
+ yyyy = _XEUtils$toDateString2[0],
174
+ MM = _XEUtils$toDateString2[1],
175
+ dd = _XEUtils$toDateString2[2],
176
+ HH = _XEUtils$toDateString2[3],
177
+ mm = _XEUtils$toDateString2[4],
178
+ ss = _XEUtils$toDateString2[5];
179
+ var e = itemDate.getDay();
180
+ var E = e + 1;
181
+ var q = Math.ceil((itemDate.getMonth() + 1) / 3);
182
+ var W = _xeUtils.default.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined);
183
+ var dateObj = {
184
+ yy: yyyy,
185
+ M: MM,
186
+ d: dd,
187
+ H: HH,
188
+ m: mm,
189
+ s: ss,
190
+ q: q,
191
+ W: W,
192
+ E: E,
193
+ e: e
194
+ };
195
+ var colMaps = {
196
+ year: {
197
+ field: yyyy,
198
+ title: yyyy,
199
+ dateObj: dateObj
200
+ },
201
+ quarter: {
202
+ field: "".concat(yyyy, "_q").concat(q),
203
+ title: "".concat(q),
204
+ dateObj: dateObj
205
+ },
206
+ month: {
207
+ field: "".concat(yyyy, "_").concat(MM),
208
+ title: MM,
209
+ dateObj: dateObj
210
+ },
211
+ week: {
212
+ field: "".concat(yyyy, "_W").concat(W),
213
+ title: "".concat(W),
214
+ dateObj: dateObj
215
+ },
216
+ day: {
217
+ field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_E").concat(E),
218
+ title: "".concat(E),
219
+ dateObj: dateObj
220
+ },
221
+ date: {
222
+ field: "".concat(yyyy, "_").concat(MM, "_").concat(dd),
223
+ title: dd,
224
+ dateObj: dateObj
225
+ },
226
+ hour: {
227
+ field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH),
228
+ title: HH,
229
+ dateObj: dateObj
230
+ },
231
+ minute: {
232
+ field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH, "_").concat(mm),
233
+ title: mm,
234
+ dateObj: dateObj
235
+ },
236
+ second: {
237
+ field: "".concat(yyyy, "_").concat(MM, "_").concat(dd, "_").concat(HH, "_").concat(mm, "_").concat(ss),
238
+ title: ss,
239
+ dateObj: dateObj
240
+ }
241
+ };
242
+ var minCol = colMaps[minSType];
243
+ if (minScale.level < 19) {
244
+ handleData('year', colMaps, minCol);
245
+ }
246
+ if (minScale.level < 17) {
247
+ handleData('quarter', colMaps, minCol);
248
+ }
249
+ if (minScale.level < 14) {
250
+ handleData('month', colMaps, minCol);
251
+ }
252
+ if (minScale.level < 13) {
253
+ handleData('week', colMaps, minCol);
254
+ }
255
+ if (minScale.level < 11) {
256
+ handleData('day', colMaps, minCol);
257
+ }
258
+ if (minScale.level < 12) {
259
+ handleData('date', colMaps, minCol);
260
+ }
261
+ if (minScale.level < 7) {
262
+ handleData('hour', colMaps, minCol);
263
+ }
264
+ if (minScale.level < 5) {
265
+ handleData('minute', colMaps, minCol);
266
+ }
267
+ fullCols.push(minCol);
268
+ }
269
+ taskScaleList.forEach(function (scaleItem) {
270
+ if (scaleItem.type === minSType) {
271
+ groupCols.push({
272
+ scaleItem: scaleItem,
273
+ columns: fullCols
274
+ });
275
+ return;
276
+ }
277
+ var list = renderListMaps[scaleItem.type] || [];
278
+ if (list) {
279
+ list.forEach(function (item) {
280
+ item.childCount = item.children ? item.children.length : 0;
281
+ item.children = undefined;
282
+ });
283
+ }
284
+ groupCols.push({
285
+ scaleItem: scaleItem,
286
+ columns: list
287
+ });
288
+ });
289
+ var $xeTable = internalData.xeTable;
290
+ if ($xeTable) {
291
+ var startField = $xeGantt.computeStartField;
292
+ var endField = $xeGantt.computeEndField;
293
+ var tableInternalData = $xeTable;
294
+ var afterFullData = tableInternalData.afterFullData,
295
+ afterTreeFullData = tableInternalData.afterTreeFullData;
296
+ var treeOpts = $xeTable.computeTreeOpts;
297
+ var transform = treeOpts.transform;
298
+ var childrenField = treeOpts.children || treeOpts.childrenField;
299
+ var ctMaps = {};
300
+ var handleParseRender = function handleParseRender(row) {
301
+ var rowid = $xeTable.getRowid(row);
302
+ var startValue = _xeUtils.default.get(row, startField);
303
+ var endValue = _xeUtils.default.get(row, endField);
304
+ if (startValue && endValue) {
305
+ var startDate = parseStringDate($xeGanttView, startValue);
306
+ var endDate = parseStringDate($xeGanttView, endValue);
307
+ var oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / gapTime);
308
+ var oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / gapTime) + 1;
309
+ ctMaps[rowid] = {
310
+ row: row,
311
+ rowid: rowid,
312
+ oLeftSize: oLeftSize,
313
+ oWidthSize: oWidthSize
314
+ };
315
+ }
316
+ };
317
+ if (treeConfig) {
318
+ _xeUtils.default.eachTree(afterTreeFullData, handleParseRender, {
319
+ children: transform ? treeOpts.mapChildrenField : childrenField
320
+ });
321
+ } else {
322
+ afterFullData.forEach(handleParseRender);
323
+ }
324
+ internalData.chartMaps = ctMaps;
325
+ }
148
326
  }
149
327
  reactData.tableColumn = fullCols;
150
328
  reactData.headerGroups = groupCols;
@@ -552,14 +730,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
552
730
  tableData: [],
553
731
  tableColumn: [],
554
732
  headerGroups: [],
555
- viewCellWidth: 40,
556
- rowHeightStore: {
557
- large: 52,
558
- default: 48,
559
- medium: 44,
560
- small: 40,
561
- mini: 36
562
- }
733
+ viewCellWidth: 20
563
734
  };
564
735
  var internalData = createInternalData();
565
736
  return {
@@ -874,11 +1045,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
874
1045
  overflowY = reactData.overflowY,
875
1046
  scrollXLoad = reactData.scrollXLoad,
876
1047
  scrollYLoad = reactData.scrollYLoad;
877
- var taskViewOpts = $xeGantt.computeTaskViewOpts;
878
1048
  var scrollbarXToTop = $xeGantt.computeScrollbarXToTop;
879
1049
  return h('div', {
880
1050
  ref: 'refElem',
881
- class: ['vxe-gantt-view', "mode--".concat(taskViewOpts.mode || 'day'), {
1051
+ class: ['vxe-gantt-view', {
882
1052
  'is--scroll-y': overflowY,
883
1053
  'is--scroll-x': overflowX,
884
1054
  'is--virtual-x': scrollXLoad,
@@ -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}}var globalEvents=_core.VxeUI.globalEvents;function createInternalData(){return{xeTable:null,startMaps:{},endMaps:{},chartMaps:{},elemStore:{},scrollXStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0},scrollYStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0}}}var maxYHeight=5e6;function parseStringDate(e,t){e=e.$xeGantt.computeTaskOpts.dateFormat;return _xeUtils.default.toStringDate(t,e||null)}function handleParseColumn(o){var e=o.$xeGantt,t=o.reactData,l=o.internalData,r=e.treeConfig,i=t.minViewDate,a=t.maxViewDate,n=[],c=[];switch(e.computeTaskViewOpts.mode){case"year":case"quarter":case"month":case"week":break;default:if(i&&a){for(var s=i.getTime(),d=a.getTime()-i.getTime(),u=Math.max(6,Math.floor(d/864e5)+1),f=[],h=[],p={},m=0;m<u;m++){var S=new Date(s+864e5*m),g="".concat(S.getFullYear(),"-").concat(S.getMonth()+1),S="".concat(S.getDate()),v=p[g],S={field:"".concat(g,"-").concat(S),title:S};v?(v.children.push(S),n.push(v)):(f.push(v={field:g,title:g,children:[S]}),n.push(v),p[g]=v),h.push(S)}c.push(f,h);var x,y,w,E,b,T,D,_=l.xeTable;_&&(x=e.computeStartField,y=e.computeEndField,d=_.afterFullData,E=(w=_.computeTreeOpts).transform,b=w.children||w.childrenField,T={},D=function(e){var t,l=_.getRowid(e),r=_xeUtils.default.get(e,x),a=_xeUtils.default.get(e,y);r&&a&&(r=parseStringDate(o,r),a=parseStringDate(o,a),t=Math.floor((r.getTime()-i.getTime())/864e5),a=Math.floor((a.getTime()-r.getTime())/864e5)+1,T[l]={row:e,rowid:l,oLeftSize:t,oWidthSize:a})},r?_xeUtils.default.eachTree(_.afterTreeFullData,D,{children:E?w.mapChildrenField:b}):d.forEach(D),l.chartMaps=T)}}t.tableColumn=n,t.headerGroups=c}function handleUpdateData(l){var r,a,e,t,o,i,n=l.$xeGantt,c=l.reactData,s=l.internalData,d=n.treeConfig,u=s.xeTable,f=null,h=null;u&&(r=n.computeStartField,a=n.computeEndField,n=u.afterFullData,t=(e=u.computeTreeOpts).transform,o=e.children||e.childrenField,i=function(e){var t=_xeUtils.default.get(e,r),e=_xeUtils.default.get(e,a);t&&e&&(t=parseStringDate(l,t),(!f||f.getTime()>t.getTime())&&(f=t),t=parseStringDate(l,e),!h||h.getTime()<t.getTime())&&(h=t)},d?_xeUtils.default.eachTree(u.afterTreeFullData,i,{children:t?e.mapChildrenField:o}):n.forEach(i)),c.minViewDate=f,c.maxViewDate=h,s.startMaps={},s.endMaps={},handleParseColumn(l)}function calcScrollbar(e){var t=e.$xeGantt,l=e.reactData,r=l.scrollXWidth,a=l.scrollYHeight,o=e.internalData.elemStore,t=t.computeScrollbarOpts,o=(0,_util.getRefElem)(o["main-body-wrapper"]),i=e.$refs.refScrollXHandleElem,e=e.$refs.refScrollYHandleElem;o&&(a=a>o.clientHeight,e&&(l.scrollbarWidth=t.width||e.offsetWidth-e.clientWidth||14),l.overflowY=a,e=r>o.clientWidth,i&&(l.scrollbarHeight=t.height||i.offsetHeight-i.clientHeight||14),l.overflowX=e)}function updateChart(e){var t=e.reactData,l=e.internalData,r=t.viewCellWidth,t=l.elemStore,a=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"))?a[e]:null)&&(t.style.left="".concat(r*e.oLeftSize,"px"),t.style.width="".concat(r*e.oWidthSize,"px"))}),e.$nextTick()}function updateStyle(e){var t,l,r,a,o,i,n,c,s,d=e.$xeGantt,u=e.reactData,f=e.internalData,h=u.scrollbarWidth,p=u.tableColumn,m=u.headerGroups,S=f.elemStore,f=f.xeTable,g=e.$refs.refElem;if(g&&g.clientHeight)return a=d.computeScrollbarOpts,c=d.computeScrollbarXToTop,i=e.$refs.refScrollXLeftCornerElem,n=e.$refs.refScrollXRightCornerElem,o=e.$refs.refScrollXVirtualElem,h=h,s=u.scrollbarHeight,r=l=t=0,f&&(t=f.tBodyHeight,l=f.tHeaderHeight,r=f.tFooterHeight),f="visible",(d.computeScrollbarYToLeft||a.y&&!1===a.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/m.length,"px"))),(a=(0,_util.getRefElem)(S["main-body-scroll"]))&&(a.style.height="".concat(t,"px")),(d=(0,_util.getRefElem)(S["main-footer-scroll"]))&&(d.style.height="".concat(r,"px")),o&&(o.style.height="".concat(s,"px"),o.style.visibility="visible"),(m=e.$refs.refScrollXWrapperElem)&&(m.style.left=c?"".concat(h,"px"):"",m.style.width="".concat(g.clientWidth-h,"px")),i&&(i.style.width=c?"".concat(h,"px"):"",i.style.display=c&&s?"block":""),n&&(n.style.width=c?"":"".concat(h,"px"),n.style.display=!c&&s?"block":""),(d=e.$refs.refScrollYVirtualElem)&&(d.style.width="".concat(h,"px"),d.style.height="".concat(t+l+r,"px"),d.style.visibility=f),(o=e.$refs.refScrollYTopCornerElem)&&(o.style.height="".concat(l,"px"),o.style.display=l?"block":""),(m=e.$refs.refScrollYWrapperElem)&&(m.style.height="".concat(t,"px"),m.style.top="".concat(l,"px")),(g=e.$refs.refScrollYBottomCornerElem)&&(g.style.height="".concat(r,"px"),g.style.top="".concat(l+t,"px"),g.style.display=r?"block":""),(i=e.$refs.refColInfoElem)&&(u.viewCellWidth=i.clientWidth||40),n=u.viewCellWidth*p.length,a&&0<(s=(c=a.clientWidth)-n)&&(u.viewCellWidth+=Math.floor(s/p.length),n=c),h=(0,_util.getRefElem)(S["main-header-table"]),d=(0,_util.getRefElem)(S["main-body-table"]),h&&(h.style.width="".concat(n,"px")),d&&(d.style.width="".concat(n,"px")),u.scrollXWidth=n,updateChart(e)}function _handleLazyRecalculate(e){return calcScrollbar(e),updateStyle(e),updateChart(e),e.$nextTick()}function updateScrollYSpace(e){var t=e.reactData,l=e.internalData,r=t.scrollYLoad,a=t.overflowY,o=l.elemStore,l=l.xeTable,i=(0,_util.getRefElem)(o["main-body-scroll"]),n=(0,_util.getRefElem)(o["main-body-table"]),c=0,s=0,d=!1,l=(l&&(c=l.scrollYTop,s=l.scrollYHeight,d=l.isScrollYBig),s),u=c,f=0,i=(i&&(f=i.clientHeight),d&&(u=i&&n&&i.scrollTop+f>=maxYHeight?maxYHeight-n.clientHeight:c/(s-f)*(maxYHeight-f),l=maxYHeight),r&&a||(u=0),(0,_util.getRefElem)(o["main-chart-wrapper"])),c=(n&&(n.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(u,"px)")),i&&(i.style.transform="translate(".concat(t.scrollXLeft||0,"px, ").concat(u,"px)")),(0,_util.getRefElem)(o["main-body-ySpace"])),f=(c&&(c.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 r=e.reactData,a=e.internalData,e=a.lcsTimeout;r.lazScrollLoading=!0,e&&clearTimeout(e),a.lcsTimeout=setTimeout(function(){a.lcsRunTime=Date.now(),a.lcsTimeout=void 0,a.intoRunScroll=!1,a.inVirtualScroll=!1,a.inWheelScroll=!1,a.inHeaderScroll=!1,a.inBodyScroll=!1,a.inFooterScroll=!1,r.lazScrollLoading=!1},200)}function handleScrollEvent(e,t,l,r,a,o){checkLastSyncScroll(e,r,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,lazScrollLoading:!1,scrollVMLoading:!1,scrollYHeight:0,scrollYTop:0,isScrollYBig:!1,scrollXLeft:0,scrollXWidth:0,isScrollXBig:!1,minViewDate:null,maxViewDate:null,tableData:[],tableColumn:[],headerGroups:[],viewCellWidth:40,rowHeightStore:{large:52,default:48,medium:44,small:40,mini:36}},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,l=this.internalData.xeTable,r=this.$refs.refElem;l&&r&&(e?(t=l.highlightCurrentRow,(l.computeRowOpts.isCurrent||t)&&_xeUtils.default.arrayEach(r.querySelectorAll('[rowid="'.concat(l.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--current")})):_xeUtils.default.arrayEach(r.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,r,a=this.internalData,o=a.elemStore;a.inVirtualScroll||a.inBodyScroll||a.inFooterScroll||(t=e.currentTarget,o=(0,_util.getRefElem)(o["main-body-scroll"]),l=this.$refs.refScrollXHandleElem,o&&t&&(r=t.scrollLeft,a.inHeaderScroll=!0,(0,_dom.setScrollLeft)(l,r),(0,_dom.setScrollLeft)(o,r),handleScrollEvent(this,e,!1,!0,t.scrollTop,r)))},triggerBodyScrollEvent:function(e){var t,l,r,a,o,i=this,n=i.internalData,c=n.elemStore;n.inVirtualScroll||n.inHeaderScroll||n.inFooterScroll||(t=e.currentTarget,c=(0,_util.getRefElem)(c["main-header-scroll"]),l=i.$refs.refScrollXHandleElem,r=i.$refs.refScrollYHandleElem,c&&t&&(a=t.scrollLeft,o=t.scrollTop,n.inBodyScroll=!0,(0,_dom.setScrollLeft)(l,a),(0,_dom.setScrollLeft)(c,a),(0,_dom.setScrollTop)(r,o),syncTableScrollTop(i,o),handleScrollEvent(i,e,!0,!0,t.scrollTop,a)))},triggerFooterScrollEvent:function(e){var t,l=this.internalData;l.inVirtualScroll||l.inHeaderScroll||l.inBodyScroll||(l=e.currentTarget)&&(t=l.scrollLeft,handleScrollEvent(this,e,!1,!0,l.scrollTop,t))},triggerVirtualScrollXEvent:function(e){var t,l,r,a=this.internalData,o=a.elemStore;a.inHeaderScroll||a.inBodyScroll||(t=e.currentTarget,l=(0,_util.getRefElem)(o["main-header-scroll"]),o=(0,_util.getRefElem)(o["main-body-scroll"]),t&&(r=t.scrollLeft,a.inVirtualScroll=!0,(0,_dom.setScrollLeft)(l,r),(0,_dom.setScrollLeft)(o,r),handleScrollEvent(this,e,!1,!0,t.scrollTop,r)))},triggerVirtualScrollYEvent:function(e){var t,l,r=this.internalData,a=r.elemStore;r.inHeaderScroll||r.inBodyScroll||(t=e.currentTarget,a=(0,_util.getRefElem)(a["main-body-scroll"]),t&&(l=t.scrollTop,r.inVirtualScroll=!0,(0,_dom.setScrollTop)(a,l),syncTableScrollTop(this,l),handleScrollEvent(this,e,!0,!1,l,t.scrollLeft)))},handleUpdateSXSpace:function(){var e=this,t=e.reactData,l=t.scrollXLoad,r=t.scrollXWidth,a=e.internalData.elemStore,t=(["header","body","footer"].forEach(function(e){e=(0,_util.getRefElem)(a["main-".concat(e,"-xSpace")]);e&&(e.style.width=l?"".concat(r,"px"):"")}),e.$refs.refScrollXSpaceElem);return t&&(t.style.width="".concat(r,"px")),calcScrollbar(e),e.$nextTick()},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",{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",{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,r=t.reactData,a=r.overflowX,o=r.overflowY,i=r.scrollXLoad,r=r.scrollYLoad,n=l.computeTaskViewOpts,l=l.computeScrollbarXToTop;return e("div",{ref:"refElem",class:["vxe-gantt-view","mode--".concat(n.mode||"day"),{"is--scroll-y":o,"is--scroll-x":a,"is--virtual-x":i,"is--virtual-y":r}]},[e("div",{class:"vxe-gantt-view--render-wrapper"},l?[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,r=Array(t);l<t;l++)r[l]=e[l];return r}function _iterableToArrayLimit(e,t){var l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var r,a,o,n,i=[],c=!0,s=!1;try{if(o=(l=l.call(e)).next,0===t){if(Object(l)!==l)return;c=!1}else for(;!(c=(r=o.call(l)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=l.return&&(n=l.return(),Object(n)!==n))return}finally{if(s)throw a}}return i}}function _arrayWithHoles(e){if(Array.isArray(e))return e}var globalEvents=_core.VxeUI.globalEvents;function createInternalData(){return{xeTable:null,startMaps:{},endMaps:{},chartMaps:{},elemStore:{},scrollXStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0},scrollYStore:{preloadSize:0,offsetSize:0,visibleSize:0,visibleStartIndex:0,visibleEndIndex:0,startIndex:0,endIndex:0}}}var maxYHeight=5e6;function parseStringDate(e,t){e=e.$xeGantt.computeTaskOpts.dateFormat;return _xeUtils.default.toStringDate(t,e||null)}function handleParseColumn(o){var e=o.$xeGantt,t=o.reactData,l=o.internalData,r=e.reactData,a=e.treeConfig,r=r.taskScaleList,n=t.minViewDate,i=t.maxViewDate,c=_xeUtils.default.last(r),s=[],d=[];if(c&&n&&i){var u=c.type,f=r.find(function(e){return"week"===e.type}),h=864e5;switch(c.type){case"hour":h=36e5;break;case"minute":h=6e4;break;case"second":h=1e3}var p=n.getTime(),m=i.getTime()-n.getTime(),U=Math.max(5,Math.floor(m/h)+1);switch(c.type){case"day":case"date":if(948672e5<m)return t.tableColumn=[],void(t.headerGroups=[]);break;case"hour":if(80352e5<m)return t.tableColumn=[],void(t.headerGroups=[]);break;case"minute":if(2592e5<m)return t.tableColumn=[],void(t.headerGroups=[]);break;case"second":if(108e5<m)return t.tableColumn=[],void(t.headerGroups=[])}for(var v={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},S={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}},y=function(e,t,l){var r,a;u!==e&&(t=t[e],r="".concat(t.field),(a=S[e][r])||(S[e][r]=a=t,v[e].push(a)),a)&&(a.children||(a.children=[]),a.children.push(l))},g=0;g<U;g++){var x=new Date(p+g*h),b=_slicedToArray(_xeUtils.default.toDateString(x,"yyyy-M-d-H-m-s").split("-"),6),_=b[0],w=b[1],E=b[2],T=b[3],D=b[4],b=b[5],Y=x.getDay(),L=Y+1,H=Math.ceil((x.getMonth()+1)/3),x=_xeUtils.default.getYearWeek(x,f?f.startDay:void 0),Y={yy:_,M:w,d:E,H:T,m:D,s:b,q:H,W:x,E:L,e:Y},H={year:{field:_,title:_,dateObj:Y},quarter:{field:"".concat(_,"_q").concat(H),title:"".concat(H),dateObj:Y},month:{field:"".concat(_,"_").concat(w),title:w,dateObj:Y},week:{field:"".concat(_,"_W").concat(x),title:"".concat(x),dateObj:Y},day:{field:"".concat(_,"_").concat(w,"_").concat(E,"_E").concat(L),title:"".concat(L),dateObj:Y},date:{field:"".concat(_,"_").concat(w,"_").concat(E),title:E,dateObj:Y},hour:{field:"".concat(_,"_").concat(w,"_").concat(E,"_").concat(T),title:T,dateObj:Y},minute:{field:"".concat(_,"_").concat(w,"_").concat(E,"_").concat(T,"_").concat(D),title:D,dateObj:Y},second:{field:"".concat(_,"_").concat(w,"_").concat(E,"_").concat(T,"_").concat(D,"_").concat(b),title:b,dateObj:Y}},x=H[u];c.level<19&&y("year",H,x),c.level<17&&y("quarter",H,x),c.level<14&&y("month",H,x),c.level<13&&y("week",H,x),c.level<11&&y("day",H,x),c.level<12&&y("date",H,x),c.level<7&&y("hour",H,x),c.level<5&&y("minute",H,x),s.push(x)}r.forEach(function(e){var t;e.type===u?d.push({scaleItem:e,columns:s}):((t=v[e.type]||[])&&t.forEach(function(e){e.childCount=e.children?e.children.length:0,e.children=void 0}),d.push({scaleItem:e,columns:t}))});var R,C,X,$,V,k=l.xeTable;k&&(R=e.computeStartField,C=e.computeEndField,i=k.afterFullData,e=(r=k.computeTreeOpts).transform,X=r.children||r.childrenField,$={},V=function(e){var t,l=k.getRowid(e),r=_xeUtils.default.get(e,R),a=_xeUtils.default.get(e,C);r&&a&&(r=parseStringDate(o,r),a=parseStringDate(o,a),t=Math.floor((r.getTime()-n.getTime())/h),a=Math.floor((a.getTime()-r.getTime())/h)+1,$[l]={row:e,rowid:l,oLeftSize:t,oWidthSize:a})},a?_xeUtils.default.eachTree(k.afterTreeFullData,V,{children:e?r.mapChildrenField:X}):i.forEach(V),l.chartMaps=$)}t.tableColumn=s,t.headerGroups=d}function handleUpdateData(l){var r,a,e,t,o,n,i=l.$xeGantt,c=l.reactData,s=l.internalData,d=i.treeConfig,u=s.xeTable,f=null,h=null;u&&(r=i.computeStartField,a=i.computeEndField,i=u.afterFullData,t=(e=u.computeTreeOpts).transform,o=e.children||e.childrenField,n=function(e){var t=_xeUtils.default.get(e,r),e=_xeUtils.default.get(e,a);t&&e&&(t=parseStringDate(l,t),(!f||f.getTime()>t.getTime())&&(f=t),t=parseStringDate(l,e),!h||h.getTime()<t.getTime())&&(h=t)},d?_xeUtils.default.eachTree(u.afterTreeFullData,n,{children:t?e.mapChildrenField:o}):i.forEach(n)),c.minViewDate=f,c.maxViewDate=h,s.startMaps={},s.endMaps={},handleParseColumn(l)}function calcScrollbar(e){var t=e.$xeGantt,l=e.reactData,r=l.scrollXWidth,a=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&&(a=a>o.clientHeight,e&&(l.scrollbarWidth=t.width||e.offsetWidth-e.clientWidth||14),l.overflowY=a,e=r>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,r=t.viewCellWidth,t=l.elemStore,a=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"))?a[e]:null)&&(t.style.left="".concat(r*e.oLeftSize,"px"),t.style.width="".concat(r*e.oWidthSize,"px"))}),e.$nextTick()}function updateStyle(e){var t,l,r,a,o,n,i,c,s,d=e.$xeGantt,u=e.reactData,f=e.internalData,h=u.scrollbarWidth,p=u.tableColumn,m=u.headerGroups,v=f.elemStore,f=f.xeTable,S=e.$refs.refElem;if(S&&S.clientHeight)return a=d.computeScrollbarOpts,c=d.computeScrollbarXToTop,n=e.$refs.refScrollXLeftCornerElem,i=e.$refs.refScrollXRightCornerElem,o=e.$refs.refScrollXVirtualElem,h=h,s=u.scrollbarHeight,r=l=t=0,f&&(t=f.tBodyHeight,l=f.tHeaderHeight,r=f.tFooterHeight),f="visible",(d.computeScrollbarYToLeft||a.y&&!1===a.y.visible)&&(h=0,f="hidden"),(d=(0,_util.getRefElem)(v["main-header-scroll"]))&&(d.style.height="".concat(l,"px"),d.style.setProperty("--vxe-ui-gantt-view-cell-height","".concat(l/m.length,"px"))),(a=(0,_util.getRefElem)(v["main-body-scroll"]))&&(a.style.height="".concat(t,"px")),(d=(0,_util.getRefElem)(v["main-footer-scroll"]))&&(d.style.height="".concat(r,"px")),o&&(o.style.height="".concat(s,"px"),o.style.visibility="visible"),(m=e.$refs.refScrollXWrapperElem)&&(m.style.left=c?"".concat(h,"px"):"",m.style.width="".concat(S.clientWidth-h,"px")),n&&(n.style.width=c?"".concat(h,"px"):"",n.style.display=c&&s?"block":""),i&&(i.style.width=c?"":"".concat(h,"px"),i.style.display=!c&&s?"block":""),(d=e.$refs.refScrollYVirtualElem)&&(d.style.width="".concat(h,"px"),d.style.height="".concat(t+l+r,"px"),d.style.visibility=f),(o=e.$refs.refScrollYTopCornerElem)&&(o.style.height="".concat(l,"px"),o.style.display=l?"block":""),(m=e.$refs.refScrollYWrapperElem)&&(m.style.height="".concat(t,"px"),m.style.top="".concat(l,"px")),(S=e.$refs.refScrollYBottomCornerElem)&&(S.style.height="".concat(r,"px"),S.style.top="".concat(l+t,"px"),S.style.display=r?"block":""),(n=e.$refs.refColInfoElem)&&(u.viewCellWidth=n.clientWidth||40),i=u.viewCellWidth*p.length,a&&0<(s=(c=a.clientWidth)-i)&&(u.viewCellWidth+=Math.floor(s/p.length),i=c),h=(0,_util.getRefElem)(v["main-header-table"]),d=(0,_util.getRefElem)(v["main-body-table"]),h&&(h.style.width="".concat(i,"px")),d&&(d.style.width="".concat(i,"px")),u.scrollXWidth=i,updateChart(e)}function _handleLazyRecalculate(e){return calcScrollbar(e),updateStyle(e),updateChart(e),e.$nextTick()}function updateScrollYSpace(e){var t=e.reactData,l=e.internalData,r=t.scrollYLoad,a=t.overflowY,o=l.elemStore,l=l.xeTable,n=(0,_util.getRefElem)(o["main-body-scroll"]),i=(0,_util.getRefElem)(o["main-body-table"]),c=0,s=0,d=!1,l=(l&&(c=l.scrollYTop,s=l.scrollYHeight,d=l.isScrollYBig),s),u=c,f=0,n=(n&&(f=n.clientHeight),d&&(u=n&&i&&n.scrollTop+f>=maxYHeight?maxYHeight-i.clientHeight:c/(s-f)*(maxYHeight-f),l=maxYHeight),r&&a||(u=0),(0,_util.getRefElem)(o["main-chart-wrapper"])),c=(i&&(i.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=(c&&(c.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 r=e.reactData,a=e.internalData,e=a.lcsTimeout;r.lazScrollLoading=!0,e&&clearTimeout(e),a.lcsTimeout=setTimeout(function(){a.lcsRunTime=Date.now(),a.lcsTimeout=void 0,a.intoRunScroll=!1,a.inVirtualScroll=!1,a.inWheelScroll=!1,a.inHeaderScroll=!1,a.inBodyScroll=!1,a.inFooterScroll=!1,r.lazScrollLoading=!1},200)}function handleScrollEvent(e,t,l,r,a,o){checkLastSyncScroll(e,r,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,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,l=this.internalData.xeTable,r=this.$refs.refElem;l&&r&&(e?(t=l.highlightCurrentRow,(l.computeRowOpts.isCurrent||t)&&_xeUtils.default.arrayEach(r.querySelectorAll('[rowid="'.concat(l.getRowid(e),'"]')),function(e){return(0,_dom.addClass)(e,"row--current")})):_xeUtils.default.arrayEach(r.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,r,a=this.internalData,o=a.elemStore;a.inVirtualScroll||a.inBodyScroll||a.inFooterScroll||(t=e.currentTarget,o=(0,_util.getRefElem)(o["main-body-scroll"]),l=this.$refs.refScrollXHandleElem,o&&t&&(r=t.scrollLeft,a.inHeaderScroll=!0,(0,_dom.setScrollLeft)(l,r),(0,_dom.setScrollLeft)(o,r),handleScrollEvent(this,e,!1,!0,t.scrollTop,r)))},triggerBodyScrollEvent:function(e){var t,l,r,a,o,n=this,i=n.internalData,c=i.elemStore;i.inVirtualScroll||i.inHeaderScroll||i.inFooterScroll||(t=e.currentTarget,c=(0,_util.getRefElem)(c["main-header-scroll"]),l=n.$refs.refScrollXHandleElem,r=n.$refs.refScrollYHandleElem,c&&t&&(a=t.scrollLeft,o=t.scrollTop,i.inBodyScroll=!0,(0,_dom.setScrollLeft)(l,a),(0,_dom.setScrollLeft)(c,a),(0,_dom.setScrollTop)(r,o),syncTableScrollTop(n,o),handleScrollEvent(n,e,!0,!0,t.scrollTop,a)))},triggerFooterScrollEvent:function(e){var t,l=this.internalData;l.inVirtualScroll||l.inHeaderScroll||l.inBodyScroll||(l=e.currentTarget)&&(t=l.scrollLeft,handleScrollEvent(this,e,!1,!0,l.scrollTop,t))},triggerVirtualScrollXEvent:function(e){var t,l,r,a=this.internalData,o=a.elemStore;a.inHeaderScroll||a.inBodyScroll||(t=e.currentTarget,l=(0,_util.getRefElem)(o["main-header-scroll"]),o=(0,_util.getRefElem)(o["main-body-scroll"]),t&&(r=t.scrollLeft,a.inVirtualScroll=!0,(0,_dom.setScrollLeft)(l,r),(0,_dom.setScrollLeft)(o,r),handleScrollEvent(this,e,!1,!0,t.scrollTop,r)))},triggerVirtualScrollYEvent:function(e){var t,l,r=this.internalData,a=r.elemStore;r.inHeaderScroll||r.inBodyScroll||(t=e.currentTarget,a=(0,_util.getRefElem)(a["main-body-scroll"]),t&&(l=t.scrollTop,r.inVirtualScroll=!0,(0,_dom.setScrollTop)(a,l),syncTableScrollTop(this,l),handleScrollEvent(this,e,!0,!1,l,t.scrollLeft)))},handleUpdateSXSpace:function(){var e=this,t=e.reactData,l=t.scrollXLoad,r=t.scrollXWidth,a=e.internalData.elemStore,t=(["header","body","footer"].forEach(function(e){e=(0,_util.getRefElem)(a["main-".concat(e,"-xSpace")]);e&&(e.style.width=l?"".concat(r,"px"):"")}),e.$refs.refScrollXSpaceElem);return t&&(t.style.width="".concat(r,"px")),calcScrollbar(e),e.$nextTick()},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",{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",{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,r=t.reactData,a=r.overflowX;return e("div",{ref:"refElem",class:["vxe-gantt-view",{"is--scroll-y":r.overflowY,"is--scroll-x":a,"is--virtual-x":r.scrollXLoad,"is--virtual-y":r.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)}});
@@ -37,6 +37,20 @@ var tableProps = _vxeTable.VxeTable.props;
37
37
  var tableMethods = {};
38
38
  var propKeys = Object.keys(tableProps);
39
39
  var defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Gantt', 'Bottom', 'Pager']];
40
+ var viewTypeLevelMaps = {
41
+ year: 19,
42
+ quarter: 17,
43
+ month: 15,
44
+ week: 13,
45
+ day: 11,
46
+ date: 9,
47
+ hour: 7,
48
+ minute: 5,
49
+ second: 3
50
+ };
51
+ function getViewTypeLevel(type) {
52
+ return viewTypeLevelMaps[type || 'date'] || viewTypeLevelMaps.date;
53
+ }
40
54
  function getTableOns($xeGantt) {
41
55
  var _vm = $xeGantt;
42
56
  var $listeners = _vm.$listeners;
@@ -88,6 +102,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
88
102
  zoomConfig: Object,
89
103
  layouts: Array,
90
104
  taskConfig: Object,
105
+ taskViewScaleConfs: Object,
91
106
  taskViewConfig: Object,
92
107
  taskBarConfig: Object,
93
108
  taskSplitConfig: Object,
@@ -124,7 +139,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
124
139
  currentPage: 1
125
140
  },
126
141
  showLeftView: true,
127
- showRightView: true
142
+ showRightView: true,
143
+ taskScaleList: []
128
144
  };
129
145
  var internalData = createInternalData();
130
146
  return {
@@ -174,6 +190,11 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
174
190
  var props = $xeGantt;
175
191
  return Object.assign({}, getConfig().gantt.taskConfig, props.taskConfig);
176
192
  },
193
+ computeTaskViewScaleMapsOpts: function computeTaskViewScaleMapsOpts() {
194
+ var $xeGantt = this;
195
+ var props = $xeGantt;
196
+ return _xeUtils.default.merge({}, getConfig().gantt.taskViewScaleConfs, props.taskViewScaleConfs);
197
+ },
177
198
  computeTaskViewOpts: function computeTaskViewOpts() {
178
199
  var $xeGantt = this;
179
200
  var props = $xeGantt;
@@ -189,6 +210,12 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
189
210
  var props = $xeGantt;
190
211
  return Object.assign({}, getConfig().gantt.taskSplitConfig, props.taskSplitConfig);
191
212
  },
213
+ computeTaskScaleConfs: function computeTaskScaleConfs() {
214
+ var $xeGantt = this;
215
+ var taskViewOpts = $xeGantt.computeTaskViewOpts;
216
+ var scales = taskViewOpts.scales;
217
+ return scales;
218
+ },
192
219
  computeTitleField: function computeTitleField() {
193
220
  var $xeGantt = this;
194
221
  var taskOpts = $xeGantt.computeTaskOpts;
@@ -247,7 +274,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
247
274
  stys.maxHeight = maxHeight === 'auto' || maxHeight === '100%' ? '100%' : (0, _dom.toCssUnit)(maxHeight);
248
275
  }
249
276
  }
250
- if (barStyle) {
277
+ if (barStyle && !_xeUtils.default.isFunction(barStyle)) {
251
278
  var bgColor = barStyle.bgColor,
252
279
  completedBgColor = barStyle.completedBgColor;
253
280
  if (bgColor) {
@@ -434,6 +461,10 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
434
461
  proxyConfig: function proxyConfig() {
435
462
  var $xeGantt = this;
436
463
  $xeGantt.initProxy();
464
+ },
465
+ computeTaskScaleConfs: function computeTaskScaleConfs() {
466
+ var $xeGantt = this;
467
+ $xeGantt.handleTaskScaleConfig();
437
468
  }
438
469
  },
439
470
  methods: Object.assign(Object.assign({}, tableMethods), {
@@ -444,6 +475,47 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
444
475
  $gantt: $xeGantt
445
476
  }, params));
446
477
  },
478
+ handleTaskScaleConfig: function handleTaskScaleConfig() {
479
+ var $xeGantt = this;
480
+ var reactData = $xeGantt.reactData;
481
+ var taskScaleConfs = $xeGantt.computeTaskScaleConfs;
482
+ var taskViewScaleMapsOpts = $xeGantt.computeTaskViewScaleMapsOpts;
483
+ var scaleConfs = [];
484
+ if (taskScaleConfs) {
485
+ var keyMaps = {};
486
+ taskScaleConfs.forEach(function (conf) {
487
+ var sConf = !conf || _xeUtils.default.isString(conf) ? {
488
+ type: conf
489
+ } : conf;
490
+ var type = sConf.type;
491
+ if (!type || !viewTypeLevelMaps[type]) {
492
+ (0, _log.errLog)('vxe.error.errProp', ["type=".concat(type), _xeUtils.default.keys(viewTypeLevelMaps).join(',')]);
493
+ return;
494
+ }
495
+ if (keyMaps[type]) {
496
+ (0, _log.errLog)('vxe.error.repeatProp', ['type', type]);
497
+ return;
498
+ }
499
+ keyMaps[type] = true;
500
+ scaleConfs.push(Object.assign({}, type ? taskViewScaleMapsOpts[type] || {} : {}, sConf, {
501
+ level: getViewTypeLevel(type)
502
+ }));
503
+ });
504
+ }
505
+ if (!scaleConfs.length) {
506
+ scaleConfs.push({
507
+ type: 'month',
508
+ level: viewTypeLevelMaps.month
509
+ }, {
510
+ type: 'day',
511
+ level: viewTypeLevelMaps.day
512
+ });
513
+ }
514
+ reactData.taskScaleList = _xeUtils.default.orderBy(scaleConfs, {
515
+ field: 'level',
516
+ order: 'desc'
517
+ });
518
+ },
447
519
  initToolbar: function initToolbar() {
448
520
  var $xeGantt = this;
449
521
  $xeGantt.$nextTick(function () {
@@ -2141,6 +2213,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
2141
2213
  }
2142
2214
  }
2143
2215
  });
2216
+ $xeGantt.handleTaskScaleConfig();
2144
2217
  $xeGantt.initPages();
2145
2218
  },
2146
2219
  mounted: function mounted() {