vxe-table 3.14.4 → 3.15.0-beta.0
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/locale/lang/ar-EG.js +3 -1
- package/es/locale/lang/de-DE.js +3 -1
- package/es/locale/lang/en-US.js +7 -5
- package/es/locale/lang/es-ES.js +3 -1
- package/es/locale/lang/fr-FR.js +3 -1
- package/es/locale/lang/hu-HU.js +3 -1
- package/es/locale/lang/hy-AM.js +3 -1
- package/es/locale/lang/id-ID.js +3 -1
- package/es/locale/lang/it-IT.js +3 -1
- package/es/locale/lang/ja-JP.js +3 -1
- package/es/locale/lang/ko-KR.js +3 -1
- package/es/locale/lang/nb-NO.js +3 -1
- package/es/locale/lang/pt-BR.js +3 -1
- package/es/locale/lang/ru-RU.js +3 -1
- package/es/locale/lang/th-TH.js +3 -1
- package/es/locale/lang/ug-CN.js +3 -1
- package/es/locale/lang/uk-UA.js +3 -1
- package/es/locale/lang/vi-VN.js +3 -1
- package/es/locale/lang/zh-CHT.js +3 -1
- package/es/locale/lang/zh-CN.js +3 -1
- package/es/style.css +1 -1
- package/es/table/module/edit/mixin.js +10 -9
- package/es/table/module/export/export-panel.js +32 -17
- package/es/table/module/export/mixin.js +17 -12
- package/es/table/src/body.js +11 -13
- package/es/table/src/footer.js +3 -16
- package/es/table/src/methods.js +246 -109
- package/es/table/src/table.js +50 -25
- package/es/table/src/util.js +0 -13
- package/es/ui/index.js +2 -2
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +410 -247
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +3 -1
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +3 -1
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/en-US.js +7 -5
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +7 -5
- package/lib/locale/lang/es-ES.js +3 -1
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +3 -1
- package/lib/locale/lang/fr-FR.js +3 -1
- package/lib/locale/lang/fr-FR.min.js +1 -1
- package/lib/locale/lang/hu-HU.js +3 -1
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +3 -1
- package/lib/locale/lang/hy-AM.js +3 -1
- package/lib/locale/lang/hy-AM.min.js +1 -1
- package/lib/locale/lang/id-ID.js +3 -1
- package/lib/locale/lang/id-ID.min.js +1 -1
- package/lib/locale/lang/it-IT.js +3 -1
- package/lib/locale/lang/it-IT.min.js +1 -1
- package/lib/locale/lang/ja-JP.js +3 -1
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +3 -1
- package/lib/locale/lang/ko-KR.js +3 -1
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +3 -1
- package/lib/locale/lang/nb-NO.js +3 -1
- package/lib/locale/lang/nb-NO.min.js +1 -1
- package/lib/locale/lang/pt-BR.js +3 -1
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +3 -1
- package/lib/locale/lang/ru-RU.js +3 -1
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +3 -1
- package/lib/locale/lang/th-TH.js +3 -1
- package/lib/locale/lang/th-TH.min.js +1 -1
- package/lib/locale/lang/ug-CN.js +3 -1
- package/lib/locale/lang/ug-CN.min.js +1 -1
- package/lib/locale/lang/uk-UA.js +3 -1
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +3 -1
- package/lib/locale/lang/vi-VN.js +3 -1
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +3 -1
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CHT.umd.js +3 -1
- package/lib/locale/lang/zh-CN.js +3 -1
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +3 -1
- package/lib/style.css +1 -1
- package/lib/table/module/edit/mixin.js +9 -9
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/export/export-panel.js +29 -17
- package/lib/table/module/export/export-panel.min.js +1 -1
- package/lib/table/module/export/mixin.js +18 -12
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/src/body.js +14 -15
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/footer.js +4 -27
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/methods.js +278 -114
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +52 -25
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +0 -25
- package/lib/table/src/util.min.js +1 -1
- package/lib/ui/index.js +2 -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/package.json +2 -2
- package/packages/locale/lang/ar-EG.ts +3 -1
- package/packages/locale/lang/de-DE.ts +3 -1
- package/packages/locale/lang/en-US.ts +7 -5
- package/packages/locale/lang/es-ES.ts +3 -1
- package/packages/locale/lang/fr-FR.ts +3 -1
- package/packages/locale/lang/hu-HU.ts +3 -1
- package/packages/locale/lang/hy-AM.ts +3 -1
- package/packages/locale/lang/id-ID.ts +3 -1
- package/packages/locale/lang/it-IT.ts +3 -1
- package/packages/locale/lang/ja-JP.ts +3 -1
- package/packages/locale/lang/ko-KR.ts +3 -1
- package/packages/locale/lang/nb-NO.ts +3 -1
- package/packages/locale/lang/pt-BR.ts +3 -1
- package/packages/locale/lang/ru-RU.ts +3 -1
- package/packages/locale/lang/th-TH.ts +3 -1
- package/packages/locale/lang/ug-CN.ts +3 -1
- package/packages/locale/lang/uk-UA.ts +3 -1
- package/packages/locale/lang/vi-VN.ts +3 -1
- package/packages/locale/lang/zh-CHT.ts +3 -1
- package/packages/locale/lang/zh-CN.ts +3 -1
- package/packages/table/module/edit/mixin.ts +10 -9
- package/packages/table/module/export/export-panel.ts +33 -17
- package/packages/table/module/export/mixin.ts +17 -12
- package/packages/table/src/body.ts +11 -13
- package/packages/table/src/footer.ts +3 -17
- package/packages/table/src/methods.ts +261 -119
- package/packages/table/src/table.ts +50 -25
- package/packages/table/src/util.ts +0 -14
- package/packages/ui/index.ts +1 -1
- /package/es/{iconfont.1743393991959.ttf → iconfont.1743578536739.ttf} +0 -0
- /package/es/{iconfont.1743393991959.woff → iconfont.1743578536739.woff} +0 -0
- /package/es/{iconfont.1743393991959.woff2 → iconfont.1743578536739.woff2} +0 -0
- /package/lib/{iconfont.1743393991959.ttf → iconfont.1743578536739.ttf} +0 -0
- /package/lib/{iconfont.1743393991959.woff → iconfont.1743578536739.woff} +0 -0
- /package/lib/{iconfont.1743393991959.woff2 → iconfont.1743578536739.woff2} +0 -0
package/es/table/src/methods.js
CHANGED
|
@@ -230,41 +230,35 @@ function cacheColumnMap($xeTable) {
|
|
|
230
230
|
htmlColumn = column;
|
|
231
231
|
}
|
|
232
232
|
if (treeNode) {
|
|
233
|
-
if (
|
|
234
|
-
|
|
235
|
-
warnLog('vxe.error.colRepet', ['tree-node', treeNode]);
|
|
236
|
-
}
|
|
233
|
+
if (treeNodeColumn) {
|
|
234
|
+
warnLog('vxe.error.colRepet', ['tree-node', treeNode]);
|
|
237
235
|
}
|
|
238
236
|
if (!treeNodeColumn) {
|
|
239
237
|
treeNodeColumn = column;
|
|
240
238
|
}
|
|
241
239
|
}
|
|
242
240
|
else if (type === 'expand') {
|
|
243
|
-
if (
|
|
244
|
-
|
|
245
|
-
warnLog('vxe.error.colRepet', ['type', type]);
|
|
246
|
-
}
|
|
241
|
+
if (expandColumn) {
|
|
242
|
+
warnLog('vxe.error.colRepet', ['type', type]);
|
|
247
243
|
}
|
|
248
244
|
if (!expandColumn) {
|
|
249
245
|
expandColumn = column;
|
|
250
246
|
}
|
|
251
247
|
}
|
|
252
|
-
if (
|
|
253
|
-
if (
|
|
254
|
-
|
|
255
|
-
warnLog('vxe.error.colRepet', ['type', type]);
|
|
256
|
-
}
|
|
257
|
-
if (!checkboxColumn) {
|
|
258
|
-
checkboxColumn = column;
|
|
259
|
-
}
|
|
248
|
+
if (type === 'checkbox') {
|
|
249
|
+
if (checkboxColumn) {
|
|
250
|
+
warnLog('vxe.error.colRepet', ['type', type]);
|
|
260
251
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
252
|
+
if (!checkboxColumn) {
|
|
253
|
+
checkboxColumn = column;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
else if (type === 'radio') {
|
|
257
|
+
if (radioColumn) {
|
|
258
|
+
warnLog('vxe.error.colRepet', ['type', type]);
|
|
259
|
+
}
|
|
260
|
+
if (!radioColumn) {
|
|
261
|
+
radioColumn = column;
|
|
268
262
|
}
|
|
269
263
|
}
|
|
270
264
|
if (isAllOverflow && column.showOverflow === false) {
|
|
@@ -1262,32 +1256,67 @@ function calculateMergerOffsetIndex(list, offsetItem, type) {
|
|
|
1262
1256
|
}
|
|
1263
1257
|
}
|
|
1264
1258
|
}
|
|
1265
|
-
function
|
|
1266
|
-
|
|
1259
|
+
function buildMergeData(mergeConfigs) {
|
|
1260
|
+
const mergeMaps = {};
|
|
1261
|
+
if (mergeConfigs && mergeConfigs.length) {
|
|
1262
|
+
for (let mIndex = 0; mIndex < mergeConfigs.length; mIndex++) {
|
|
1263
|
+
const { row: _rowIndex, col: _columnIndex, rowspan: mergeRowspan, colspan: mergeColspan } = mergeConfigs[mIndex];
|
|
1264
|
+
for (let i = 0; i < mergeRowspan; i++) {
|
|
1265
|
+
for (let j = 0; j < mergeColspan; j++) {
|
|
1266
|
+
mergeMaps[`${_rowIndex + i}:${_columnIndex + j}`] = !i && !j
|
|
1267
|
+
? {
|
|
1268
|
+
rowspan: mergeRowspan,
|
|
1269
|
+
colspan: mergeColspan
|
|
1270
|
+
}
|
|
1271
|
+
: {
|
|
1272
|
+
rowspan: 0,
|
|
1273
|
+
colspan: 0
|
|
1274
|
+
};
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
return mergeMaps;
|
|
1280
|
+
}
|
|
1281
|
+
const handleBodyMerge = ($xeTable, merges) => {
|
|
1267
1282
|
const internalData = $xeTable;
|
|
1283
|
+
const { fullAllDataRowIdData, fullColumnIdData, visibleColumn, afterFullData, mergeBodyList, mergeBodyMaps } = internalData;
|
|
1268
1284
|
if (merges) {
|
|
1269
|
-
|
|
1270
|
-
const { visibleColumn } = internalData;
|
|
1285
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
1271
1286
|
if (!XEUtils.isArray(merges)) {
|
|
1272
1287
|
merges = [merges];
|
|
1273
1288
|
}
|
|
1274
|
-
// if (treeConfig && merges.length) {
|
|
1275
|
-
// errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
|
|
1276
|
-
// }
|
|
1277
1289
|
merges.forEach((item) => {
|
|
1278
1290
|
let { row, col, rowspan, colspan } = item;
|
|
1279
|
-
|
|
1280
|
-
|
|
1291
|
+
let mergeRowIndex = -1;
|
|
1292
|
+
let mergeColumnIndex = -1;
|
|
1293
|
+
if (XEUtils.isNumber(row)) {
|
|
1294
|
+
mergeRowIndex = row;
|
|
1295
|
+
}
|
|
1296
|
+
else {
|
|
1297
|
+
const rowid = row ? handleGetRowId(row) : null;
|
|
1298
|
+
const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
|
|
1299
|
+
if (rowRest) {
|
|
1300
|
+
mergeRowIndex = rowRest._index;
|
|
1301
|
+
}
|
|
1281
1302
|
}
|
|
1282
1303
|
if (XEUtils.isNumber(col)) {
|
|
1283
|
-
|
|
1304
|
+
mergeColumnIndex = col;
|
|
1284
1305
|
}
|
|
1285
|
-
|
|
1306
|
+
else {
|
|
1307
|
+
const colid = col ? col.id : null;
|
|
1308
|
+
const colRest = colid ? fullColumnIdData[colid] : null;
|
|
1309
|
+
if (colRest) {
|
|
1310
|
+
mergeColumnIndex = colRest._index;
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1313
|
+
if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
|
|
1286
1314
|
rowspan = XEUtils.toNumber(rowspan) || 1;
|
|
1287
1315
|
colspan = XEUtils.toNumber(colspan) || 1;
|
|
1288
1316
|
if (rowspan > 1 || colspan > 1) {
|
|
1289
|
-
const
|
|
1290
|
-
const
|
|
1317
|
+
const row = afterFullData[mergeRowIndex];
|
|
1318
|
+
const column = visibleColumn[mergeColumnIndex];
|
|
1319
|
+
let mergeItem = mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
1291
1320
|
if (mergeItem) {
|
|
1292
1321
|
mergeItem.rowspan = rowspan;
|
|
1293
1322
|
mergeItem.colspan = colspan;
|
|
@@ -1295,24 +1324,73 @@ function setMerges($xeTable, merges, mList, rowList) {
|
|
|
1295
1324
|
mergeItem._colspan = colspan;
|
|
1296
1325
|
}
|
|
1297
1326
|
else {
|
|
1298
|
-
|
|
1299
|
-
const mergeColIndex = visibleColumn.indexOf(col);
|
|
1300
|
-
mList.push({
|
|
1327
|
+
mergeItem = {
|
|
1301
1328
|
row: mergeRowIndex,
|
|
1302
|
-
col:
|
|
1329
|
+
col: mergeColumnIndex,
|
|
1303
1330
|
rowspan,
|
|
1304
1331
|
colspan,
|
|
1305
1332
|
_row: row,
|
|
1306
|
-
_col:
|
|
1333
|
+
_col: column,
|
|
1307
1334
|
_rowspan: rowspan,
|
|
1308
1335
|
_colspan: colspan
|
|
1309
|
-
}
|
|
1336
|
+
};
|
|
1337
|
+
mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
|
|
1338
|
+
mergeBodyList.push(mergeItem);
|
|
1310
1339
|
}
|
|
1311
1340
|
}
|
|
1312
1341
|
}
|
|
1313
1342
|
});
|
|
1314
1343
|
}
|
|
1315
|
-
}
|
|
1344
|
+
};
|
|
1345
|
+
const handleFooterMerge = ($xeTable, merges) => {
|
|
1346
|
+
const reactData = $xeTable;
|
|
1347
|
+
const internalData = $xeTable;
|
|
1348
|
+
const { footerTableData } = reactData;
|
|
1349
|
+
const { mergeFooterList, mergeFooterMaps } = internalData;
|
|
1350
|
+
if (merges) {
|
|
1351
|
+
const { visibleColumn } = internalData;
|
|
1352
|
+
if (!XEUtils.isArray(merges)) {
|
|
1353
|
+
merges = [merges];
|
|
1354
|
+
}
|
|
1355
|
+
merges.forEach((item) => {
|
|
1356
|
+
let { row: margeRow, col: margeCol, rowspan, colspan } = item;
|
|
1357
|
+
const mergeRowIndex = XEUtils.isNumber(margeRow) ? margeRow : -1;
|
|
1358
|
+
let mergeColumnIndex = -1;
|
|
1359
|
+
if (XEUtils.isNumber(margeCol)) {
|
|
1360
|
+
mergeColumnIndex = margeCol;
|
|
1361
|
+
}
|
|
1362
|
+
if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
|
|
1363
|
+
rowspan = XEUtils.toNumber(rowspan) || 1;
|
|
1364
|
+
colspan = XEUtils.toNumber(colspan) || 1;
|
|
1365
|
+
if (rowspan > 1 || colspan > 1) {
|
|
1366
|
+
const row = footerTableData[mergeRowIndex];
|
|
1367
|
+
const column = visibleColumn[mergeColumnIndex];
|
|
1368
|
+
let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
1369
|
+
if (mergeItem) {
|
|
1370
|
+
mergeItem.rowspan = rowspan;
|
|
1371
|
+
mergeItem.colspan = colspan;
|
|
1372
|
+
mergeItem._rowspan = rowspan;
|
|
1373
|
+
mergeItem._colspan = colspan;
|
|
1374
|
+
}
|
|
1375
|
+
else {
|
|
1376
|
+
mergeItem = {
|
|
1377
|
+
row: mergeRowIndex,
|
|
1378
|
+
col: mergeColumnIndex,
|
|
1379
|
+
rowspan,
|
|
1380
|
+
colspan,
|
|
1381
|
+
_row: row,
|
|
1382
|
+
_col: column,
|
|
1383
|
+
_rowspan: rowspan,
|
|
1384
|
+
_colspan: colspan
|
|
1385
|
+
};
|
|
1386
|
+
mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
|
|
1387
|
+
mergeFooterList.push(mergeItem);
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
}
|
|
1391
|
+
});
|
|
1392
|
+
}
|
|
1393
|
+
};
|
|
1316
1394
|
function removeMerges($xeTable, merges, mList, rowList) {
|
|
1317
1395
|
// const props = $xeTable
|
|
1318
1396
|
const internalData = $xeTable;
|
|
@@ -1971,8 +2049,8 @@ function handleUpdateColumn($xeTable) {
|
|
|
1971
2049
|
function loadScrollXData($xeTable) {
|
|
1972
2050
|
const reactData = $xeTable;
|
|
1973
2051
|
const internalData = $xeTable;
|
|
1974
|
-
const {
|
|
1975
|
-
const { scrollXStore } = internalData;
|
|
2052
|
+
const { isScrollXBig } = reactData;
|
|
2053
|
+
const { mergeBodyList, mergeFooterList, scrollXStore } = internalData;
|
|
1976
2054
|
const { preloadSize, startIndex, endIndex, offsetSize } = scrollXStore;
|
|
1977
2055
|
const { toVisibleIndex, visibleSize } = handleVirtualXVisible($xeTable);
|
|
1978
2056
|
const offsetItem = {
|
|
@@ -1981,7 +2059,7 @@ function loadScrollXData($xeTable) {
|
|
|
1981
2059
|
};
|
|
1982
2060
|
scrollXStore.visibleStartIndex = toVisibleIndex - 1;
|
|
1983
2061
|
scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
|
|
1984
|
-
calculateMergerOffsetIndex(
|
|
2062
|
+
calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), offsetItem, 'col');
|
|
1985
2063
|
const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem;
|
|
1986
2064
|
if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
|
|
1987
2065
|
if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
|
|
@@ -2190,8 +2268,8 @@ function handleColumn($xeTable, collectColumn) {
|
|
|
2190
2268
|
function loadScrollYData($xeTable) {
|
|
2191
2269
|
const reactData = $xeTable;
|
|
2192
2270
|
const internalData = $xeTable;
|
|
2193
|
-
const {
|
|
2194
|
-
const { scrollYStore } = internalData;
|
|
2271
|
+
const { isAllOverflow, isScrollYBig } = reactData;
|
|
2272
|
+
const { mergeBodyList, scrollYStore } = internalData;
|
|
2195
2273
|
const { preloadSize, startIndex, endIndex, offsetSize } = scrollYStore;
|
|
2196
2274
|
const autoOffsetYSize = isAllOverflow ? offsetSize : offsetSize + 1;
|
|
2197
2275
|
const { toVisibleIndex, visibleSize } = handleVirtualYVisible($xeTable);
|
|
@@ -2201,7 +2279,7 @@ function loadScrollYData($xeTable) {
|
|
|
2201
2279
|
};
|
|
2202
2280
|
scrollYStore.visibleStartIndex = toVisibleIndex - 1;
|
|
2203
2281
|
scrollYStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
|
|
2204
|
-
calculateMergerOffsetIndex(
|
|
2282
|
+
calculateMergerOffsetIndex(mergeBodyList, offsetItem, 'row');
|
|
2205
2283
|
const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem;
|
|
2206
2284
|
if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
|
|
2207
2285
|
if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
|
|
@@ -2590,7 +2668,7 @@ const Methods = {
|
|
|
2590
2668
|
* 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
|
|
2591
2669
|
*/
|
|
2592
2670
|
syncData() {
|
|
2593
|
-
|
|
2671
|
+
errLog('vxe.error.delFunc', ['syncData', 'getData']);
|
|
2594
2672
|
return this.$nextTick().then(() => {
|
|
2595
2673
|
this.tableData = [];
|
|
2596
2674
|
return this.$nextTick().then(() => this.loadTableData(this.tableFullData, true));
|
|
@@ -2601,30 +2679,35 @@ const Methods = {
|
|
|
2601
2679
|
* 对于手动更改了排序、筛选...等条件后需要重新处理数据时可能会用到
|
|
2602
2680
|
*/
|
|
2603
2681
|
updateData() {
|
|
2604
|
-
const
|
|
2605
|
-
|
|
2606
|
-
|
|
2682
|
+
const $xeTable = this;
|
|
2683
|
+
const reactData = $xeTable;
|
|
2684
|
+
const { scrollXLoad, scrollYLoad } = reactData;
|
|
2685
|
+
return $xeTable.handleTableData(true).then(() => {
|
|
2686
|
+
$xeTable.updateFooter();
|
|
2607
2687
|
if (scrollXLoad || scrollYLoad) {
|
|
2608
2688
|
if (scrollXLoad) {
|
|
2609
|
-
|
|
2689
|
+
$xeTable.updateScrollXSpace();
|
|
2610
2690
|
}
|
|
2611
2691
|
if (scrollYLoad) {
|
|
2612
|
-
|
|
2692
|
+
$xeTable.updateScrollYSpace();
|
|
2613
2693
|
}
|
|
2614
|
-
return
|
|
2694
|
+
return $xeTable.refreshScroll();
|
|
2615
2695
|
}
|
|
2616
2696
|
}).then(() => {
|
|
2617
|
-
|
|
2618
|
-
return
|
|
2697
|
+
$xeTable.updateCellAreas();
|
|
2698
|
+
return $xeTable.recalculate(true);
|
|
2619
2699
|
}).then(() => {
|
|
2620
2700
|
// 存在滚动行为未结束情况
|
|
2621
|
-
setTimeout(() =>
|
|
2701
|
+
setTimeout(() => $xeTable.recalculate(), 50);
|
|
2622
2702
|
});
|
|
2623
2703
|
},
|
|
2624
2704
|
handleTableData(force) {
|
|
2625
2705
|
const $xeTable = this;
|
|
2626
|
-
const
|
|
2627
|
-
|
|
2706
|
+
const reactData = $xeTable;
|
|
2707
|
+
const internalData = $xeTable;
|
|
2708
|
+
const { scrollYLoad } = reactData;
|
|
2709
|
+
const { scrollYStore, fullDataRowIdData } = internalData;
|
|
2710
|
+
let fullList = internalData.afterFullData;
|
|
2628
2711
|
// 是否进行数据处理
|
|
2629
2712
|
if (force) {
|
|
2630
2713
|
// 更新数据,处理筛选和排序
|
|
@@ -2633,14 +2716,17 @@ const Methods = {
|
|
|
2633
2716
|
fullList = handleVirtualTreeToList($xeTable);
|
|
2634
2717
|
}
|
|
2635
2718
|
const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
|
|
2719
|
+
const visibleDataRowIdMaps = {};
|
|
2636
2720
|
tableData.forEach((row, $index) => {
|
|
2637
2721
|
const rowid = getRowid(this, row);
|
|
2638
2722
|
const rest = fullDataRowIdData[rowid];
|
|
2639
2723
|
if (rest) {
|
|
2640
2724
|
rest.$index = $index;
|
|
2641
2725
|
}
|
|
2726
|
+
visibleDataRowIdMaps[rowid] = row;
|
|
2642
2727
|
});
|
|
2643
2728
|
this.tableData = tableData;
|
|
2729
|
+
internalData.visibleDataRowIdData = visibleDataRowIdMaps;
|
|
2644
2730
|
return this.$nextTick();
|
|
2645
2731
|
},
|
|
2646
2732
|
/**
|
|
@@ -2656,6 +2742,7 @@ const Methods = {
|
|
|
2656
2742
|
const { scrollYLoad: oldScrollYLoad } = reactData;
|
|
2657
2743
|
const { scrollYStore, scrollXStore, lastScrollLeft, lastScrollTop } = internalData;
|
|
2658
2744
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
2745
|
+
const expandOpts = $xeTable.computeExpandOpts;
|
|
2659
2746
|
const { transform } = treeOpts;
|
|
2660
2747
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
2661
2748
|
let treeData = [];
|
|
@@ -2713,7 +2800,7 @@ const Methods = {
|
|
|
2713
2800
|
internalData.tableFullData = fullData;
|
|
2714
2801
|
internalData.tableFullTreeData = treeData;
|
|
2715
2802
|
// 缓存数据
|
|
2716
|
-
$xeTable.cacheRowMap(
|
|
2803
|
+
$xeTable.cacheRowMap(isReset);
|
|
2717
2804
|
// 原始数据
|
|
2718
2805
|
internalData.tableSynchData = datas;
|
|
2719
2806
|
if (isReset) {
|
|
@@ -2731,6 +2818,7 @@ const Methods = {
|
|
|
2731
2818
|
$xeTable.clearMergeFooterItems();
|
|
2732
2819
|
$xeTable.handleTableData(true);
|
|
2733
2820
|
$xeTable.updateFooter();
|
|
2821
|
+
$xeTable.handleUpdateBodyMerge();
|
|
2734
2822
|
return $xeTable.$nextTick().then(() => {
|
|
2735
2823
|
updateHeight($xeTable);
|
|
2736
2824
|
updateStyle($xeTable);
|
|
@@ -2742,6 +2830,9 @@ const Methods = {
|
|
|
2742
2830
|
scrollYStore.endIndex = scrollYStore.visibleSize;
|
|
2743
2831
|
}
|
|
2744
2832
|
if (sYLoad) {
|
|
2833
|
+
if (reactData.expandColumn && expandOpts.mode !== 'fixed') {
|
|
2834
|
+
errLog('vxe.error.notConflictProp', ['column.type="expand', 'expand-config.mode="fixed"']);
|
|
2835
|
+
}
|
|
2745
2836
|
// if (showOverflow) {
|
|
2746
2837
|
// if (!rowOpts.height) {
|
|
2747
2838
|
// const errColumn = internalData.tableFullColumn.find((column: any) => column.showOverflow === false)
|
|
@@ -2903,7 +2994,7 @@ const Methods = {
|
|
|
2903
2994
|
/**
|
|
2904
2995
|
* 更新数据行的 Map
|
|
2905
2996
|
*/
|
|
2906
|
-
cacheRowMap() {
|
|
2997
|
+
cacheRowMap(isReset) {
|
|
2907
2998
|
const $xeTable = this;
|
|
2908
2999
|
const props = $xeTable;
|
|
2909
3000
|
const reactData = $xeTable;
|
|
@@ -2914,7 +3005,7 @@ const Methods = {
|
|
|
2914
3005
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
2915
3006
|
const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
|
|
2916
3007
|
const { lazy } = treeOpts;
|
|
2917
|
-
const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
|
|
3008
|
+
const fullAllDataRowIdMaps = isReset ? {} : Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
|
|
2918
3009
|
const fullDataRowIdMaps = {};
|
|
2919
3010
|
const { handleUpdateRowId } = createHandleUpdateRowId($xeTable);
|
|
2920
3011
|
const handleRowCache = (row, index, items, currIndex, parentRow, rowid, level, seq) => {
|
|
@@ -3652,8 +3743,10 @@ const Methods = {
|
|
|
3652
3743
|
getCheckboxRecords(isFull) {
|
|
3653
3744
|
const $xeTable = this;
|
|
3654
3745
|
const props = $xeTable;
|
|
3746
|
+
const reactData = $xeTable;
|
|
3655
3747
|
const internalData = $xeTable;
|
|
3656
3748
|
const { treeConfig } = props;
|
|
3749
|
+
const { updateCheckboxFlag } = reactData;
|
|
3657
3750
|
const { tableFullData, afterFullData, afterTreeFullData, tableFullTreeData, fullDataRowIdData, afterFullRowMaps, selectCheckboxMaps } = internalData;
|
|
3658
3751
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
3659
3752
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
@@ -3661,29 +3754,31 @@ const Methods = {
|
|
|
3661
3754
|
const { checkField } = checkboxOpts;
|
|
3662
3755
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
3663
3756
|
let rowList = [];
|
|
3664
|
-
if (
|
|
3665
|
-
if (
|
|
3666
|
-
|
|
3667
|
-
|
|
3757
|
+
if (updateCheckboxFlag) {
|
|
3758
|
+
if (checkField) {
|
|
3759
|
+
if (treeConfig) {
|
|
3760
|
+
const currTableData = isFull ? (transform ? tableFullTreeData : tableFullData) : (transform ? afterTreeFullData : afterFullData);
|
|
3761
|
+
rowList = XEUtils.filterTree(currTableData, row => XEUtils.get(row, checkField), { children: transform ? mapChildrenField : childrenField });
|
|
3762
|
+
}
|
|
3763
|
+
else {
|
|
3764
|
+
const currTableData = isFull ? tableFullData : afterFullData;
|
|
3765
|
+
rowList = currTableData.filter((row) => XEUtils.get(row, checkField));
|
|
3766
|
+
}
|
|
3668
3767
|
}
|
|
3669
3768
|
else {
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
XEUtils.each(selectCheckboxMaps, (row, rowid) => {
|
|
3676
|
-
if (isFull) {
|
|
3677
|
-
if (fullDataRowIdData[rowid]) {
|
|
3678
|
-
rowList.push(fullDataRowIdData[rowid].row);
|
|
3769
|
+
XEUtils.each(selectCheckboxMaps, (row, rowid) => {
|
|
3770
|
+
if (isFull) {
|
|
3771
|
+
if (fullDataRowIdData[rowid]) {
|
|
3772
|
+
rowList.push(fullDataRowIdData[rowid].row);
|
|
3773
|
+
}
|
|
3679
3774
|
}
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
|
|
3683
|
-
|
|
3775
|
+
else {
|
|
3776
|
+
if (afterFullRowMaps[rowid]) {
|
|
3777
|
+
rowList.push(afterFullRowMaps[rowid]);
|
|
3778
|
+
}
|
|
3684
3779
|
}
|
|
3685
|
-
}
|
|
3686
|
-
}
|
|
3780
|
+
});
|
|
3781
|
+
}
|
|
3687
3782
|
}
|
|
3688
3783
|
return rowList;
|
|
3689
3784
|
},
|
|
@@ -5518,6 +5613,25 @@ const Methods = {
|
|
|
5518
5613
|
this.updateCellAreas();
|
|
5519
5614
|
this.recalculate(true);
|
|
5520
5615
|
},
|
|
5616
|
+
/**
|
|
5617
|
+
* 处理合并
|
|
5618
|
+
*/
|
|
5619
|
+
handleUpdateBodyMerge() {
|
|
5620
|
+
const $xeTable = this;
|
|
5621
|
+
const reactData = $xeTable;
|
|
5622
|
+
const internalData = $xeTable;
|
|
5623
|
+
const { mergeBodyList } = internalData;
|
|
5624
|
+
internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
|
|
5625
|
+
reactData.mergeBodyFlag++;
|
|
5626
|
+
},
|
|
5627
|
+
handleUpdateFooterMerge() {
|
|
5628
|
+
const $xeTable = this;
|
|
5629
|
+
const reactData = $xeTable;
|
|
5630
|
+
const internalData = $xeTable;
|
|
5631
|
+
const { mergeFooterList } = internalData;
|
|
5632
|
+
internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
|
|
5633
|
+
reactData.mergeFootFlag++;
|
|
5634
|
+
},
|
|
5521
5635
|
handleTargetLeaveEvent() {
|
|
5522
5636
|
const $xeTable = this;
|
|
5523
5637
|
const internalData = $xeTable;
|
|
@@ -9064,17 +9178,22 @@ const Methods = {
|
|
|
9064
9178
|
*/
|
|
9065
9179
|
updateFooter() {
|
|
9066
9180
|
const $xeTable = this;
|
|
9181
|
+
const props = $xeTable;
|
|
9182
|
+
const reactData = $xeTable;
|
|
9183
|
+
const internalData = $xeTable;
|
|
9067
9184
|
const $xeGrid = $xeTable.$xeGrid;
|
|
9068
|
-
const { showFooter,
|
|
9185
|
+
const { showFooter, footerData, footerMethod } = props;
|
|
9186
|
+
const { visibleColumn, afterFullData } = internalData;
|
|
9069
9187
|
let footData = [];
|
|
9070
9188
|
if (showFooter && footerData && footerData.length) {
|
|
9071
9189
|
footData = footerData.slice(0);
|
|
9072
9190
|
}
|
|
9073
9191
|
else if (showFooter && footerMethod) {
|
|
9074
|
-
footData = visibleColumn.length ? footerMethod({ columns: visibleColumn, data:
|
|
9192
|
+
footData = visibleColumn.length ? footerMethod({ columns: visibleColumn, data: afterFullData, $table: $xeTable, $grid: $xeGrid }) : [];
|
|
9075
9193
|
}
|
|
9076
|
-
|
|
9077
|
-
|
|
9194
|
+
reactData.footerTableData = footData;
|
|
9195
|
+
$xeTable.handleUpdateFooterMerge();
|
|
9196
|
+
return $xeTable.$nextTick();
|
|
9078
9197
|
},
|
|
9079
9198
|
/**
|
|
9080
9199
|
* 更新列状态 updateStatus({ row, column }, cellValue)
|
|
@@ -9097,12 +9216,14 @@ const Methods = {
|
|
|
9097
9216
|
*/
|
|
9098
9217
|
setMergeCells(merges) {
|
|
9099
9218
|
const $xeTable = this;
|
|
9100
|
-
|
|
9219
|
+
const props = $xeTable;
|
|
9220
|
+
if (props.spanMethod) {
|
|
9101
9221
|
errLog('vxe.error.errConflicts', ['merge-cells', 'span-method']);
|
|
9102
9222
|
}
|
|
9103
|
-
|
|
9104
|
-
|
|
9105
|
-
|
|
9223
|
+
handleBodyMerge($xeTable, merges);
|
|
9224
|
+
$xeTable.handleUpdateBodyMerge();
|
|
9225
|
+
return $xeTable.$nextTick().then(() => {
|
|
9226
|
+
$xeTable.updateCellAreas();
|
|
9106
9227
|
return updateStyle($xeTable);
|
|
9107
9228
|
});
|
|
9108
9229
|
},
|
|
@@ -9112,12 +9233,14 @@ const Methods = {
|
|
|
9112
9233
|
*/
|
|
9113
9234
|
removeMergeCells(merges) {
|
|
9114
9235
|
const $xeTable = this;
|
|
9115
|
-
|
|
9236
|
+
const props = $xeTable;
|
|
9237
|
+
const internalData = $xeTable;
|
|
9238
|
+
if (props.spanMethod) {
|
|
9116
9239
|
errLog('vxe.error.errConflicts', ['merge-cells', 'span-method']);
|
|
9117
9240
|
}
|
|
9118
|
-
const rest = removeMerges(
|
|
9119
|
-
return
|
|
9120
|
-
|
|
9241
|
+
const rest = removeMerges($xeTable, merges, internalData.mergeBodyList, internalData.afterFullData);
|
|
9242
|
+
return $xeTable.$nextTick().then(() => {
|
|
9243
|
+
$xeTable.updateCellAreas();
|
|
9121
9244
|
updateStyle($xeTable);
|
|
9122
9245
|
return rest;
|
|
9123
9246
|
});
|
|
@@ -9126,37 +9249,46 @@ const Methods = {
|
|
|
9126
9249
|
* 获取所有被合并的单元格
|
|
9127
9250
|
*/
|
|
9128
9251
|
getMergeCells() {
|
|
9129
|
-
|
|
9252
|
+
const $xeTable = this;
|
|
9253
|
+
const internalData = $xeTable;
|
|
9254
|
+
return internalData.mergeBodyList.slice(0);
|
|
9130
9255
|
},
|
|
9131
9256
|
/**
|
|
9132
9257
|
* 清除所有单元格合并
|
|
9133
9258
|
*/
|
|
9134
9259
|
clearMergeCells() {
|
|
9135
9260
|
const $xeTable = this;
|
|
9136
|
-
|
|
9137
|
-
|
|
9261
|
+
const internalData = $xeTable;
|
|
9262
|
+
internalData.mergeBodyList = [];
|
|
9263
|
+
internalData.mergeBodyMaps = {};
|
|
9264
|
+
internalData.mergeBodyCellMaps = {};
|
|
9265
|
+
return $xeTable.$nextTick().then(() => {
|
|
9138
9266
|
return updateStyle($xeTable);
|
|
9139
9267
|
});
|
|
9140
9268
|
},
|
|
9141
9269
|
setMergeFooterItems(merges) {
|
|
9142
9270
|
const $xeTable = this;
|
|
9143
|
-
|
|
9271
|
+
const props = $xeTable;
|
|
9272
|
+
if (props.footerSpanMethod) {
|
|
9144
9273
|
errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
|
|
9145
9274
|
}
|
|
9146
|
-
|
|
9147
|
-
|
|
9148
|
-
|
|
9275
|
+
handleFooterMerge($xeTable, merges);
|
|
9276
|
+
$xeTable.handleUpdateFooterMerge();
|
|
9277
|
+
return $xeTable.$nextTick().then(() => {
|
|
9278
|
+
$xeTable.updateCellAreas();
|
|
9149
9279
|
return updateStyle($xeTable);
|
|
9150
9280
|
});
|
|
9151
9281
|
},
|
|
9152
9282
|
removeMergeFooterItems(merges) {
|
|
9153
9283
|
const $xeTable = this;
|
|
9154
|
-
|
|
9284
|
+
const props = $xeTable;
|
|
9285
|
+
const internalData = $xeTable;
|
|
9286
|
+
if (props.footerSpanMethod) {
|
|
9155
9287
|
errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
|
|
9156
9288
|
}
|
|
9157
|
-
const rest = removeMerges(
|
|
9158
|
-
return
|
|
9159
|
-
|
|
9289
|
+
const rest = removeMerges($xeTable, merges, internalData.mergeFooterList);
|
|
9290
|
+
return $xeTable.$nextTick().then(() => {
|
|
9291
|
+
$xeTable.updateCellAreas();
|
|
9160
9292
|
updateStyle($xeTable);
|
|
9161
9293
|
return rest;
|
|
9162
9294
|
});
|
|
@@ -9165,15 +9297,20 @@ const Methods = {
|
|
|
9165
9297
|
* 获取所有被合并的表尾
|
|
9166
9298
|
*/
|
|
9167
9299
|
getMergeFooterItems() {
|
|
9168
|
-
|
|
9300
|
+
const $xeTable = this;
|
|
9301
|
+
const internalData = $xeTable;
|
|
9302
|
+
return internalData.mergeFooterList.slice(0);
|
|
9169
9303
|
},
|
|
9170
9304
|
/**
|
|
9171
9305
|
* 清除所有表尾合并
|
|
9172
9306
|
*/
|
|
9173
9307
|
clearMergeFooterItems() {
|
|
9174
9308
|
const $xeTable = this;
|
|
9175
|
-
|
|
9176
|
-
|
|
9309
|
+
const internalData = $xeTable;
|
|
9310
|
+
internalData.mergeFooterList = [];
|
|
9311
|
+
internalData.mergeFooterMaps = {};
|
|
9312
|
+
internalData.mergeFooterCellMaps = {};
|
|
9313
|
+
return $xeTable.$nextTick().then(() => {
|
|
9177
9314
|
return updateStyle($xeTable);
|
|
9178
9315
|
});
|
|
9179
9316
|
},
|