@bchr/bchr-front-lib 0.5.10 → 0.5.11-alpha-20241223.1
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/lib/base/utils/ExcelKits.js +459 -0
- package/lib/base/utils/index.js +8 -0
- package/lib/services/KendoGridAPI.js +46 -63
- package/package.json +2 -1
- package/src/base/utils/ExcelKits.js +373 -0
- package/src/base/utils/index.js +2 -1
- package/src/services/KendoGridAPI.js +36 -59
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var ExcelJS = _interopRequireWildcard(require("exceljs"));
|
|
11
|
+
|
|
12
|
+
var _fileSaver = require("file-saver");
|
|
13
|
+
|
|
14
|
+
var _Values = _interopRequireDefault(require("./Values"));
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
17
|
+
|
|
18
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
22
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
23
|
+
|
|
24
|
+
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."); }
|
|
25
|
+
|
|
26
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
27
|
+
|
|
28
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
29
|
+
|
|
30
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
31
|
+
|
|
32
|
+
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."); }
|
|
33
|
+
|
|
34
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
35
|
+
|
|
36
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
37
|
+
|
|
38
|
+
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
39
|
+
|
|
40
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
41
|
+
|
|
42
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
43
|
+
|
|
44
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
45
|
+
|
|
46
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
47
|
+
|
|
48
|
+
var DEFAULT_BORDER_COLOR_FOR_EXCEL = "CCCCCC";
|
|
49
|
+
var DEFAULT_FG_COLOR_FOR_EXCEL = "FFFFFF";
|
|
50
|
+
var DEFAULT_COL_HEADER_BG_COLOR = "F2F3F5";
|
|
51
|
+
var excelHeaderRowStyle = {
|
|
52
|
+
font: {
|
|
53
|
+
size: 10,
|
|
54
|
+
bold: true
|
|
55
|
+
},
|
|
56
|
+
alignment: {
|
|
57
|
+
vertical: 'middle',
|
|
58
|
+
horizontal: 'center'
|
|
59
|
+
},
|
|
60
|
+
fill: {
|
|
61
|
+
type: 'pattern',
|
|
62
|
+
pattern: 'solid',
|
|
63
|
+
fgColor: {
|
|
64
|
+
argb: DEFAULT_COL_HEADER_BG_COLOR
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
border: {
|
|
68
|
+
top: {
|
|
69
|
+
style: 'thin',
|
|
70
|
+
color: {
|
|
71
|
+
argb: DEFAULT_BORDER_COLOR_FOR_EXCEL
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
left: {
|
|
75
|
+
style: 'thin',
|
|
76
|
+
color: {
|
|
77
|
+
argb: DEFAULT_BORDER_COLOR_FOR_EXCEL
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
bottom: {
|
|
81
|
+
style: 'thin',
|
|
82
|
+
color: {
|
|
83
|
+
argb: DEFAULT_BORDER_COLOR_FOR_EXCEL
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
right: {
|
|
87
|
+
style: 'thin',
|
|
88
|
+
color: {
|
|
89
|
+
argb: DEFAULT_BORDER_COLOR_FOR_EXCEL
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
var excelBodyRowStyle = {
|
|
95
|
+
font: {
|
|
96
|
+
size: 10,
|
|
97
|
+
bold: true
|
|
98
|
+
},
|
|
99
|
+
alignment: {
|
|
100
|
+
vertical: 'middle',
|
|
101
|
+
horizontal: 'center'
|
|
102
|
+
},
|
|
103
|
+
fill: {
|
|
104
|
+
type: 'pattern',
|
|
105
|
+
pattern: 'solid',
|
|
106
|
+
fgColor: {
|
|
107
|
+
argb: DEFAULT_FG_COLOR_FOR_EXCEL
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
border: {
|
|
111
|
+
top: {
|
|
112
|
+
style: 'thin',
|
|
113
|
+
color: {
|
|
114
|
+
argb: DEFAULT_BORDER_COLOR_FOR_EXCEL
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
left: {
|
|
118
|
+
style: 'thin',
|
|
119
|
+
color: {
|
|
120
|
+
argb: DEFAULT_BORDER_COLOR_FOR_EXCEL
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
bottom: {
|
|
124
|
+
style: 'thin',
|
|
125
|
+
color: {
|
|
126
|
+
argb: DEFAULT_BORDER_COLOR_FOR_EXCEL
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
right: {
|
|
130
|
+
style: 'thin',
|
|
131
|
+
color: {
|
|
132
|
+
argb: DEFAULT_BORDER_COLOR_FOR_EXCEL
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
var ExcelKits = {
|
|
138
|
+
exportHandsontableData2CSVFile: function exportHandsontableData2CSVFile(handsonTableInstance, fileName) {
|
|
139
|
+
if (handsonTableInstance === null || handsonTableInstance === void 0) {
|
|
140
|
+
throw new IllegalArgumentError("HandsontableInstance is null for ExcelKits#exportHandsontableData2CSVFile");
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (_Values["default"].isBlankString(fileName)) {
|
|
144
|
+
fileName = "".concat(t('ui.export.csv.file'), "-") + new Date().getTime();
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
var exportPlugin = handsonTableInstance.getPlugin('exportFile');
|
|
148
|
+
exportPlugin.downloadFile('csv', {
|
|
149
|
+
bom: false,
|
|
150
|
+
columnDelimiter: ',',
|
|
151
|
+
columnHeaders: false,
|
|
152
|
+
exportHiddenColumns: true,
|
|
153
|
+
exportHiddenRows: true,
|
|
154
|
+
fileExtension: 'csv',
|
|
155
|
+
filename: fileName,
|
|
156
|
+
mimeType: 'text/csv',
|
|
157
|
+
rowDelimiter: '\r\n',
|
|
158
|
+
rowHeaders: true
|
|
159
|
+
});
|
|
160
|
+
},
|
|
161
|
+
exportHandsontableData2ExcelFile: function exportHandsontableData2ExcelFile(handsontableInstance, fileName) {
|
|
162
|
+
if (handsontableInstance === null || handsontableInstance === void 0) {
|
|
163
|
+
throw new IllegalArgumentError("HandsontableInstance is null for ExcelKits#exportHandsontableData2ExcelFile");
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (_Values["default"].isBlankString(fileName)) {
|
|
167
|
+
fileName = t('ui.export.excel.file') + "-" + new Date().getTime();
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
var exportGridColumns = [];
|
|
171
|
+
var exportGridData = handsontableInstance.hotInstance.getSourceData();
|
|
172
|
+
window.handsontableInstance = handsontableInstance;
|
|
173
|
+
|
|
174
|
+
if (handsontableInstance.columnSettings && handsontableInstance.columnSettings.length) {
|
|
175
|
+
handsontableInstance.columnSettings.forEach(function (column) {
|
|
176
|
+
exportGridColumns.push(_objectSpread(_objectSpread({}, column), {}, {
|
|
177
|
+
dataIndex: column.data
|
|
178
|
+
}));
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
console.log('exportGridColumns :', exportGridColumns);
|
|
183
|
+
console.log('exportGridData :', exportGridData);
|
|
184
|
+
this.exportTableData2ExcelFile(exportGridColumns, exportGridData, fileName);
|
|
185
|
+
},
|
|
186
|
+
exportTableData2ExcelFile: function exportTableData2ExcelFile() {
|
|
187
|
+
var columns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
188
|
+
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
189
|
+
var fileName = arguments.length > 2 ? arguments[2] : undefined;
|
|
190
|
+
|
|
191
|
+
if (_Values["default"].isBlankString(fileName)) {
|
|
192
|
+
fileName = "".concat(t('ui.export.excel.file'), "-") + new Date().getTime();
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
var workbook = new ExcelJS.Workbook();
|
|
196
|
+
var worksheet = workbook.addWorksheet('sheet');
|
|
197
|
+
var exportGridColumnsData = this.gatherExcelColumnHeaderStructureInfo(this.extractColumns(columns));
|
|
198
|
+
var totalColumnHeaderRowCount = exportGridColumnsData.totalColumnHeaderRowCount;
|
|
199
|
+
var columnHeaderData = exportGridColumnsData.columnHeaderData;
|
|
200
|
+
var rowHeaderArray = exportGridColumnsData.rowHeaderArray;
|
|
201
|
+
var columnHeaderMergeCellArray = exportGridColumnsData.columnHeaderMergeCellArray;
|
|
202
|
+
var exportGridData = data;
|
|
203
|
+
worksheet.columns = columnHeaderData;
|
|
204
|
+
worksheet.spliceRows(1, 1);
|
|
205
|
+
worksheet.insertRows(1, rowHeaderArray);
|
|
206
|
+
exportGridData.forEach(function (gridItem) {
|
|
207
|
+
worksheet.addRow(gridItem);
|
|
208
|
+
});
|
|
209
|
+
columnHeaderMergeCellArray.forEach(function (mergeCells) {
|
|
210
|
+
worksheet.mergeCells(mergeCells);
|
|
211
|
+
}); // 设置表头样式
|
|
212
|
+
|
|
213
|
+
var headerRows = worksheet.getRows(1, totalColumnHeaderRowCount);
|
|
214
|
+
headerRows.forEach(function (row, rowIndex) {
|
|
215
|
+
row.eachCell(function (cell, cellIndex) {
|
|
216
|
+
cell.style = excelHeaderRowStyle;
|
|
217
|
+
});
|
|
218
|
+
}); // 设置表体样式
|
|
219
|
+
|
|
220
|
+
var bodyRows = worksheet.getRows(totalColumnHeaderRowCount + 1, totalColumnHeaderRowCount + exportGridData.length + 5);
|
|
221
|
+
bodyRows.forEach(function (row) {
|
|
222
|
+
row.eachCell(function (cell, cellIndex) {
|
|
223
|
+
cell.style = excelBodyRowStyle;
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
workbook.xlsx.writeBuffer().then(function (buffer) {
|
|
227
|
+
(0, _fileSaver.saveAs)(new Blob([buffer], {
|
|
228
|
+
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
|
229
|
+
}), fileName + ".xlsx");
|
|
230
|
+
});
|
|
231
|
+
},
|
|
232
|
+
extractColumns: function extractColumns(children, level) {
|
|
233
|
+
var _this = this;
|
|
234
|
+
|
|
235
|
+
if (level === void 0) {
|
|
236
|
+
level = 0;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
return Array.isArray(children) ? children.map(function (child) {
|
|
240
|
+
return _this.extractChild(child, level);
|
|
241
|
+
}) : [children, _this.extractChild(children, level)];
|
|
242
|
+
},
|
|
243
|
+
extractChild: function extractChild(child, level) {
|
|
244
|
+
var _this = this;
|
|
245
|
+
|
|
246
|
+
if (level === void 0) {
|
|
247
|
+
level = 0;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
return Object.assign(Object.assign({}, child), {
|
|
251
|
+
level: level,
|
|
252
|
+
children: child.children && _this.extractColumns(child.children, level + 1)
|
|
253
|
+
});
|
|
254
|
+
},
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* 收集Excel列头信息(复合表头)
|
|
258
|
+
* @param gridColumns
|
|
259
|
+
* @returns {{totalColumnCount: {int}, totalColumnHeaderRowCount: {int}, columnHeaderArray: [] }}
|
|
260
|
+
*/
|
|
261
|
+
gatherExcelColumnHeaderStructureInfo: function gatherExcelColumnHeaderStructureInfo(gridColumns) {
|
|
262
|
+
var _this2 = this;
|
|
263
|
+
|
|
264
|
+
var _this$getTotalColumnC = this.getTotalColumnCountAndTotalColumnHeaderRowCount(gridColumns, 0, 1),
|
|
265
|
+
_this$getTotalColumnC2 = _slicedToArray(_this$getTotalColumnC, 2),
|
|
266
|
+
totalColumnCount = _this$getTotalColumnC2[0],
|
|
267
|
+
totalColumnHeaderRowCount = _this$getTotalColumnC2[1];
|
|
268
|
+
|
|
269
|
+
var columnHeaderArray = [];
|
|
270
|
+
|
|
271
|
+
for (var i = 0, count = gridColumns.length; i < count; i++) {
|
|
272
|
+
var column = gridColumns[i];
|
|
273
|
+
this.$buildColumnHeaderArray(column, columnHeaderArray);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
for (var _i2 = 0, _count = columnHeaderArray.length; _i2 < _count; _i2++) {
|
|
277
|
+
var subArray = columnHeaderArray[_i2];
|
|
278
|
+
var lastElem = subArray[subArray.length - 1];
|
|
279
|
+
|
|
280
|
+
for (var r = subArray.length; r < totalColumnHeaderRowCount; r++) {
|
|
281
|
+
subArray.push(lastElem);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
var columnHeaderMergeCellArray = [];
|
|
286
|
+
var nextColIndex = 1;
|
|
287
|
+
|
|
288
|
+
for (var _i3 = 0, _count2 = gridColumns.length; _i3 < _count2; _i3++) {
|
|
289
|
+
var gridColumn = gridColumns[_i3];
|
|
290
|
+
nextColIndex = this.gatherExcelColumnHeaderMergeCellInfo(gridColumn, columnHeaderMergeCellArray, totalColumnHeaderRowCount, 1, nextColIndex);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
var rowHeaderArray = [];
|
|
294
|
+
|
|
295
|
+
var _loop = function _loop(totalColumnHeaderRowStep) {
|
|
296
|
+
var rowHeaderColumns = [];
|
|
297
|
+
columnHeaderArray.forEach(function (columns) {
|
|
298
|
+
rowHeaderColumns.push(columns[totalColumnHeaderRowStep]);
|
|
299
|
+
});
|
|
300
|
+
rowHeaderArray.push(rowHeaderColumns);
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
for (var totalColumnHeaderRowStep = 0; totalColumnHeaderRowStep < totalColumnHeaderRowCount; totalColumnHeaderRowStep++) {
|
|
304
|
+
_loop(totalColumnHeaderRowStep);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
var columnHeaderData = [];
|
|
308
|
+
var columnIndex = 0;
|
|
309
|
+
|
|
310
|
+
var addColumns = function addColumns(columns, result) {
|
|
311
|
+
columns.forEach(function (column) {
|
|
312
|
+
var exporterColumn = _this2.$normalizedExportColumn(column);
|
|
313
|
+
|
|
314
|
+
result.push(exporterColumn);
|
|
315
|
+
|
|
316
|
+
if (column.children && column.children.length > 1) {
|
|
317
|
+
var children = exporterColumn.columns = [];
|
|
318
|
+
addColumns(column.children, children);
|
|
319
|
+
} else {
|
|
320
|
+
columnIndex++;
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
addColumns(gridColumns, columnHeaderData);
|
|
326
|
+
|
|
327
|
+
var autoCreateArrayItems = function autoCreateArrayItems(column, columnStep, columns) {
|
|
328
|
+
if (column.columns && column.columns.length) {
|
|
329
|
+
columns.splice.apply(columns, [columnStep, 1].concat(_toConsumableArray(column.columns)));
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
if (columnStep === columns.length - 1) {
|
|
333
|
+
console.log('success');
|
|
334
|
+
} else {
|
|
335
|
+
columnStep++;
|
|
336
|
+
autoCreateArrayItems(columns[columnStep], columnStep, columns);
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
autoCreateArrayItems(columnHeaderData[0], 0, columnHeaderData);
|
|
341
|
+
return {
|
|
342
|
+
totalColumnCount: totalColumnCount,
|
|
343
|
+
totalColumnHeaderRowCount: totalColumnHeaderRowCount,
|
|
344
|
+
columnHeaderArray: columnHeaderArray,
|
|
345
|
+
columnHeaderData: columnHeaderData,
|
|
346
|
+
rowHeaderArray: rowHeaderArray,
|
|
347
|
+
columnHeaderMergeCellArray: columnHeaderMergeCellArray
|
|
348
|
+
};
|
|
349
|
+
},
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* @return {Array} eg -
|
|
353
|
+
* [
|
|
354
|
+
* [leftTopRowIndex, leftTopColumnIndex, rightBottomRowIndex, rightBottomColumnIndex],
|
|
355
|
+
* [leftTopRowIndex, leftTopColumnIndex, rightBottomRowIndex, rightBottomColumnIndex],
|
|
356
|
+
* [leftTopRowIndex, leftTopColumnIndex, rightBottomRowIndex, rightBottomColumnIndex],
|
|
357
|
+
* [leftTopRowIndex, leftTopColumnIndex, rightBottomRowIndex, rightBottomColumnIndex],
|
|
358
|
+
* ]
|
|
359
|
+
*/
|
|
360
|
+
gatherExcelColumnHeaderMergeCellInfo: function gatherExcelColumnHeaderMergeCellInfo(gridColumn, columnHeaderMergeCellArray, totalColumnHeaderRowCount) {
|
|
361
|
+
var currentColumnHeaderRowIndex = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
|
362
|
+
var colIndex = arguments.length > 4 ? arguments[4] : undefined;
|
|
363
|
+
var allChildColumnCount = this.$countAllChildColumnCount(gridColumn);
|
|
364
|
+
|
|
365
|
+
if (Array.isArray(gridColumn.children) && gridColumn.children.length) {
|
|
366
|
+
var gridColumns = gridColumn.children;
|
|
367
|
+
var gridColumnCount = gridColumns.length;
|
|
368
|
+
columnHeaderMergeCellArray.push([currentColumnHeaderRowIndex, colIndex, currentColumnHeaderRowIndex, colIndex + allChildColumnCount - 1]);
|
|
369
|
+
|
|
370
|
+
for (var i = 0; i < gridColumnCount; i++) {
|
|
371
|
+
this.gatherExcelColumnHeaderMergeCellInfo(gridColumns[i], columnHeaderMergeCellArray, totalColumnHeaderRowCount, currentColumnHeaderRowIndex + 1, colIndex + i);
|
|
372
|
+
}
|
|
373
|
+
} else {
|
|
374
|
+
if (currentColumnHeaderRowIndex !== totalColumnHeaderRowCount) {
|
|
375
|
+
columnHeaderMergeCellArray.push([currentColumnHeaderRowIndex, colIndex, totalColumnHeaderRowCount, colIndex]);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
return colIndex + allChildColumnCount;
|
|
380
|
+
},
|
|
381
|
+
$countAllChildColumnCount: function $countAllChildColumnCount(gridColumn) {
|
|
382
|
+
var columnCount = 0;
|
|
383
|
+
|
|
384
|
+
if (gridColumn === null || gridColumn === void 0) {
|
|
385
|
+
return columnCount;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
if (Array.isArray(gridColumn.children) && gridColumn.children.length) {
|
|
389
|
+
var gridColumns = gridColumn.children;
|
|
390
|
+
var gridColumnCount = gridColumns.length;
|
|
391
|
+
|
|
392
|
+
for (var i = 0; i < gridColumnCount; i++) {
|
|
393
|
+
var childColumnCount = this.$countAllChildColumnCount(gridColumns[i]);
|
|
394
|
+
columnCount = columnCount + childColumnCount;
|
|
395
|
+
}
|
|
396
|
+
} else {
|
|
397
|
+
columnCount = 1;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
return columnCount;
|
|
401
|
+
},
|
|
402
|
+
getTotalColumnCountAndTotalColumnHeaderRowCount: function getTotalColumnCountAndTotalColumnHeaderRowCount(gridColumns, totalColumnCount, totalColumnHeaderCount) {
|
|
403
|
+
var maxN2 = totalColumnHeaderCount;
|
|
404
|
+
|
|
405
|
+
for (var i = 0, count = gridColumns.length; i < count; i++) {
|
|
406
|
+
var column = gridColumns[i];
|
|
407
|
+
|
|
408
|
+
if (Array.isArray(column.children) && column.children.length) {
|
|
409
|
+
var _this$getTotalColumnC3 = this.getTotalColumnCountAndTotalColumnHeaderRowCount(column.children, 0, totalColumnHeaderCount + 1),
|
|
410
|
+
_this$getTotalColumnC4 = _slicedToArray(_this$getTotalColumnC3, 2),
|
|
411
|
+
n1 = _this$getTotalColumnC4[0],
|
|
412
|
+
n2 = _this$getTotalColumnC4[1];
|
|
413
|
+
|
|
414
|
+
totalColumnCount = totalColumnCount + n1;
|
|
415
|
+
|
|
416
|
+
if (n2 > maxN2) {
|
|
417
|
+
maxN2 = n2;
|
|
418
|
+
}
|
|
419
|
+
} else {
|
|
420
|
+
totalColumnCount = totalColumnCount + 1;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
return [totalColumnCount, maxN2];
|
|
425
|
+
},
|
|
426
|
+
$buildColumnHeaderArray: function $buildColumnHeaderArray(column, columnHeaderArray, parentHeaderTitles) {
|
|
427
|
+
if (Array.isArray(column.children) && column.children.length) {
|
|
428
|
+
if (parentHeaderTitles === null || parentHeaderTitles == void 0) {
|
|
429
|
+
parentHeaderTitles = [column.title];
|
|
430
|
+
} else {
|
|
431
|
+
parentHeaderTitles.push(column.title);
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
for (var i = 0, count = column.children.length; i < count; i++) {
|
|
435
|
+
var childColumn = column.children[i];
|
|
436
|
+
this.$buildColumnHeaderArray(childColumn, columnHeaderArray, parentHeaderTitles);
|
|
437
|
+
}
|
|
438
|
+
} else {
|
|
439
|
+
var columnSelfHeaderTitleArray = [];
|
|
440
|
+
|
|
441
|
+
if (Array.isArray(parentHeaderTitles)) {
|
|
442
|
+
columnSelfHeaderTitleArray.push.apply(columnSelfHeaderTitleArray, _toConsumableArray(parentHeaderTitles));
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
columnSelfHeaderTitleArray.push(column.title);
|
|
446
|
+
columnHeaderArray.push(columnSelfHeaderTitleArray);
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
$normalizedExportColumn: function $normalizedExportColumn(column) {
|
|
450
|
+
return {
|
|
451
|
+
header: column.title,
|
|
452
|
+
key: column.dataIndex,
|
|
453
|
+
locked: column.locked,
|
|
454
|
+
width: column.width * 0.1
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
};
|
|
458
|
+
var _default = ExcelKits;
|
|
459
|
+
exports["default"] = _default;
|
package/lib/base/utils/index.js
CHANGED
|
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "DateTimes", {
|
|
|
33
33
|
return _DateTimes["default"];
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "ExcelKits", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _ExcelKits["default"];
|
|
40
|
+
}
|
|
41
|
+
});
|
|
36
42
|
|
|
37
43
|
var _FormDatas = require("./FormDatas");
|
|
38
44
|
|
|
@@ -42,4 +48,6 @@ var _Values = _interopRequireDefault(require("./Values"));
|
|
|
42
48
|
|
|
43
49
|
var _DateTimes = _interopRequireDefault(require("./DateTimes"));
|
|
44
50
|
|
|
51
|
+
var _ExcelKits = _interopRequireDefault(require("./ExcelKits"));
|
|
52
|
+
|
|
45
53
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
7
|
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
9
|
|
|
12
10
|
var _Values = _interopRequireDefault(require("../base/utils/Values"));
|
|
@@ -17,6 +15,8 @@ var _reactUuid = _interopRequireDefault(require("react-uuid"));
|
|
|
17
15
|
|
|
18
16
|
var _antd = require("antd");
|
|
19
17
|
|
|
18
|
+
var _utils = require("../base/utils");
|
|
19
|
+
|
|
20
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
21
21
|
|
|
22
22
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
@@ -44,7 +44,7 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
|
|
|
44
44
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
45
45
|
|
|
46
46
|
var KendoGridAPI = /*#__PURE__*/function () {
|
|
47
|
-
function KendoGridAPI(kendoGridRef, state,
|
|
47
|
+
function KendoGridAPI(kendoGridRef, state, _instance) {
|
|
48
48
|
_classCallCheck(this, KendoGridAPI);
|
|
49
49
|
|
|
50
50
|
this.gridTableRef = kendoGridRef;
|
|
@@ -52,7 +52,7 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
52
52
|
if (state) {
|
|
53
53
|
if (_Values["default"].isNotEmpty(state)) {
|
|
54
54
|
this.state = state;
|
|
55
|
-
this.
|
|
55
|
+
this.instance = _instance;
|
|
56
56
|
} else {
|
|
57
57
|
throw new Error("Invalid state for create KendoGridAPI");
|
|
58
58
|
}
|
|
@@ -92,9 +92,7 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
92
92
|
model = _objectSpread({}, this.defaultPagerGridModelObj);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
this.
|
|
96
|
-
refTableModel: _objectSpread({}, model)
|
|
97
|
-
});
|
|
95
|
+
this.state.refTableModel = _objectSpread({}, model);
|
|
98
96
|
return this.state.refTableModel;
|
|
99
97
|
}
|
|
100
98
|
}, {
|
|
@@ -112,9 +110,7 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
112
110
|
});
|
|
113
111
|
}
|
|
114
112
|
|
|
115
|
-
this.
|
|
116
|
-
refTableModel: _objectSpread({}, model)
|
|
117
|
-
});
|
|
113
|
+
this.state.refTableModel = _objectSpread({}, model);
|
|
118
114
|
return this.state.refTableModel;
|
|
119
115
|
}
|
|
120
116
|
}, {
|
|
@@ -145,7 +141,7 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
145
141
|
});
|
|
146
142
|
}
|
|
147
143
|
|
|
148
|
-
this.setState({
|
|
144
|
+
this.instance.setState({
|
|
149
145
|
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
150
146
|
});
|
|
151
147
|
return this.state.refTableModel;
|
|
@@ -160,7 +156,7 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
160
156
|
}
|
|
161
157
|
|
|
162
158
|
this.state.refTableModel.data = dataArray;
|
|
163
|
-
this.setState({
|
|
159
|
+
this.instance.setState({
|
|
164
160
|
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
165
161
|
});
|
|
166
162
|
return this.state.refTableModel;
|
|
@@ -176,7 +172,7 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
176
172
|
}
|
|
177
173
|
}, {
|
|
178
174
|
key: "setOnePageData",
|
|
179
|
-
value: function setOnePageData(onePageResultData,
|
|
175
|
+
value: function setOnePageData(onePageResultData, callback) {
|
|
180
176
|
if (_lodash["default"].isEmpty(this.state.refTableModel)) {
|
|
181
177
|
throw new Error("please create buildPagerTableModel first, then set table data.");
|
|
182
178
|
}
|
|
@@ -186,14 +182,24 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
186
182
|
}
|
|
187
183
|
|
|
188
184
|
this.state.refTableModel.data = onePageResultData === null || onePageResultData === void 0 ? void 0 : onePageResultData.data;
|
|
189
|
-
this.state.refTableModel.skip = pageIndex;
|
|
190
|
-
this.state.refTableModel.take = pageSize;
|
|
191
185
|
this.state.refTableModel.total = onePageResultData === null || onePageResultData === void 0 ? void 0 : onePageResultData.total;
|
|
192
|
-
this.setState({
|
|
186
|
+
this.instance.setState({
|
|
193
187
|
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
194
|
-
});
|
|
188
|
+
}, callback && _lodash["default"].isFunction(callback) && callback);
|
|
195
189
|
return this.state.refTableModel;
|
|
196
190
|
}
|
|
191
|
+
}, {
|
|
192
|
+
key: "setGridOperator",
|
|
193
|
+
value: function setGridOperator(dataState, callback) {
|
|
194
|
+
var _dataState$filter;
|
|
195
|
+
|
|
196
|
+
this.state.refTableModel = _objectSpread(_objectSpread(_objectSpread({}, this.state.refTableModel), dataState), {}, {
|
|
197
|
+
filters: (dataState === null || dataState === void 0 ? void 0 : (_dataState$filter = dataState.filter) === null || _dataState$filter === void 0 ? void 0 : _dataState$filter.filters) || []
|
|
198
|
+
});
|
|
199
|
+
this.instance.setState({
|
|
200
|
+
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
201
|
+
}, callback && _lodash["default"].isFunction(callback) && callback);
|
|
202
|
+
}
|
|
197
203
|
}, {
|
|
198
204
|
key: "getRowData",
|
|
199
205
|
value: function getRowData(row) {
|
|
@@ -209,7 +215,7 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
209
215
|
}
|
|
210
216
|
}, {
|
|
211
217
|
key: "insertRow",
|
|
212
|
-
value: function insertRow(row) {
|
|
218
|
+
value: function insertRow(row, callback) {
|
|
213
219
|
var addItem = {
|
|
214
220
|
uid: (0, _reactUuid["default"])(),
|
|
215
221
|
inEditState: true
|
|
@@ -224,9 +230,9 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
224
230
|
}
|
|
225
231
|
|
|
226
232
|
this.state.refTableModel.data.push(_objectSpread({}, addItem));
|
|
227
|
-
this.setState({
|
|
233
|
+
this.instance.setState({
|
|
228
234
|
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
229
|
-
});
|
|
235
|
+
}, callback && _lodash["default"].isFunction(callback) && callback);
|
|
230
236
|
return this;
|
|
231
237
|
}
|
|
232
238
|
}, {
|
|
@@ -248,18 +254,18 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
248
254
|
}
|
|
249
255
|
}, {
|
|
250
256
|
key: "removeRow",
|
|
251
|
-
value: function removeRow(row) {
|
|
257
|
+
value: function removeRow(row, callback) {
|
|
252
258
|
var filterGridData = this.state.refTableModel.data.filter(function (item) {
|
|
253
259
|
return item.pk ? item.pk !== row.pk : item.uid !== row.uid;
|
|
254
260
|
});
|
|
255
261
|
this.state.refTableModel.data = _toConsumableArray(filterGridData);
|
|
256
|
-
this.setState({
|
|
262
|
+
this.instance.setState({
|
|
257
263
|
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
258
|
-
});
|
|
264
|
+
}, callback && _lodash["default"].isFunction(callback) && callback);
|
|
259
265
|
}
|
|
260
266
|
}, {
|
|
261
267
|
key: "updateRow",
|
|
262
|
-
value: function updateRow(row) {
|
|
268
|
+
value: function updateRow(row, callback) {
|
|
263
269
|
var rowIndex = this.state.refTableModel.data.findIndex(function (item) {
|
|
264
270
|
return item.pk === row.pk;
|
|
265
271
|
});
|
|
@@ -275,9 +281,9 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
275
281
|
this.state.refTableModel.data[rowIndex] = _objectSpread(_objectSpread({}, dataItem), row);
|
|
276
282
|
}
|
|
277
283
|
|
|
278
|
-
this.setState({
|
|
284
|
+
this.instance.setState({
|
|
279
285
|
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
280
|
-
});
|
|
286
|
+
}, callback && _lodash["default"].isFunction(callback) && callback);
|
|
281
287
|
return this;
|
|
282
288
|
}
|
|
283
289
|
}, {
|
|
@@ -287,6 +293,7 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
287
293
|
_this = this;
|
|
288
294
|
|
|
289
295
|
var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
296
|
+
var callback = arguments.length > 2 ? arguments[2] : undefined;
|
|
290
297
|
(_this$state$refTableM2 = this.state.refTableModel.data) === null || _this$state$refTableM2 === void 0 ? void 0 : _this$state$refTableM2.forEach(function (item, index) {
|
|
291
298
|
if (item.pk === row.pk) {
|
|
292
299
|
if (!state) {
|
|
@@ -297,9 +304,9 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
297
304
|
}
|
|
298
305
|
}
|
|
299
306
|
});
|
|
300
|
-
this.setState({
|
|
307
|
+
this.instance.setState({
|
|
301
308
|
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
302
|
-
});
|
|
309
|
+
}, callback && _lodash["default"].isFunction(callback) && callback);
|
|
303
310
|
return this;
|
|
304
311
|
}
|
|
305
312
|
}, {
|
|
@@ -308,12 +315,13 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
308
315
|
var _this$state$refTableM3;
|
|
309
316
|
|
|
310
317
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
318
|
+
var callback = arguments.length > 1 ? arguments[1] : undefined;
|
|
311
319
|
(_this$state$refTableM3 = this.state.refTableModel.data) === null || _this$state$refTableM3 === void 0 ? void 0 : _this$state$refTableM3.forEach(function (item) {
|
|
312
320
|
item.inEditState = state;
|
|
313
321
|
});
|
|
314
|
-
this.setState({
|
|
322
|
+
this.instance.setState({
|
|
315
323
|
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
316
|
-
});
|
|
324
|
+
}, callback && _lodash["default"].isFunction(callback) && callback);
|
|
317
325
|
return this;
|
|
318
326
|
}
|
|
319
327
|
}, {
|
|
@@ -336,47 +344,22 @@ var KendoGridAPI = /*#__PURE__*/function () {
|
|
|
336
344
|
value: function rowIndex(_rowIndex) {
|
|
337
345
|
return (this.state.refTableModel.skip - 1) * this.state.refTableModel.take + _rowIndex + 1;
|
|
338
346
|
}
|
|
339
|
-
}, {
|
|
340
|
-
key: "showTotalRow",
|
|
341
|
-
value: function showTotalRow() {
|
|
342
|
-
this.state.refTableModel.showTotal = true;
|
|
343
|
-
this.setState({
|
|
344
|
-
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
345
|
-
});
|
|
346
|
-
}
|
|
347
|
-
}, {
|
|
348
|
-
key: "hideTotalRow",
|
|
349
|
-
value: function hideTotalRow() {
|
|
350
|
-
this.state.refTableModel.showTotal = false;
|
|
351
|
-
this.setState({
|
|
352
|
-
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
}, {
|
|
356
|
-
key: "setPageSize",
|
|
357
|
-
value: function setPageSize(size) {
|
|
358
|
-
this.state.refTableModel.take = size;
|
|
359
|
-
this.setState({
|
|
360
|
-
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
347
|
}, {
|
|
364
348
|
key: "getPageSize",
|
|
365
349
|
value: function getPageSize() {
|
|
366
350
|
return this.state.refTableModel.take;
|
|
367
351
|
}
|
|
368
|
-
}, {
|
|
369
|
-
key: "setCurrentPageIndex",
|
|
370
|
-
value: function setCurrentPageIndex(index) {
|
|
371
|
-
this.state.refTableModel.skip = index;
|
|
372
|
-
this.setState({
|
|
373
|
-
refTableModel: _objectSpread({}, this.state.refTableModel)
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
352
|
}, {
|
|
377
353
|
key: "getCurrentPageIndex",
|
|
378
354
|
value: function getCurrentPageIndex() {
|
|
379
|
-
return this.state.refTableModel.skip;
|
|
355
|
+
return this.state.refTableModel.skip / this.state.refTableModel.take;
|
|
356
|
+
}
|
|
357
|
+
}, {
|
|
358
|
+
key: "exportExcelFile",
|
|
359
|
+
value: function exportExcelFile(fileName) {
|
|
360
|
+
var _this$gridTableRef, _this$gridTableRef$cu;
|
|
361
|
+
|
|
362
|
+
_utils.ExcelKits.exportTableData2ExcelFile((_this$gridTableRef = this.gridTableRef) === null || _this$gridTableRef === void 0 ? void 0 : (_this$gridTableRef$cu = _this$gridTableRef.current) === null || _this$gridTableRef$cu === void 0 ? void 0 : _this$gridTableRef$cu.columns, this.gridTableRef.value.data, fileName);
|
|
380
363
|
}
|
|
381
364
|
}], [{
|
|
382
365
|
key: "of",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bchr/bchr-front-lib",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.11-alpha-20241223.1",
|
|
4
4
|
"description": "bchr front lib",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"@progress/kendo-treeview-react-wrapper": "^2019.4.1014",
|
|
46
46
|
"antd": "^4.5.4",
|
|
47
47
|
"decimal.js": "^10.4.3",
|
|
48
|
+
"exceljs": "^4.4.0",
|
|
48
49
|
"file-saver": "^2.0.5",
|
|
49
50
|
"handsontable": "^7.2.2",
|
|
50
51
|
"jquery": "^3.5.1",
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
import * as ExcelJS from "exceljs";
|
|
2
|
+
import {saveAs} from "file-saver";
|
|
3
|
+
import Values from "./Values";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
const DEFAULT_BORDER_COLOR_FOR_EXCEL = "CCCCCC";
|
|
7
|
+
const DEFAULT_FG_COLOR_FOR_EXCEL = "FFFFFF";
|
|
8
|
+
const DEFAULT_COL_HEADER_BG_COLOR = "F2F3F5";
|
|
9
|
+
|
|
10
|
+
const excelHeaderRowStyle = {
|
|
11
|
+
font: {
|
|
12
|
+
size: 10,
|
|
13
|
+
bold: true
|
|
14
|
+
},
|
|
15
|
+
alignment: {
|
|
16
|
+
vertical: 'middle',
|
|
17
|
+
horizontal: 'center'
|
|
18
|
+
},
|
|
19
|
+
fill: {
|
|
20
|
+
type: 'pattern',
|
|
21
|
+
pattern: 'solid',
|
|
22
|
+
fgColor: {
|
|
23
|
+
argb: DEFAULT_COL_HEADER_BG_COLOR
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
border: {
|
|
27
|
+
top: {style: 'thin', color: {argb: DEFAULT_BORDER_COLOR_FOR_EXCEL}},
|
|
28
|
+
left: {style: 'thin', color: {argb: DEFAULT_BORDER_COLOR_FOR_EXCEL}},
|
|
29
|
+
bottom: {style: 'thin', color: {argb: DEFAULT_BORDER_COLOR_FOR_EXCEL}},
|
|
30
|
+
right: {style: 'thin', color: {argb: DEFAULT_BORDER_COLOR_FOR_EXCEL}}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const excelBodyRowStyle = {
|
|
35
|
+
font: {
|
|
36
|
+
size: 10,
|
|
37
|
+
bold: true
|
|
38
|
+
},
|
|
39
|
+
alignment: {
|
|
40
|
+
vertical: 'middle',
|
|
41
|
+
horizontal: 'center'
|
|
42
|
+
},
|
|
43
|
+
fill: {
|
|
44
|
+
type: 'pattern',
|
|
45
|
+
pattern: 'solid',
|
|
46
|
+
fgColor: {
|
|
47
|
+
argb: DEFAULT_FG_COLOR_FOR_EXCEL
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
border: {
|
|
51
|
+
top: {style: 'thin', color: {argb: DEFAULT_BORDER_COLOR_FOR_EXCEL}},
|
|
52
|
+
left: {style: 'thin', color: {argb: DEFAULT_BORDER_COLOR_FOR_EXCEL}},
|
|
53
|
+
bottom: {style: 'thin', color: {argb: DEFAULT_BORDER_COLOR_FOR_EXCEL}},
|
|
54
|
+
right: {style: 'thin', color: {argb: DEFAULT_BORDER_COLOR_FOR_EXCEL}}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const ExcelKits = {
|
|
59
|
+
|
|
60
|
+
exportHandsontableData2CSVFile(handsonTableInstance, fileName) {
|
|
61
|
+
if (handsonTableInstance === null || handsonTableInstance === void 0) {
|
|
62
|
+
throw new IllegalArgumentError("HandsontableInstance is null for ExcelKits#exportHandsontableData2CSVFile");
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (Values.isBlankString(fileName)) {
|
|
66
|
+
fileName = `${t('ui.export.csv.file')}-` + new Date().getTime();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const exportPlugin = handsonTableInstance.getPlugin('exportFile');
|
|
70
|
+
exportPlugin.downloadFile('csv', {
|
|
71
|
+
bom: false,
|
|
72
|
+
columnDelimiter: ',',
|
|
73
|
+
columnHeaders: false,
|
|
74
|
+
exportHiddenColumns: true,
|
|
75
|
+
exportHiddenRows: true,
|
|
76
|
+
fileExtension: 'csv',
|
|
77
|
+
filename: fileName,
|
|
78
|
+
mimeType: 'text/csv',
|
|
79
|
+
rowDelimiter: '\r\n',
|
|
80
|
+
rowHeaders: true
|
|
81
|
+
});
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
exportHandsontableData2ExcelFile(handsontableInstance, fileName) {
|
|
85
|
+
if (handsontableInstance === null || handsontableInstance === void 0) {
|
|
86
|
+
throw new IllegalArgumentError("HandsontableInstance is null for ExcelKits#exportHandsontableData2ExcelFile");
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (Values.isBlankString(fileName)) {
|
|
90
|
+
fileName = t('ui.export.excel.file') + "-" + new Date().getTime();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
let exportGridColumns = [];
|
|
94
|
+
let exportGridData = handsontableInstance.hotInstance.getSourceData();
|
|
95
|
+
|
|
96
|
+
window.handsontableInstance = handsontableInstance;
|
|
97
|
+
|
|
98
|
+
if (handsontableInstance.columnSettings && handsontableInstance.columnSettings.length) {
|
|
99
|
+
handsontableInstance.columnSettings.forEach(column => {
|
|
100
|
+
exportGridColumns.push({
|
|
101
|
+
...column,
|
|
102
|
+
dataIndex: column.data
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
console.log('exportGridColumns :', exportGridColumns)
|
|
108
|
+
console.log('exportGridData :', exportGridData)
|
|
109
|
+
|
|
110
|
+
this.exportTableData2ExcelFile(exportGridColumns, exportGridData, fileName);
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
exportTableData2ExcelFile(columns = [], data = [], fileName) {
|
|
114
|
+
|
|
115
|
+
if (Values.isBlankString(fileName)) {
|
|
116
|
+
fileName = `${t('ui.export.excel.file')}-` + new Date().getTime();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const workbook = new ExcelJS.Workbook();
|
|
120
|
+
const worksheet = workbook.addWorksheet('sheet');
|
|
121
|
+
|
|
122
|
+
let exportGridColumnsData = this.gatherExcelColumnHeaderStructureInfo(this.extractColumns(columns));
|
|
123
|
+
let totalColumnHeaderRowCount = exportGridColumnsData.totalColumnHeaderRowCount;
|
|
124
|
+
let columnHeaderData = exportGridColumnsData.columnHeaderData;
|
|
125
|
+
let rowHeaderArray = exportGridColumnsData.rowHeaderArray;
|
|
126
|
+
let columnHeaderMergeCellArray = exportGridColumnsData.columnHeaderMergeCellArray;
|
|
127
|
+
|
|
128
|
+
let exportGridData = data;
|
|
129
|
+
|
|
130
|
+
worksheet.columns = columnHeaderData;
|
|
131
|
+
worksheet.spliceRows(1, 1);
|
|
132
|
+
worksheet.insertRows(1, rowHeaderArray);
|
|
133
|
+
|
|
134
|
+
exportGridData.forEach(gridItem => {
|
|
135
|
+
worksheet.addRow(gridItem);
|
|
136
|
+
})
|
|
137
|
+
|
|
138
|
+
columnHeaderMergeCellArray.forEach(mergeCells => {
|
|
139
|
+
worksheet.mergeCells(mergeCells)
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
// 设置表头样式
|
|
143
|
+
const headerRows = worksheet.getRows(1, totalColumnHeaderRowCount);
|
|
144
|
+
headerRows.forEach((row, rowIndex) => {
|
|
145
|
+
row.eachCell((cell, cellIndex) => {
|
|
146
|
+
cell.style = excelHeaderRowStyle;
|
|
147
|
+
})
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
// 设置表体样式
|
|
151
|
+
const bodyRows = worksheet.getRows(totalColumnHeaderRowCount + 1, totalColumnHeaderRowCount + exportGridData.length + 5);
|
|
152
|
+
bodyRows.forEach((row) => {
|
|
153
|
+
row.eachCell((cell, cellIndex) => {
|
|
154
|
+
cell.style = excelBodyRowStyle;
|
|
155
|
+
})
|
|
156
|
+
})
|
|
157
|
+
|
|
158
|
+
workbook.xlsx.writeBuffer().then(buffer => {
|
|
159
|
+
saveAs(new Blob([buffer], {
|
|
160
|
+
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
|
161
|
+
}), fileName + ".xlsx")
|
|
162
|
+
})
|
|
163
|
+
},
|
|
164
|
+
|
|
165
|
+
extractColumns(children, level) {
|
|
166
|
+
let _this = this;
|
|
167
|
+
if (level === void 0) {
|
|
168
|
+
level = 0;
|
|
169
|
+
}
|
|
170
|
+
return Array.isArray(children)
|
|
171
|
+
? children.map(function (child) {
|
|
172
|
+
return _this.extractChild(child, level);
|
|
173
|
+
})
|
|
174
|
+
: [children, _this.extractChild(children, level)];
|
|
175
|
+
},
|
|
176
|
+
|
|
177
|
+
extractChild(child, level) {
|
|
178
|
+
let _this = this;
|
|
179
|
+
if (level === void 0) {
|
|
180
|
+
level = 0;
|
|
181
|
+
}
|
|
182
|
+
return Object.assign(Object.assign({}, child), {
|
|
183
|
+
level: level,
|
|
184
|
+
children: child.children && _this.extractColumns(child.children, level + 1)
|
|
185
|
+
})
|
|
186
|
+
},
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* 收集Excel列头信息(复合表头)
|
|
190
|
+
* @param gridColumns
|
|
191
|
+
* @returns {{totalColumnCount: {int}, totalColumnHeaderRowCount: {int}, columnHeaderArray: [] }}
|
|
192
|
+
*/
|
|
193
|
+
gatherExcelColumnHeaderStructureInfo(gridColumns) {
|
|
194
|
+
let [totalColumnCount, totalColumnHeaderRowCount] = this.getTotalColumnCountAndTotalColumnHeaderRowCount(gridColumns, 0, 1);
|
|
195
|
+
|
|
196
|
+
let columnHeaderArray = [];
|
|
197
|
+
for (let i = 0, count = gridColumns.length; i < count; i++) {
|
|
198
|
+
let column = gridColumns[i];
|
|
199
|
+
this.$buildColumnHeaderArray(column, columnHeaderArray);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
for (let i = 0, count = columnHeaderArray.length; i < count; i++) {
|
|
203
|
+
let subArray = columnHeaderArray[i];
|
|
204
|
+
let lastElem = subArray[subArray.length - 1];
|
|
205
|
+
for (let r = subArray.length; r < totalColumnHeaderRowCount; r++) {
|
|
206
|
+
subArray.push(lastElem);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
let columnHeaderMergeCellArray = [];
|
|
211
|
+
let nextColIndex = 1;
|
|
212
|
+
for (let i = 0, count = gridColumns.length; i < count; i++) {
|
|
213
|
+
let gridColumn = gridColumns[i];
|
|
214
|
+
nextColIndex = this.gatherExcelColumnHeaderMergeCellInfo(gridColumn, columnHeaderMergeCellArray, totalColumnHeaderRowCount, 1, nextColIndex);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
let rowHeaderArray = [];
|
|
218
|
+
for (let totalColumnHeaderRowStep = 0; totalColumnHeaderRowStep < totalColumnHeaderRowCount; totalColumnHeaderRowStep++) {
|
|
219
|
+
let rowHeaderColumns = [];
|
|
220
|
+
columnHeaderArray.forEach(columns => {
|
|
221
|
+
rowHeaderColumns.push(columns[totalColumnHeaderRowStep])
|
|
222
|
+
})
|
|
223
|
+
rowHeaderArray.push(rowHeaderColumns);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
let columnHeaderData = [];
|
|
227
|
+
let columnIndex = 0;
|
|
228
|
+
|
|
229
|
+
let addColumns = (columns, result) => {
|
|
230
|
+
columns.forEach((column) => {
|
|
231
|
+
let exporterColumn = this.$normalizedExportColumn(column);
|
|
232
|
+
result.push(exporterColumn);
|
|
233
|
+
if (column.children && column.children.length > 1) {
|
|
234
|
+
let children = exporterColumn.columns = [];
|
|
235
|
+
addColumns(column.children, children);
|
|
236
|
+
} else {
|
|
237
|
+
columnIndex++;
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
};
|
|
241
|
+
addColumns(gridColumns, columnHeaderData);
|
|
242
|
+
const autoCreateArrayItems = function (column, columnStep, columns) {
|
|
243
|
+
if (column.columns && column.columns.length) {
|
|
244
|
+
columns.splice(columnStep, 1, ...column.columns);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (columnStep === columns.length - 1) {
|
|
248
|
+
console.log('success');
|
|
249
|
+
} else {
|
|
250
|
+
columnStep++;
|
|
251
|
+
autoCreateArrayItems(columns[columnStep], columnStep, columns);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
autoCreateArrayItems(columnHeaderData[0], 0, columnHeaderData);
|
|
256
|
+
|
|
257
|
+
return {
|
|
258
|
+
totalColumnCount,
|
|
259
|
+
totalColumnHeaderRowCount,
|
|
260
|
+
columnHeaderArray,
|
|
261
|
+
columnHeaderData,
|
|
262
|
+
rowHeaderArray,
|
|
263
|
+
columnHeaderMergeCellArray
|
|
264
|
+
};
|
|
265
|
+
},
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* @return {Array} eg -
|
|
269
|
+
* [
|
|
270
|
+
* [leftTopRowIndex, leftTopColumnIndex, rightBottomRowIndex, rightBottomColumnIndex],
|
|
271
|
+
* [leftTopRowIndex, leftTopColumnIndex, rightBottomRowIndex, rightBottomColumnIndex],
|
|
272
|
+
* [leftTopRowIndex, leftTopColumnIndex, rightBottomRowIndex, rightBottomColumnIndex],
|
|
273
|
+
* [leftTopRowIndex, leftTopColumnIndex, rightBottomRowIndex, rightBottomColumnIndex],
|
|
274
|
+
* ]
|
|
275
|
+
*/
|
|
276
|
+
gatherExcelColumnHeaderMergeCellInfo(gridColumn, columnHeaderMergeCellArray, totalColumnHeaderRowCount, currentColumnHeaderRowIndex = 1, colIndex) {
|
|
277
|
+
|
|
278
|
+
let allChildColumnCount = this.$countAllChildColumnCount(gridColumn);
|
|
279
|
+
|
|
280
|
+
if (Array.isArray(gridColumn.children) && gridColumn.children.length) {
|
|
281
|
+
let gridColumns = gridColumn.children;
|
|
282
|
+
let gridColumnCount = gridColumns.length;
|
|
283
|
+
|
|
284
|
+
columnHeaderMergeCellArray.push([currentColumnHeaderRowIndex, colIndex, currentColumnHeaderRowIndex, colIndex + allChildColumnCount - 1]);
|
|
285
|
+
|
|
286
|
+
for (let i = 0; i < gridColumnCount; i++) {
|
|
287
|
+
this.gatherExcelColumnHeaderMergeCellInfo(gridColumns[i], columnHeaderMergeCellArray, totalColumnHeaderRowCount,
|
|
288
|
+
currentColumnHeaderRowIndex + 1, colIndex + i);
|
|
289
|
+
}
|
|
290
|
+
} else {
|
|
291
|
+
if (currentColumnHeaderRowIndex !== totalColumnHeaderRowCount) {
|
|
292
|
+
columnHeaderMergeCellArray.push([currentColumnHeaderRowIndex, colIndex, totalColumnHeaderRowCount, colIndex]);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
return colIndex + allChildColumnCount;
|
|
297
|
+
},
|
|
298
|
+
|
|
299
|
+
$countAllChildColumnCount(gridColumn) {
|
|
300
|
+
let columnCount = 0;
|
|
301
|
+
if (gridColumn === null || gridColumn === void 0) {
|
|
302
|
+
return columnCount;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (Array.isArray(gridColumn.children) && gridColumn.children.length) {
|
|
306
|
+
let gridColumns = gridColumn.children;
|
|
307
|
+
let gridColumnCount = gridColumns.length;
|
|
308
|
+
|
|
309
|
+
for (let i = 0; i < gridColumnCount; i++) {
|
|
310
|
+
let childColumnCount = this.$countAllChildColumnCount(gridColumns[i]);
|
|
311
|
+
columnCount = columnCount + childColumnCount;
|
|
312
|
+
}
|
|
313
|
+
} else {
|
|
314
|
+
columnCount = 1;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
return columnCount;
|
|
318
|
+
},
|
|
319
|
+
|
|
320
|
+
getTotalColumnCountAndTotalColumnHeaderRowCount(gridColumns, totalColumnCount, totalColumnHeaderCount) {
|
|
321
|
+
let maxN2 = totalColumnHeaderCount;
|
|
322
|
+
for (let i = 0, count = gridColumns.length; i < count; i++) {
|
|
323
|
+
let column = gridColumns[i];
|
|
324
|
+
if (Array.isArray(column.children) && column.children.length) {
|
|
325
|
+
let [n1, n2] = this.getTotalColumnCountAndTotalColumnHeaderRowCount(column.children, 0, totalColumnHeaderCount + 1);
|
|
326
|
+
totalColumnCount = totalColumnCount + n1;
|
|
327
|
+
if (n2 > maxN2) {
|
|
328
|
+
maxN2 = n2;
|
|
329
|
+
}
|
|
330
|
+
} else {
|
|
331
|
+
totalColumnCount = totalColumnCount + 1;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
return [totalColumnCount, maxN2]
|
|
336
|
+
},
|
|
337
|
+
|
|
338
|
+
$buildColumnHeaderArray(column, columnHeaderArray, parentHeaderTitles) {
|
|
339
|
+
if (Array.isArray(column.children) && column.children.length) {
|
|
340
|
+
if (parentHeaderTitles === null || parentHeaderTitles == void 0) {
|
|
341
|
+
parentHeaderTitles = [column.title];
|
|
342
|
+
} else {
|
|
343
|
+
parentHeaderTitles.push(column.title);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
for (let i = 0, count = column.children.length; i < count; i++) {
|
|
347
|
+
let childColumn = column.children[i];
|
|
348
|
+
this.$buildColumnHeaderArray(childColumn, columnHeaderArray, parentHeaderTitles);
|
|
349
|
+
}
|
|
350
|
+
} else {
|
|
351
|
+
let columnSelfHeaderTitleArray = [];
|
|
352
|
+
if (Array.isArray(parentHeaderTitles)) {
|
|
353
|
+
columnSelfHeaderTitleArray.push(...parentHeaderTitles);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
columnSelfHeaderTitleArray.push(column.title);
|
|
357
|
+
|
|
358
|
+
columnHeaderArray.push(columnSelfHeaderTitleArray)
|
|
359
|
+
}
|
|
360
|
+
},
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
$normalizedExportColumn(column) {
|
|
364
|
+
return {
|
|
365
|
+
header : column.title,
|
|
366
|
+
key : column.dataIndex,
|
|
367
|
+
locked : column.locked,
|
|
368
|
+
width : column.width * 0.1
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
export default ExcelKits;
|
package/src/base/utils/index.js
CHANGED
|
@@ -7,9 +7,10 @@ from './FormDatas';
|
|
|
7
7
|
import Strings from "./Strings";
|
|
8
8
|
import Values from "./Values";
|
|
9
9
|
import DateTimes from "./DateTimes";
|
|
10
|
+
import ExcelKits from "./ExcelKits";
|
|
10
11
|
|
|
11
12
|
export {
|
|
12
|
-
Strings, Values, DateTimes,
|
|
13
|
+
Strings, Values, DateTimes, ExcelKits,
|
|
13
14
|
convertFormValues2VOUsingVOFormat,
|
|
14
15
|
convertVO2FormValuesUsingFormValueFormat,
|
|
15
16
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import lodash from "lodash";
|
|
3
2
|
import Values from "../base/utils/Values";
|
|
4
3
|
import DateTimes from "../base/utils/DateTimes";
|
|
5
4
|
import uuid from 'react-uuid';
|
|
6
5
|
import {message} from "antd";
|
|
6
|
+
import {ExcelKits} from "../base/utils";
|
|
7
7
|
|
|
8
8
|
class KendoGridAPI {
|
|
9
|
-
constructor(kendoGridRef, state,
|
|
9
|
+
constructor(kendoGridRef, state, _instance) {
|
|
10
10
|
this.gridTableRef = kendoGridRef;
|
|
11
11
|
|
|
12
12
|
if (state) {
|
|
13
13
|
if (Values.isNotEmpty(state)) {
|
|
14
14
|
this.state = state;
|
|
15
|
-
this.
|
|
15
|
+
this.instance = _instance;
|
|
16
16
|
}
|
|
17
17
|
else {
|
|
18
18
|
throw new Error("Invalid state for create KendoGridAPI");
|
|
@@ -52,9 +52,7 @@ class KendoGridAPI {
|
|
|
52
52
|
model = {...this.defaultPagerGridModelObj};
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
this.
|
|
56
|
-
refTableModel: {...model}
|
|
57
|
-
})
|
|
55
|
+
this.state.refTableModel = {...model};
|
|
58
56
|
|
|
59
57
|
return this.state.refTableModel;
|
|
60
58
|
}
|
|
@@ -68,9 +66,7 @@ class KendoGridAPI {
|
|
|
68
66
|
model = {...this.defaultPagerGridModelObj, pageable: false};
|
|
69
67
|
}
|
|
70
68
|
|
|
71
|
-
this.
|
|
72
|
-
refTableModel: {...model}
|
|
73
|
-
})
|
|
69
|
+
this.state.refTableModel = {...model};
|
|
74
70
|
|
|
75
71
|
return this.state.refTableModel;
|
|
76
72
|
}
|
|
@@ -92,7 +88,7 @@ class KendoGridAPI {
|
|
|
92
88
|
this.state.refTableModel.filters = filters.filter(item => item.field !== field);
|
|
93
89
|
}
|
|
94
90
|
|
|
95
|
-
this.setState({
|
|
91
|
+
this.instance.setState({
|
|
96
92
|
refTableModel: {...this.state.refTableModel}
|
|
97
93
|
})
|
|
98
94
|
|
|
@@ -106,7 +102,7 @@ class KendoGridAPI {
|
|
|
106
102
|
}
|
|
107
103
|
this.state.refTableModel.data = dataArray;
|
|
108
104
|
|
|
109
|
-
this.setState({
|
|
105
|
+
this.instance.setState({
|
|
110
106
|
refTableModel: {...this.state.refTableModel}
|
|
111
107
|
})
|
|
112
108
|
|
|
@@ -121,7 +117,7 @@ class KendoGridAPI {
|
|
|
121
117
|
}, this.getCurrentPageIndex(), this.getPageSize())
|
|
122
118
|
}
|
|
123
119
|
|
|
124
|
-
setOnePageData(onePageResultData,
|
|
120
|
+
setOnePageData(onePageResultData, callback) {
|
|
125
121
|
if (lodash.isEmpty(this.state.refTableModel)) {
|
|
126
122
|
throw new Error("please create buildPagerTableModel first, then set table data.");
|
|
127
123
|
}
|
|
@@ -131,17 +127,22 @@ class KendoGridAPI {
|
|
|
131
127
|
}
|
|
132
128
|
|
|
133
129
|
this.state.refTableModel.data = onePageResultData?.data;
|
|
134
|
-
this.state.refTableModel.skip = pageIndex;
|
|
135
|
-
this.state.refTableModel.take = pageSize
|
|
136
130
|
this.state.refTableModel.total = onePageResultData?.total;
|
|
137
131
|
|
|
138
|
-
this.setState({
|
|
132
|
+
this.instance.setState({
|
|
139
133
|
refTableModel: {...this.state.refTableModel}
|
|
140
|
-
})
|
|
134
|
+
}, (callback && lodash.isFunction(callback)) && callback)
|
|
141
135
|
|
|
142
136
|
return this.state.refTableModel;
|
|
143
137
|
}
|
|
144
138
|
|
|
139
|
+
setGridOperator(dataState, callback) {
|
|
140
|
+
this.state.refTableModel = {...this.state.refTableModel, ...dataState, filters: dataState?.filter?.filters || []};
|
|
141
|
+
this.instance.setState({
|
|
142
|
+
refTableModel: {...this.state.refTableModel}
|
|
143
|
+
}, (callback && lodash.isFunction(callback)) && callback)
|
|
144
|
+
}
|
|
145
|
+
|
|
145
146
|
getRowData(row) {
|
|
146
147
|
if (row.uid) {
|
|
147
148
|
return this.state.refTableModel.data.filter(item => item.uid === row.uid)[0];
|
|
@@ -149,7 +150,7 @@ class KendoGridAPI {
|
|
|
149
150
|
return this.state.refTableModel.data.filter(item => item.pk === row.pk)[0];
|
|
150
151
|
}
|
|
151
152
|
|
|
152
|
-
insertRow(row) {
|
|
153
|
+
insertRow(row, callback) {
|
|
153
154
|
let addItem = {
|
|
154
155
|
uid: uuid(),
|
|
155
156
|
inEditState: true,
|
|
@@ -162,9 +163,9 @@ class KendoGridAPI {
|
|
|
162
163
|
}
|
|
163
164
|
this.state.refTableModel.data.push({...addItem});
|
|
164
165
|
|
|
165
|
-
this.setState({
|
|
166
|
+
this.instance.setState({
|
|
166
167
|
refTableModel: {...this.state.refTableModel}
|
|
167
|
-
})
|
|
168
|
+
}, (callback && lodash.isFunction(callback)) && callback)
|
|
168
169
|
|
|
169
170
|
return this
|
|
170
171
|
}
|
|
@@ -183,16 +184,16 @@ class KendoGridAPI {
|
|
|
183
184
|
}
|
|
184
185
|
}
|
|
185
186
|
|
|
186
|
-
removeRow(row) {
|
|
187
|
+
removeRow(row, callback) {
|
|
187
188
|
let filterGridData = this.state.refTableModel.data.filter(item => item.pk ? item.pk !== row.pk : item.uid !== row.uid);
|
|
188
189
|
this.state.refTableModel.data = [...filterGridData];
|
|
189
190
|
|
|
190
|
-
this.setState({
|
|
191
|
+
this.instance.setState({
|
|
191
192
|
refTableModel: {...this.state.refTableModel}
|
|
192
|
-
})
|
|
193
|
+
}, (callback && lodash.isFunction(callback)) && callback)
|
|
193
194
|
}
|
|
194
195
|
|
|
195
|
-
updateRow(row) {
|
|
196
|
+
updateRow(row, callback) {
|
|
196
197
|
let rowIndex = this.state.refTableModel.data.findIndex(item => item.pk === row.pk);
|
|
197
198
|
|
|
198
199
|
if (row.uid) {
|
|
@@ -204,14 +205,14 @@ class KendoGridAPI {
|
|
|
204
205
|
this.state.refTableModel.data[rowIndex] = {...dataItem, ...row};
|
|
205
206
|
}
|
|
206
207
|
|
|
207
|
-
this.setState({
|
|
208
|
+
this.instance.setState({
|
|
208
209
|
refTableModel: {...this.state.refTableModel}
|
|
209
|
-
})
|
|
210
|
+
}, (callback && lodash.isFunction(callback)) && callback)
|
|
210
211
|
|
|
211
212
|
return this;
|
|
212
213
|
}
|
|
213
214
|
|
|
214
|
-
setRowInEditState(row, state = true) {
|
|
215
|
+
setRowInEditState(row, state = true, callback) {
|
|
215
216
|
this.state.refTableModel.data?.forEach((item, index) => {
|
|
216
217
|
if (item.pk === row.pk) {
|
|
217
218
|
if (!state) {
|
|
@@ -223,20 +224,20 @@ class KendoGridAPI {
|
|
|
223
224
|
}
|
|
224
225
|
})
|
|
225
226
|
|
|
226
|
-
this.setState({
|
|
227
|
+
this.instance.setState({
|
|
227
228
|
refTableModel: {...this.state.refTableModel}
|
|
228
|
-
})
|
|
229
|
+
}, (callback && lodash.isFunction(callback)) && callback)
|
|
229
230
|
return this;
|
|
230
231
|
}
|
|
231
232
|
|
|
232
|
-
setAllRowInEditState(state = true) {
|
|
233
|
+
setAllRowInEditState(state = true, callback) {
|
|
233
234
|
this.state.refTableModel.data?.forEach(item => {
|
|
234
235
|
item.inEditState = state;
|
|
235
236
|
})
|
|
236
237
|
|
|
237
|
-
this.setState({
|
|
238
|
+
this.instance.setState({
|
|
238
239
|
refTableModel: {...this.state.refTableModel}
|
|
239
|
-
})
|
|
240
|
+
}, (callback && lodash.isFunction(callback)) && callback)
|
|
240
241
|
|
|
241
242
|
return this;
|
|
242
243
|
}
|
|
@@ -257,40 +258,16 @@ class KendoGridAPI {
|
|
|
257
258
|
return (this.state.refTableModel.skip - 1) * this.state.refTableModel.take + rowIndex + 1;
|
|
258
259
|
}
|
|
259
260
|
|
|
260
|
-
showTotalRow() {
|
|
261
|
-
this.state.refTableModel.showTotal = true;
|
|
262
|
-
this.setState({
|
|
263
|
-
refTableModel: {...this.state.refTableModel}
|
|
264
|
-
})
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
hideTotalRow() {
|
|
268
|
-
this.state.refTableModel.showTotal = false;
|
|
269
|
-
this.setState({
|
|
270
|
-
refTableModel: {...this.state.refTableModel}
|
|
271
|
-
})
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
setPageSize(size) {
|
|
275
|
-
this.state.refTableModel.take = size;
|
|
276
|
-
this.setState({
|
|
277
|
-
refTableModel: {...this.state.refTableModel}
|
|
278
|
-
})
|
|
279
|
-
}
|
|
280
|
-
|
|
281
261
|
getPageSize() {
|
|
282
262
|
return this.state.refTableModel.take;
|
|
283
263
|
}
|
|
284
264
|
|
|
285
|
-
|
|
286
|
-
this.state.refTableModel.skip
|
|
287
|
-
this.setState({
|
|
288
|
-
refTableModel: {...this.state.refTableModel}
|
|
289
|
-
})
|
|
265
|
+
getCurrentPageIndex() {
|
|
266
|
+
return this.state.refTableModel.skip / this.state.refTableModel.take;
|
|
290
267
|
}
|
|
291
268
|
|
|
292
|
-
|
|
293
|
-
|
|
269
|
+
exportExcelFile(fileName) {
|
|
270
|
+
ExcelKits.exportTableData2ExcelFile(this.gridTableRef?.current?.columns, this.gridTableRef.value.data, fileName);
|
|
294
271
|
}
|
|
295
272
|
|
|
296
273
|
}
|