devextreme-planit-treegrid-react 1.1.4 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DxPlanitTreeGrid.js +349 -189
- package/package.json +1 -2
package/dist/DxPlanitTreeGrid.js
CHANGED
@@ -1,43 +1,150 @@
|
|
1
|
-
|
1
|
+
'use strict';
|
2
2
|
|
3
|
-
function _typeof(obj) {
|
4
|
-
|
5
|
-
|
3
|
+
function _typeof(obj) {
|
4
|
+
'@babel/helpers - typeof';
|
5
|
+
return (
|
6
|
+
(_typeof =
|
7
|
+
'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
|
8
|
+
? function (obj) {
|
9
|
+
return typeof obj;
|
10
|
+
}
|
11
|
+
: function (obj) {
|
12
|
+
return obj && 'function' == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;
|
13
|
+
}),
|
14
|
+
_typeof(obj)
|
15
|
+
);
|
16
|
+
}
|
17
|
+
Object.defineProperty(exports, '__esModule', {
|
18
|
+
value: true,
|
6
19
|
});
|
7
20
|
exports.default = void 0;
|
8
|
-
var _react = require(
|
9
|
-
var _loadPanel = require(
|
10
|
-
var _pivotGrid = _interopRequireWildcard(require(
|
11
|
-
var _dataGrid = require(
|
12
|
-
var _excel_exporter = require(
|
13
|
-
var _exceljs = require(
|
14
|
-
var _fileSaver = _interopRequireDefault(require(
|
15
|
-
function _interopRequireDefault(obj) {
|
16
|
-
|
17
|
-
|
18
|
-
function
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
function
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
21
|
+
var _react = require('react');
|
22
|
+
var _loadPanel = require('devextreme-react/load-panel');
|
23
|
+
var _pivotGrid = _interopRequireWildcard(require('devextreme-react/pivot-grid'));
|
24
|
+
var _dataGrid = require('devextreme-react/data-grid');
|
25
|
+
var _excel_exporter = require('devextreme/excel_exporter');
|
26
|
+
var _exceljs = require('exceljs');
|
27
|
+
var _fileSaver = _interopRequireDefault(require('file-saver'));
|
28
|
+
function _interopRequireDefault(obj) {
|
29
|
+
return obj && obj.__esModule ? obj : { default: obj };
|
30
|
+
}
|
31
|
+
function _getRequireWildcardCache(nodeInterop) {
|
32
|
+
if (typeof WeakMap !== 'function') return null;
|
33
|
+
var cacheBabelInterop = new WeakMap();
|
34
|
+
var cacheNodeInterop = new WeakMap();
|
35
|
+
return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
|
36
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
37
|
+
})(nodeInterop);
|
38
|
+
}
|
39
|
+
function _interopRequireWildcard(obj, nodeInterop) {
|
40
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
41
|
+
return obj;
|
42
|
+
}
|
43
|
+
if (obj === null || (_typeof(obj) !== 'object' && typeof obj !== 'function')) {
|
44
|
+
return { default: obj };
|
45
|
+
}
|
46
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
47
|
+
if (cache && cache.has(obj)) {
|
48
|
+
return cache.get(obj);
|
49
|
+
}
|
50
|
+
var newObj = {};
|
51
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
52
|
+
for (var key in obj) {
|
53
|
+
if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {
|
54
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
55
|
+
if (desc && (desc.get || desc.set)) {
|
56
|
+
Object.defineProperty(newObj, key, desc);
|
57
|
+
} else {
|
58
|
+
newObj[key] = obj[key];
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
62
|
+
newObj.default = obj;
|
63
|
+
if (cache) {
|
64
|
+
cache.set(obj, newObj);
|
65
|
+
}
|
66
|
+
return newObj;
|
67
|
+
}
|
68
|
+
function _toConsumableArray(arr) {
|
69
|
+
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
70
|
+
}
|
71
|
+
function _nonIterableSpread() {
|
72
|
+
throw new TypeError(
|
73
|
+
'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
|
74
|
+
);
|
75
|
+
}
|
76
|
+
function _iterableToArray(iter) {
|
77
|
+
if ((typeof Symbol !== 'undefined' && iter[Symbol.iterator] != null) || iter['@@iterator'] != null) return Array.from(iter);
|
78
|
+
}
|
79
|
+
function _arrayWithoutHoles(arr) {
|
80
|
+
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
81
|
+
}
|
82
|
+
function _slicedToArray(arr, i) {
|
83
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
84
|
+
}
|
85
|
+
function _nonIterableRest() {
|
86
|
+
throw new TypeError(
|
87
|
+
'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
|
88
|
+
);
|
89
|
+
}
|
90
|
+
function _unsupportedIterableToArray(o, minLen) {
|
91
|
+
if (!o) return;
|
92
|
+
if (typeof o === 'string') return _arrayLikeToArray(o, minLen);
|
93
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
94
|
+
if (n === 'Object' && o.constructor) n = o.constructor.name;
|
95
|
+
if (n === 'Map' || n === 'Set') return Array.from(o);
|
96
|
+
if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
97
|
+
}
|
98
|
+
function _arrayLikeToArray(arr, len) {
|
99
|
+
if (len == null || len > arr.length) len = arr.length;
|
100
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
101
|
+
arr2[i] = arr[i];
|
102
|
+
}
|
103
|
+
return arr2;
|
104
|
+
}
|
105
|
+
function _iterableToArrayLimit(arr, i) {
|
106
|
+
var _i = null == arr ? null : ('undefined' != typeof Symbol && arr[Symbol.iterator]) || arr['@@iterator'];
|
107
|
+
if (null != _i) {
|
108
|
+
var _s,
|
109
|
+
_e,
|
110
|
+
_x,
|
111
|
+
_r,
|
112
|
+
_arr = [],
|
113
|
+
_n = !0,
|
114
|
+
_d = !1;
|
115
|
+
try {
|
116
|
+
if (((_x = (_i = _i.call(arr)).next), 0 === i)) {
|
117
|
+
if (Object(_i) !== _i) return;
|
118
|
+
_n = !1;
|
119
|
+
} else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {}
|
120
|
+
} catch (err) {
|
121
|
+
(_d = !0), (_e = err);
|
122
|
+
} finally {
|
123
|
+
try {
|
124
|
+
if (!_n && null != _i.return && ((_r = _i.return()), Object(_r) !== _r)) return;
|
125
|
+
} finally {
|
126
|
+
if (_d) throw _e;
|
127
|
+
}
|
128
|
+
}
|
129
|
+
return _arr;
|
130
|
+
}
|
131
|
+
}
|
132
|
+
function _arrayWithHoles(arr) {
|
133
|
+
if (Array.isArray(arr)) return arr;
|
134
|
+
}
|
135
|
+
/**
|
136
|
+
* devextreme pivotgrid Configrations 중 사용 불가 항목 : id, width, height, showColumnGrandTotals, showColumnTotals, showRowGrandTotals, FieldChooser
|
137
|
+
* devextreme pivotgrid Configrations 중 사용 방법 변경 항목 : stateStoring, Export
|
138
|
+
* onExported, onFileSaving 이벤트 사용하지 않음.
|
32
139
|
*/
|
33
|
-
/**
|
34
|
-
* todoList:
|
35
|
-
* 2) columIndex 초기화 기능이 있어야 함(column 개수 변할 때)
|
36
|
-
* 3) 헤더에 테이블 삽입되면서 그리드 크기가 늘어남. height에 그리드 크기 늘어난 만큼 반영되어야 함.
|
140
|
+
/**
|
141
|
+
* todoList:
|
142
|
+
* 2) columIndex 초기화 기능이 있어야 함(column 개수 변할 때)
|
143
|
+
* 3) 헤더에 테이블 삽입되면서 그리드 크기가 늘어남. height에 그리드 크기 늘어난 만큼 반영되어야 함.
|
37
144
|
*/
|
38
145
|
|
39
146
|
var grandTotalCssNm = 'data-grand-total';
|
40
|
-
var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
147
|
+
var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref) {
|
41
148
|
var _props$id = props.id,
|
42
149
|
id = _props$id === void 0 ? 'dx-planit-vera-pivotgrid-id' : _props$id,
|
43
150
|
groupField = props.groupField,
|
@@ -112,39 +219,49 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
112
219
|
var excelBorder = {
|
113
220
|
style: 'thin',
|
114
221
|
color: {
|
115
|
-
argb: 'FF7E7E7E'
|
116
|
-
}
|
222
|
+
argb: 'FF7E7E7E',
|
223
|
+
},
|
117
224
|
};
|
118
225
|
(0, _react.useImperativeHandle)(ref, function () {
|
119
226
|
return {
|
120
|
-
exportToExcel: exportToExcel
|
227
|
+
exportToExcel: exportToExcel,
|
121
228
|
};
|
122
229
|
});
|
123
230
|
|
124
|
-
/**
|
125
|
-
* 그리드 사이즈 재조정
|
126
|
-
* @returns 그리드 사이즈
|
231
|
+
/**
|
232
|
+
* 그리드 사이즈 재조정
|
233
|
+
* @returns 그리드 사이즈
|
127
234
|
*/
|
128
235
|
var getGridSize = function getGridSize() {
|
129
236
|
var _wrapper$clientWidth;
|
130
237
|
var wrapper = document.querySelector('.diag-table-wrapper');
|
131
238
|
var gap = 10;
|
132
|
-
setWidth(
|
239
|
+
setWidth(
|
240
|
+
(_wrapper$clientWidth = wrapper === null || wrapper === void 0 ? void 0 : wrapper.clientWidth) !== null &&
|
241
|
+
_wrapper$clientWidth !== void 0
|
242
|
+
? _wrapper$clientWidth
|
243
|
+
: 0
|
244
|
+
);
|
133
245
|
setHeight(wrapper ? wrapper.clientHeight - gap : 0);
|
134
246
|
window.addEventListener('resize', function () {
|
135
247
|
var _wrapper$clientWidth2;
|
136
|
-
setWidth(
|
248
|
+
setWidth(
|
249
|
+
(_wrapper$clientWidth2 = wrapper === null || wrapper === void 0 ? void 0 : wrapper.clientWidth) !== null &&
|
250
|
+
_wrapper$clientWidth2 !== void 0
|
251
|
+
? _wrapper$clientWidth2
|
252
|
+
: 0
|
253
|
+
);
|
137
254
|
setHeight(wrapper ? wrapper.clientHeight - gap : 0);
|
138
255
|
});
|
139
256
|
return {
|
140
257
|
width: width,
|
141
|
-
height: height
|
258
|
+
height: height,
|
142
259
|
};
|
143
260
|
};
|
144
261
|
|
145
|
-
/**
|
146
|
-
* 'Total' 을 한글로 변경
|
147
|
-
* @param e devextreme CellPreparedEvent
|
262
|
+
/**
|
263
|
+
* 'Total' 을 한글로 변경
|
264
|
+
* @param e devextreme CellPreparedEvent
|
148
265
|
*/
|
149
266
|
var changeTotalText = function changeTotalText(e) {
|
150
267
|
var _e$cell;
|
@@ -154,13 +271,13 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
154
271
|
if (((_e$cell = e.cell) === null || _e$cell === void 0 ? void 0 : _e$cell.type) === 'T') {
|
155
272
|
var _e$cell$text;
|
156
273
|
var text = (_e$cell$text = e.cell.text) === null || _e$cell$text === void 0 ? void 0 : _e$cell$text.replace('Total', '합계');
|
157
|
-
e.cellElement.innerHTML =
|
274
|
+
e.cellElement.innerHTML = '<span>'.concat(text, '</span>');
|
158
275
|
}
|
159
276
|
};
|
160
277
|
|
161
|
-
/**
|
162
|
-
* null값을 하이픈으로 모두 변경
|
163
|
-
* @param e devextreme CellPreparedEvent
|
278
|
+
/**
|
279
|
+
* null값을 하이픈으로 모두 변경
|
280
|
+
* @param e devextreme CellPreparedEvent
|
164
281
|
*/
|
165
282
|
var changeNullToHipen = function changeNullToHipen(e) {
|
166
283
|
var _e$cell2;
|
@@ -172,24 +289,30 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
172
289
|
}
|
173
290
|
};
|
174
291
|
|
175
|
-
/**
|
176
|
-
* '0', '0.0%' 를 하이픈으로 모두 변경
|
177
|
-
* @param e devextreme CellPreparedEvent
|
292
|
+
/**
|
293
|
+
* '0', '0.0%' 를 하이픈으로 모두 변경
|
294
|
+
* @param e devextreme CellPreparedEvent
|
178
295
|
*/
|
179
296
|
var changeZeroToHipen = function changeZeroToHipen(e) {
|
180
297
|
var _e$cell3, _e$cell4, _e$cell5;
|
181
298
|
if (!convertZeroToHipen) {
|
182
299
|
return;
|
183
300
|
}
|
184
|
-
if (
|
301
|
+
if (
|
302
|
+
e.area === 'data' &&
|
303
|
+
(((_e$cell3 = e.cell) === null || _e$cell3 === void 0 ? void 0 : _e$cell3.text) === '0' ||
|
304
|
+
((_e$cell4 = e.cell) === null || _e$cell4 === void 0 ? void 0 : _e$cell4.text) === '0.0%' ||
|
305
|
+
((_e$cell5 = e.cell) === null || _e$cell5 === void 0 ? void 0 : _e$cell5.text) === '') &&
|
306
|
+
e.cellElement
|
307
|
+
) {
|
185
308
|
e.cellElement.innerHTML = '<span class="text-color">-</span>';
|
186
309
|
}
|
187
310
|
};
|
188
311
|
|
189
|
-
/**
|
190
|
-
* 테이블 헤더에 colspan, rowspan 한 HTMLElement 정보 반환
|
191
|
-
* @param groupField 사용자가 작성한 그룹 정보
|
192
|
-
* @return
|
312
|
+
/**
|
313
|
+
* 테이블 헤더에 colspan, rowspan 한 HTMLElement 정보 반환
|
314
|
+
* @param groupField 사용자가 작성한 그룹 정보
|
315
|
+
* @return
|
193
316
|
*/
|
194
317
|
var makeColspan = function makeColspan(group, index, isLast) {
|
195
318
|
var _group$html;
|
@@ -204,31 +327,33 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
204
327
|
} else if (!isLast && index === 0) {
|
205
328
|
td.setAttribute('style', 'border-bottom: 0');
|
206
329
|
}
|
207
|
-
td.innerHTML =
|
330
|
+
td.innerHTML = '<span>'.concat(text, '</span>');
|
208
331
|
return td;
|
209
332
|
};
|
210
333
|
|
211
|
-
/**
|
212
|
-
* 그룹 필드 데이터 유효성 검증용 데이터 생성
|
213
|
-
* @param groupField
|
214
|
-
* @returns
|
334
|
+
/**
|
335
|
+
* 그룹 필드 데이터 유효성 검증용 데이터 생성
|
336
|
+
* @param groupField
|
337
|
+
* @returns
|
215
338
|
*/
|
216
339
|
var makeCheckGroupData = function makeCheckGroupData(groupField) {
|
217
340
|
var data = {};
|
218
|
-
groupField === null || groupField === void 0
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
341
|
+
groupField === null || groupField === void 0
|
342
|
+
? void 0
|
343
|
+
: groupField.forEach(function (group) {
|
344
|
+
if (data[group.depth]) {
|
345
|
+
data[group.depth] += group.colspan;
|
346
|
+
} else {
|
347
|
+
data[group.depth] = group.colspan;
|
348
|
+
}
|
349
|
+
});
|
225
350
|
return data;
|
226
351
|
};
|
227
352
|
|
228
|
-
/**
|
229
|
-
* GroupField 데이터 검증
|
230
|
-
* @param 사용자가 설정한 그룹 필드 정보
|
231
|
-
* @returns 데이터 검증 결과
|
353
|
+
/**
|
354
|
+
* GroupField 데이터 검증
|
355
|
+
* @param 사용자가 설정한 그룹 필드 정보
|
356
|
+
* @returns 데이터 검증 결과
|
232
357
|
*/
|
233
358
|
var isCheckGroupField = function isCheckGroupField(groupField) {
|
234
359
|
var map = makeCheckGroupData(groupField);
|
@@ -241,21 +366,25 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
241
366
|
return true;
|
242
367
|
};
|
243
368
|
|
244
|
-
/**
|
245
|
-
* Grand Total 셀 정보 저장
|
246
|
-
* @param e
|
369
|
+
/**
|
370
|
+
* Grand Total 셀 정보 저장
|
371
|
+
* @param e
|
247
372
|
*/
|
248
373
|
var setTotalElementInfo = function setTotalElementInfo(e) {
|
249
374
|
var _e$cell6, _e$cell7, _e$cellElement;
|
250
|
-
if (
|
375
|
+
if (
|
376
|
+
!(groupField !== null && groupField !== void 0 && groupField.length) ||
|
377
|
+
((_e$cell6 = e.cell) === null || _e$cell6 === void 0 ? void 0 : _e$cell6.type) !== 'GT' ||
|
378
|
+
((_e$cell7 = e.cell) === null || _e$cell7 === void 0 ? void 0 : _e$cell7.text) !== 'Grand Total'
|
379
|
+
) {
|
251
380
|
return;
|
252
381
|
}
|
253
382
|
(_e$cellElement = e.cellElement) === null || _e$cellElement === void 0 ? void 0 : _e$cellElement.classList.add(grandTotalCssNm);
|
254
383
|
};
|
255
384
|
|
256
|
-
/**
|
257
|
-
* cell의 columnIndex 최대값 저장
|
258
|
-
* @param e
|
385
|
+
/**
|
386
|
+
* cell의 columnIndex 최대값 저장
|
387
|
+
* @param e
|
259
388
|
*/
|
260
389
|
var setMaxColumIndex = function setMaxColumIndex(e) {
|
261
390
|
if (!e.columnIndex) {
|
@@ -266,17 +395,19 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
266
395
|
}
|
267
396
|
};
|
268
397
|
|
269
|
-
/**
|
270
|
-
* groupField depth의 유니크한 배열 구하기
|
271
|
-
* @param group
|
272
|
-
* @param arr
|
273
|
-
* @returns
|
398
|
+
/**
|
399
|
+
* groupField depth의 유니크한 배열 구하기
|
400
|
+
* @param group
|
401
|
+
* @param arr
|
402
|
+
* @returns
|
274
403
|
*/
|
275
404
|
var getGroupDepth = function getGroupDepth(group, arr) {
|
276
405
|
var groupData = group.slice();
|
277
|
-
var set = new Set(
|
278
|
-
|
279
|
-
|
406
|
+
var set = new Set(
|
407
|
+
groupData.map(function (group) {
|
408
|
+
return group.depth;
|
409
|
+
})
|
410
|
+
);
|
280
411
|
return Array.from(set).sort(function compare(a, b) {
|
281
412
|
if (a > b) {
|
282
413
|
return arr === 'asc' ? -1 : 1;
|
@@ -288,11 +419,11 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
288
419
|
});
|
289
420
|
};
|
290
421
|
|
291
|
-
/**
|
292
|
-
* 현재 depth에 맞는 그룹 필드 정보 반환
|
293
|
-
* @param group
|
294
|
-
* @param depth
|
295
|
-
* @returns
|
422
|
+
/**
|
423
|
+
* 현재 depth에 맞는 그룹 필드 정보 반환
|
424
|
+
* @param group
|
425
|
+
* @param depth
|
426
|
+
* @returns
|
296
427
|
*/
|
297
428
|
var getCurrentGroup = function getCurrentGroup(group, depth) {
|
298
429
|
return group.filter(function (gr) {
|
@@ -300,8 +431,8 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
300
431
|
});
|
301
432
|
};
|
302
433
|
|
303
|
-
/**
|
304
|
-
* 테이블 헤더(DOM)에 colspan 적용된 테이블 삽입
|
434
|
+
/**
|
435
|
+
* 테이블 헤더(DOM)에 colspan 적용된 테이블 삽입
|
305
436
|
*/
|
306
437
|
var insertRowHeaderGroup = function insertRowHeaderGroup() {
|
307
438
|
var _thead$previousSiblin;
|
@@ -321,7 +452,10 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
321
452
|
}
|
322
453
|
totalElement.innerHTML = '';
|
323
454
|
totalElement.setAttribute('style', 'padding: 0; border: 0');
|
324
|
-
var colgroup =
|
455
|
+
var colgroup =
|
456
|
+
(_thead$previousSiblin = thead.previousSibling) === null || _thead$previousSiblin === void 0
|
457
|
+
? void 0
|
458
|
+
: _thead$previousSiblin.cloneNode(true);
|
325
459
|
var groupData = groupField.slice();
|
326
460
|
var depth = getGroupDepth(groupData, 'asc');
|
327
461
|
var table = document.createElement('table');
|
@@ -338,10 +472,10 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
338
472
|
totalElement.appendChild(table);
|
339
473
|
};
|
340
474
|
|
341
|
-
/**
|
342
|
-
* Devextreme의 dateController columnInfo에 그룹 정보 삽입
|
343
|
-
* @param group
|
344
|
-
* @returns
|
475
|
+
/**
|
476
|
+
* Devextreme의 dateController columnInfo에 그룹 정보 삽입
|
477
|
+
* @param group
|
478
|
+
* @returns
|
345
479
|
*/
|
346
480
|
var makeDataControllerColumnGroup = function makeDataControllerColumnGroup(group) {
|
347
481
|
var groupData = group.slice();
|
@@ -352,21 +486,21 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
352
486
|
return {
|
353
487
|
colspan: group.colspan,
|
354
488
|
text: group.groupCaption,
|
355
|
-
type: 'GT'
|
489
|
+
type: 'GT',
|
356
490
|
};
|
357
491
|
});
|
358
492
|
});
|
359
493
|
};
|
360
494
|
|
361
|
-
/**
|
362
|
-
* 사용자가 입력한 컬러 조건을 { standard: string; condition: string } 형식으로 변경 반환
|
363
|
-
* @param condition 사용자 입력 컬러 조건식 ex) '>= 100'
|
364
|
-
* @returns
|
495
|
+
/**
|
496
|
+
* 사용자가 입력한 컬러 조건을 { standard: string; condition: string } 형식으로 변경 반환
|
497
|
+
* @param condition 사용자 입력 컬러 조건식 ex) '>= 100'
|
498
|
+
* @returns
|
365
499
|
*/
|
366
500
|
var makeSplitCondtion = function makeSplitCondtion(condition) {
|
367
501
|
var newCondition = {
|
368
502
|
standard: '',
|
369
|
-
condition: ''
|
503
|
+
condition: '',
|
370
504
|
};
|
371
505
|
_toConsumableArray(condition).forEach(function (cond) {
|
372
506
|
if (Number.isNaN(parseFloat(cond))) {
|
@@ -378,10 +512,10 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
378
512
|
return newCondition;
|
379
513
|
};
|
380
514
|
|
381
|
-
/**
|
382
|
-
* 데이터에 색상 적용
|
383
|
-
* @param e onCellPrepared 이벤트
|
384
|
-
* @returns
|
515
|
+
/**
|
516
|
+
* 데이터에 색상 적용
|
517
|
+
* @param e onCellPrepared 이벤트
|
518
|
+
* @returns
|
385
519
|
*/
|
386
520
|
var makeColorAtPercent = function makeColorAtPercent(e) {
|
387
521
|
if (!dataColor || !e.cellElement) {
|
@@ -392,7 +526,14 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
392
526
|
if (e.cell.value === null) {
|
393
527
|
return;
|
394
528
|
}
|
395
|
-
if (
|
529
|
+
if (
|
530
|
+
((_e$cell8 = e.cell) === null || _e$cell8 === void 0
|
531
|
+
? void 0
|
532
|
+
: (_e$cell8$format = _e$cell8.format) === null || _e$cell8$format === void 0
|
533
|
+
? void 0
|
534
|
+
: _e$cell8$format.type) === color.format &&
|
535
|
+
!Number.isNaN(e.cell.value)
|
536
|
+
) {
|
396
537
|
var standardData = makeSplitCondtion(color.condition.replace(/(\s*)/g, ''));
|
397
538
|
var rate = color.format === 'percent' ? 0.01 : 1;
|
398
539
|
var condition = false;
|
@@ -417,9 +558,9 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
417
558
|
});
|
418
559
|
};
|
419
560
|
|
420
|
-
/**
|
421
|
-
* 그리드 데이터 정합성 체크. 데이터 잘못되어 있으면 에러 발생
|
422
|
-
* @param dataSource
|
561
|
+
/**
|
562
|
+
* 그리드 데이터 정합성 체크. 데이터 잘못되어 있으면 에러 발생
|
563
|
+
* @param dataSource
|
423
564
|
*/
|
424
565
|
var checkDataSource = function checkDataSource(dataSource) {
|
425
566
|
var isColumns = dataSource._fields.findIndex(function (field) {
|
@@ -439,28 +580,31 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
439
580
|
}
|
440
581
|
};
|
441
582
|
|
442
|
-
/**
|
443
|
-
* 그리드 펼침 정보 세션스토리지 리셋
|
583
|
+
/**
|
584
|
+
* 그리드 펼침 정보 세션스토리지 리셋
|
444
585
|
*/
|
445
586
|
var resetSession = function resetSession() {
|
446
587
|
sessionStorage.removeItem('dx-vera-pivotgrid-storing');
|
447
588
|
};
|
448
589
|
|
449
|
-
/**
|
450
|
-
* 엑셀 export 명령
|
451
|
-
* @param fileName 저장하고자 하는 엑셀파일명
|
590
|
+
/**
|
591
|
+
* 엑셀 export 명령
|
592
|
+
* @param fileName 저장하고자 하는 엑셀파일명
|
452
593
|
*/
|
453
594
|
var exportToExcel = function exportToExcel(fileName) {
|
454
595
|
setTimeout(function () {
|
455
596
|
var _$tableRef$current;
|
456
|
-
return exportToExcelAction(
|
597
|
+
return exportToExcelAction(
|
598
|
+
(_$tableRef$current = $tableRef.current) === null || _$tableRef$current === void 0 ? void 0 : _$tableRef$current.instance,
|
599
|
+
fileName
|
600
|
+
);
|
457
601
|
});
|
458
602
|
};
|
459
603
|
|
460
|
-
/**
|
461
|
-
* devextreme component 정보의 dataController의 columnInfo에 사용자가 설정한 groupFIled 정보 병합
|
462
|
-
* @param component devextreme component
|
463
|
-
* @returns devextreme component
|
604
|
+
/**
|
605
|
+
* devextreme component 정보의 dataController의 columnInfo에 사용자가 설정한 groupFIled 정보 병합
|
606
|
+
* @param component devextreme component
|
607
|
+
* @returns devextreme component
|
464
608
|
*/
|
465
609
|
var convertDataControllerColumnsInfo = function convertDataControllerColumnsInfo(component) {
|
466
610
|
var arr = [];
|
@@ -476,9 +620,9 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
476
620
|
return component;
|
477
621
|
};
|
478
622
|
|
479
|
-
/**
|
480
|
-
* 엑셀 export
|
481
|
-
* @param e
|
623
|
+
/**
|
624
|
+
* 엑셀 export
|
625
|
+
* @param e
|
482
626
|
*/
|
483
627
|
var exportToExcelAction = function exportToExcelAction(e, fileName) {
|
484
628
|
var newComponent = convertDataControllerColumnsInfo(e);
|
@@ -494,22 +638,25 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
494
638
|
bottom: borderStyle,
|
495
639
|
left: borderStyle,
|
496
640
|
right: borderStyle,
|
497
|
-
top: borderStyle
|
641
|
+
top: borderStyle,
|
498
642
|
};
|
499
|
-
}
|
643
|
+
},
|
500
644
|
}).then(function () {
|
501
645
|
workbook.xlsx.writeBuffer().then(function (buffer) {
|
502
|
-
(0, _fileSaver.default)(
|
503
|
-
|
504
|
-
|
646
|
+
(0, _fileSaver.default)(
|
647
|
+
new Blob([buffer], {
|
648
|
+
type: 'application/octet-stream',
|
649
|
+
}),
|
650
|
+
fileName + '.xlsx'
|
651
|
+
);
|
505
652
|
});
|
506
653
|
});
|
507
654
|
e.cancel = true;
|
508
655
|
};
|
509
656
|
|
510
|
-
/**
|
511
|
-
* devextreme CellPreparedEvent 이벤트 실행
|
512
|
-
* @param e
|
657
|
+
/**
|
658
|
+
* devextreme CellPreparedEvent 이벤트 실행
|
659
|
+
* @param e
|
513
660
|
*/
|
514
661
|
var onCellPreparedChild = function onCellPreparedChild(e) {
|
515
662
|
makeColorAtPercent(e);
|
@@ -521,8 +668,8 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
521
668
|
return onCellPrepared ? onCellPrepared(e) : undefined;
|
522
669
|
};
|
523
670
|
|
524
|
-
/**
|
525
|
-
* devextreme Raise Event
|
671
|
+
/**
|
672
|
+
* devextreme Raise Event
|
526
673
|
*/
|
527
674
|
var onContentReadyChild = function onContentReadyChild(e) {
|
528
675
|
setTimeout(function () {
|
@@ -549,57 +696,70 @@ var DxPlanitTreeGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
549
696
|
var onOptionChangedChild = function onOptionChangedChild(e) {
|
550
697
|
return onOptionChanged ? onOptionChanged(e) : undefined;
|
551
698
|
};
|
552
|
-
(0, _react.useEffect)(
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
699
|
+
(0, _react.useEffect)(
|
700
|
+
function () {
|
701
|
+
setGridDataSource(dataSource);
|
702
|
+
checkDataSource(dataSource);
|
703
|
+
resetSession();
|
704
|
+
},
|
705
|
+
[dataSource]
|
706
|
+
);
|
707
|
+
return /*#__PURE__*/ _react.createElement(
|
708
|
+
'div',
|
709
|
+
null,
|
710
|
+
/*#__PURE__*/ _react.createElement(_loadPanel.LoadPanel, {
|
711
|
+
position: {
|
712
|
+
of: id,
|
713
|
+
},
|
714
|
+
}),
|
715
|
+
/*#__PURE__*/ _react.createElement(
|
716
|
+
_pivotGrid.default,
|
717
|
+
{
|
718
|
+
id: id,
|
719
|
+
ref: $tableRef,
|
720
|
+
dataSource: gridDataSource,
|
721
|
+
showColumnTotals: false,
|
722
|
+
showColumnGrandTotals: true,
|
723
|
+
showRowGrandTotals: false,
|
724
|
+
width: width,
|
725
|
+
height: height,
|
726
|
+
allowExpandAll: allowExpandAll,
|
727
|
+
allowFiltering: allowFiltering,
|
728
|
+
allowSorting: allowSorting,
|
729
|
+
allowSortingBySummary: allowSortingBySummary,
|
730
|
+
dataFieldArea: dataFieldArea,
|
731
|
+
disabled: disabled,
|
732
|
+
elementAttr: elementAttr,
|
733
|
+
encodeHtml: encodeHtml,
|
734
|
+
hideEmptySummaryCells: hideEmptySummaryCells,
|
735
|
+
hint: hint,
|
736
|
+
rowHeaderLayout: rowHeaderLayout,
|
737
|
+
rtlEnabled: rtlEnabled,
|
738
|
+
showBorders: showBorders,
|
739
|
+
showRowTotals: showRowTotals,
|
740
|
+
showTotalsPrior: showTotalsPrior,
|
741
|
+
tabIndex: tabIndex,
|
742
|
+
visible: visible,
|
743
|
+
wordWrapEnabled: wordWrapEnabled,
|
744
|
+
onCellClick: onCellClickChild,
|
745
|
+
onContentReady: onContentReadyChild,
|
746
|
+
onCellPrepared: onCellPreparedChild,
|
747
|
+
onContextMenuPreparing: onContextMenuPreparingChild,
|
748
|
+
onDisposing: onDisposingChild,
|
749
|
+
onExporting: onExportingChild,
|
750
|
+
onInitialized: onInitializedChild,
|
751
|
+
onOptionChanged: onOptionChangedChild,
|
752
|
+
},
|
753
|
+
/*#__PURE__*/ _react.createElement(_dataGrid.StateStoring, {
|
754
|
+
enabled: stateStoringKey === null || stateStoringKey === void 0 ? void 0 : stateStoringKey.length,
|
755
|
+
type: 'sessionStorage',
|
756
|
+
storageKey: stateStoringKey,
|
757
|
+
}),
|
758
|
+
/*#__PURE__*/ _react.createElement(_pivotGrid.FieldChooser, {
|
759
|
+
enabled: false,
|
760
|
+
})
|
761
|
+
)
|
762
|
+
);
|
603
763
|
});
|
604
764
|
var _default = DxPlanitTreeGrid;
|
605
|
-
exports.default = _default;
|
765
|
+
exports.default = _default;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "devextreme-planit-treegrid-react",
|
3
|
-
"version": "1.1.
|
3
|
+
"version": "1.1.5",
|
4
4
|
"description": "Devextreme의 DxPivotGrid를 Tree Grid처럼 보여주는 Wrapper입니다.",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"types": "dist/index.d.ts",
|
@@ -42,7 +42,6 @@
|
|
42
42
|
],
|
43
43
|
"dependencies": {
|
44
44
|
"devextreme": "^22.1.6",
|
45
|
-
"devextreme-planit-treegrid-react": "^1.1.0",
|
46
45
|
"devextreme-react": "^22.1.6",
|
47
46
|
"exceljs": "^4.3.0",
|
48
47
|
"file-saver": "^2.0.5",
|