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.
- package/es/gantt/src/gantt-body.js +46 -6
- package/es/gantt/src/gantt-header.js +22 -6
- package/es/gantt/src/gantt-view.js +232 -89
- package/es/gantt/src/gantt.js +59 -2
- package/es/gantt/src/util.js +6 -0
- package/es/gantt/style.css +35 -3
- package/es/gantt/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/ui/index.js +6 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-gantt/style.css +35 -3
- package/es/vxe-gantt/style.min.css +1 -1
- package/lib/gantt/src/gantt-body.js +51 -6
- package/lib/gantt/src/gantt-body.min.js +1 -1
- package/lib/gantt/src/gantt-header.js +34 -6
- package/lib/gantt/src/gantt-header.min.js +1 -1
- package/lib/gantt/src/gantt-view.js +255 -99
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +74 -1
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/gantt/src/util.js +7 -0
- package/lib/gantt/src/util.min.js +1 -1
- package/lib/gantt/style/style.css +35 -3
- package/lib/gantt/style/style.min.css +1 -1
- package/lib/index.umd.js +476 -121
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/ui/index.js +6 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-gantt/style/style.css +35 -3
- package/lib/vxe-gantt/style/style.min.css +1 -1
- package/package.json +3 -3
- package/packages/gantt/src/gantt-body.ts +50 -7
- package/packages/gantt/src/gantt-header.ts +23 -7
- package/packages/gantt/src/gantt-view.ts +243 -93
- package/packages/gantt/src/gantt.ts +68 -1
- package/packages/gantt/src/util.ts +7 -0
- package/packages/ui/index.ts +5 -0
- package/styles/components/gantt-module/gantt-chart.scss +10 -0
- package/styles/components/gantt.scss +37 -3
- 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
|
|
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((
|
|
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:
|
|
50
|
-
},
|
|
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.
|
|
55
|
-
title:
|
|
56
|
-
},
|
|
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:
|
|
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:
|
|
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
|
|
140
|
+
const minScale = _xeUtils.default.last(taskScaleList);
|
|
145
141
|
const fullCols = [];
|
|
146
142
|
const groupCols = [];
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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',
|
|
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()}});
|