vxe-gantt 4.0.3 → 4.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/es/gantt/src/gantt-body.js +46 -6
  2. package/es/gantt/src/gantt-header.js +22 -6
  3. package/es/gantt/src/gantt-view.js +232 -89
  4. package/es/gantt/src/gantt.js +59 -2
  5. package/es/gantt/src/util.js +6 -0
  6. package/es/gantt/style.css +35 -3
  7. package/es/gantt/style.min.css +1 -1
  8. package/es/style.css +1 -1
  9. package/es/style.min.css +1 -1
  10. package/es/ui/index.js +6 -1
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-gantt/style.css +35 -3
  13. package/es/vxe-gantt/style.min.css +1 -1
  14. package/lib/gantt/src/gantt-body.js +51 -6
  15. package/lib/gantt/src/gantt-body.min.js +1 -1
  16. package/lib/gantt/src/gantt-header.js +34 -6
  17. package/lib/gantt/src/gantt-header.min.js +1 -1
  18. package/lib/gantt/src/gantt-view.js +255 -99
  19. package/lib/gantt/src/gantt-view.min.js +1 -1
  20. package/lib/gantt/src/gantt.js +74 -1
  21. package/lib/gantt/src/gantt.min.js +1 -1
  22. package/lib/gantt/src/util.js +7 -0
  23. package/lib/gantt/src/util.min.js +1 -1
  24. package/lib/gantt/style/style.css +35 -3
  25. package/lib/gantt/style/style.min.css +1 -1
  26. package/lib/index.umd.js +476 -121
  27. package/lib/index.umd.min.js +1 -1
  28. package/lib/style.css +1 -1
  29. package/lib/style.min.css +1 -1
  30. package/lib/ui/index.js +6 -1
  31. package/lib/ui/index.min.js +1 -1
  32. package/lib/ui/src/log.js +1 -1
  33. package/lib/ui/src/log.min.js +1 -1
  34. package/lib/vxe-gantt/style/style.css +35 -3
  35. package/lib/vxe-gantt/style/style.min.css +1 -1
  36. package/package.json +3 -3
  37. package/packages/gantt/src/gantt-body.ts +50 -7
  38. package/packages/gantt/src/gantt-header.ts +23 -7
  39. package/packages/gantt/src/gantt-view.ts +243 -93
  40. package/packages/gantt/src/gantt.ts +68 -1
  41. package/packages/gantt/src/util.ts +7 -0
  42. package/packages/ui/index.ts +5 -0
  43. package/styles/components/gantt-module/gantt-chart.scss +10 -0
  44. package/styles/components/gantt.scss +37 -3
  45. package/styles/theme/base.scss +1 -1
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_util=require("./util"),_ganttChart=_interopRequireDefault(require("./gantt-chart"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewBody",setup(){let c=(0,_vue.inject)("$xeGantt",{}),r=(0,_vue.inject)("$xeGanttView",{}),{reactData:o,internalData:a}=r,n=(0,_vue.ref)(),u=(0,_vue.ref)(),i=(0,_vue.ref)(),v=(0,_vue.ref)(),p=(0,_vue.ref)(),O=(e,t,a,l,r,o)=>{var n=e.reactData.resizeHeightFlag,u=e.internalData.fullAllDataRowIdData,{computeCellOpts:e,computeRowOpts:i,computeDefaultRowHeight:v}=e.getComputeMaps(),e=e.value,i=i.value,v=v.value,u=u[a]||{},a=0<(n?u.resizeHeight:0),n=(0,_util.getCellRestHeight)(u,e,i,v);return(0,_vue.h)("td",{key:o,class:["vxe-gantt-view--body-column",{"col--rs-height":a}],style:{height:n+"px"},onClick(e){c.handleTaskCellClickEvent(e,{row:t,column:r})},onDblclick(e){c.handleTaskCellDblclickEvent(e,{row:t,column:r})}})},S=(c,e)=>{let{treeConfig:p,stripe:s,highlightHoverRow:d,editConfig:h}=c.props,{treeExpandedFlag:g,selectRadioRow:w,pendingRowFlag:_}=c.reactData,{fullAllDataRowIdData:f,treeExpandedMaps:m,pendingRowMaps:x}=c.internalData;var{computeRadioOpts:t,computeCheckboxOpts:a,computeTreeOpts:l,computeRowOpts:r}=c.getComputeMaps();let b=t.value,y=a.value,C=r.value;t=l.value;let R=t.transform,D=t.children||t.childrenField,{tableColumn:k,scrollYLoad:M}=o,H=[];return e.forEach((a,l)=>{let r=c.getRowid(a);var e=f[r]||{},t={};let o=l,n=-1,u=(e&&(o=e.index,n=e._index),!1),i=(h&&(u=c.isInsertByRow(a)),(C.isHover||d)&&(t.onMouseenter=e=>{c.triggerHoverEvent(e,{row:a,rowIndex:o})},t.onMouseleave=()=>{c.clearHoverRow()}),H.push((0,_vue.h)("tr",Object.assign({key:p?r:l,class:["vxe-gantt-view--body-row",{"row--stripe":s&&(n+1)%2==0,"is--new":u,"row--radio":b.highlight&&c.eqRow(w,a),"row--checked":y.highlight&&c.isCheckedByCheckboxRow(a),"row--pending":!!_&&!!x[r]}],rowid:r},t),k.map((e,t)=>O(c,a,r,l,e,t)))),!1),v=[];!p||M||R||(v=a[D],i=!!g&&v&&0<v.length&&!!m[r]),i&&H.push(...S(c,v))}),H};return(0,_vue.onMounted)(()=>{var e=a.elemStore,t="main-body-";e[t+"wrapper"]=n,e[t+"scroll"]=u,e[t+"table"]=i,e[t+"xSpace"]=v,e[t+"ySpace"]=p}),(0,_vue.onUnmounted)(()=>{var e=a.elemStore,t="main-body-";e[t+"wrapper"]=null,e[t+"scroll"]=null,e[t+"table"]=null,e[t+"xSpace"]=null,e[t+"ySpace"]=null}),()=>{var e=r.internalData.xeTable;let{tableData:t,tableColumn:a,viewCellWidth:l}=o;return(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--body-wrapper"},[(0,_vue.h)("div",{ref:u,class:"vxe-gantt-view--body-inner-wrapper",onScroll:r.triggerBodyScrollEvent},[(0,_vue.h)("div",{ref:v,class:"vxe-body--x-space"}),(0,_vue.h)("div",{ref:p,class:"vxe-body--y-space"}),(0,_vue.h)("table",{ref:i,class:"vxe-gantt-view--body-table"},[(0,_vue.h)("colgroup",{},a.map((e,t)=>(0,_vue.h)("col",{key:t,style:{width:l+"px"}}))),(0,_vue.h)("tbody",{},e?S(e,t):[])]),(0,_vue.h)(_ganttChart.default)])])}}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_util=require("./util"),_ganttChart=_interopRequireDefault(require("./gantt-chart"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewBody",setup(){let g=(0,_vue.inject)("$xeGantt",{}),r=(0,_vue.inject)("$xeGanttView",{}),{reactData:o,internalData:a}=r,n=(0,_vue.ref)(),i=(0,_vue.ref)(),u=(0,_vue.ref)(),s=(0,_vue.ref)(),d=(0,_vue.ref)(),H=(a,l,e,r,o,n,t,i)=>{var u=a.reactData.resizeHeightFlag,{fullAllDataRowIdData:s,visibleColumn:d}=a.internalData,{computeCellOpts:v,computeRowOpts:c,computeDefaultRowHeight:p,computeResizableOpts:w}=a.getComputeMaps(),v=v.value,c=c.value,p=p.value,w=w.value.isAllRowDrag,s=s[e]||{},u=0<(u?s.resizeHeight:0),s=(0,_util.getCellRestHeight)(s,v,c,p),v=[];if(w&&c.resizable){let t={$table:a,$grid:null,$gantt:g,seq:-1,rowid:e,row:l,rowIndex:r,$rowIndex:o,_rowIndex:n,column:d[0],columnIndex:0,$columnIndex:0,_columnIndex:0,fixed:"",type:"",isHidden:!1,isEdit:!1,level:-1,visibleData:[],data:[],items:[]};v.push((0,_vue.h)("div",{class:"vxe-gantt-view-cell--row-resizable",onMousedown:e=>a.handleRowResizeMousedownEvent(e,t),onDblclick:e=>a.handleRowResizeDblclickEvent(e,t)}))}return(0,_vue.h)("td",{key:i,class:["vxe-gantt-view--body-column",{"col--rs-height":u}],style:{height:s+"px"},onClick(e){g.handleTaskCellClickEvent(e,{row:l,column:t})},onDblclick(e){g.handleTaskCellDblclickEvent(e,{row:l,column:t})}},v)},O=(d,e)=>{let{treeConfig:v,stripe:c,highlightHoverRow:p,editConfig:w}=d.props,{treeExpandedFlag:g,selectRadioRow:h,pendingRowFlag:_,isRowGroupStatus:x}=d.reactData,{fullAllDataRowIdData:m,treeExpandedMaps:b,pendingRowMaps:D}=d.internalData;var{computeRadioOpts:t,computeCheckboxOpts:a,computeTreeOpts:l,computeRowOpts:r}=d.getComputeMaps();let f=t.value,R=a.value,y=r.value;t=l.value;let C=t.transform,k=t.children||t.childrenField,{tableColumn:E,scrollYLoad:M}=o,I=[];return e.forEach((a,l)=>{let r=d.getRowid(a);var e=m[r]||{},t={};let o=l,n=-1,i=(e&&(o=e.index,n=e._index),!1),u=(w&&(i=d.isInsertByRow(a)),(y.isHover||p)&&(t.onMouseenter=e=>{d.triggerHoverEvent(e,{row:a,rowIndex:o})},t.onMouseleave=()=>{d.clearHoverRow()}),!y.drag||x||v&&!C||(t.onDragstart=d.handleRowDragDragstartEvent,t.onDragend=d.handleRowDragDragendEvent,t.onDragover=d.handleRowDragDragoverEvent),I.push((0,_vue.h)("tr",Object.assign({key:v?r:l,class:["vxe-gantt-view--body-row",{"row--stripe":c&&(n+1)%2==0,"is--new":i,"row--radio":f.highlight&&d.eqRow(h,a),"row--checked":R.highlight&&d.isCheckedByCheckboxRow(a),"row--pending":!!_&&!!D[r]}],rowid:r},t),E.map((e,t)=>H(d,a,r,o,l,n,e,t)))),!1),s=[];!v||M||C||(s=a[k],u=!!g&&s&&0<s.length&&!!b[r]),u&&I.push(...O(d,s))}),I};return(0,_vue.onMounted)(()=>{var e=a.elemStore,t="main-body-";e[t+"wrapper"]=n,e[t+"scroll"]=i,e[t+"table"]=u,e[t+"xSpace"]=s,e[t+"ySpace"]=d}),(0,_vue.onUnmounted)(()=>{var e=a.elemStore,t="main-body-";e[t+"wrapper"]=null,e[t+"scroll"]=null,e[t+"table"]=null,e[t+"xSpace"]=null,e[t+"ySpace"]=null}),()=>{var e=r.internalData.xeTable;let{tableData:t,tableColumn:a,viewCellWidth:l}=o;return(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--body-wrapper"},[(0,_vue.h)("div",{ref:i,class:"vxe-gantt-view--body-inner-wrapper",onScroll:r.triggerBodyScrollEvent},[(0,_vue.h)("div",{ref:s,class:"vxe-body--x-space"}),(0,_vue.h)("div",{ref:d,class:"vxe-body--y-space"}),(0,_vue.h)("table",{ref:u,class:"vxe-gantt-view--body-table"},[(0,_vue.h)("colgroup",{},a.map((e,t)=>(0,_vue.h)("col",{key:t,style:{width:l+"px"}}))),(0,_vue.h)("tbody",{},e?O(e,t):[])]),(0,_vue.h)(_ganttChart.default)])])}}});
@@ -6,6 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _vue = require("vue");
8
8
  var _comp = require("../../ui/src/comp");
9
+ var _core = require("@vxe-ui/core");
10
+ const {
11
+ getI18n
12
+ } = _core.VxeUI;
9
13
  var _default = exports.default = (0, _comp.defineVxeComponent)({
10
14
  name: 'VxeGanttViewHeader',
11
15
  setup() {
@@ -44,16 +48,40 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
44
48
  width: `${viewCellWidth}px`
45
49
  }
46
50
  });
47
- })), (0, _vue.h)('thead', {}, headerGroups.map((cols, rIndex) => {
51
+ })), (0, _vue.h)('thead', {}, headerGroups.map(({
52
+ scaleItem,
53
+ columns
54
+ }, $rowIndex) => {
55
+ const {
56
+ type,
57
+ titleMethod
58
+ } = scaleItem;
48
59
  return (0, _vue.h)('tr', {
49
- key: rIndex
50
- }, cols.map((column, cIndex) => {
60
+ key: $rowIndex
61
+ }, columns.map((column, cIndex) => {
62
+ const dateObj = column.params;
63
+ let label = `${column.title}`;
64
+ if ($rowIndex < headerGroups.length - 1) {
65
+ if (scaleItem.type === 'day') {
66
+ label = getI18n(`vxe.gantt.dayss.w${dateObj.e}`);
67
+ } else {
68
+ label = getI18n(`vxe.gantt.${!$rowIndex && headerGroups.length > 1 ? 'tFullFormat' : 'tSimpleFormat'}.${type}`, dateObj);
69
+ }
70
+ }
71
+ if (titleMethod) {
72
+ label = `${titleMethod({
73
+ scaleObj: scaleItem,
74
+ title: label,
75
+ dateObj: dateObj,
76
+ $rowIndex
77
+ })}`;
78
+ }
51
79
  return (0, _vue.h)('th', {
52
80
  key: cIndex,
53
81
  class: 'vxe-gantt-view--header-column',
54
- colspan: column.children ? column.children.length : null,
55
- title: `${column.field}`
56
- }, column.title);
82
+ colspan: column.childCount || null,
83
+ title: label
84
+ }, label);
57
85
  }));
58
86
  }))])])]);
59
87
  };
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewHeader",setup(){let t=(0,_vue.inject)("$xeGanttView",{}),{reactData:l,internalData:a}=t,u=(0,_vue.ref)(),n=(0,_vue.ref)(),v=(0,_vue.ref)(),o=(0,_vue.ref)();return(0,_vue.onMounted)(()=>{var e=a.elemStore,r="main-header-";e[r+"wrapper"]=u,e[r+"scroll"]=n,e[r+"table"]=v,e[r+"xSpace"]=o}),(0,_vue.onUnmounted)(()=>{var e=a.elemStore,r="main-header-";e[r+"wrapper"]=null,e[r+"scroll"]=null,e[r+"table"]=null,e[r+"xSpace"]=null}),()=>{let{tableColumn:e,headerGroups:r,viewCellWidth:a}=l;return(0,_vue.h)("div",{ref:u,class:"vxe-gantt-view--header-wrapper"},[(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--header-inner-wrapper",onScroll:t.triggerHeaderScrollEvent},[(0,_vue.h)("div",{ref:o,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:v,class:"vxe-gantt-view--header-table"},[(0,_vue.h)("colgroup",{},e.map((e,r)=>(0,_vue.h)("col",{key:r,style:{width:a+"px"}}))),(0,_vue.h)("thead",{},r.map((e,r)=>(0,_vue.h)("tr",{key:r},e.map((e,r)=>(0,_vue.h)("th",{key:r,class:"vxe-gantt-view--header-column",colspan:e.children?e.children.length:null,title:""+e.field},e.title)))))])])])}}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_core=require("@vxe-ui/core");let getI18n=_core.VxeUI.getI18n;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewHeader",setup(){let t=(0,_vue.inject)("$xeGanttView",{}),{reactData:a,internalData:r}=t,l=(0,_vue.ref)(),n=(0,_vue.ref)(),u=(0,_vue.ref)(),v=(0,_vue.ref)();return(0,_vue.onMounted)(()=>{var e=r.elemStore,t="main-header-";e[t+"wrapper"]=l,e[t+"scroll"]=n,e[t+"table"]=u,e[t+"xSpace"]=v}),(0,_vue.onUnmounted)(()=>{var e=r.elemStore,t="main-header-";e[t+"wrapper"]=null,e[t+"scroll"]=null,e[t+"table"]=null,e[t+"xSpace"]=null}),()=>{let{tableColumn:e,headerGroups:o,viewCellWidth:r}=a;return(0,_vue.h)("div",{ref:l,class:"vxe-gantt-view--header-wrapper"},[(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--header-inner-wrapper",onScroll:t.triggerHeaderScrollEvent},[(0,_vue.h)("div",{ref:v,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:u,class:"vxe-gantt-view--header-table"},[(0,_vue.h)("colgroup",{},e.map((e,t)=>(0,_vue.h)("col",{key:t,style:{width:r+"px"}}))),(0,_vue.h)("thead",{},o.map(({scaleItem:l,columns:e},n)=>{let{type:u,titleMethod:v}=l;return(0,_vue.h)("tr",{key:n},e.map((e,t)=>{var r=e.params;let a=""+e.title;return n<o.length-1&&(a="day"===l.type?getI18n("vxe.gantt.dayss.w"+r.e):getI18n(`vxe.gantt.${!n&&1<o.length?"tFullFormat":"tSimpleFormat"}.`+u,r)),v&&(a=""+v({scaleObj:l,title:a,dateObj:r,$rowIndex:n})),(0,_vue.h)("th",{key:t,class:"vxe-gantt-view--header-column",colspan:e.childCount||null,title:a},a)}))}))])])])}}});
@@ -55,7 +55,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
55
55
  const $xeGantt = (0, _vue.inject)('$xeGantt', {});
56
56
  const {
57
57
  computeTaskOpts,
58
- computeTaskViewOpts,
59
58
  computeStartField,
60
59
  computeEndField,
61
60
  computeScrollbarOpts,
@@ -102,14 +101,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
102
101
  tableData: [],
103
102
  tableColumn: [],
104
103
  headerGroups: [],
105
- viewCellWidth: 40,
106
- rowHeightStore: {
107
- large: 52,
108
- default: 48,
109
- medium: 44,
110
- small: 40,
111
- mini: 36
112
- }
104
+ viewCellWidth: 20
113
105
  });
114
106
  const internalData = createInternalData();
115
107
  const refMaps = {
@@ -134,106 +126,271 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
134
126
  };
135
127
  const handleParseColumn = () => {
136
128
  const ganttProps = $xeGantt.props;
129
+ const ganttReactData = $xeGantt.reactData;
137
130
  const {
138
131
  treeConfig
139
132
  } = ganttProps;
133
+ const {
134
+ taskScaleList
135
+ } = ganttReactData;
140
136
  const {
141
137
  minViewDate,
142
138
  maxViewDate
143
139
  } = reactData;
144
- const taskViewOpts = computeTaskViewOpts.value;
140
+ const minScale = _xeUtils.default.last(taskScaleList);
145
141
  const fullCols = [];
146
142
  const groupCols = [];
147
- switch (taskViewOpts.mode) {
148
- case 'year':
149
- break;
150
- case 'quarter':
151
- break;
152
- case 'month':
153
- break;
154
- case 'week':
155
- break;
156
- default:
157
- {
158
- if (minViewDate && maxViewDate) {
159
- const currTime = minViewDate.getTime();
160
- const diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
161
- const countDayNum = Math.max(6, Math.floor(diffDayNum / 86400000) + 1);
162
- const groupList = [];
163
- const colList = [];
164
- const groupMaps = {};
165
- for (let i = 0; i < countDayNum; i++) {
166
- const itemDate = new Date(currTime + i * 86400000);
167
- const yyyyy = `${itemDate.getFullYear()}-${itemDate.getMonth() + 1}`;
168
- const mmDd = `${itemDate.getDate()}`;
169
- let groupCol = groupMaps[yyyyy];
170
- const column = {
171
- field: `${yyyyy}-${mmDd}`,
172
- title: mmDd
173
- };
174
- if (groupCol) {
175
- groupCol.children.push(column);
176
- fullCols.push(groupCol);
177
- } else {
178
- groupCol = {
179
- field: yyyyy,
180
- title: yyyyy,
181
- children: [column]
182
- };
183
- groupList.push(groupCol);
184
- fullCols.push(groupCol);
185
- groupMaps[yyyyy] = groupCol;
186
- }
187
- colList.push(column);
188
- }
189
- groupCols.push(groupList, colList);
190
- const $xeTable = internalData.xeTable;
191
- if ($xeTable) {
192
- const startField = computeStartField.value;
193
- const endField = computeEndField.value;
194
- const {
195
- computeTreeOpts
196
- } = $xeTable.getComputeMaps();
197
- const tableInternalData = $xeTable.internalData;
198
- const {
199
- afterFullData,
200
- afterTreeFullData
201
- } = tableInternalData;
202
- const treeOpts = computeTreeOpts.value;
203
- const {
204
- transform
205
- } = treeOpts;
206
- const childrenField = treeOpts.children || treeOpts.childrenField;
207
- const ctMaps = {};
208
- const handleParseRender = row => {
209
- const rowid = $xeTable.getRowid(row);
210
- const startValue = _xeUtils.default.get(row, startField);
211
- const endValue = _xeUtils.default.get(row, endField);
212
- if (startValue && endValue) {
213
- const startDate = parseStringDate(startValue);
214
- const endDate = parseStringDate(endValue);
215
- const oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / 86400000);
216
- const oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / 86400000) + 1;
217
- ctMaps[rowid] = {
218
- row,
219
- rowid,
220
- oLeftSize,
221
- oWidthSize
222
- };
223
- }
224
- };
225
- if (treeConfig) {
226
- _xeUtils.default.eachTree(afterTreeFullData, handleParseRender, {
227
- children: transform ? treeOpts.mapChildrenField : childrenField
228
- });
229
- } else {
230
- afterFullData.forEach(handleParseRender);
231
- }
232
- internalData.chartMaps = ctMaps;
233
- }
143
+ if (minScale && minViewDate && maxViewDate) {
144
+ const minSType = minScale.type;
145
+ const weekScale = taskScaleList.find(item => item.type === 'week');
146
+ let gapTime = 1000 * 60 * 60 * 24;
147
+ switch (minScale.type) {
148
+ case 'hour':
149
+ gapTime = 1000 * 60 * 60;
150
+ break;
151
+ case 'minute':
152
+ gapTime = 1000 * 60;
153
+ break;
154
+ case 'second':
155
+ gapTime = 1000;
156
+ break;
157
+ default:
158
+ {
159
+ break;
160
+ }
161
+ }
162
+ const currTime = minViewDate.getTime();
163
+ const diffDayNum = maxViewDate.getTime() - minViewDate.getTime();
164
+ const countSize = Math.max(5, Math.floor(diffDayNum / gapTime) + 1);
165
+ switch (minScale.type) {
166
+ case 'day':
167
+ case 'date':
168
+ if (diffDayNum > 1000 * 60 * 60 * 24 * 366 * 3) {
169
+ reactData.tableColumn = [];
170
+ reactData.headerGroups = [];
171
+ return;
172
+ }
173
+ break;
174
+ case 'hour':
175
+ if (diffDayNum > 1000 * 60 * 60 * 24 * 31 * 3) {
176
+ reactData.tableColumn = [];
177
+ reactData.headerGroups = [];
178
+ return;
234
179
  }
235
180
  break;
181
+ case 'minute':
182
+ if (diffDayNum > 1000 * 60 * 60 * 24 * 3) {
183
+ reactData.tableColumn = [];
184
+ reactData.headerGroups = [];
185
+ return;
186
+ }
187
+ break;
188
+ case 'second':
189
+ if (diffDayNum > 1000 * 60 * 60 * 3) {
190
+ reactData.tableColumn = [];
191
+ reactData.headerGroups = [];
192
+ return;
193
+ }
194
+ break;
195
+ }
196
+ const renderListMaps = {
197
+ year: [],
198
+ quarter: [],
199
+ month: [],
200
+ week: [],
201
+ day: [],
202
+ date: [],
203
+ hour: [],
204
+ minute: [],
205
+ second: []
206
+ };
207
+ const tempTypeMaps = {
208
+ year: {},
209
+ quarter: {},
210
+ month: {},
211
+ week: {},
212
+ day: {},
213
+ date: {},
214
+ hour: {},
215
+ minute: {},
216
+ second: {}
217
+ };
218
+ const handleData = (type, colMaps, minCol) => {
219
+ if (minSType === type) {
220
+ return;
221
+ }
222
+ const currCol = colMaps[type];
223
+ const currKey = `${currCol.field}`;
224
+ let currGpCol = tempTypeMaps[type][currKey];
225
+ if (!currGpCol) {
226
+ currGpCol = currCol;
227
+ tempTypeMaps[type][currKey] = currGpCol;
228
+ renderListMaps[type].push(currGpCol);
229
+ }
230
+ if (currGpCol) {
231
+ if (!currGpCol.children) {
232
+ currGpCol.children = [];
233
+ }
234
+ currGpCol.children.push(minCol);
235
+ }
236
+ };
237
+ for (let i = 0; i < countSize; i++) {
238
+ const itemDate = new Date(currTime + i * gapTime);
239
+ const [yyyy, MM, dd, HH, mm, ss] = _xeUtils.default.toDateString(itemDate, 'yyyy-M-d-H-m-s').split('-');
240
+ const e = itemDate.getDay();
241
+ const E = e + 1;
242
+ const q = Math.ceil((itemDate.getMonth() + 1) / 3);
243
+ const W = _xeUtils.default.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined);
244
+ const dateObj = {
245
+ yy: yyyy,
246
+ M: MM,
247
+ d: dd,
248
+ H: HH,
249
+ m: mm,
250
+ s: ss,
251
+ q,
252
+ W,
253
+ E,
254
+ e
255
+ };
256
+ const colMaps = {
257
+ year: {
258
+ field: yyyy,
259
+ title: yyyy,
260
+ params: dateObj
261
+ },
262
+ quarter: {
263
+ field: `${yyyy}_q${q}`,
264
+ title: q,
265
+ params: dateObj
266
+ },
267
+ month: {
268
+ field: `${yyyy}_${MM}`,
269
+ title: MM,
270
+ params: dateObj
271
+ },
272
+ week: {
273
+ field: `${yyyy}_W${W}`,
274
+ title: W,
275
+ params: dateObj
276
+ },
277
+ day: {
278
+ field: `${yyyy}_${MM}_${dd}_E${E}`,
279
+ title: E,
280
+ params: dateObj
281
+ },
282
+ date: {
283
+ field: `${yyyy}_${MM}_${dd}`,
284
+ title: dd,
285
+ params: dateObj
286
+ },
287
+ hour: {
288
+ field: `${yyyy}_${MM}_${dd}_${HH}`,
289
+ title: HH,
290
+ params: dateObj
291
+ },
292
+ minute: {
293
+ field: `${yyyy}_${MM}_${dd}_${HH}_${mm}`,
294
+ title: mm,
295
+ params: dateObj
296
+ },
297
+ second: {
298
+ field: `${yyyy}_${MM}_${dd}_${HH}_${mm}_${ss}`,
299
+ title: ss,
300
+ params: dateObj
301
+ }
302
+ };
303
+ const minCol = colMaps[minSType];
304
+ if (minScale.level < 19) {
305
+ handleData('year', colMaps, minCol);
236
306
  }
307
+ if (minScale.level < 17) {
308
+ handleData('quarter', colMaps, minCol);
309
+ }
310
+ if (minScale.level < 14) {
311
+ handleData('month', colMaps, minCol);
312
+ }
313
+ if (minScale.level < 13) {
314
+ handleData('week', colMaps, minCol);
315
+ }
316
+ if (minScale.level < 11) {
317
+ handleData('day', colMaps, minCol);
318
+ }
319
+ if (minScale.level < 12) {
320
+ handleData('date', colMaps, minCol);
321
+ }
322
+ if (minScale.level < 7) {
323
+ handleData('hour', colMaps, minCol);
324
+ }
325
+ if (minScale.level < 5) {
326
+ handleData('minute', colMaps, minCol);
327
+ }
328
+ fullCols.push(minCol);
329
+ }
330
+ taskScaleList.forEach(scaleItem => {
331
+ if (scaleItem.type === minSType) {
332
+ groupCols.push({
333
+ scaleItem,
334
+ columns: fullCols
335
+ });
336
+ return;
337
+ }
338
+ const list = renderListMaps[scaleItem.type] || [];
339
+ if (list) {
340
+ list.forEach(item => {
341
+ item.childCount = item.children ? item.children.length : 0;
342
+ item.children = undefined;
343
+ });
344
+ }
345
+ groupCols.push({
346
+ scaleItem,
347
+ columns: list
348
+ });
349
+ });
350
+ const $xeTable = internalData.xeTable;
351
+ if ($xeTable) {
352
+ const startField = computeStartField.value;
353
+ const endField = computeEndField.value;
354
+ const {
355
+ computeTreeOpts
356
+ } = $xeTable.getComputeMaps();
357
+ const tableInternalData = $xeTable.internalData;
358
+ const {
359
+ afterFullData,
360
+ afterTreeFullData
361
+ } = tableInternalData;
362
+ const treeOpts = computeTreeOpts.value;
363
+ const {
364
+ transform
365
+ } = treeOpts;
366
+ const childrenField = treeOpts.children || treeOpts.childrenField;
367
+ const ctMaps = {};
368
+ const handleParseRender = row => {
369
+ const rowid = $xeTable.getRowid(row);
370
+ const startValue = _xeUtils.default.get(row, startField);
371
+ const endValue = _xeUtils.default.get(row, endField);
372
+ if (startValue && endValue) {
373
+ const startDate = parseStringDate(startValue);
374
+ const endDate = parseStringDate(endValue);
375
+ const oLeftSize = Math.floor((startDate.getTime() - minViewDate.getTime()) / gapTime);
376
+ const oWidthSize = Math.floor((endDate.getTime() - startDate.getTime()) / gapTime) + 1;
377
+ ctMaps[rowid] = {
378
+ row,
379
+ rowid,
380
+ oLeftSize,
381
+ oWidthSize
382
+ };
383
+ }
384
+ };
385
+ if (treeConfig) {
386
+ _xeUtils.default.eachTree(afterTreeFullData, handleParseRender, {
387
+ children: transform ? treeOpts.mapChildrenField : childrenField
388
+ });
389
+ } else {
390
+ afterFullData.forEach(handleParseRender);
391
+ }
392
+ internalData.chartMaps = ctMaps;
393
+ }
237
394
  }
238
395
  reactData.tableColumn = fullCols;
239
396
  reactData.headerGroups = groupCols;
@@ -833,11 +990,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
833
990
  scrollXLoad,
834
991
  scrollYLoad
835
992
  } = reactData;
836
- const taskViewOpts = computeTaskViewOpts.value;
837
993
  const scrollbarXToTop = computeScrollbarXToTop.value;
838
994
  return (0, _vue.h)('div', {
839
995
  ref: refElem,
840
- class: ['vxe-gantt-view', `mode--${taskViewOpts.mode || 'day'}`, {
996
+ class: ['vxe-gantt-view', {
841
997
  'is--scroll-y': overflowY,
842
998
  'is--scroll-x': overflowX,
843
999
  'is--virtual-x': scrollXLoad,
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_dom=require("../../ui/src/dom"),_core=require("@vxe-ui/core"),_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}}let 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}}}let maxYHeight=5e6;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",setup(p,f){var e=_xeUtils.default.uniqueId();let _=(0,_vue.inject)("$xeGantt",{}),{computeTaskOpts:m,computeTaskViewOpts:w,computeStartField:y,computeEndField:S,computeScrollbarOpts:b,computeScrollbarXToTop:T,computeScrollbarYToLeft:E}=_.getComputeMaps(),D=(0,_vue.ref)(),R=(0,_vue.ref)(),H=(0,_vue.ref)(),o=(0,_vue.ref)(),L=(0,_vue.ref)(),Y=(0,_vue.ref)(),s=(0,_vue.ref)(),V=(0,_vue.ref)(),C=(0,_vue.ref)(),U=(0,_vue.ref)(),M=(0,_vue.ref)(),a=(0,_vue.ref)(),c=(0,_vue.ref)(),W=(0,_vue.ref)(),q=(0,_vue.reactive)({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}}),F=createInternalData(),x={refElem:D},z={},l={xID:e,props:p,context:f,reactData:q,internalData:F,getRefMaps:()=>x,getComputeMaps:()=>z},X=e=>{var l=m.value.dateFormat;return _xeUtils.default.toStringDate(e,l||null)},t=()=>{var e=_.props.treeConfig,l=F.xeTable;let a=null,i=null;if(l){let t=y.value,r=S.value;var o=l.getComputeMaps().computeTreeOpts,{afterFullData:l,afterTreeFullData:s}=l.internalData,o=o.value,u=o.transform,n=o.children||o.childrenField,c=e=>{var l=_xeUtils.default.get(e,t),e=_xeUtils.default.get(e,r);l&&e&&(l=X(l),(!a||a.getTime()>l.getTime())&&(a=l),l=X(e),!i||i.getTime()<l.getTime())&&(i=l)};e?_xeUtils.default.eachTree(s,c,{children:u?o.mapChildrenField:n}):l.forEach(c)}q.minViewDate=a,q.maxViewDate=i,F.startMaps={},F.endMaps={},(()=>{var e=_.props.treeConfig;let{minViewDate:n,maxViewDate:l}=q;var t=[],r=[];switch(w.value.mode){case"year":case"quarter":case"month":case"week":break;default:if(n&&l){var a=n.getTime(),c=l.getTime()-n.getTime(),i=Math.max(6,Math.floor(c/864e5)+1),o=[],s=[],v={};for(let l=0;l<i;l++){var d=new Date(a+864e5*l),h=d.getFullYear()+"-"+(d.getMonth()+1),d=""+d.getDate();let e=v[h];d={field:h+"-"+d,title:d};e?(e.children.push(d),t.push(e)):(e={field:h,title:h,children:[d]},o.push(e),t.push(e),v[h]=e),s.push(d)}r.push(o,s);let u=F.xeTable;if(u){let i=y.value,o=S.value;var c=u.getComputeMaps().computeTreeOpts,{afterFullData:g,afterTreeFullData:p}=u.internalData,c=c.value,f=c.transform,m=c.children||c.childrenField;let s={};var x=e=>{var l,t=u.getRowid(e),r=_xeUtils.default.get(e,i),a=_xeUtils.default.get(e,o);r&&a&&(r=X(r),a=X(a),l=Math.floor((r.getTime()-n.getTime())/864e5),a=Math.floor((a.getTime()-r.getTime())/864e5)+1,s[t]={row:e,rowid:t,oLeftSize:l,oWidthSize:a})};e?_xeUtils.default.eachTree(p,x,{children:f?c.mapChildrenField:m}):g.forEach(x),F.chartMaps=s}}}q.tableColumn=t,q.headerGroups=r})()},v=()=>{var{scrollXWidth:e,scrollYHeight:l}=q,t=F.elemStore,r=b.value,t=(0,_util.getRefElem)(t["main-body-wrapper"]),a=o.value,i=s.value;t&&(l=l>t.clientHeight,i&&(q.scrollbarWidth=r.width||i.offsetWidth-i.clientWidth||14),q.overflowY=l,i=e>t.clientWidth,a&&(q.scrollbarHeight=r.height||a.offsetHeight-a.clientHeight||14),q.overflowX=i)},k=()=>{let t=q.viewCellWidth,{elemStore:e,chartMaps:r}=F;var l=(0,_util.getRefElem)(e["main-chart-wrapper"]);return l&&_xeUtils.default.arrayEach(l.children,e=>{var l=e.children[0];l&&(e=(e=e.getAttribute("rowid"))?r[e]:null)&&(l.style.left=t*e.oLeftSize+"px",l.style.width=t*e.oWidthSize+"px")}),(0,_vue.nextTick)()},d=()=>{var{scrollbarWidth:o,scrollbarHeight:s,tableColumn:u,headerGroups:n}=q,c=F.elemStore,v=F.xeTable,d=D.value;if(d&&d.clientHeight){var h=b.value,g=T.value,p=E.value,f=L.value,m=Y.value,x=R.value;let e=o;o=s;let l=0,t=0,r=0,a=(v&&(s=v.internalData,l=s.tBodyHeight,t=s.tHeaderHeight,r=s.tFooterHeight),"visible");(p||h.y&&!1===h.y.visible)&&(e=0,a="hidden");v=(0,_util.getRefElem)(c["main-header-scroll"]),s=(v&&(v.style.height=t+"px",v.style.setProperty("--vxe-ui-gantt-view-cell-height",t/n.length+"px")),(0,_util.getRefElem)(c["main-body-scroll"])),p=(s&&(s.style.height=l+"px"),(0,_util.getRefElem)(c["main-footer-scroll"])),h=(p&&(p.style.height=r+"px"),x&&(x.style.height=o+"px",x.style.visibility="visible"),C.value),v=(h&&(h.style.left=g?e+"px":"",h.style.width=d.clientWidth-e+"px"),f&&(f.style.width=g?e+"px":"",f.style.display=g&&o?"block":""),m&&(m.style.width=g?"":e+"px",m.style.display=!g&&o?"block":""),H.value),n=(v&&(v.style.width=e+"px",v.style.height=l+t+r+"px",v.style.visibility=a),V.value),p=(n&&(n.style.height=t+"px",n.style.display=t?"block":""),U.value),x=(p&&(p.style.height=l+"px",p.style.top=t+"px"),M.value),h=(x&&(x.style.height=r+"px",x.style.top=t+l+"px",x.style.display=r?"block":""),W.value);h&&(q.viewCellWidth=h.clientWidth||40);let i=q.viewCellWidth*u.length;s&&0<(f=(d=s.clientWidth)-i)&&(q.viewCellWidth+=Math.floor(f/u.length),i=d);m=(0,_util.getRefElem)(c["main-header-table"]),g=(0,_util.getRefElem)(c["main-body-table"]);return m&&(m.style.width=i+"px"),g&&(g.style.width=i+"px"),q.scrollXWidth=i,k()}},r=()=>(v(),d(),k(),(0,_vue.nextTick)());let u=(e,l,t,r,a)=>{var i;i=F.lcsTimeout,q.lazScrollLoading=!0,i&&clearTimeout(i),F.lcsTimeout=setTimeout(()=>{F.lcsRunTime=Date.now(),F.lcsTimeout=void 0,F.intoRunScroll=!1,F.inVirtualScroll=!1,F.inWheelScroll=!1,F.inHeaderScroll=!1,F.inBodyScroll=!1,F.inFooterScroll=!1,q.lazScrollLoading=!1},200)},n=e=>{var l=F.xeTable;l&&(l=l.internalData.elemStore,l=(0,_util.getRefElem)(l["main-body-scroll"]))&&(l.scrollTop=e)};e={handleUpdateStyle:d,handleLazyRecalculate:r,handleUpdateCurrentRow(e){var l,t,r=F.xeTable,a=D.value;r&&a&&(e?(l=r.props.highlightCurrentRow,t=r.getComputeMaps().computeRowOpts,(t.value.isCurrent||l)&&_xeUtils.default.arrayEach(a.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${r.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--current"))):_xeUtils.default.arrayEach(a.querySelectorAll(".vxe-gantt-view--body-row.row--current"),e=>(0,_dom.removeClass)(e,"row--current")))},handleUpdateHoverRow(e){var l=F.xeTable,t=D.value;l&&t&&(e?_xeUtils.default.arrayEach(t.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${l.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--hover")):_xeUtils.default.arrayEach(t.querySelectorAll(".vxe-gantt-view--body-row.row--hover"),e=>(0,_dom.removeClass)(e,"row--hover")))},triggerHeaderScrollEvent(e){var{elemStore:l,inVirtualScroll:t,inBodyScroll:r,inFooterScroll:a}=F;t||r||a||(t=e.currentTarget,r=(0,_util.getRefElem)(l["main-body-scroll"]),a=o.value,r&&t&&(e=t.scrollLeft,F.inHeaderScroll=!0,(0,_dom.setScrollLeft)(a,e),(0,_dom.setScrollLeft)(r,e),u(0,0,0,t.scrollTop)))},triggerBodyScrollEvent(e){var l,{elemStore:t,inVirtualScroll:r,inHeaderScroll:a,inFooterScroll:i}=F;r||a||i||(r=e.currentTarget,a=(0,_util.getRefElem)(t["main-header-scroll"]),i=o.value,e=s.value,a&&r&&(t=r.scrollLeft,l=r.scrollTop,F.inBodyScroll=!0,(0,_dom.setScrollLeft)(i,t),(0,_dom.setScrollLeft)(a,t),(0,_dom.setScrollTop)(e,l),n(l),u(0,0,0,r.scrollTop)))},triggerFooterScrollEvent(e){var{inVirtualScroll:l,inHeaderScroll:t,inBodyScroll:r}=F;l||t||r||(l=e.currentTarget)&&(l.scrollLeft,u(0,0,0,l.scrollTop))},triggerVirtualScrollXEvent(e){var{elemStore:l,inHeaderScroll:t,inBodyScroll:r}=F;t||r||(t=e.currentTarget,r=(0,_util.getRefElem)(l["main-header-scroll"]),e=(0,_util.getRefElem)(l["main-body-scroll"]),t&&(l=t.scrollLeft,F.inVirtualScroll=!0,(0,_dom.setScrollLeft)(r,l),(0,_dom.setScrollLeft)(e,l),u(0,0,0,t.scrollTop)))},triggerVirtualScrollYEvent(e){var{elemStore:l,inHeaderScroll:t,inBodyScroll:r}=F;t||r||(t=e.currentTarget,r=(0,_util.getRefElem)(l["main-body-scroll"]),t&&(e=t.scrollTop,F.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,e),n(e),u(0,0,0,0,t.scrollLeft)))},handleUpdateSXSpace(){let{scrollXLoad:l,scrollXWidth:t}=q,r=F.elemStore;["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(r[`main-${e}-xSpace`]);e&&(e.style.width=l?t+"px":"")});var e=a.value;return e&&(e.style.width=t+"px"),v(),(0,_vue.nextTick)()},handleUpdateSYSpace:()=>{var e=F.elemStore,l=F.xeTable,t=(0,_util.getRefElem)(e["main-body-scroll"]),r=(0,_util.getRefElem)(e["main-body-table"]);let a=0,i=0,o=!1,s=(l&&(l=l.reactData,a=l.scrollYTop,i=l.scrollYHeight,o=l.isScrollYBig),i),u=a,n=0;t&&(n=t.clientHeight),o&&(u=t&&r&&t.scrollTop+n>=maxYHeight?maxYHeight-r.clientHeight:(maxYHeight-n)*(a/(i-n)),s=maxYHeight);l=(0,_util.getRefElem)(e["main-chart-wrapper"]),r&&(r.style.transform=`translate(${q.scrollXLeft||0}px, ${u}px)`),l&&(l.style.transform=`translate(${q.scrollXLeft||0}px, ${u}px)`),t=(0,_util.getRefElem)(e["main-body-ySpace"]),t&&(t.style.height=s?s+"px":""),r=c.value;return r&&(r.style.height=s?s+"px":""),q.scrollYTop=u,q.scrollYHeight=i,q.isScrollYBig=o,v(),(0,_vue.nextTick)().then(()=>{d()})},handleUpdateSYStatus(e){q.scrollYLoad=e}};let B=()=>{r()},h=(Object.assign(l,{refreshData(){return t(),r()},updateViewData(){var e=F.xeTable;return e&&(e=e.reactData.tableData,q.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(F.xeTable=e),(0,_vue.nextTick)()}},e),()=>(0,_vue.h)("div",{key:"vsx",ref:R,class:"vxe-gantt-view--scroll-x-virtual"},[(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:C,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:o,class:"vxe-gantt-view--scroll-x-handle",onScroll:l.triggerVirtualScrollXEvent},[(0,_vue.h)("div",{ref:a,class:"vxe-gantt-view--scroll-x-space"})])]),(0,_vue.h)("div",{ref:Y,class:"vxe-gantt-view--scroll-x-right-corner"})])),i=()=>(0,_vue.h)("div",{ref:H,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:V,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:U,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:s,class:"vxe-gantt-view--scroll-y-handle",onScroll:l.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:c,class:"vxe-gantt-view--scroll-y-space"})])]),(0,_vue.h)("div",{ref:M,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),I=()=>(0,_vue.h)("div",{class:"vxe-gantt-view--viewport-wrapper"},[(0,_vue.h)(_ganttHeader.default),(0,_vue.h)(_ganttBody.default),(0,_vue.h)(_ganttFooter.default)]),$=()=>{var e=E.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[i(),I()]:[I(),i()])};let g=(0,_vue.ref)(0);return(0,_vue.watch)(()=>q.tableData,()=>{g.value++}),(0,_vue.watch)(()=>q.tableData.length,()=>{g.value++}),(0,_vue.watch)(g,()=>{t()}),(0,_vue.onMounted)(()=>{globalEvents.on(l,"resize",B)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(l,"keydown"),_xeUtils.default.assign(F,createInternalData())}),l.renderVN=()=>{var{overflowX:e,overflowY:l,scrollXLoad:t,scrollYLoad:r}=q,a=w.value,i=T.value;return(0,_vue.h)("div",{ref:D,class:["vxe-gantt-view","mode--"+(a.mode||"day"),{"is--scroll-y":l,"is--scroll-x":e,"is--virtual-x":t,"is--virtual-y":r}]},[(0,_vue.h)("div",{class:"vxe-gantt-view--render-wrapper"},i?[h(),$()]:[$(),h()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:W,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",l),l},render(){return this.renderVN()}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_dom=require("../../ui/src/dom"),_core=require("@vxe-ui/core"),_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}}let 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}}}let maxYHeight=5e6;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",setup(_,W){var e=_xeUtils.default.uniqueId();let s=(0,_vue.inject)("$xeGantt",{}),{computeTaskOpts:$,computeStartField:U,computeEndField:M,computeScrollbarOpts:x,computeScrollbarXToTop:y,computeScrollbarYToLeft:w}=s.getComputeMaps(),i=(0,_vue.ref)(),S=(0,_vue.ref)(),b=(0,_vue.ref)(),o=(0,_vue.ref)(),T=(0,_vue.ref)(),E=(0,_vue.ref)(),n=(0,_vue.ref)(),D=(0,_vue.ref)(),H=(0,_vue.ref)(),R=(0,_vue.ref)(),C=(0,_vue.ref)(),a=(0,_vue.ref)(),c=(0,_vue.ref)(),L=(0,_vue.ref)(),k=(0,_vue.reactive)({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}),q=createInternalData(),X={refElem:i},F={},t={xID:e,props:_,context:W,reactData:k,internalData:q,getRefMaps:()=>X,getComputeMaps:()=>F},V=e=>{var t=$.value.dateFormat;return _xeUtils.default.toStringDate(e,t||null)},l=()=>{var t=s.props.treeConfig,a=q.xeTable;let i=null,o=null;if(a){let l=U.value,r=M.value;var d=a.getComputeMaps().computeTreeOpts,{afterFullData:a,afterTreeFullData:v}=a.internalData,d=d.value,h=d.transform,p=d.children||d.childrenField,f=e=>{var t=_xeUtils.default.get(e,l),e=_xeUtils.default.get(e,r);t&&e&&(t=V(t),(!i||i.getTime()>t.getTime())&&(i=t),t=V(e),!o||o.getTime()<t.getTime())&&(o=t)};t?_xeUtils.default.eachTree(v,f,{children:h?d.mapChildrenField:p}):a.forEach(f)}k.minViewDate=i,k.maxViewDate=o,q.startMaps={},q.endMaps={};{t=s.props.treeConfig,v=s.reactData.taskScaleList;let{minViewDate:c,maxViewDate:e}=k;var g=_xeUtils.default.last(v);let l=[],r=[];if(g&&c&&e){let i=g.type;var m=v.find(e=>"week"===e.type);let n=864e5;switch(g.type){case"hour":n=36e5;break;case"minute":n=6e4;break;case"second":n=1e3}var _=c.getTime(),x=e.getTime()-c.getTime(),y=Math.max(5,Math.floor(x/n)+1);switch(g.type){case"day":case"date":if(948672e5<x)return void(k.tableColumn=[],k.headerGroups=[]);break;case"hour":if(80352e5<x)return void(k.tableColumn=[],k.headerGroups=[]);break;case"minute":if(2592e5<x)return void(k.tableColumn=[],k.headerGroups=[]);break;case"second":if(108e5<x)return void(k.tableColumn=[],k.headerGroups=[])}let o={year:[],quarter:[],month:[],week:[],day:[],date:[],hour:[],minute:[],second:[]},s={year:{},quarter:{},month:{},week:{},day:{},date:{},hour:{},minute:{},second:{}};var w=(t,l,r)=>{if(i!==t){var l=l[t],a=""+l.field;let e=s[t][a];e||(e=l,s[t][a]=e,o[t].push(e)),e&&(e.children||(e.children=[]),e.children.push(r))}};for(let e=0;e<y;e++){var S=new Date(_+e*n),[b,T,E,D,H,R]=_xeUtils.default.toDateString(S,"yyyy-M-d-H-m-s").split("-"),C=S.getDay(),L=C+1,Y=Math.ceil((S.getMonth()+1)/3),S=_xeUtils.default.getYearWeek(S,m?m.startDay:void 0),C={yy:b,M:T,d:E,H:D,m:H,s:R,q:Y,W:S,E:L,e:C},Y={year:{field:b,title:b,params:C},quarter:{field:b+"_q"+Y,title:Y,params:C},month:{field:b+"_"+T,title:T,params:C},week:{field:b+"_W"+S,title:S,params:C},day:{field:b+`_${T}_${E}_E`+L,title:L,params:C},date:{field:b+`_${T}_`+E,title:E,params:C},hour:{field:b+`_${T}_${E}_`+D,title:D,params:C},minute:{field:b+`_${T}_${E}_${D}_`+H,title:H,params:C},second:{field:b+`_${T}_${E}_${D}_${H}_`+R,title:R,params:C}},S=Y[i];g.level<19&&w("year",Y,S),g.level<17&&w("quarter",Y,S),g.level<14&&w("month",Y,S),g.level<13&&w("week",Y,S),g.level<11&&w("day",Y,S),g.level<12&&w("date",Y,S),g.level<7&&w("hour",Y,S),g.level<5&&w("minute",Y,S),l.push(S)}v.forEach(e=>{var t;e.type===i?r.push({scaleItem:e,columns:l}):((t=o[e.type]||[])&&t.forEach(e=>{e.childCount=e.children?e.children.length:0,e.children=void 0}),r.push({scaleItem:e,columns:t}))});let u=q.xeTable;if(u){let i=U.value,o=M.value;var v=u.getComputeMaps().computeTreeOpts,{afterFullData:h,afterTreeFullData:d}=u.internalData,v=v.value,p=v.transform,a=v.children||v.childrenField;let s={};f=e=>{var t,l=u.getRowid(e),r=_xeUtils.default.get(e,i),a=_xeUtils.default.get(e,o);r&&a&&(r=V(r),a=V(a),t=Math.floor((r.getTime()-c.getTime())/n),a=Math.floor((a.getTime()-r.getTime())/n)+1,s[l]={row:e,rowid:l,oLeftSize:t,oWidthSize:a})};t?_xeUtils.default.eachTree(d,f,{children:p?v.mapChildrenField:a}):h.forEach(f),q.chartMaps=s}}k.tableColumn=l,k.headerGroups=r}},d=()=>{var{scrollXWidth:e,scrollYHeight:t}=k,l=q.elemStore,r=x.value,l=(0,_util.getRefElem)(l["main-body-wrapper"]),a=o.value,i=n.value;l&&(t=t>l.clientHeight,i&&(k.scrollbarWidth=r.width||i.offsetWidth-i.clientWidth||14),k.overflowY=t,i=e>l.clientWidth,a&&(k.scrollbarHeight=r.height||a.offsetHeight-a.clientHeight||14),k.overflowX=i)},Y=()=>{let l=k.viewCellWidth,{elemStore:e,chartMaps:r}=q;var t=(0,_util.getRefElem)(e["main-chart-wrapper"]);return t&&_xeUtils.default.arrayEach(t.children,e=>{var t=e.children[0];t&&(e=(e=e.getAttribute("rowid"))?r[e]:null)&&(t.style.left=l*e.oLeftSize+"px",t.style.width=l*e.oWidthSize+"px")}),(0,_vue.nextTick)()},v=()=>{var{scrollbarWidth:o,scrollbarHeight:s,tableColumn:n,headerGroups:u}=k,c=q.elemStore,d=q.xeTable,v=i.value;if(v&&v.clientHeight){var h=x.value,p=y.value,f=w.value,g=T.value,m=E.value,_=S.value;let e=o;o=s;let t=0,l=0,r=0,a=(d&&(s=d.internalData,t=s.tBodyHeight,l=s.tHeaderHeight,r=s.tFooterHeight),"visible");(f||h.y&&!1===h.y.visible)&&(e=0,a="hidden");d=(0,_util.getRefElem)(c["main-header-scroll"]),s=(d&&(d.style.height=l+"px",d.style.setProperty("--vxe-ui-gantt-view-cell-height",l/u.length+"px")),(0,_util.getRefElem)(c["main-body-scroll"])),f=(s&&(s.style.height=t+"px"),(0,_util.getRefElem)(c["main-footer-scroll"])),h=(f&&(f.style.height=r+"px"),_&&(_.style.height=o+"px",_.style.visibility="visible"),H.value),d=(h&&(h.style.left=p?e+"px":"",h.style.width=v.clientWidth-e+"px"),g&&(g.style.width=p?e+"px":"",g.style.display=p&&o?"block":""),m&&(m.style.width=p?"":e+"px",m.style.display=!p&&o?"block":""),b.value),u=(d&&(d.style.width=e+"px",d.style.height=t+l+r+"px",d.style.visibility=a),D.value),f=(u&&(u.style.height=l+"px",u.style.display=l?"block":""),R.value),_=(f&&(f.style.height=t+"px",f.style.top=l+"px"),C.value),h=(_&&(_.style.height=r+"px",_.style.top=l+t+"px",_.style.display=r?"block":""),L.value);h&&(k.viewCellWidth=h.clientWidth||40);let i=k.viewCellWidth*n.length;s&&0<(g=(v=s.clientWidth)-i)&&(k.viewCellWidth+=Math.floor(g/n.length),i=v);m=(0,_util.getRefElem)(c["main-header-table"]),p=(0,_util.getRefElem)(c["main-body-table"]);return m&&(m.style.width=i+"px"),p&&(p.style.width=i+"px"),k.scrollXWidth=i,Y()}},r=()=>(d(),v(),Y(),(0,_vue.nextTick)());let u=(e,t,l,r,a)=>{var i;i=q.lcsTimeout,k.lazScrollLoading=!0,i&&clearTimeout(i),q.lcsTimeout=setTimeout(()=>{q.lcsRunTime=Date.now(),q.lcsTimeout=void 0,q.intoRunScroll=!1,q.inVirtualScroll=!1,q.inWheelScroll=!1,q.inHeaderScroll=!1,q.inBodyScroll=!1,q.inFooterScroll=!1,k.lazScrollLoading=!1},200)},h=e=>{var t=q.xeTable;t&&(t=t.internalData.elemStore,t=(0,_util.getRefElem)(t["main-body-scroll"]))&&(t.scrollTop=e)};e={handleUpdateStyle:v,handleLazyRecalculate:r,handleUpdateCurrentRow(e){var t,l,r=q.xeTable,a=i.value;r&&a&&(e?(t=r.props.highlightCurrentRow,l=r.getComputeMaps().computeRowOpts,(l.value.isCurrent||t)&&_xeUtils.default.arrayEach(a.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${r.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--current"))):_xeUtils.default.arrayEach(a.querySelectorAll(".vxe-gantt-view--body-row.row--current"),e=>(0,_dom.removeClass)(e,"row--current")))},handleUpdateHoverRow(e){var t=q.xeTable,l=i.value;t&&l&&(e?_xeUtils.default.arrayEach(l.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${t.getRowid(e)}"]`),e=>(0,_dom.addClass)(e,"row--hover")):_xeUtils.default.arrayEach(l.querySelectorAll(".vxe-gantt-view--body-row.row--hover"),e=>(0,_dom.removeClass)(e,"row--hover")))},triggerHeaderScrollEvent(e){var{elemStore:t,inVirtualScroll:l,inBodyScroll:r,inFooterScroll:a}=q;l||r||a||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-body-scroll"]),a=o.value,r&&l&&(e=l.scrollLeft,q.inHeaderScroll=!0,(0,_dom.setScrollLeft)(a,e),(0,_dom.setScrollLeft)(r,e),u(0,0,0,l.scrollTop)))},triggerBodyScrollEvent(e){var t,{elemStore:l,inVirtualScroll:r,inHeaderScroll:a,inFooterScroll:i}=q;r||a||i||(r=e.currentTarget,a=(0,_util.getRefElem)(l["main-header-scroll"]),i=o.value,e=n.value,a&&r&&(l=r.scrollLeft,t=r.scrollTop,q.inBodyScroll=!0,(0,_dom.setScrollLeft)(i,l),(0,_dom.setScrollLeft)(a,l),(0,_dom.setScrollTop)(e,t),h(t),u(0,0,0,r.scrollTop)))},triggerFooterScrollEvent(e){var{inVirtualScroll:t,inHeaderScroll:l,inBodyScroll:r}=q;t||l||r||(t=e.currentTarget)&&(t.scrollLeft,u(0,0,0,t.scrollTop))},triggerVirtualScrollXEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:r}=q;l||r||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-header-scroll"]),e=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(t=l.scrollLeft,q.inVirtualScroll=!0,(0,_dom.setScrollLeft)(r,t),(0,_dom.setScrollLeft)(e,t),u(0,0,0,l.scrollTop)))},triggerVirtualScrollYEvent(e){var{elemStore:t,inHeaderScroll:l,inBodyScroll:r}=q;l||r||(l=e.currentTarget,r=(0,_util.getRefElem)(t["main-body-scroll"]),l&&(e=l.scrollTop,q.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,e),h(e),u(0,0,0,0,l.scrollLeft)))},handleUpdateSXSpace(){let{scrollXLoad:t,scrollXWidth:l}=k,r=q.elemStore;["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(r[`main-${e}-xSpace`]);e&&(e.style.width=t?l+"px":"")});var e=a.value;return e&&(e.style.width=l+"px"),d(),(0,_vue.nextTick)()},handleUpdateSYSpace:()=>{var e=q.elemStore,t=q.xeTable,l=(0,_util.getRefElem)(e["main-body-scroll"]),r=(0,_util.getRefElem)(e["main-body-table"]);let a=0,i=0,o=!1,s=(t&&(t=t.reactData,a=t.scrollYTop,i=t.scrollYHeight,o=t.isScrollYBig),i),n=a,u=0;l&&(u=l.clientHeight),o&&(n=l&&r&&l.scrollTop+u>=maxYHeight?maxYHeight-r.clientHeight:(maxYHeight-u)*(a/(i-u)),s=maxYHeight);t=(0,_util.getRefElem)(e["main-chart-wrapper"]),r&&(r.style.transform=`translate(${k.scrollXLeft||0}px, ${n}px)`),t&&(t.style.transform=`translate(${k.scrollXLeft||0}px, ${n}px)`),l=(0,_util.getRefElem)(e["main-body-ySpace"]),l&&(l.style.height=s?s+"px":""),r=c.value;return r&&(r.style.height=s?s+"px":""),k.scrollYTop=n,k.scrollYHeight=i,k.isScrollYBig=o,d(),(0,_vue.nextTick)().then(()=>{v()})},handleUpdateSYStatus(e){k.scrollYLoad=e}};let I=()=>{r()},p=(Object.assign(t,{refreshData(){return l(),r()},updateViewData(){var e=q.xeTable;return e&&(e=e.reactData.tableData,k.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(q.xeTable=e),(0,_vue.nextTick)()}},e),()=>(0,_vue.h)("div",{key:"vsx",ref:S,class:"vxe-gantt-view--scroll-x-virtual"},[(0,_vue.h)("div",{ref:T,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:H,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:o,class:"vxe-gantt-view--scroll-x-handle",onScroll:t.triggerVirtualScrollXEvent},[(0,_vue.h)("div",{ref:a,class:"vxe-gantt-view--scroll-x-space"})])]),(0,_vue.h)("div",{ref:E,class:"vxe-gantt-view--scroll-x-right-corner"})])),f=()=>(0,_vue.h)("div",{ref:b,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:D,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:R,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--scroll-y-handle",onScroll:t.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:c,class:"vxe-gantt-view--scroll-y-space"})])]),(0,_vue.h)("div",{ref:C,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),g=()=>(0,_vue.h)("div",{class:"vxe-gantt-view--viewport-wrapper"},[(0,_vue.h)(_ganttHeader.default),(0,_vue.h)(_ganttBody.default),(0,_vue.h)(_ganttFooter.default)]),z=()=>{var e=w.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[f(),g()]:[g(),f()])};let m=(0,_vue.ref)(0);return(0,_vue.watch)(()=>k.tableData,()=>{m.value++}),(0,_vue.watch)(()=>k.tableData.length,()=>{m.value++}),(0,_vue.watch)(m,()=>{l()}),(0,_vue.onMounted)(()=>{globalEvents.on(t,"resize",I)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(t,"keydown"),_xeUtils.default.assign(q,createInternalData())}),t.renderVN=()=>{var{overflowX:e,overflowY:t,scrollXLoad:l,scrollYLoad:r}=k,a=y.value;return(0,_vue.h)("div",{ref:i,class:["vxe-gantt-view",{"is--scroll-y":t,"is--scroll-x":e,"is--virtual-x":l,"is--virtual-y":r}]},[(0,_vue.h)("div",{class:"vxe-gantt-view--render-wrapper"},a?[p(),z()]:[z(),p()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:L,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",t),t},render(){return this.renderVN()}});