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