react-pivottable-plus 1.0.14 → 1.0.18
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/README.md +2 -0
- package/dist/PivotTableUI.js +147 -213
- package/dist/PivotTableUI.js.map +1 -1
- package/dist/TableRenderers.js +273 -49
- package/dist/TableRenderers.js.map +1 -1
- package/dist/core/CellPipeline.js +167 -0
- package/dist/core/CellPipeline.js.map +1 -0
- package/dist/core/ColumnEngine.js +299 -0
- package/dist/core/ColumnEngine.js.map +1 -0
- package/dist/core/EventBus.js +109 -0
- package/dist/core/EventBus.js.map +1 -0
- package/dist/core/ModuleRegistry.js +140 -0
- package/dist/core/ModuleRegistry.js.map +1 -0
- package/dist/core/PivotCore.js +254 -0
- package/dist/core/PivotCore.js.map +1 -0
- package/dist/core/PivotEngine.js +151 -0
- package/dist/core/PivotEngine.js.map +1 -0
- package/dist/core/StateManager.js +142 -0
- package/dist/core/StateManager.js.map +1 -0
- package/dist/core/VirtualScroller.js +138 -0
- package/dist/core/VirtualScroller.js.map +1 -0
- package/dist/core/api/ColumnApi.js +162 -0
- package/dist/core/api/ColumnApi.js.map +1 -0
- package/dist/core/api/GridApi.js +208 -0
- package/dist/core/api/GridApi.js.map +1 -0
- package/dist/core/index.js +89 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/rowModels/ClientSideRowModel.js +177 -0
- package/dist/core/rowModels/ClientSideRowModel.js.map +1 -0
- package/dist/core/rowModels/index.js +13 -0
- package/dist/core/rowModels/index.js.map +1 -0
- package/dist/hooks/useColumnResize.js +112 -0
- package/dist/hooks/useColumnResize.js.map +1 -0
- package/dist/hooks/usePivot.js +68 -155
- package/dist/hooks/usePivot.js.map +1 -1
- package/dist/modules/FilterModule.js +156 -0
- package/dist/modules/FilterModule.js.map +1 -0
- package/dist/modules/PaginationModule.js +115 -0
- package/dist/modules/PaginationModule.js.map +1 -0
- package/dist/modules/SortModule.js +88 -0
- package/dist/modules/SortModule.js.map +1 -0
- package/dist/modules/ThemeModule.js +83 -0
- package/dist/modules/ThemeModule.js.map +1 -0
- package/dist/modules/VirtualizationModule.js +89 -0
- package/dist/modules/VirtualizationModule.js.map +1 -0
- package/dist/modules/index.js +41 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/react/index.js +13 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/usePivotGrid.js +116 -0
- package/dist/react/usePivotGrid.js.map +1 -0
- package/dist/renderers/RadixUI.js +1 -1
- package/dist/renderers/RadixUI.js.map +1 -1
- package/dist/renderers/ShadcnDashboardUI.js +1 -1
- package/dist/renderers/ShadcnDashboardUI.js.map +1 -1
- package/dist/renderers/TailwindUI.js +1 -1
- package/dist/renderers/TailwindUI.js.map +1 -1
- package/package.json +8 -5
- package/pivottable.css +69 -12
package/dist/TableRenderers.js
CHANGED
|
@@ -8,7 +8,14 @@ exports["default"] = void 0;
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
10
|
var _Utilities = require("./Utilities");
|
|
11
|
+
var _CellPipeline = require("./core/CellPipeline");
|
|
12
|
+
var _VirtualScroller = require("./core/VirtualScroller");
|
|
13
|
+
var _useColumnResize2 = require("./hooks/useColumnResize");
|
|
11
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
15
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
16
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
17
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
18
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
12
19
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
13
20
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
14
21
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
@@ -85,13 +92,14 @@ var toggle = function toggle(set, arr) {
|
|
|
85
92
|
};
|
|
86
93
|
function makeRenderer() {
|
|
87
94
|
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
95
|
+
// ─── Inner class (toda la lógica de render) ──────────────────────
|
|
96
|
+
var TableRendererInner = /*#__PURE__*/function (_React$PureComponent) {
|
|
97
|
+
function TableRendererInner() {
|
|
98
|
+
_classCallCheck(this, TableRendererInner);
|
|
99
|
+
return _callSuper(this, TableRendererInner, arguments);
|
|
92
100
|
}
|
|
93
|
-
_inherits(
|
|
94
|
-
return _createClass(
|
|
101
|
+
_inherits(TableRendererInner, _React$PureComponent);
|
|
102
|
+
return _createClass(TableRendererInner, [{
|
|
95
103
|
key: "render",
|
|
96
104
|
value: function render() {
|
|
97
105
|
var _this = this;
|
|
@@ -102,6 +110,22 @@ function makeRenderer() {
|
|
|
102
110
|
var rowKeys = pivotData.getRowKeys(true);
|
|
103
111
|
var colKeys = pivotData.getColKeys(true);
|
|
104
112
|
var grandTotalAggregator = pivotData.getAggregator([], []);
|
|
113
|
+
|
|
114
|
+
// ─── Cell Pipeline ────────────────────────────────────────────────
|
|
115
|
+
var pipeline = this.props.cellPipeline ? new _CellPipeline.CellPipeline(this.props.cellPipeline) : _CellPipeline.CellPipeline["default"]();
|
|
116
|
+
|
|
117
|
+
// ─── Virtualización ───────────────────────────────────────────────
|
|
118
|
+
var virtConfig = this.props.virtualization || {};
|
|
119
|
+
var scroller = new _VirtualScroller.VirtualScroller({
|
|
120
|
+
enabled: virtConfig.enabled !== undefined ? virtConfig.enabled : false,
|
|
121
|
+
rowHeight: virtConfig.rowHeight || 32,
|
|
122
|
+
colWidth: virtConfig.colWidth || 100,
|
|
123
|
+
overscanRows: virtConfig.overscanRows || 5,
|
|
124
|
+
overscanCols: virtConfig.overscanCols || 3,
|
|
125
|
+
containerHeight: virtConfig.containerHeight || 400,
|
|
126
|
+
containerWidth: virtConfig.containerWidth || 800,
|
|
127
|
+
threshold: virtConfig.threshold || 100
|
|
128
|
+
});
|
|
105
129
|
var grouping = pivotData.props.grouping;
|
|
106
130
|
var compactRows = grouping && this.props.compactRows;
|
|
107
131
|
// speacial case for spanSize counting (no_loop)
|
|
@@ -137,6 +161,10 @@ function makeRenderer() {
|
|
|
137
161
|
_iterator.f();
|
|
138
162
|
}
|
|
139
163
|
}
|
|
164
|
+
|
|
165
|
+
// Guardar todos los colKeys para totales (SIEMPRE calcula sobre todo)
|
|
166
|
+
var allColKeys = colKeys;
|
|
167
|
+
var allRowKeys = rowKeys;
|
|
140
168
|
var totalRows = rowKeys.length;
|
|
141
169
|
var startOffset = 0;
|
|
142
170
|
if (this.props.pagination) {
|
|
@@ -145,7 +173,33 @@ function makeRenderer() {
|
|
|
145
173
|
var end = start + this.props.pageSize;
|
|
146
174
|
rowKeys = rowKeys.slice(start, end);
|
|
147
175
|
}
|
|
176
|
+
|
|
177
|
+
// Aplicar virtualización bidireccional
|
|
178
|
+
var shouldVirt = scroller.shouldVirtualize(rowKeys.length, colKeys.length);
|
|
179
|
+
var scrollTop = (this.state || {}).scrollTop || 0;
|
|
180
|
+
var scrollLeft = (this.state || {}).scrollLeft || 0;
|
|
181
|
+
var visibleRowKeys = rowKeys;
|
|
182
|
+
var rowTopPad = 0;
|
|
183
|
+
var rowBottomPad = 0;
|
|
184
|
+
var virtualRowStartOffset = 0;
|
|
185
|
+
if (shouldVirt.rows) {
|
|
186
|
+
var rowRange = scroller.getVisibleRowRange(scrollTop, rowKeys.length);
|
|
187
|
+
visibleRowKeys = rowKeys.slice(rowRange.startIndex, rowRange.endIndex + 1);
|
|
188
|
+
rowTopPad = rowRange.topPadding;
|
|
189
|
+
rowBottomPad = rowRange.bottomPadding;
|
|
190
|
+
virtualRowStartOffset = rowRange.startIndex;
|
|
191
|
+
}
|
|
192
|
+
var visibleColKeys = colKeys;
|
|
193
|
+
var colLeftPad = 0;
|
|
194
|
+
var colRightPad = 0;
|
|
195
|
+
if (shouldVirt.cols) {
|
|
196
|
+
var colRange = scroller.getVisibleColRange(scrollLeft, colKeys.length);
|
|
197
|
+
visibleColKeys = colKeys.slice(colRange.startIndex, colRange.endIndex + 1);
|
|
198
|
+
colLeftPad = colRange.leftPadding;
|
|
199
|
+
colRightPad = colRange.rightPadding;
|
|
200
|
+
}
|
|
148
201
|
var showRowNumbers = this.props.showRowNumbers !== false;
|
|
202
|
+
var isVirtualized = shouldVirt.rows || shouldVirt.cols;
|
|
149
203
|
var valueCellColors = function valueCellColors() {};
|
|
150
204
|
var rowTotalColors = function rowTotalColors() {};
|
|
151
205
|
var colTotalColors = function colTotalColors() {};
|
|
@@ -219,12 +273,73 @@ function makeRenderer() {
|
|
|
219
273
|
var clickClass = function clickClass(pred, closed) {
|
|
220
274
|
return pred ? " pvtClickable" + (closed ? " closed" : "") : "";
|
|
221
275
|
};
|
|
222
|
-
|
|
276
|
+
// ─── Render de la tabla ────────────────────────────────────────────
|
|
277
|
+
var handleScroll = isVirtualized ? function (e) {
|
|
278
|
+
_this.setState({
|
|
279
|
+
scrollTop: e.currentTarget.scrollTop,
|
|
280
|
+
scrollLeft: e.currentTarget.scrollLeft
|
|
281
|
+
});
|
|
282
|
+
} : null;
|
|
283
|
+
|
|
284
|
+
// ─── Column widths (resize) ────────────────────────────────
|
|
285
|
+
var resizeWidths = this.props._resizeWidths || {};
|
|
286
|
+
var onStartResize = this.props._onStartResize || null;
|
|
287
|
+
|
|
288
|
+
// Construir colgroup con anchos de todas las columnas de datos
|
|
289
|
+
var buildColgroup = function buildColgroup() {
|
|
290
|
+
var cols = [];
|
|
291
|
+
// Col para row numbers
|
|
292
|
+
if (showRowNumbers) cols.push(/*#__PURE__*/_react["default"].createElement("col", {
|
|
293
|
+
key: "col-rownum",
|
|
294
|
+
style: {
|
|
295
|
+
width: '40px',
|
|
296
|
+
minWidth: '40px'
|
|
297
|
+
}
|
|
298
|
+
}));
|
|
299
|
+
// Cols para rowAttrs
|
|
300
|
+
rowAttrs.forEach(function (_, i) {
|
|
301
|
+
return cols.push(/*#__PURE__*/_react["default"].createElement("col", {
|
|
302
|
+
key: "col-rowattr-".concat(i)
|
|
303
|
+
}));
|
|
304
|
+
});
|
|
305
|
+
// Col padding virtual izquierdo
|
|
306
|
+
if (shouldVirt.cols && colLeftPad > 0) cols.push(/*#__PURE__*/_react["default"].createElement("col", {
|
|
307
|
+
key: "col-virt-left",
|
|
308
|
+
style: {
|
|
309
|
+
width: colLeftPad
|
|
310
|
+
}
|
|
311
|
+
}));
|
|
312
|
+
// Cols para cada columna de datos
|
|
313
|
+
visibleColKeys.forEach(function (colKey) {
|
|
314
|
+
var label = colKey.join("\0");
|
|
315
|
+
var w = resizeWidths[label];
|
|
316
|
+
cols.push(/*#__PURE__*/_react["default"].createElement("col", {
|
|
317
|
+
key: "col-data-".concat(label),
|
|
318
|
+
style: w ? {
|
|
319
|
+
width: w,
|
|
320
|
+
minWidth: w
|
|
321
|
+
} : undefined
|
|
322
|
+
}));
|
|
323
|
+
});
|
|
324
|
+
// Col padding virtual derecho
|
|
325
|
+
if (shouldVirt.cols && colRightPad > 0) cols.push(/*#__PURE__*/_react["default"].createElement("col", {
|
|
326
|
+
key: "col-virt-right",
|
|
327
|
+
style: {
|
|
328
|
+
width: colRightPad
|
|
329
|
+
}
|
|
330
|
+
}));
|
|
331
|
+
// Col para totales
|
|
332
|
+
cols.push(/*#__PURE__*/_react["default"].createElement("col", {
|
|
333
|
+
key: "col-totals"
|
|
334
|
+
}));
|
|
335
|
+
return /*#__PURE__*/_react["default"].createElement("colgroup", null, cols);
|
|
336
|
+
};
|
|
337
|
+
var tableContent = /*#__PURE__*/_react["default"].createElement("table", {
|
|
223
338
|
id: id,
|
|
224
|
-
className: "pvtTable ".concat(rbClass, " ").concat(cbClass)
|
|
225
|
-
}, /*#__PURE__*/_react["default"].createElement("thead", null, colAttrs.map(function (c, j) {
|
|
339
|
+
className: "pvtTable ".concat(rbClass, " ").concat(cbClass).concat(onStartResize ? ' pvtResizable' : '')
|
|
340
|
+
}, buildColgroup(), /*#__PURE__*/_react["default"].createElement("thead", null, colAttrs.map(function (c, j) {
|
|
226
341
|
var clickable = grouping && colAttrs.length > j + 1;
|
|
227
|
-
var levelKeys =
|
|
342
|
+
var levelKeys = allColKeys.filter(function (x) {
|
|
228
343
|
return x.length === j + 1;
|
|
229
344
|
});
|
|
230
345
|
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
@@ -240,20 +355,38 @@ function makeRenderer() {
|
|
|
240
355
|
onClick: clickable ? function (_) {
|
|
241
356
|
return fold(levelKeys);
|
|
242
357
|
} : null
|
|
243
|
-
}, c),
|
|
244
|
-
|
|
358
|
+
}, c), shouldVirt.cols && colLeftPad > 0 && j === 0 && /*#__PURE__*/_react["default"].createElement("th", {
|
|
359
|
+
key: "col-pad-left",
|
|
360
|
+
style: {
|
|
361
|
+
minWidth: colLeftPad
|
|
362
|
+
}
|
|
363
|
+
}), visibleColKeys.map(function (colKey, i) {
|
|
364
|
+
var x = spanSize(visibleColKeys, i, j);
|
|
245
365
|
if (x === -1) {
|
|
246
366
|
return null;
|
|
247
367
|
}
|
|
368
|
+
// Usar el colKey completo como clave de resize solo en la última fila de headers
|
|
369
|
+
var isLastHeaderRow = j === colAttrs.length - 1;
|
|
370
|
+
var colLabel = colKey.join("\0");
|
|
248
371
|
return /*#__PURE__*/_react["default"].createElement("th", {
|
|
249
372
|
className: "pvtColLabel" + clickClass(clickable && colKey[j], isFolded([colKey.slice(0, j + 1)])),
|
|
250
373
|
key: "colKey-".concat(i, "-").concat(j, "-").concat(colKey[j]),
|
|
251
374
|
colSpan: x,
|
|
252
|
-
rowSpan:
|
|
375
|
+
rowSpan: isLastHeaderRow && rowAttrs.length !== 0 ? 2 : 1,
|
|
253
376
|
onClick: clickable && colKey[j] ? function (_) {
|
|
254
377
|
return fold([colKey.slice(0, j + 1)]);
|
|
255
378
|
} : null
|
|
256
|
-
}, colKey[j]
|
|
379
|
+
}, colKey[j], onStartResize && isLastHeaderRow && /*#__PURE__*/_react["default"].createElement("span", {
|
|
380
|
+
className: "pvtResizeHandle",
|
|
381
|
+
onPointerDown: function onPointerDown(e) {
|
|
382
|
+
return onStartResize(colLabel, e);
|
|
383
|
+
}
|
|
384
|
+
}));
|
|
385
|
+
}), shouldVirt.cols && colRightPad > 0 && j === 0 && /*#__PURE__*/_react["default"].createElement("th", {
|
|
386
|
+
key: "col-pad-right",
|
|
387
|
+
style: {
|
|
388
|
+
minWidth: colRightPad
|
|
389
|
+
}
|
|
257
390
|
}), j === 0 && /*#__PURE__*/_react["default"].createElement("th", {
|
|
258
391
|
className: "pvtTotalLabel",
|
|
259
392
|
rowSpan: colAttrs.length + (rowAttrs.length === 0 ? 0 : 1)
|
|
@@ -263,7 +396,7 @@ function makeRenderer() {
|
|
|
263
396
|
rowSpan: "1"
|
|
264
397
|
}, "#"), rowAttrs.map(function (r, i) {
|
|
265
398
|
var clickable = grouping && rowAttrs.length > i + 1;
|
|
266
|
-
var levelKeys =
|
|
399
|
+
var levelKeys = allRowKeys.filter(function (x) {
|
|
267
400
|
return x.length === i + 1;
|
|
268
401
|
});
|
|
269
402
|
return /*#__PURE__*/_react["default"].createElement("th", {
|
|
@@ -275,26 +408,41 @@ function makeRenderer() {
|
|
|
275
408
|
}, r);
|
|
276
409
|
}), /*#__PURE__*/_react["default"].createElement("th", {
|
|
277
410
|
className: "pvtTotalLabel"
|
|
278
|
-
}, colAttrs.length === 0 ? 'Totals' : null))), /*#__PURE__*/_react["default"].createElement("tbody", null,
|
|
411
|
+
}, colAttrs.length === 0 ? 'Totals' : null))), /*#__PURE__*/_react["default"].createElement("tbody", null, shouldVirt.rows && rowTopPad > 0 && /*#__PURE__*/_react["default"].createElement("tr", {
|
|
412
|
+
key: "virt-top-spacer",
|
|
413
|
+
style: {
|
|
414
|
+
height: rowTopPad
|
|
415
|
+
}
|
|
416
|
+
}, /*#__PURE__*/_react["default"].createElement("td", {
|
|
417
|
+
colSpan: 999
|
|
418
|
+
})), visibleRowKeys.map(function (rowKey, localI) {
|
|
419
|
+
var globalI = shouldVirt.rows ? virtualRowStartOffset + localI : localI;
|
|
279
420
|
var totalAggregator = pivotData.getAggregator(rowKey, []);
|
|
280
421
|
var rowGap = rowAttrs.length - rowKey.length;
|
|
281
|
-
var
|
|
422
|
+
var rowTotalResult = pipeline.processTotal({
|
|
423
|
+
aggregator: totalAggregator,
|
|
424
|
+
rowKey: rowKey,
|
|
425
|
+
type: 'row'
|
|
426
|
+
});
|
|
282
427
|
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
283
|
-
key: "rowKeyRow".concat(
|
|
284
|
-
className: (rowGap ? "pvtLevel" + rowGap : "pvtData") + " pvtRow-data"
|
|
428
|
+
key: "rowKeyRow".concat(globalI),
|
|
429
|
+
className: (rowGap ? "pvtLevel" + rowGap : "pvtData") + " pvtRow-data",
|
|
430
|
+
style: shouldVirt.rows ? {
|
|
431
|
+
height: scroller.rowHeight
|
|
432
|
+
} : undefined
|
|
285
433
|
}, showRowNumbers && /*#__PURE__*/_react["default"].createElement("th", {
|
|
286
434
|
className: "pvtRowNumber"
|
|
287
|
-
}, startOffset +
|
|
435
|
+
}, startOffset + globalI + 1), rowKey.map(function (txt, j) {
|
|
288
436
|
if (compactRows && j < rowKey.length - 1) {
|
|
289
437
|
return null;
|
|
290
438
|
}
|
|
291
439
|
var clickable = grouping && rowAttrs.length > j + 1;
|
|
292
|
-
var x = compactRows ? 1 : spanSize(
|
|
440
|
+
var x = compactRows ? 1 : spanSize(visibleRowKeys, localI, j, specialCase);
|
|
293
441
|
if (x === -1) {
|
|
294
442
|
return null;
|
|
295
443
|
}
|
|
296
444
|
return /*#__PURE__*/_react["default"].createElement("th", {
|
|
297
|
-
key: "rowKeyLabel-".concat(
|
|
445
|
+
key: "rowKeyLabel-".concat(globalI, "-").concat(j, "-").concat(txt),
|
|
298
446
|
className: "pvtRowLabel" + clickClass(clickable && rowKey[j], isFolded([rowKey.slice(0, j + 1)])),
|
|
299
447
|
rowSpan: x,
|
|
300
448
|
colSpan: compactRows ? rowAttrs.length + 1 : j === rowAttrs.length - 1 && colAttrs.length !== 0 ? 2 : 1,
|
|
@@ -308,34 +456,57 @@ function makeRenderer() {
|
|
|
308
456
|
}), !compactRows && rowGap ? /*#__PURE__*/_react["default"].createElement("th", {
|
|
309
457
|
className: "pvtRowLabel",
|
|
310
458
|
colSpan: rowGap + 1
|
|
311
|
-
}, "Total (" + rowKey[rowKey.length - 1] + ")") : null,
|
|
459
|
+
}, "Total (" + rowKey[rowKey.length - 1] + ")") : null, shouldVirt.cols && colLeftPad > 0 && /*#__PURE__*/_react["default"].createElement("td", {
|
|
460
|
+
key: "col-pad-left",
|
|
461
|
+
style: {
|
|
462
|
+
minWidth: colLeftPad
|
|
463
|
+
}
|
|
464
|
+
}), visibleColKeys.map(function (colKey, j) {
|
|
312
465
|
var aggregator = pivotData.getAggregator(rowKey, colKey);
|
|
313
466
|
var colGap = colAttrs.length - colKey.length;
|
|
314
|
-
var
|
|
315
|
-
|
|
467
|
+
var cellResult = pipeline.process({
|
|
468
|
+
aggregator: aggregator,
|
|
469
|
+
rowKey: rowKey,
|
|
470
|
+
colKey: colKey,
|
|
471
|
+
pivotData: pivotData
|
|
472
|
+
});
|
|
473
|
+
var isNumeric = typeof cellResult.value === 'number';
|
|
474
|
+
var mergedStyle = _objectSpread(_objectSpread({}, valueCellColors(rowKey, colKey, cellResult.value)), cellResult.style || {});
|
|
316
475
|
return /*#__PURE__*/_react["default"].createElement("td", {
|
|
317
|
-
className: "pvtVal" + (colGap ? " pvtLevel" + colGap : "") + (isNumeric ? " pvtVal-numeric" : ""),
|
|
318
|
-
key: "pvtVal".concat(
|
|
319
|
-
onClick: getClickHandler && getClickHandler(
|
|
320
|
-
style:
|
|
321
|
-
},
|
|
476
|
+
className: "pvtVal" + (colGap ? " pvtLevel" + colGap : "") + (isNumeric ? " pvtVal-numeric" : "") + (cellResult.className ? " " + cellResult.className : ""),
|
|
477
|
+
key: "pvtVal".concat(globalI, "-").concat(j),
|
|
478
|
+
onClick: getClickHandler && getClickHandler(cellResult.value, rowKey, colKey),
|
|
479
|
+
style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined
|
|
480
|
+
}, cellResult.rendered);
|
|
481
|
+
}), shouldVirt.cols && colRightPad > 0 && /*#__PURE__*/_react["default"].createElement("td", {
|
|
482
|
+
key: "col-pad-right",
|
|
483
|
+
style: {
|
|
484
|
+
minWidth: colRightPad
|
|
485
|
+
}
|
|
322
486
|
}), /*#__PURE__*/_react["default"].createElement("td", {
|
|
323
|
-
className: "pvtTotal" + (typeof
|
|
324
|
-
onClick: getClickHandler && getClickHandler(
|
|
325
|
-
style: colTotalColors(
|
|
326
|
-
},
|
|
327
|
-
}),
|
|
328
|
-
|
|
487
|
+
className: "pvtTotal" + (typeof rowTotalResult.value === 'number' ? " pvtVal-numeric" : ""),
|
|
488
|
+
onClick: getClickHandler && getClickHandler(rowTotalResult.value, rowKey, [null]),
|
|
489
|
+
style: colTotalColors(rowTotalResult.value) || rowTotalResult.style
|
|
490
|
+
}, rowTotalResult.rendered));
|
|
491
|
+
}), shouldVirt.rows && rowBottomPad > 0 && /*#__PURE__*/_react["default"].createElement("tr", {
|
|
492
|
+
key: "virt-bottom-spacer",
|
|
493
|
+
style: {
|
|
494
|
+
height: rowBottomPad
|
|
495
|
+
}
|
|
496
|
+
}, /*#__PURE__*/_react["default"].createElement("td", {
|
|
497
|
+
colSpan: 999
|
|
498
|
+
})), showRowNumbers && this.props.pagination && visibleRowKeys.length < this.props.pageSize && !shouldVirt.rows && Array.from({
|
|
499
|
+
length: this.props.pageSize - visibleRowKeys.length
|
|
329
500
|
}).map(function (_, padIdx) {
|
|
330
501
|
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
331
502
|
key: "padRow".concat(padIdx),
|
|
332
503
|
className: "pvtRow-data pvtEmptyRow"
|
|
333
504
|
}, /*#__PURE__*/_react["default"].createElement("th", {
|
|
334
505
|
className: "pvtRowNumber"
|
|
335
|
-
}, startOffset +
|
|
506
|
+
}, startOffset + visibleRowKeys.length + padIdx + 1), /*#__PURE__*/_react["default"].createElement("th", {
|
|
336
507
|
className: "pvtRowLabel",
|
|
337
508
|
colSpan: rowAttrs.length + (colAttrs.length === 0 ? 0 : 1)
|
|
338
|
-
}),
|
|
509
|
+
}), visibleColKeys.map(function (colKey, j) {
|
|
339
510
|
return /*#__PURE__*/_react["default"].createElement("td", {
|
|
340
511
|
key: "padVal".concat(padIdx, "-").concat(j),
|
|
341
512
|
className: "pvtVal pvtEmptyCell"
|
|
@@ -350,7 +521,12 @@ function makeRenderer() {
|
|
|
350
521
|
}), /*#__PURE__*/_react["default"].createElement("th", {
|
|
351
522
|
className: "pvtTotalLabel",
|
|
352
523
|
colSpan: rowAttrs.length + (colAttrs.length === 0 ? 0 : 1)
|
|
353
|
-
}, "Totals"),
|
|
524
|
+
}, "Totals"), shouldVirt.cols && colLeftPad > 0 && /*#__PURE__*/_react["default"].createElement("td", {
|
|
525
|
+
key: "total-col-pad-left",
|
|
526
|
+
style: {
|
|
527
|
+
minWidth: colLeftPad
|
|
528
|
+
}
|
|
529
|
+
}), visibleColKeys.map(function (colKey, i) {
|
|
354
530
|
var totalAggregator = pivotData.getAggregator([], colKey);
|
|
355
531
|
var colGap = colAttrs.length - colKey.length;
|
|
356
532
|
var totalVal = totalAggregator.value();
|
|
@@ -361,23 +537,71 @@ function makeRenderer() {
|
|
|
361
537
|
onClick: getClickHandler && getClickHandler(totalVal, [null], colKey),
|
|
362
538
|
style: rowTotalColors(totalVal)
|
|
363
539
|
}, totalAggregator.format(totalVal));
|
|
540
|
+
}), shouldVirt.cols && colRightPad > 0 && /*#__PURE__*/_react["default"].createElement("td", {
|
|
541
|
+
key: "total-col-pad-right",
|
|
542
|
+
style: {
|
|
543
|
+
minWidth: colRightPad
|
|
544
|
+
}
|
|
364
545
|
}), /*#__PURE__*/_react["default"].createElement("td", {
|
|
365
546
|
onClick: getClickHandler && getClickHandler(grandTotalAggregator.value(), [null], [null]),
|
|
366
547
|
className: "pvtGrandTotal" + (typeof grandTotalAggregator.value() === 'number' ? " pvtVal-numeric" : "")
|
|
367
548
|
}, grandTotalAggregator.format(grandTotalAggregator.value())))));
|
|
549
|
+
|
|
550
|
+
// Wrappear en container con scroll si virtualización está activa
|
|
551
|
+
if (isVirtualized) {
|
|
552
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
553
|
+
className: "pvtVirtualContainer",
|
|
554
|
+
style: {
|
|
555
|
+
maxHeight: scroller.containerHeight,
|
|
556
|
+
maxWidth: scroller.containerWidth,
|
|
557
|
+
overflow: 'auto',
|
|
558
|
+
position: 'relative'
|
|
559
|
+
},
|
|
560
|
+
onScroll: handleScroll
|
|
561
|
+
}, tableContent);
|
|
562
|
+
}
|
|
563
|
+
return tableContent;
|
|
368
564
|
}
|
|
369
565
|
}]);
|
|
370
566
|
}(_react["default"].PureComponent);
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
567
|
+
TableRendererInner.defaultProps = _Utilities.PivotData.defaultProps;
|
|
568
|
+
TableRendererInner.propTypes = _Utilities.PivotData.propTypes;
|
|
569
|
+
TableRendererInner.defaultProps.tableColorScaleGenerator = redColorScaleGenerator;
|
|
570
|
+
TableRendererInner.defaultProps.tableOptions = {};
|
|
571
|
+
TableRendererInner.propTypes.tableColorScaleGenerator = _propTypes["default"].func;
|
|
572
|
+
TableRendererInner.propTypes.tableOptions = _propTypes["default"].object;
|
|
573
|
+
TableRendererInner.defaultProps.compactRows = true;
|
|
574
|
+
TableRendererInner.propTypes.compactRows = _propTypes["default"].bool;
|
|
575
|
+
TableRendererInner.defaultProps.showRowNumbers = true;
|
|
576
|
+
TableRendererInner.propTypes.showRowNumbers = _propTypes["default"].bool;
|
|
577
|
+
// Resize props (pasadas internamente desde el wrapper)
|
|
578
|
+
TableRendererInner.propTypes._resizeWidths = _propTypes["default"].object;
|
|
579
|
+
TableRendererInner.propTypes._onStartResize = _propTypes["default"].func;
|
|
580
|
+
|
|
581
|
+
// ─── Wrapper funcional para poder usar hooks ─────────────────────
|
|
582
|
+
function TableRenderer(props) {
|
|
583
|
+
var resizing = props.columnResizing === true;
|
|
584
|
+
var _useColumnResize = (0, _useColumnResize2.useColumnResize)({
|
|
585
|
+
initialWidths: props.columnWidths || {},
|
|
586
|
+
minWidth: 50,
|
|
587
|
+
onWidthChange: props.onColumnWidthChange
|
|
588
|
+
}),
|
|
589
|
+
widths = _useColumnResize.widths,
|
|
590
|
+
startResize = _useColumnResize.startResize;
|
|
591
|
+
return /*#__PURE__*/_react["default"].createElement(TableRendererInner, _extends({}, props, {
|
|
592
|
+
_resizeWidths: resizing ? widths : {},
|
|
593
|
+
_onStartResize: resizing ? startResize : null
|
|
594
|
+
}));
|
|
595
|
+
}
|
|
596
|
+
TableRenderer.defaultProps = _objectSpread(_objectSpread({}, TableRendererInner.defaultProps), {}, {
|
|
597
|
+
columnResizing: false,
|
|
598
|
+
columnWidths: {}
|
|
599
|
+
});
|
|
600
|
+
TableRenderer.propTypes = _objectSpread(_objectSpread({}, TableRendererInner.propTypes), {}, {
|
|
601
|
+
columnResizing: _propTypes["default"].bool,
|
|
602
|
+
columnWidths: _propTypes["default"].object,
|
|
603
|
+
onColumnWidthChange: _propTypes["default"].func
|
|
604
|
+
});
|
|
381
605
|
return TableRenderer;
|
|
382
606
|
}
|
|
383
607
|
var TSVExportRenderer = /*#__PURE__*/function (_React$PureComponent2) {
|