vxe-gantt 4.0.0-beta.3 → 4.0.0-beta.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/README.md +2 -2
- package/es/gantt/src/gantt-body.js +70 -36
- package/es/gantt/src/gantt-chart.js +80 -56
- package/es/gantt/src/gantt-view.js +62 -7
- package/es/gantt/src/gantt.js +25 -6
- package/es/gantt/style.css +17 -0
- 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 +7 -2
- package/es/ui/src/log.js +1 -1
- package/es/ui/src/vn.js +7 -1
- package/es/vxe-gantt/style.css +17 -0
- package/es/vxe-gantt/style.min.css +1 -1
- package/lib/gantt/src/gantt-body.js +104 -44
- package/lib/gantt/src/gantt-body.min.js +1 -1
- package/lib/gantt/src/gantt-chart.js +100 -60
- package/lib/gantt/src/gantt-chart.min.js +1 -1
- package/lib/gantt/src/gantt-view.js +79 -6
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +33 -9
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/gantt/style/style.css +17 -0
- package/lib/gantt/style/style.min.css +1 -1
- package/lib/index.umd.js +377 -160
- 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 +13 -2
- 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/ui/src/vn.js +14 -1
- package/lib/ui/src/vn.min.js +1 -0
- package/lib/vxe-gantt/style/style.css +17 -0
- package/lib/vxe-gantt/style/style.min.css +1 -1
- package/package.json +3 -3
- package/packages/gantt/src/gantt-body.ts +79 -37
- package/packages/gantt/src/gantt-chart.ts +90 -61
- package/packages/gantt/src/gantt-view.ts +62 -7
- package/packages/gantt/src/gantt.ts +24 -5
- package/packages/ui/index.ts +9 -1
- package/packages/ui/src/vn.ts +9 -0
- package/styles/components/gantt-module/gantt-chart.scss +1 -0
- package/styles/components/gantt.scss +19 -0
|
@@ -29,26 +29,23 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
29
29
|
computeTaskBarOpts
|
|
30
30
|
} = $xeGantt.getComputeMaps();
|
|
31
31
|
const refElem = (0, _vue.ref)();
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const tableInternalData = $xeTable ? $xeTable.internalData : {};
|
|
35
|
-
const fullAllDataRowIdData = tableInternalData.fullAllDataRowIdData || {};
|
|
36
|
-
let cellOpts = {};
|
|
37
|
-
let rowOpts = {};
|
|
38
|
-
let defaultRowHeight = 0;
|
|
39
|
-
if ($xeTable) {
|
|
40
|
-
const {
|
|
41
|
-
computeCellOpts,
|
|
42
|
-
computeRowOpts,
|
|
43
|
-
computeDefaultRowHeight
|
|
44
|
-
} = $xeTable.getComputeMaps();
|
|
45
|
-
cellOpts = computeCellOpts.value;
|
|
46
|
-
rowOpts = computeRowOpts.value;
|
|
47
|
-
defaultRowHeight = computeDefaultRowHeight.value;
|
|
48
|
-
}
|
|
32
|
+
const renderTaskBar = ($xeTable, row, rowid, $rowIndex) => {
|
|
33
|
+
const tableProps = $xeTable.props;
|
|
49
34
|
const {
|
|
50
|
-
|
|
51
|
-
} =
|
|
35
|
+
treeConfig
|
|
36
|
+
} = tableProps;
|
|
37
|
+
const tableInternalData = $xeTable.internalData;
|
|
38
|
+
const {
|
|
39
|
+
fullAllDataRowIdData
|
|
40
|
+
} = tableInternalData;
|
|
41
|
+
const {
|
|
42
|
+
computeCellOpts,
|
|
43
|
+
computeRowOpts,
|
|
44
|
+
computeDefaultRowHeight
|
|
45
|
+
} = $xeTable.getComputeMaps();
|
|
46
|
+
const cellOpts = computeCellOpts.value;
|
|
47
|
+
const rowOpts = computeRowOpts.value;
|
|
48
|
+
const defaultRowHeight = computeDefaultRowHeight.value;
|
|
52
49
|
const titleField = computeTitleField.value;
|
|
53
50
|
const progressField = computeProgressField.value;
|
|
54
51
|
const taskBarOpts = computeTaskBarOpts.value;
|
|
@@ -61,54 +58,97 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
61
58
|
const {
|
|
62
59
|
round
|
|
63
60
|
} = barStyle || {};
|
|
61
|
+
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
62
|
+
const cellHeight = (0, _util.getCellRestHeight)(rowRest, cellOpts, rowOpts, defaultRowHeight);
|
|
63
|
+
let title = (0, _utils.getStringValue)(_xeUtils.default.get(row, titleField));
|
|
64
|
+
const progressValue = showProgress ? Math.min(100, Math.max(0, _xeUtils.default.toNumber(_xeUtils.default.get(row, progressField)))) : 0;
|
|
65
|
+
if (contentMethod) {
|
|
66
|
+
title = (0, _utils.getStringValue)(contentMethod({
|
|
67
|
+
row,
|
|
68
|
+
title
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
return (0, _vue.h)('div', {
|
|
72
|
+
key: treeConfig ? rowid : $rowIndex,
|
|
73
|
+
rowid,
|
|
74
|
+
class: ['vxe-gantt-view--chart-row', {
|
|
75
|
+
'is--round': round
|
|
76
|
+
}],
|
|
77
|
+
style: {
|
|
78
|
+
height: `${cellHeight}px`
|
|
79
|
+
}
|
|
80
|
+
}, [(0, _vue.h)('div', {
|
|
81
|
+
class: 'vxe-gantt-view--chart-bar',
|
|
82
|
+
rowid,
|
|
83
|
+
onClick(evnt) {
|
|
84
|
+
$xeGantt.handleTaskBarClickEvent(evnt, {
|
|
85
|
+
row
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
onDblclick(evnt) {
|
|
89
|
+
$xeGantt.handleTaskBarDblclickEvent(evnt, {
|
|
90
|
+
row
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}, [showProgress ? (0, _vue.h)('div', {
|
|
94
|
+
class: 'vxe-gantt-view--chart-progress',
|
|
95
|
+
style: {
|
|
96
|
+
width: `${progressValue || 0}%`
|
|
97
|
+
}
|
|
98
|
+
}) : renderEmptyElement($xeGantt), showContent ? (0, _vue.h)('div', {
|
|
99
|
+
class: 'vxe-gantt-view--chart-content'
|
|
100
|
+
}, title) : renderEmptyElement($xeGantt)])]);
|
|
101
|
+
};
|
|
102
|
+
const renderRows = ($xeTable, tableData) => {
|
|
103
|
+
const tableProps = $xeTable.props;
|
|
104
|
+
const {
|
|
105
|
+
treeConfig
|
|
106
|
+
} = tableProps;
|
|
107
|
+
const tableReactData = $xeTable.reactData;
|
|
108
|
+
const {
|
|
109
|
+
treeExpandedFlag
|
|
110
|
+
} = tableReactData;
|
|
111
|
+
const tableInternalData = $xeTable.internalData;
|
|
112
|
+
const {
|
|
113
|
+
treeExpandedMaps
|
|
114
|
+
} = tableInternalData;
|
|
115
|
+
const {
|
|
116
|
+
computeTreeOpts
|
|
117
|
+
} = $xeTable.getComputeMaps();
|
|
118
|
+
const treeOpts = computeTreeOpts.value;
|
|
119
|
+
const {
|
|
120
|
+
transform
|
|
121
|
+
} = treeOpts;
|
|
122
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
123
|
+
const {
|
|
124
|
+
scrollYLoad
|
|
125
|
+
} = reactData;
|
|
64
126
|
const trVNs = [];
|
|
65
|
-
tableData.forEach((row,
|
|
127
|
+
tableData.forEach((row, $rowIndex) => {
|
|
66
128
|
const rowid = $xeTable ? $xeTable.getRowid(row) : '';
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
let
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
129
|
+
trVNs.push(renderTaskBar($xeTable, row, rowid, $rowIndex));
|
|
130
|
+
let isExpandTree = false;
|
|
131
|
+
let rowChildren = [];
|
|
132
|
+
if (treeConfig && !scrollYLoad && !transform) {
|
|
133
|
+
rowChildren = row[childrenField];
|
|
134
|
+
isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
|
|
135
|
+
}
|
|
136
|
+
// 如果是树形表格
|
|
137
|
+
if (isExpandTree) {
|
|
138
|
+
trVNs.push(...renderRows($xeTable, rowChildren));
|
|
76
139
|
}
|
|
77
|
-
trVNs.push((0, _vue.h)('div', {
|
|
78
|
-
key: rIndex,
|
|
79
|
-
rowid,
|
|
80
|
-
class: ['vxe-gantt-view--chart-row', {
|
|
81
|
-
'is--round': round
|
|
82
|
-
}],
|
|
83
|
-
style: {
|
|
84
|
-
height: `${cellHeight}px`
|
|
85
|
-
}
|
|
86
|
-
}, [(0, _vue.h)('div', {
|
|
87
|
-
class: 'vxe-gantt-view--chart-bar',
|
|
88
|
-
rowid,
|
|
89
|
-
onClick(evnt) {
|
|
90
|
-
$xeGantt.handleTaskBarClickEvent(evnt, {
|
|
91
|
-
row
|
|
92
|
-
});
|
|
93
|
-
},
|
|
94
|
-
onDblclick(evnt) {
|
|
95
|
-
$xeGantt.handleTaskBarDblclickEvent(evnt, {
|
|
96
|
-
row
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}, [showProgress ? (0, _vue.h)('div', {
|
|
100
|
-
class: 'vxe-gantt-view--chart-progress',
|
|
101
|
-
style: {
|
|
102
|
-
width: `${progressValue || 0}%`
|
|
103
|
-
}
|
|
104
|
-
}) : renderEmptyElement($xeGantt), showContent ? (0, _vue.h)('div', {
|
|
105
|
-
class: 'vxe-gantt-view--chart-content'
|
|
106
|
-
}, title) : renderEmptyElement($xeGantt)])]));
|
|
107
140
|
});
|
|
141
|
+
return trVNs;
|
|
142
|
+
};
|
|
143
|
+
const renderVN = () => {
|
|
144
|
+
const $xeTable = $xeGanttView.internalData.xeTable;
|
|
145
|
+
const {
|
|
146
|
+
tableData
|
|
147
|
+
} = reactData;
|
|
108
148
|
return (0, _vue.h)('div', {
|
|
109
149
|
ref: refElem,
|
|
110
150
|
class: 'vxe-gantt-view--chart-wrapper'
|
|
111
|
-
},
|
|
151
|
+
}, $xeTable ? renderRows($xeTable, tableData) : []);
|
|
112
152
|
};
|
|
113
153
|
(0, _vue.onMounted)(() => {
|
|
114
154
|
const {
|
|
@@ -1 +1 @@
|
|
|
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"),_xeUtils=_interopRequireDefault(require("xe-utils")),_util=require("./util"),_utils=require("../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let renderEmptyElement=_core.VxeUI.renderEmptyElement;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewChart",setup(){let
|
|
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"),_xeUtils=_interopRequireDefault(require("xe-utils")),_util=require("./util"),_utils=require("../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let renderEmptyElement=_core.VxeUI.renderEmptyElement;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttViewChart",setup(){let h=(0,_vue.inject)("$xeGantt",{}),r=(0,_vue.inject)("$xeGanttView",{}),{reactData:a,internalData:t}=r,{computeProgressField:_,computeTitleField:g,computeTaskBarOpts:x}=h.getComputeMaps(),l=(0,_vue.ref)(),d=(e,t,r,a)=>{var l=e.props.treeConfig,u=e.internalData.fullAllDataRowIdData,{computeCellOpts:e,computeRowOpts:i,computeDefaultRowHeight:n}=e.getComputeMaps(),e=e.value,i=i.value,n=n.value,o=g.value,s=_.value,{showProgress:p,showContent:v,contentMethod:c,barStyle:d}=x.value,d=(d||{}).round,u=u[r]||{},u=(0,_util.getCellRestHeight)(u,e,i,n);let m=(0,_utils.getStringValue)(_xeUtils.default.get(t,o));e=p?Math.min(100,Math.max(0,_xeUtils.default.toNumber(_xeUtils.default.get(t,s)))):0;return c&&(m=(0,_utils.getStringValue)(c({row:t,title:m}))),(0,_vue.h)("div",{key:l?r:a,rowid:r,class:["vxe-gantt-view--chart-row",{"is--round":d}],style:{height:u+"px"}},[(0,_vue.h)("div",{class:"vxe-gantt-view--chart-bar",rowid:r,onClick(e){h.handleTaskBarClickEvent(e,{row:t})},onDblclick(e){h.handleTaskBarDblclickEvent(e,{row:t})}},[p?(0,_vue.h)("div",{class:"vxe-gantt-view--chart-progress",style:{width:`${e||0}%`}}):renderEmptyElement(h),v?(0,_vue.h)("div",{class:"vxe-gantt-view--chart-content"},m):renderEmptyElement(h)])])},m=(u,e)=>{let i=u.props.treeConfig,n=u.reactData.treeExpandedFlag,o=u.internalData.treeExpandedMaps;var t=u.getComputeMaps().computeTreeOpts,t=t.value;let s=t.transform,p=t.children||t.childrenField,v=a.scrollYLoad,c=[];return e.forEach((e,t)=>{var r=u?u.getRowid(e):"";c.push(d(u,e,r,t));let a=!1,l=[];!i||v||s||(l=e[p],a=!!n&&l&&0<l.length&&!!o[r]),a&&c.push(...m(u,l))}),c};return(0,_vue.onMounted)(()=>{var e=t.elemStore;e["main-chart-wrapper"]=l}),(0,_vue.onUnmounted)(()=>{var e=t.elemStore;e["main-chart-wrapper"]=null}),()=>{var e=r.internalData.xeTable,t=a.tableData;return(0,_vue.h)("div",{ref:l,class:"vxe-gantt-view--chart-wrapper"},e?m(e,t):[])}}});
|
|
@@ -124,6 +124,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
124
124
|
getComputeMaps: () => computeMaps
|
|
125
125
|
};
|
|
126
126
|
const handleParseColumn = () => {
|
|
127
|
+
const ganttProps = $xeGantt.props;
|
|
128
|
+
const {
|
|
129
|
+
treeConfig
|
|
130
|
+
} = ganttProps;
|
|
127
131
|
const {
|
|
128
132
|
minViewDate,
|
|
129
133
|
maxViewDate
|
|
@@ -178,12 +182,21 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
178
182
|
if ($xeTable) {
|
|
179
183
|
const startField = computeStartField.value;
|
|
180
184
|
const endField = computeEndField.value;
|
|
185
|
+
const {
|
|
186
|
+
computeTreeOpts
|
|
187
|
+
} = $xeTable.getComputeMaps();
|
|
181
188
|
const tableInternalData = $xeTable.internalData;
|
|
182
189
|
const {
|
|
183
|
-
afterFullData
|
|
190
|
+
afterFullData,
|
|
191
|
+
afterTreeFullData
|
|
184
192
|
} = tableInternalData;
|
|
193
|
+
const treeOpts = computeTreeOpts.value;
|
|
194
|
+
const {
|
|
195
|
+
transform
|
|
196
|
+
} = treeOpts;
|
|
197
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
185
198
|
const ctMaps = {};
|
|
186
|
-
|
|
199
|
+
const handleParseRender = row => {
|
|
187
200
|
const rowid = $xeTable.getRowid(row);
|
|
188
201
|
const startValue = _xeUtils.default.get(row, startField);
|
|
189
202
|
const endValue = _xeUtils.default.get(row, endField);
|
|
@@ -199,7 +212,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
199
212
|
oWidthSize
|
|
200
213
|
};
|
|
201
214
|
}
|
|
202
|
-
}
|
|
215
|
+
};
|
|
216
|
+
if (treeConfig) {
|
|
217
|
+
_xeUtils.default.eachTree(afterTreeFullData, handleParseRender, {
|
|
218
|
+
children: transform ? treeOpts.mapChildrenField : childrenField
|
|
219
|
+
});
|
|
220
|
+
} else {
|
|
221
|
+
afterFullData.forEach(handleParseRender);
|
|
222
|
+
}
|
|
203
223
|
internalData.chartMaps = ctMaps;
|
|
204
224
|
}
|
|
205
225
|
}
|
|
@@ -210,6 +230,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
210
230
|
reactData.headerGroups = groupCols;
|
|
211
231
|
};
|
|
212
232
|
const handleUpdateData = () => {
|
|
233
|
+
const ganttProps = $xeGantt.props;
|
|
234
|
+
const {
|
|
235
|
+
treeConfig
|
|
236
|
+
} = ganttProps;
|
|
213
237
|
const $xeTable = internalData.xeTable;
|
|
214
238
|
const sdMaps = {};
|
|
215
239
|
const edMaps = {};
|
|
@@ -218,11 +242,20 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
218
242
|
if ($xeTable) {
|
|
219
243
|
const startField = computeStartField.value;
|
|
220
244
|
const endField = computeEndField.value;
|
|
245
|
+
const {
|
|
246
|
+
computeTreeOpts
|
|
247
|
+
} = $xeTable.getComputeMaps();
|
|
221
248
|
const tableInternalData = $xeTable.internalData;
|
|
222
249
|
const {
|
|
223
|
-
afterFullData
|
|
250
|
+
afterFullData,
|
|
251
|
+
afterTreeFullData
|
|
224
252
|
} = tableInternalData;
|
|
225
|
-
|
|
253
|
+
const treeOpts = computeTreeOpts.value;
|
|
254
|
+
const {
|
|
255
|
+
transform
|
|
256
|
+
} = treeOpts;
|
|
257
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
258
|
+
const handleMinMaxData = row => {
|
|
226
259
|
const startValue = _xeUtils.default.get(row, startField);
|
|
227
260
|
const endValue = _xeUtils.default.get(row, endField);
|
|
228
261
|
if (startValue && endValue) {
|
|
@@ -235,7 +268,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
235
268
|
maxDate = endDate;
|
|
236
269
|
}
|
|
237
270
|
}
|
|
238
|
-
}
|
|
271
|
+
};
|
|
272
|
+
if (treeConfig) {
|
|
273
|
+
_xeUtils.default.eachTree(afterTreeFullData, handleMinMaxData, {
|
|
274
|
+
children: transform ? treeOpts.mapChildrenField : childrenField
|
|
275
|
+
});
|
|
276
|
+
} else {
|
|
277
|
+
afterFullData.forEach(handleMinMaxData);
|
|
278
|
+
}
|
|
239
279
|
}
|
|
240
280
|
reactData.minViewDate = minDate;
|
|
241
281
|
reactData.maxViewDate = maxDate;
|
|
@@ -398,6 +438,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
398
438
|
const handleLazyRecalculate = () => {
|
|
399
439
|
calcScrollbar();
|
|
400
440
|
updateStyle();
|
|
441
|
+
updateChart();
|
|
401
442
|
return (0, _vue.nextTick)();
|
|
402
443
|
};
|
|
403
444
|
const updateScrollXSpace = () => {
|
|
@@ -579,6 +620,38 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
579
620
|
const ganttViewPrivateMethods = {
|
|
580
621
|
handleUpdateStyle: updateStyle,
|
|
581
622
|
handleLazyRecalculate,
|
|
623
|
+
handleUpdateCurrentRow(row) {
|
|
624
|
+
const $xeTable = internalData.xeTable;
|
|
625
|
+
const el = refElem.value;
|
|
626
|
+
if ($xeTable && el) {
|
|
627
|
+
if (row) {
|
|
628
|
+
const tableProps = $xeTable.props;
|
|
629
|
+
const {
|
|
630
|
+
highlightCurrentRow
|
|
631
|
+
} = tableProps;
|
|
632
|
+
const {
|
|
633
|
+
computeRowOpts
|
|
634
|
+
} = $xeTable.getComputeMaps();
|
|
635
|
+
const rowOpts = computeRowOpts.value;
|
|
636
|
+
if (rowOpts.isCurrent || highlightCurrentRow) {
|
|
637
|
+
_xeUtils.default.arrayEach(el.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${$xeTable.getRowid(row)}"]`), elem => (0, _dom.addClass)(elem, 'row--current'));
|
|
638
|
+
}
|
|
639
|
+
} else {
|
|
640
|
+
_xeUtils.default.arrayEach(el.querySelectorAll('.vxe-gantt-view--body-row.row--current'), elem => (0, _dom.removeClass)(elem, 'row--current'));
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
},
|
|
644
|
+
handleUpdateHoverRow(row) {
|
|
645
|
+
const $xeTable = internalData.xeTable;
|
|
646
|
+
const el = refElem.value;
|
|
647
|
+
if ($xeTable && el) {
|
|
648
|
+
if (row) {
|
|
649
|
+
_xeUtils.default.arrayEach(el.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${$xeTable.getRowid(row)}"]`), elem => (0, _dom.addClass)(elem, 'row--hover'));
|
|
650
|
+
} else {
|
|
651
|
+
_xeUtils.default.arrayEach(el.querySelectorAll('.vxe-gantt-view--body-row.row--hover'), elem => (0, _dom.removeClass)(elem, 'row--hover'));
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
},
|
|
582
655
|
triggerHeaderScrollEvent(evnt) {
|
|
583
656
|
const {
|
|
584
657
|
elemStore,
|
|
@@ -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"));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,maxXWidth=5e6;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",setup(e,l){var t=_xeUtils.default.uniqueId();let{computeTaskViewOpts:c,computeStartField:h,computeEndField:g,computeScrollbarOpts:o,computeScrollbarXToTop:f,computeScrollbarYToLeft:k}=(0,_vue.inject)("$xeGantt",{}).getComputeMaps(),m=(0,_vue.ref)(),p=(0,_vue.ref)(),x=(0,_vue.ref)(),s=(0,_vue.ref)(),_=(0,_vue.ref)(),S=(0,_vue.ref)(),n=(0,_vue.ref)(),y=(0,_vue.ref)(),w=(0,_vue.ref)(),b=(0,_vue.ref)(),T=(0,_vue.ref)(),u=(0,_vue.ref)(),d=(0,_vue.ref)(),D=(0,_vue.ref)(),E=(0,_vue.reactive)({scrollXLoad:!1,scrollYLoad:!1,overflowY:!1,overflowX:!1,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}}),H=createInternalData(),z={refElem:m},B={},r={xID:t,props:e,context:l,reactData:E,internalData:H,getRefMaps:()=>z,getComputeMaps:()=>B},a=()=>{var e=H.xeTable;let a=null,i=null;if(e){let t=h.value,r=g.value;e=e.internalData.afterFullData;e.forEach(e=>{var l=_xeUtils.default.get(e,t),e=_xeUtils.default.get(e,r);l&&e&&(l=_xeUtils.default.toStringDate(l),(!a||a.getTime()>l.getTime())&&(a=l),l=_xeUtils.default.toStringDate(e),!i||i.getTime()<l.getTime())&&(i=l)})}E.minViewDate=a,E.maxViewDate=i,H.startMaps={},H.endMaps={},(()=>{let{minViewDate:n,maxViewDate:e}=E;var t=[],l=[];switch(c.value.mode){case"year":case"quarter":case"month":case"week":break;default:if(n&&e){var r=n.getTime(),a=e.getTime()-n.getTime(),i=Math.max(6,Math.floor(a/864e5)+1),o=[],s=[],u={};for(let l=0;l<i;l++){var v=new Date(r+864e5*l),d=v.getFullYear()+"-"+(v.getMonth()+1),v=""+v.getDate();let e=u[d];v={field:d+"-"+v,title:v};e?(e.children.push(v),t.push(e)):(e={field:d,title:d,children:[v]},o.push(e),t.push(e),u[d]=e),s.push(v)}l.push(o,s);let c=H.xeTable;if(c){let i=h.value,o=g.value;a=c.internalData.afterFullData;let s={};a.forEach(e=>{var l,t=c.getRowid(e),r=_xeUtils.default.get(e,i),a=_xeUtils.default.get(e,o);r&&a&&(r=_xeUtils.default.toStringDate(r),a=_xeUtils.default.toStringDate(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})}),H.chartMaps=s}}}E.tableColumn=t,E.headerGroups=l})()},W=()=>{var{scrollXWidth:e,scrollYHeight:l}=E,t=H.elemStore,r=o.value,t=(0,_util.getRefElem)(t["main-body-wrapper"]),a=s.value,i=n.value;t&&(l=l>t.clientHeight,i&&(E.scrollbarWidth=r.width||i.offsetWidth-i.clientWidth||14),E.overflowY=l,i=e>t.clientWidth,a&&(E.scrollbarHeight=r.height||a.offsetHeight-a.clientHeight||14),E.overflowX=i)},q=()=>{let t=E.viewCellWidth,{elemStore:e,chartMaps:r}=H;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)()},L=()=>{var{scrollbarWidth:a,scrollbarHeight:i,tableColumn:o}=E,s=H.elemStore,c=H.xeTable,n=m.value;if(n&&n.clientHeight){var u=f.value,v=_.value,d=S.value,h=p.value;let e=0,l=0,t=0;c&&(c=c.internalData,e=c.tBodyHeight,l=c.tHeaderHeight,t=c.tFooterHeight);c=(0,_util.getRefElem)(s["main-header-scroll"]),c=(c&&(c.style.height=l+"px"),(0,_util.getRefElem)(s["main-body-scroll"])),h=(c&&(c.style.height=e+"px"),h&&(h.style.height=i+"px",h.style.visibility="visible"),w.value),h=(h&&(h.style.left=u?a+"px":"",h.style.width=n.clientWidth-a+"px"),v&&(v.style.width=u?a+"px":"",v.style.display=u&&i?"block":""),d&&(d.style.width=u?"":a+"px",d.style.display=!u&&i?"block":""),x.value),n=(h&&(h.style.width=a+"px",h.style.height=e+l+t+"px",h.style.visibility="visible"),y.value),v=(n&&(n.style.height=l+"px",n.style.display=l?"block":""),b.value),d=(v&&(v.style.height=e+"px",v.style.top=l+"px"),T.value),u=(d&&(d.style.height=t+"px",d.style.top=l+e+"px",d.style.display=t?"block":""),D.value);u&&(E.viewCellWidth=u.clientWidth||40);let r=E.viewCellWidth*o.length;c&&0<(a=(i=c.clientWidth)-r)&&(E.viewCellWidth+=Math.floor(a/o.length),r=i);h=(0,_util.getRefElem)(s["main-header-table"]),n=(0,_util.getRefElem)(s["main-body-table"]);return h&&(h.style.width=r+"px"),n&&(n.style.width=r+"px"),E.scrollXWidth=r,q()}},i=()=>(W(),L(),(0,_vue.nextTick)());let v=(e,l,t,r,a)=>{var i;i=H.lcsTimeout,E.lazScrollLoading=!0,i&&clearTimeout(i),H.lcsTimeout=setTimeout(()=>{H.lcsRunTime=Date.now(),H.lcsTimeout=void 0,H.intoRunScroll=!1,H.inVirtualScroll=!1,H.inWheelScroll=!1,H.inHeaderScroll=!1,H.inBodyScroll=!1,H.inFooterScroll=!1,E.lazScrollLoading=!1},200)},Y=e=>{var l=H.xeTable;l&&(l=l.internalData.elemStore,l=(0,_util.getRefElem)(l["main-body-scroll"]))&&(l.scrollTop=e)};t={handleUpdateStyle:L,handleLazyRecalculate:i,triggerHeaderScrollEvent(e){var{elemStore:l,inVirtualScroll:t,inBodyScroll:r,inFooterScroll:a}=H;t||r||a||(t=e.currentTarget,r=(0,_util.getRefElem)(l["main-body-scroll"]),a=s.value,r&&t&&(e=t.scrollLeft,H.inHeaderScroll=!0,(0,_dom.setScrollLeft)(a,e),(0,_dom.setScrollLeft)(r,e),v(0,0,0,t.scrollTop)))},triggerBodyScrollEvent(e){var l,{elemStore:t,inVirtualScroll:r,inHeaderScroll:a,inFooterScroll:i}=H;r||a||i||(r=e.currentTarget,a=(0,_util.getRefElem)(t["main-header-scroll"]),i=s.value,e=n.value,a&&r&&(t=r.scrollLeft,l=r.scrollTop,H.inBodyScroll=!0,(0,_dom.setScrollLeft)(i,t),(0,_dom.setScrollLeft)(a,t),(0,_dom.setScrollTop)(e,l),Y(l),v(0,0,0,r.scrollTop)))},triggerFooterScrollEvent(e){var{inVirtualScroll:l,inHeaderScroll:t,inBodyScroll:r}=H;l||t||r||(l=e.currentTarget)&&(l.scrollLeft,v(0,0,0,l.scrollTop))},triggerVirtualScrollXEvent(e){var{elemStore:l,inHeaderScroll:t,inBodyScroll:r}=H;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,H.inVirtualScroll=!0,(0,_dom.setScrollLeft)(r,l),(0,_dom.setScrollLeft)(e,l),v(0,0,0,t.scrollTop)))},triggerVirtualScrollYEvent(e){var{elemStore:l,inHeaderScroll:t,inBodyScroll:r}=H;t||r||(t=e.currentTarget,r=(0,_util.getRefElem)(l["main-body-scroll"]),t&&(e=t.scrollTop,H.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,e),Y(e),v(0,0,0,0,t.scrollLeft)))},updateScrollXSpace:()=>{let{scrollXLoad:l,scrollXWidth:e}=E,t=H.elemStore;var r=(0,_util.getRefElem)(t["main-body-scroll"]),a=(0,_util.getRefElem)(t["main-body-table"]);let i=0,o=0,s=(r&&(o=r.clientWidth),!1),c=e;e>maxXWidth&&(i=r&&a&&r.scrollLeft+o>=maxXWidth?maxXWidth-a.clientWidth:(maxXWidth-o)*(i/(e-o)),c=maxXWidth,s=!0),a&&(a.style.transform=`translate(${i}px, ${E.scrollYTop||0}px)`);["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(t[`main-${e}-xSpace`]);e&&(e.style.width=l?c+"px":"")}),E.scrollXLeft=i,E.scrollXWidth=c,E.isScrollXBig=s;r=u.value;return r&&(r.style.width=c+"px"),W(),(0,_vue.nextTick)().then(()=>{L()})},updateScrollYSpace:()=>{var{scrollYLoad:e,overflowY:l}=E;let t=H.elemStore;var r=H.xeTable,a=(0,_util.getRefElem)(t["main-body-scroll"]),i=(0,_util.getRefElem)(t["main-body-table"]);let o=0,s=0,c=!1,n=(r&&(r=r.reactData,o=r.scrollYTop,s=r.scrollYHeight,c=r.isScrollYBig),s),u=o,v=0;a&&(v=a.clientHeight),c&&(u=a&&i&&a.scrollTop+v>=maxYHeight?maxYHeight-i.clientHeight:(maxYHeight-v)*(o/(s-v)),n=maxYHeight),e&&l||(u=0),i&&(i.style.transform=`translate(${E.scrollXLeft||0}px, ${u}px)`);["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(t[`main-${e}-ySpace`]);e&&(e.style.height=n?n+"px":"")});r=d.value;return r&&(r.style.height=n?n+"px":""),E.scrollYTop=u,E.scrollYHeight=s,E.isScrollYBig=c,W(),(0,_vue.nextTick)().then(()=>{L()})}};let I=()=>{i()},R=(Object.assign(r,{refreshData(){return a(),i()},updateViewData(){var e=H.xeTable;return e&&(e=e.reactData.tableData,E.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(H.xeTable=e),(0,_vue.nextTick)()}},t),()=>(0,_vue.h)("div",{key:"vsx",ref:p,class:"vxe-gantt-view--scroll-x-virtual"},[(0,_vue.h)("div",{ref:_,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:w,class:"vxe-gantt-view--scroll-x-wrapper"},[(0,_vue.h)("div",{ref:s,class:"vxe-gantt-view--scroll-x-handle",onScroll:r.triggerVirtualScrollXEvent},[(0,_vue.h)("div",{ref:u,class:"vxe-gantt-view--scroll-x-space"})])]),(0,_vue.h)("div",{ref:S,class:"vxe-gantt-view--scroll-x-right-corner"})])),X=()=>(0,_vue.h)("div",{ref:x,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:y,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:b,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:n,class:"vxe-gantt-view--scroll-y-handle",onScroll:r.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:d,class:"vxe-gantt-view--scroll-y-space"})])]),(0,_vue.h)("div",{ref:T,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),V=()=>(0,_vue.h)("div",{class:"vxe-gantt-view--viewport-wrapper"},[(0,_vue.h)(_ganttHeader.default),(0,_vue.h)(_ganttBody.default)]),M=()=>{var e=k.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[X(),V()]:[V(),X()])};let U=(0,_vue.ref)(0);return(0,_vue.watch)(()=>E.tableData,()=>{U.value++}),(0,_vue.watch)(()=>E.tableData.length,()=>{U.value++}),(0,_vue.watch)(U,()=>{a()}),(0,_vue.onMounted)(()=>{globalEvents.on(r,"resize",I)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(r,"keydown"),_xeUtils.default.assign(H,createInternalData())}),r.renderVN=()=>{var{overflowX:e,overflowY:l,scrollXLoad:t,scrollYLoad:r}=E,a=c.value,i=f.value;return(0,_vue.h)("div",{ref:m,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?[R(),M()]:[M(),R()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:D,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",r),r},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"));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,maxXWidth=5e6;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeGanttView",setup(e,M){var l=_xeUtils.default.uniqueId();let _=(0,_vue.inject)("$xeGantt",{}),{computeTaskViewOpts:w,computeStartField:S,computeEndField:y,computeScrollbarOpts:q,computeScrollbarXToTop:g,computeScrollbarYToLeft:F}=_.getComputeMaps(),f=(0,_vue.ref)(),p=(0,_vue.ref)(),m=(0,_vue.ref)(),o=(0,_vue.ref)(),x=(0,_vue.ref)(),b=(0,_vue.ref)(),s=(0,_vue.ref)(),T=(0,_vue.ref)(),E=(0,_vue.ref)(),D=(0,_vue.ref)(),H=(0,_vue.ref)(),n=(0,_vue.ref)(),v=(0,_vue.ref)(),R=(0,_vue.ref)(),W=(0,_vue.reactive)({scrollXLoad:!1,scrollYLoad:!1,overflowY:!1,overflowX:!1,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}}),L=createInternalData(),k={refElem:f},z={},t={xID:l,props:e,context:M,reactData:W,internalData:L,getRefMaps:()=>k,getComputeMaps:()=>z},r=()=>{var e=_.props.treeConfig,l=L.xeTable;let a=null,i=null;if(l){let t=S.value,r=y.value;var o=l.getComputeMaps().computeTreeOpts,{afterFullData:l,afterTreeFullData:s}=l.internalData,o=o.value,c=o.transform,n=o.children||o.childrenField,u=e=>{var l=_xeUtils.default.get(e,t),e=_xeUtils.default.get(e,r);l&&e&&(l=_xeUtils.default.toStringDate(l),(!a||a.getTime()>l.getTime())&&(a=l),l=_xeUtils.default.toStringDate(e),!i||i.getTime()<l.getTime())&&(i=l)};e?_xeUtils.default.eachTree(s,u,{children:c?o.mapChildrenField:n}):l.forEach(u)}W.minViewDate=a,W.maxViewDate=i,L.startMaps={},L.endMaps={},(()=>{var e=_.props.treeConfig;let{minViewDate:n,maxViewDate:l}=W;var t=[],r=[];switch(w.value.mode){case"year":case"quarter":case"month":case"week":break;default:if(n&&l){var a=n.getTime(),u=l.getTime()-n.getTime(),i=Math.max(6,Math.floor(u/864e5)+1),o=[],s=[],d={};for(let l=0;l<i;l++){var v=new Date(a+864e5*l),h=v.getFullYear()+"-"+(v.getMonth()+1),v=""+v.getDate();let e=d[h];v={field:h+"-"+v,title:v};e?(e.children.push(v),t.push(e)):(e={field:h,title:h,children:[v]},o.push(e),t.push(e),d[h]=e),s.push(v)}r.push(o,s);let c=L.xeTable;if(c){let i=S.value,o=y.value;var u=c.getComputeMaps().computeTreeOpts,{afterFullData:g,afterTreeFullData:f}=c.internalData,u=u.value,p=u.transform,m=u.children||u.childrenField;let s={};var x=e=>{var l,t=c.getRowid(e),r=_xeUtils.default.get(e,i),a=_xeUtils.default.get(e,o);r&&a&&(r=_xeUtils.default.toStringDate(r),a=_xeUtils.default.toStringDate(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(f,x,{children:p?u.mapChildrenField:m}):g.forEach(x),L.chartMaps=s}}}W.tableColumn=t,W.headerGroups=r})()},h=()=>{var{scrollXWidth:e,scrollYHeight:l}=W,t=L.elemStore,r=q.value,t=(0,_util.getRefElem)(t["main-body-wrapper"]),a=o.value,i=s.value;t&&(l=l>t.clientHeight,i&&(W.scrollbarWidth=r.width||i.offsetWidth-i.clientWidth||14),W.overflowY=l,i=e>t.clientWidth,a&&(W.scrollbarHeight=r.height||a.offsetHeight-a.clientHeight||14),W.overflowX=i)},Y=()=>{let t=W.viewCellWidth,{elemStore:e,chartMaps:r}=L;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)()},X=()=>{var{scrollbarWidth:a,scrollbarHeight:i,tableColumn:o}=W,s=L.elemStore,c=L.xeTable,n=f.value;if(n&&n.clientHeight){var u=g.value,d=x.value,v=b.value,h=p.value;let e=0,l=0,t=0;c&&(c=c.internalData,e=c.tBodyHeight,l=c.tHeaderHeight,t=c.tFooterHeight);c=(0,_util.getRefElem)(s["main-header-scroll"]),c=(c&&(c.style.height=l+"px"),(0,_util.getRefElem)(s["main-body-scroll"])),h=(c&&(c.style.height=e+"px"),h&&(h.style.height=i+"px",h.style.visibility="visible"),E.value),h=(h&&(h.style.left=u?a+"px":"",h.style.width=n.clientWidth-a+"px"),d&&(d.style.width=u?a+"px":"",d.style.display=u&&i?"block":""),v&&(v.style.width=u?"":a+"px",v.style.display=!u&&i?"block":""),m.value),n=(h&&(h.style.width=a+"px",h.style.height=e+l+t+"px",h.style.visibility="visible"),T.value),d=(n&&(n.style.height=l+"px",n.style.display=l?"block":""),D.value),v=(d&&(d.style.height=e+"px",d.style.top=l+"px"),H.value),u=(v&&(v.style.height=t+"px",v.style.top=l+e+"px",v.style.display=t?"block":""),R.value);u&&(W.viewCellWidth=u.clientWidth||40);let r=W.viewCellWidth*o.length;c&&0<(a=(i=c.clientWidth)-r)&&(W.viewCellWidth+=Math.floor(a/o.length),r=i);h=(0,_util.getRefElem)(s["main-header-table"]),n=(0,_util.getRefElem)(s["main-body-table"]);return h&&(h.style.width=r+"px"),n&&(n.style.width=r+"px"),W.scrollXWidth=r,Y()}},a=()=>(h(),X(),Y(),(0,_vue.nextTick)());let c=(e,l,t,r,a)=>{var i;i=L.lcsTimeout,W.lazScrollLoading=!0,i&&clearTimeout(i),L.lcsTimeout=setTimeout(()=>{L.lcsRunTime=Date.now(),L.lcsTimeout=void 0,L.intoRunScroll=!1,L.inVirtualScroll=!1,L.inWheelScroll=!1,L.inHeaderScroll=!1,L.inBodyScroll=!1,L.inFooterScroll=!1,W.lazScrollLoading=!1},200)},u=e=>{var l=L.xeTable;l&&(l=l.internalData.elemStore,l=(0,_util.getRefElem)(l["main-body-scroll"]))&&(l.scrollTop=e)};l={handleUpdateStyle:X,handleLazyRecalculate:a,handleUpdateCurrentRow(e){var l,t,r=L.xeTable,a=f.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=L.xeTable,t=f.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}=L;t||r||a||(t=e.currentTarget,r=(0,_util.getRefElem)(l["main-body-scroll"]),a=o.value,r&&t&&(e=t.scrollLeft,L.inHeaderScroll=!0,(0,_dom.setScrollLeft)(a,e),(0,_dom.setScrollLeft)(r,e),c(0,0,0,t.scrollTop)))},triggerBodyScrollEvent(e){var l,{elemStore:t,inVirtualScroll:r,inHeaderScroll:a,inFooterScroll:i}=L;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,L.inBodyScroll=!0,(0,_dom.setScrollLeft)(i,t),(0,_dom.setScrollLeft)(a,t),(0,_dom.setScrollTop)(e,l),u(l),c(0,0,0,r.scrollTop)))},triggerFooterScrollEvent(e){var{inVirtualScroll:l,inHeaderScroll:t,inBodyScroll:r}=L;l||t||r||(l=e.currentTarget)&&(l.scrollLeft,c(0,0,0,l.scrollTop))},triggerVirtualScrollXEvent(e){var{elemStore:l,inHeaderScroll:t,inBodyScroll:r}=L;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,L.inVirtualScroll=!0,(0,_dom.setScrollLeft)(r,l),(0,_dom.setScrollLeft)(e,l),c(0,0,0,t.scrollTop)))},triggerVirtualScrollYEvent(e){var{elemStore:l,inHeaderScroll:t,inBodyScroll:r}=L;t||r||(t=e.currentTarget,r=(0,_util.getRefElem)(l["main-body-scroll"]),t&&(e=t.scrollTop,L.inVirtualScroll=!0,(0,_dom.setScrollTop)(r,e),u(e),c(0,0,0,0,t.scrollLeft)))},updateScrollXSpace:()=>{let{scrollXLoad:l,scrollXWidth:e}=W,t=L.elemStore;var r=(0,_util.getRefElem)(t["main-body-scroll"]),a=(0,_util.getRefElem)(t["main-body-table"]);let i=0,o=0,s=(r&&(o=r.clientWidth),!1),c=e;e>maxXWidth&&(i=r&&a&&r.scrollLeft+o>=maxXWidth?maxXWidth-a.clientWidth:(maxXWidth-o)*(i/(e-o)),c=maxXWidth,s=!0),a&&(a.style.transform=`translate(${i}px, ${W.scrollYTop||0}px)`);["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(t[`main-${e}-xSpace`]);e&&(e.style.width=l?c+"px":"")}),W.scrollXLeft=i,W.scrollXWidth=c,W.isScrollXBig=s;r=n.value;return r&&(r.style.width=c+"px"),h(),(0,_vue.nextTick)().then(()=>{X()})},updateScrollYSpace:()=>{var{scrollYLoad:e,overflowY:l}=W;let t=L.elemStore;var r=L.xeTable,a=(0,_util.getRefElem)(t["main-body-scroll"]),i=(0,_util.getRefElem)(t["main-body-table"]);let o=0,s=0,c=!1,n=(r&&(r=r.reactData,o=r.scrollYTop,s=r.scrollYHeight,c=r.isScrollYBig),s),u=o,d=0;a&&(d=a.clientHeight),c&&(u=a&&i&&a.scrollTop+d>=maxYHeight?maxYHeight-i.clientHeight:(maxYHeight-d)*(o/(s-d)),n=maxYHeight),e&&l||(u=0),i&&(i.style.transform=`translate(${W.scrollXLeft||0}px, ${u}px)`);["header","body","footer"].forEach(e=>{e=(0,_util.getRefElem)(t[`main-${e}-ySpace`]);e&&(e.style.height=n?n+"px":"")});r=v.value;return r&&(r.style.height=n?n+"px":""),W.scrollYTop=u,W.scrollYHeight=s,W.isScrollYBig=c,h(),(0,_vue.nextTick)().then(()=>{X()})}};let B=()=>{a()},d=(Object.assign(t,{refreshData(){return r(),a()},updateViewData(){var e=L.xeTable;return e&&(e=e.reactData.tableData,W.tableData=e),(0,_vue.nextTick)()},connectUpdate({$table:e}){return e&&(L.xeTable=e),(0,_vue.nextTick)()}},l),()=>(0,_vue.h)("div",{key:"vsx",ref:p,class:"vxe-gantt-view--scroll-x-virtual"},[(0,_vue.h)("div",{ref:x,class:"vxe-gantt-view--scroll-x-left-corner"}),(0,_vue.h)("div",{ref:E,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:n,class:"vxe-gantt-view--scroll-x-space"})])]),(0,_vue.h)("div",{ref:b,class:"vxe-gantt-view--scroll-x-right-corner"})])),i=()=>(0,_vue.h)("div",{ref:m,class:"vxe-gantt-view--scroll-y-virtual"},[(0,_vue.h)("div",{ref:T,class:"vxe-gantt-view--scroll-y-top-corner"}),(0,_vue.h)("div",{ref:D,class:"vxe-gantt-view--scroll-y-wrapper"},[(0,_vue.h)("div",{ref:s,class:"vxe-gantt-view--scroll-y-handle",onScroll:t.triggerVirtualScrollYEvent},[(0,_vue.h)("div",{ref:v,class:"vxe-gantt-view--scroll-y-space"})])]),(0,_vue.h)("div",{ref:H,class:"vxe-gantt-view--scroll-y-bottom-corner"})]),V=()=>(0,_vue.h)("div",{class:"vxe-gantt-view--viewport-wrapper"},[(0,_vue.h)(_ganttHeader.default),(0,_vue.h)(_ganttBody.default)]),C=()=>{var e=F.value;return(0,_vue.h)("div",{class:"vxe-gantt-view--layout-wrapper"},e?[i(),V()]:[V(),i()])};let U=(0,_vue.ref)(0);return(0,_vue.watch)(()=>W.tableData,()=>{U.value++}),(0,_vue.watch)(()=>W.tableData.length,()=>{U.value++}),(0,_vue.watch)(U,()=>{r()}),(0,_vue.onMounted)(()=>{globalEvents.on(t,"resize",B)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(t,"keydown"),_xeUtils.default.assign(L,createInternalData())}),t.renderVN=()=>{var{overflowX:e,overflowY:l,scrollXLoad:t,scrollYLoad:r}=W,a=w.value,i=g.value;return(0,_vue.h)("div",{ref:f,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?[d(),C()]:[C(),d()]),(0,_vue.h)("div",{class:"vxe-gantt-view--render-vars"},[(0,_vue.h)("div",{ref:R,class:"vxe-gantt-view--column-info"})])])},(0,_vue.provide)("$xeGanttView",t),t},render(){return this.renderVN()}});
|
package/lib/gantt/src/gantt.js
CHANGED
|
@@ -9,6 +9,7 @@ var _comp = require("../../ui/src/comp");
|
|
|
9
9
|
var _xeUtils = _interopRequireDefault(require("xe-utils"));
|
|
10
10
|
var _utils = require("../../ui/src/utils");
|
|
11
11
|
var _dom = require("../../ui/src/dom");
|
|
12
|
+
var _vn = require("../../ui/src/vn");
|
|
12
13
|
var _core = require("@vxe-ui/core");
|
|
13
14
|
var _emits = require("./emits");
|
|
14
15
|
var _tableEmits = require("./table-emits");
|
|
@@ -26,8 +27,7 @@ const {
|
|
|
26
27
|
createEvent,
|
|
27
28
|
globalEvents,
|
|
28
29
|
GLOBAL_EVENT_KEYS,
|
|
29
|
-
renderEmptyElement
|
|
30
|
-
getSlotVNs
|
|
30
|
+
renderEmptyElement
|
|
31
31
|
} = _core.VxeUI;
|
|
32
32
|
const tableProps = _vxeTable.VxeTable.props;
|
|
33
33
|
const tableComponentPropKeys = Object.keys(tableProps);
|
|
@@ -1497,7 +1497,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1497
1497
|
slotFunc = slots[slotFunc] || null;
|
|
1498
1498
|
}
|
|
1499
1499
|
if (_xeUtils.default.isFunction(slotFunc)) {
|
|
1500
|
-
return getSlotVNs(slotFunc(params));
|
|
1500
|
+
return (0, _vn.getSlotVNs)(slotFunc(params));
|
|
1501
1501
|
}
|
|
1502
1502
|
}
|
|
1503
1503
|
return [];
|
|
@@ -1563,6 +1563,28 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1563
1563
|
}, evnt);
|
|
1564
1564
|
},
|
|
1565
1565
|
handleTaskCellClickEvent(evnt, params) {
|
|
1566
|
+
const $xeTable = refTable.value;
|
|
1567
|
+
if ($xeTable) {
|
|
1568
|
+
const tableProps = $xeTable.props;
|
|
1569
|
+
const {
|
|
1570
|
+
highlightCurrentRow
|
|
1571
|
+
} = tableProps;
|
|
1572
|
+
const {
|
|
1573
|
+
computeRowOpts
|
|
1574
|
+
} = $xeTable.getComputeMaps();
|
|
1575
|
+
const rowOpts = computeRowOpts.value;
|
|
1576
|
+
const {
|
|
1577
|
+
row
|
|
1578
|
+
} = params;
|
|
1579
|
+
// 如果是当前行
|
|
1580
|
+
if (rowOpts.isCurrent || highlightCurrentRow) {
|
|
1581
|
+
$xeTable.triggerCurrentRowEvent(evnt, Object.assign({
|
|
1582
|
+
$table: $xeTable,
|
|
1583
|
+
rowIndex: $xeTable.getRowIndex(row),
|
|
1584
|
+
$rowIndex: $xeTable.getVMRowIndex(row)
|
|
1585
|
+
}, params));
|
|
1586
|
+
}
|
|
1587
|
+
}
|
|
1566
1588
|
$xeGantt.dispatchEvent('task-cell-click', params, evnt);
|
|
1567
1589
|
},
|
|
1568
1590
|
handleTaskCellDblclickEvent(evnt, params) {
|
|
@@ -1881,17 +1903,18 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1881
1903
|
if (!enabled) {
|
|
1882
1904
|
return renderEmptyElement($xeGantt);
|
|
1883
1905
|
}
|
|
1906
|
+
const isResize = resize && showLeftView && showRightView;
|
|
1884
1907
|
const ons = {};
|
|
1885
|
-
if (
|
|
1908
|
+
if (isResize) {
|
|
1886
1909
|
ons.onMousedown = dragSplitEvent;
|
|
1887
1910
|
}
|
|
1888
1911
|
return (0, _vue.h)('div', {
|
|
1889
|
-
class: ['vxe-gantt--view-split-bar',
|
|
1890
|
-
'is--resize':
|
|
1891
|
-
}
|
|
1892
|
-
}, [(0, _vue.h)('div', {
|
|
1912
|
+
class: ['vxe-gantt--view-split-bar', {
|
|
1913
|
+
'is--resize': isResize
|
|
1914
|
+
}]
|
|
1915
|
+
}, [(0, _vue.h)('div', Object.assign({
|
|
1893
1916
|
class: 'vxe-gantt--view-split-bar-handle'
|
|
1894
|
-
}), showCollapseTableButton || showCollapseTaskButton ? (0, _vue.h)('div', {
|
|
1917
|
+
}, ons)), showCollapseTableButton || showCollapseTaskButton ? (0, _vue.h)('div', {
|
|
1895
1918
|
class: 'vxe-gantt--view-split-bar-btn-wrapper'
|
|
1896
1919
|
}, [showCollapseTableButton && showRightView ? (0, _vue.h)('div', {
|
|
1897
1920
|
class: 'vxe-gantt--view-split-bar-left-btn',
|
|
@@ -2071,6 +2094,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
2071
2094
|
_xeUtils.default.assign(internalData, createInternalData());
|
|
2072
2095
|
});
|
|
2073
2096
|
$xeGantt.renderVN = renderVN;
|
|
2097
|
+
(0, _vue.provide)('$xeGrid', null);
|
|
2074
2098
|
(0, _vue.provide)('$xeGantt', $xeGantt);
|
|
2075
2099
|
return $xeGantt;
|
|
2076
2100
|
},
|