@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.
@@ -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;
@@ -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, setState) {
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.setState = setState;
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.setState({
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.setState({
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, pageIndex, pageSize) {
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.10",
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;
@@ -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, setState) {
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.setState = setState;
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.setState({
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.setState({
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, pageIndex, pageSize) {
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
- setCurrentPageIndex(index) {
286
- this.state.refTableModel.skip = index;
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
- getCurrentPageIndex() {
293
- return this.state.refTableModel.skip;
269
+ exportExcelFile(fileName) {
270
+ ExcelKits.exportTableData2ExcelFile(this.gridTableRef?.current?.columns, this.gridTableRef.value.data, fileName);
294
271
  }
295
272
 
296
273
  }