react-pivottable-plus 1.0.0 → 1.0.2
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/LICENSE +21 -21
- package/PivotTable.js.map +1 -1
- package/PivotTableUI.js +261 -191
- package/PivotTableUI.js.map +1 -1
- package/PlotlyRenderers.js.map +1 -1
- package/README.md +93 -94
- package/TableRenderers.js.map +1 -1
- package/Utilities.js +19 -13
- package/Utilities.js.map +1 -1
- package/grouping.css +111 -111
- package/hooks/usePivot.js +20 -15
- package/hooks/usePivot.js.map +1 -1
- package/package.json +105 -102
- package/pivottable.css +441 -441
- package/renderers/RadixUI.js.map +1 -1
- package/renderers/ShadcnDashboardUI.js.map +1 -1
- package/renderers/TailwindUI.js.map +1 -1
package/PivotTableUI.js
CHANGED
|
@@ -10,6 +10,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
10
10
|
var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
|
|
11
11
|
var _Utilities = require("./Utilities");
|
|
12
12
|
var _PivotTable = _interopRequireDefault(require("./PivotTable"));
|
|
13
|
+
var _TableRenderers = _interopRequireDefault(require("./TableRenderers"));
|
|
13
14
|
var _reactDraggable = _interopRequireDefault(require("react-draggable"));
|
|
14
15
|
var _core = require("@dnd-kit/core");
|
|
15
16
|
var _sortable = require("@dnd-kit/sortable");
|
|
@@ -163,9 +164,6 @@ var DraggableAttribute = exports.DraggableAttribute = /*#__PURE__*/_react["defau
|
|
|
163
164
|
}, ' ', "\u25BE")), open ? getFilterBox() : null);
|
|
164
165
|
});
|
|
165
166
|
DraggableAttribute.displayName = 'DraggableAttribute';
|
|
166
|
-
|
|
167
|
-
// ─── SortableAttribute: wrapper que conecta dnd-kit con DraggableAttribute ────
|
|
168
|
-
|
|
169
167
|
var SortableAttribute = function SortableAttribute(_ref2) {
|
|
170
168
|
var id = _ref2.id,
|
|
171
169
|
rest = _objectWithoutProperties(_ref2, _excluded);
|
|
@@ -191,9 +189,6 @@ var SortableAttribute = function SortableAttribute(_ref2) {
|
|
|
191
189
|
})
|
|
192
190
|
}, rest));
|
|
193
191
|
};
|
|
194
|
-
|
|
195
|
-
// ─── Dropdown ─────────────────────────────────────────────────────────────────
|
|
196
|
-
|
|
197
192
|
var Dropdown = exports.Dropdown = function Dropdown(_ref3) {
|
|
198
193
|
var _ref3$zIndex = _ref3.zIndex,
|
|
199
194
|
zIndex = _ref3$zIndex === void 0 ? 1 : _ref3$zIndex,
|
|
@@ -235,9 +230,6 @@ var Dropdown = exports.Dropdown = function Dropdown(_ref3) {
|
|
|
235
230
|
}, r);
|
|
236
231
|
})));
|
|
237
232
|
};
|
|
238
|
-
|
|
239
|
-
// ─── DnDCell: lista sortable con dnd-kit ──────────────────────────────────────
|
|
240
|
-
|
|
241
233
|
var DnDCell = function DnDCell(_ref4) {
|
|
242
234
|
var id = _ref4.id,
|
|
243
235
|
items = _ref4.items,
|
|
@@ -280,11 +272,52 @@ var DnDCell = function DnDCell(_ref4) {
|
|
|
280
272
|
});
|
|
281
273
|
}))));
|
|
282
274
|
};
|
|
283
|
-
|
|
284
|
-
// ─── PivotTableUI ─────────────────────────────────────────────────────────────
|
|
285
|
-
|
|
286
275
|
var PivotTableUI = function PivotTableUI(props) {
|
|
287
|
-
var _aggregators$aggregat, _aggregators$aggregat2
|
|
276
|
+
var _aggregators$aggregat, _aggregators$aggregat2;
|
|
277
|
+
var _props$data = props.data,
|
|
278
|
+
data = _props$data === void 0 ? [] : _props$data,
|
|
279
|
+
_props$onChange = props.onChange,
|
|
280
|
+
onChange = _props$onChange === void 0 ? function () {} : _props$onChange,
|
|
281
|
+
_props$rows = props.rows,
|
|
282
|
+
rows = _props$rows === void 0 ? [] : _props$rows,
|
|
283
|
+
_props$cols = props.cols,
|
|
284
|
+
cols = _props$cols === void 0 ? [] : _props$cols,
|
|
285
|
+
_props$vals = props.vals,
|
|
286
|
+
vals = _props$vals === void 0 ? [] : _props$vals,
|
|
287
|
+
_props$aggregatorName = props.aggregatorName,
|
|
288
|
+
aggregatorName = _props$aggregatorName === void 0 ? 'Count' : _props$aggregatorName,
|
|
289
|
+
_props$aggregators = props.aggregators,
|
|
290
|
+
aggregators = _props$aggregators === void 0 ? _Utilities.aggregators : _props$aggregators,
|
|
291
|
+
_props$rendererName = props.rendererName,
|
|
292
|
+
rendererName = _props$rendererName === void 0 ? 'Table' : _props$rendererName,
|
|
293
|
+
_props$renderers = props.renderers,
|
|
294
|
+
renderers = _props$renderers === void 0 ? _TableRenderers["default"] : _props$renderers,
|
|
295
|
+
_props$valueFilter = props.valueFilter,
|
|
296
|
+
valueFilter = _props$valueFilter === void 0 ? {} : _props$valueFilter,
|
|
297
|
+
_props$sorters = props.sorters,
|
|
298
|
+
sorters = _props$sorters === void 0 ? {} : _props$sorters,
|
|
299
|
+
_props$menuLimit = props.menuLimit,
|
|
300
|
+
menuLimit = _props$menuLimit === void 0 ? 500 : _props$menuLimit,
|
|
301
|
+
_props$unusedOrientat = props.unusedOrientationCutoff,
|
|
302
|
+
unusedOrientationCutoff = _props$unusedOrientat === void 0 ? 85 : _props$unusedOrientat,
|
|
303
|
+
_props$hiddenAttribut = props.hiddenAttributes,
|
|
304
|
+
hiddenAttributes = _props$hiddenAttribut === void 0 ? [] : _props$hiddenAttribut,
|
|
305
|
+
_props$hiddenFromAggr = props.hiddenFromAggregators,
|
|
306
|
+
hiddenFromAggregators = _props$hiddenFromAggr === void 0 ? [] : _props$hiddenFromAggr,
|
|
307
|
+
_props$hiddenFromDrag = props.hiddenFromDragDrop,
|
|
308
|
+
hiddenFromDragDrop = _props$hiddenFromDrag === void 0 ? [] : _props$hiddenFromDrag,
|
|
309
|
+
_props$pagination = props.pagination,
|
|
310
|
+
pagination = _props$pagination === void 0 ? false : _props$pagination,
|
|
311
|
+
_props$page = props.page,
|
|
312
|
+
page = _props$page === void 0 ? 1 : _props$page,
|
|
313
|
+
_props$pageSize = props.pageSize,
|
|
314
|
+
pageSize = _props$pageSize === void 0 ? 20 : _props$pageSize,
|
|
315
|
+
_props$rowOrder = props.rowOrder,
|
|
316
|
+
rowOrder = _props$rowOrder === void 0 ? 'key_a_to_z' : _props$rowOrder,
|
|
317
|
+
_props$colOrder = props.colOrder,
|
|
318
|
+
colOrder = _props$colOrder === void 0 ? 'key_a_to_z' : _props$colOrder,
|
|
319
|
+
_props$derivedAttribu = props.derivedAttributes,
|
|
320
|
+
derivedAttributes = _props$derivedAttribu === void 0 ? {} : _props$derivedAttribu;
|
|
288
321
|
var _useState5 = (0, _react.useState)({
|
|
289
322
|
unusedOrder: [],
|
|
290
323
|
zIndices: {},
|
|
@@ -297,40 +330,10 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
297
330
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
298
331
|
state = _useState6[0],
|
|
299
332
|
setState = _useState6[1];
|
|
300
|
-
|
|
301
|
-
// activeId: el atributo que se está arrastrando
|
|
302
333
|
var _useState7 = (0, _react.useState)(null),
|
|
303
334
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
304
335
|
activeId = _useState8[0],
|
|
305
336
|
setActiveId = _useState8[1];
|
|
306
|
-
var data = props.data,
|
|
307
|
-
onChange = props.onChange,
|
|
308
|
-
rows = props.rows,
|
|
309
|
-
cols = props.cols,
|
|
310
|
-
aggregatorName = props.aggregatorName,
|
|
311
|
-
aggregators = props.aggregators,
|
|
312
|
-
vals = props.vals,
|
|
313
|
-
rendererName = props.rendererName,
|
|
314
|
-
renderers = props.renderers,
|
|
315
|
-
valueFilter = props.valueFilter,
|
|
316
|
-
sorters = props.sorters,
|
|
317
|
-
menuLimit = props.menuLimit,
|
|
318
|
-
unusedOrientationCutoff = props.unusedOrientationCutoff,
|
|
319
|
-
hiddenAttributes = props.hiddenAttributes,
|
|
320
|
-
hiddenFromAggregators = props.hiddenFromAggregators,
|
|
321
|
-
hiddenFromDragDrop = props.hiddenFromDragDrop,
|
|
322
|
-
pagination = props.pagination,
|
|
323
|
-
page = props.page,
|
|
324
|
-
pageSize = props.pageSize,
|
|
325
|
-
rowOrder = props.rowOrder,
|
|
326
|
-
colOrder = props.colOrder,
|
|
327
|
-
derivedAttributes = props.derivedAttributes;
|
|
328
|
-
var onChangeRef = (0, _react.useRef)(onChange);
|
|
329
|
-
(0, _react.useEffect)(function () {
|
|
330
|
-
onChangeRef.current = onChange;
|
|
331
|
-
}, [onChange]);
|
|
332
|
-
|
|
333
|
-
// ── Materializar datos ───────────────────────────────────────────────────────
|
|
334
337
|
(0, _react.useEffect)(function () {
|
|
335
338
|
if (state.data === data) return;
|
|
336
339
|
var newState = {
|
|
@@ -359,8 +362,10 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
359
362
|
return _objectSpread(_objectSpread({}, s), newState);
|
|
360
363
|
});
|
|
361
364
|
}, [data, derivedAttributes, state.data]);
|
|
362
|
-
|
|
363
|
-
|
|
365
|
+
var sendPropUpdate = (0, _react.useCallback)(function (command) {
|
|
366
|
+
var newProps = (0, _immutabilityHelper["default"])(props, command);
|
|
367
|
+
if (onChange) onChange(newProps);
|
|
368
|
+
}, [props, onChange]);
|
|
364
369
|
var handleDuplicates = function handleDuplicates(newAttrs, existingAttrs) {
|
|
365
370
|
if (!newAttrs || !existingAttrs) return existingAttrs || [];
|
|
366
371
|
var dups = newAttrs.filter(function (item) {
|
|
@@ -370,11 +375,6 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
370
375
|
return !dups.includes(item);
|
|
371
376
|
}) : existingAttrs;
|
|
372
377
|
};
|
|
373
|
-
var sendPropUpdate = (0, _react.useCallback)(function (command) {
|
|
374
|
-
var _onChangeRef$current;
|
|
375
|
-
var newProps = (0, _immutabilityHelper["default"])(props, command);
|
|
376
|
-
(_onChangeRef$current = onChangeRef.current) === null || _onChangeRef$current === void 0 || _onChangeRef$current.call(onChangeRef, newProps);
|
|
377
|
-
}, [props]);
|
|
378
378
|
var propUpdater = (0, _react.useCallback)(function (key) {
|
|
379
379
|
return function (value) {
|
|
380
380
|
var updateObj = _defineProperty({}, key, {
|
|
@@ -433,8 +433,6 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
433
433
|
});
|
|
434
434
|
});
|
|
435
435
|
}, []);
|
|
436
|
-
|
|
437
|
-
// ── Listas de atributos ──────────────────────────────────────────────────────
|
|
438
436
|
var unusedAttrs = Object.keys(state.attrValues).filter(function (e) {
|
|
439
437
|
return e && e.trim() !== '' && !rows.includes(e) && !cols.includes(e) && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
|
|
440
438
|
}).sort((0, _Utilities.sortAs)(state.unusedOrder));
|
|
@@ -448,9 +446,6 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
448
446
|
var rowAttrs = rows.filter(function (e) {
|
|
449
447
|
return e && e.trim() !== '' && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
|
|
450
448
|
});
|
|
451
|
-
|
|
452
|
-
// ── Mapa de zona → lista actual ──────────────────────────────────────────────
|
|
453
|
-
// Para saber a qué lista pertenece cada atributo durante el drag
|
|
454
449
|
var getZoneOfItem = function getZoneOfItem(id) {
|
|
455
450
|
if (rowAttrs.includes(id)) return 'rows';
|
|
456
451
|
if (colAttrs.includes(id)) return 'cols';
|
|
@@ -475,18 +470,14 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
475
470
|
};
|
|
476
471
|
return function () {};
|
|
477
472
|
};
|
|
478
|
-
|
|
479
|
-
// ── Sensores dnd-kit ─────────────────────────────────────────────────────────
|
|
480
473
|
var sensors = (0, _core.useSensors)((0, _core.useSensor)(_core.PointerSensor, {
|
|
481
474
|
activationConstraint: {
|
|
482
475
|
distance: 5
|
|
483
476
|
}
|
|
484
477
|
}));
|
|
485
|
-
|
|
486
|
-
// ── Handlers de dnd-kit ──────────────────────────────────────────────────────
|
|
487
478
|
var handleDragStart = function handleDragStart(_ref5) {
|
|
488
479
|
var active = _ref5.active;
|
|
489
|
-
setActiveId(active.id);
|
|
480
|
+
return setActiveId(active.id);
|
|
490
481
|
};
|
|
491
482
|
var handleDragOver = function handleDragOver(_ref6) {
|
|
492
483
|
var _over$data$current$so, _over$data;
|
|
@@ -495,30 +486,18 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
495
486
|
if (!over) return;
|
|
496
487
|
var activeZone = getZoneOfItem(active.id);
|
|
497
488
|
var overZone = (_over$data$current$so = (_over$data = over.data) === null || _over$data === void 0 || (_over$data = _over$data.current) === null || _over$data === void 0 || (_over$data = _over$data.sortable) === null || _over$data === void 0 ? void 0 : _over$data.containerId) !== null && _over$data$current$so !== void 0 ? _over$data$current$so : getZoneOfItem(over.id);
|
|
498
|
-
|
|
499
|
-
// Guardia 1: Ambos deben tener zona y ser distintas
|
|
500
489
|
if (!activeZone || !overZone || activeZone === overZone) return;
|
|
501
|
-
|
|
502
|
-
// Mover entre zonas en tiempo real (mientras se arrastra)
|
|
503
490
|
var activeList = _toConsumableArray(getListByZone(activeZone));
|
|
504
491
|
var overList = _toConsumableArray(getListByZone(overZone));
|
|
505
492
|
var activeIndex = activeList.indexOf(active.id);
|
|
506
493
|
var overIndex = overList.indexOf(over.id);
|
|
507
|
-
|
|
508
|
-
// Guardia 2: El item debe existir en la lista de origen (evita splice -1)
|
|
509
494
|
if (activeIndex === -1) return;
|
|
510
|
-
|
|
511
|
-
// Guardia 3: Evitar duplicados en la lista de destino
|
|
512
495
|
if (overList.includes(active.id)) return;
|
|
513
496
|
activeList.splice(activeIndex, 1);
|
|
514
497
|
var insertAt = overIndex >= 0 ? overIndex : overList.length;
|
|
515
498
|
overList.splice(insertAt, 0, active.id);
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
var updateActiveZone = getUpdaterByZone(activeZone);
|
|
519
|
-
var updateOverZone = getUpdaterByZone(overZone);
|
|
520
|
-
updateActiveZone(activeList);
|
|
521
|
-
updateOverZone(overList);
|
|
499
|
+
getUpdaterByZone(activeZone)(activeList);
|
|
500
|
+
getUpdaterByZone(overZone)(overList);
|
|
522
501
|
};
|
|
523
502
|
var handleDragEnd = function handleDragEnd(_ref7) {
|
|
524
503
|
var _over$data$current$so2, _over$data2;
|
|
@@ -530,23 +509,16 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
530
509
|
var overZone = (_over$data$current$so2 = (_over$data2 = over.data) === null || _over$data2 === void 0 || (_over$data2 = _over$data2.current) === null || _over$data2 === void 0 || (_over$data2 = _over$data2.sortable) === null || _over$data2 === void 0 ? void 0 : _over$data2.containerId) !== null && _over$data$current$so2 !== void 0 ? _over$data$current$so2 : getZoneOfItem(over.id);
|
|
531
510
|
if (!activeZone || !overZone) return;
|
|
532
511
|
if (activeZone === overZone) {
|
|
533
|
-
// Reordenamiento dentro de la misma zona
|
|
534
512
|
var list = getListByZone(activeZone);
|
|
535
513
|
var oldIndex = list.indexOf(active.id);
|
|
536
514
|
var newIndex = list.indexOf(over.id);
|
|
537
|
-
if (oldIndex !== newIndex)
|
|
538
|
-
getUpdaterByZone(activeZone)((0, _sortable.arrayMove)(list, oldIndex, newIndex));
|
|
539
|
-
}
|
|
515
|
+
if (oldIndex !== newIndex) getUpdaterByZone(activeZone)((0, _sortable.arrayMove)(list, oldIndex, newIndex));
|
|
540
516
|
}
|
|
541
|
-
// Si activeZone !== overZone, ya fue manejado en handleDragOver
|
|
542
517
|
};
|
|
543
|
-
|
|
544
|
-
// ── UI ───────────────────────────────────────────────────────────────────────
|
|
545
518
|
var isOpen = function isOpen(dropdown) {
|
|
546
519
|
return state.openDropdown === dropdown;
|
|
547
520
|
};
|
|
548
521
|
var numValsAllowed = ((_aggregators$aggregat = aggregators[aggregatorName]) === null || _aggregators$aggregat === void 0 || (_aggregators$aggregat2 = _aggregators$aggregat.call(aggregators, [])) === null || _aggregators$aggregat2 === void 0 || (_aggregators$aggregat2 = _aggregators$aggregat2()) === null || _aggregators$aggregat2 === void 0 ? void 0 : _aggregators$aggregat2.numInputs) || 0;
|
|
549
|
-
var aggregatorCellOutlet = (_aggregators$aggregat3 = aggregators[aggregatorName]) === null || _aggregators$aggregat3 === void 0 || (_aggregators$aggregat4 = _aggregators$aggregat3.call(aggregators, [])) === null || _aggregators$aggregat4 === void 0 || (_aggregators$aggregat4 = _aggregators$aggregat4()) === null || _aggregators$aggregat4 === void 0 ? void 0 : _aggregators$aggregat4.outlet;
|
|
550
522
|
var actualRendererName = rendererName in renderers ? rendererName : Object.keys(renderers)[0];
|
|
551
523
|
var sortIcons = {
|
|
552
524
|
key_a_to_z: {
|
|
@@ -575,7 +547,112 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
575
547
|
moveFilterBoxToTop: moveFilterBoxToTop,
|
|
576
548
|
removeValuesFromFilter: removeValuesFromFilter
|
|
577
549
|
};
|
|
578
|
-
var
|
|
550
|
+
var componentProps = {
|
|
551
|
+
data: state.materializedInput,
|
|
552
|
+
onChange: onChange,
|
|
553
|
+
rows: rows,
|
|
554
|
+
cols: cols,
|
|
555
|
+
vals: vals,
|
|
556
|
+
aggregatorName: aggregatorName,
|
|
557
|
+
aggregators: aggregators,
|
|
558
|
+
rendererName: rendererName,
|
|
559
|
+
renderers: renderers,
|
|
560
|
+
valueFilter: valueFilter,
|
|
561
|
+
sorters: sorters,
|
|
562
|
+
menuLimit: menuLimit,
|
|
563
|
+
unusedOrientationCutoff: unusedOrientationCutoff,
|
|
564
|
+
hiddenAttributes: hiddenAttributes,
|
|
565
|
+
hiddenFromAggregators: hiddenFromAggregators,
|
|
566
|
+
hiddenFromDragDrop: hiddenFromDragDrop,
|
|
567
|
+
pagination: pagination,
|
|
568
|
+
page: page,
|
|
569
|
+
pageSize: pageSize,
|
|
570
|
+
rowOrder: rowOrder,
|
|
571
|
+
colOrder: colOrder,
|
|
572
|
+
derivedAttributes: derivedAttributes
|
|
573
|
+
};
|
|
574
|
+
var renderFooter = function renderFooter() {
|
|
575
|
+
var pivotData = new _Utilities.PivotData(componentProps);
|
|
576
|
+
var totalPivotRows = pivotData.getRowKeys().length;
|
|
577
|
+
var totalRecords = state.materializedInput.length;
|
|
578
|
+
var totalPages = Math.ceil(totalPivotRows / pageSize);
|
|
579
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
580
|
+
className: "pvtFooter"
|
|
581
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
582
|
+
className: "pvtFooterInfo"
|
|
583
|
+
}, "Total registros: ", totalRecords, " | Filas: ", totalPivotRows), /*#__PURE__*/_react["default"].createElement("div", {
|
|
584
|
+
className: "pvtFooterPagination"
|
|
585
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
586
|
+
className: "pvtButton",
|
|
587
|
+
disabled: page <= 1,
|
|
588
|
+
onClick: function onClick() {
|
|
589
|
+
return propUpdater('page')(1);
|
|
590
|
+
}
|
|
591
|
+
}, "\xAB"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
592
|
+
className: "pvtButton",
|
|
593
|
+
disabled: page <= 1,
|
|
594
|
+
onClick: function onClick() {
|
|
595
|
+
return propUpdater('page')(page - 1);
|
|
596
|
+
}
|
|
597
|
+
}, "\u2039"), /*#__PURE__*/_react["default"].createElement("span", null, "P\xE1gina ", /*#__PURE__*/_react["default"].createElement("input", {
|
|
598
|
+
type: "number",
|
|
599
|
+
className: "pvtPageInput",
|
|
600
|
+
value: page,
|
|
601
|
+
min: 1,
|
|
602
|
+
max: totalPages,
|
|
603
|
+
onChange: function onChange(e) {
|
|
604
|
+
var val = parseInt(e.target.value, 10);
|
|
605
|
+
if (val > 0 && val <= totalPages) propUpdater('page')(val);
|
|
606
|
+
}
|
|
607
|
+
}), " de ", totalPages), /*#__PURE__*/_react["default"].createElement("button", {
|
|
608
|
+
className: "pvtButton",
|
|
609
|
+
disabled: page >= totalPages,
|
|
610
|
+
onClick: function onClick() {
|
|
611
|
+
return propUpdater('page')(page + 1);
|
|
612
|
+
}
|
|
613
|
+
}, "\u203A"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
614
|
+
className: "pvtButton",
|
|
615
|
+
disabled: page >= totalPages,
|
|
616
|
+
onClick: function onClick() {
|
|
617
|
+
return propUpdater('page')(totalPages);
|
|
618
|
+
}
|
|
619
|
+
}, "\xBB"), /*#__PURE__*/_react["default"].createElement("select", {
|
|
620
|
+
className: "pvtPageSize",
|
|
621
|
+
value: pageSize,
|
|
622
|
+
onChange: function onChange(e) {
|
|
623
|
+
sendPropUpdate({
|
|
624
|
+
pageSize: {
|
|
625
|
+
$set: parseInt(e.target.value, 10)
|
|
626
|
+
},
|
|
627
|
+
page: {
|
|
628
|
+
$set: 1
|
|
629
|
+
}
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
}, [10, 20, 50, 100].map(function (n) {
|
|
633
|
+
return /*#__PURE__*/_react["default"].createElement("option", {
|
|
634
|
+
key: n,
|
|
635
|
+
value: n
|
|
636
|
+
}, n, " / p\xE1g");
|
|
637
|
+
}))));
|
|
638
|
+
};
|
|
639
|
+
return /*#__PURE__*/_react["default"].createElement(_core.DndContext, {
|
|
640
|
+
sensors: sensors,
|
|
641
|
+
collisionDetection: _core.closestCorners,
|
|
642
|
+
onDragStart: handleDragStart,
|
|
643
|
+
onDragOver: handleDragOver,
|
|
644
|
+
onDragEnd: handleDragEnd
|
|
645
|
+
}, /*#__PURE__*/_react["default"].createElement("table", {
|
|
646
|
+
className: "pvtUi"
|
|
647
|
+
}, /*#__PURE__*/_react["default"].createElement("tbody", {
|
|
648
|
+
onClick: function onClick() {
|
|
649
|
+
return setState(function (s) {
|
|
650
|
+
return _objectSpread(_objectSpread({}, s), {}, {
|
|
651
|
+
openDropdown: false
|
|
652
|
+
});
|
|
653
|
+
});
|
|
654
|
+
}
|
|
655
|
+
}, horizUnused ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", {
|
|
579
656
|
className: "pvtRenderers"
|
|
580
657
|
}, /*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
581
658
|
current: actualRendererName,
|
|
@@ -590,8 +667,12 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
590
667
|
});
|
|
591
668
|
},
|
|
592
669
|
setValue: propUpdater('rendererName')
|
|
593
|
-
}))
|
|
594
|
-
|
|
670
|
+
})), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
671
|
+
id: "unused",
|
|
672
|
+
items: unusedAttrs,
|
|
673
|
+
classes: "pvtAxisContainer pvtUnused pvtHorizList",
|
|
674
|
+
isHorizontal: true
|
|
675
|
+
}, sharedCellProps))), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", {
|
|
595
676
|
className: "pvtVals"
|
|
596
677
|
}, /*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
597
678
|
current: aggregatorName,
|
|
@@ -644,120 +725,104 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
644
725
|
}), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
|
|
645
726
|
key: "br".concat(i)
|
|
646
727
|
}) : null];
|
|
647
|
-
}),
|
|
648
|
-
var unusedAttrsCell = /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
649
|
-
id: "unused",
|
|
650
|
-
items: unusedAttrs,
|
|
651
|
-
classes: "pvtAxisContainer pvtUnused ".concat(horizUnused ? 'pvtHorizList' : 'pvtVertList'),
|
|
652
|
-
isHorizontal: horizUnused
|
|
653
|
-
}, sharedCellProps));
|
|
654
|
-
var colAttrsCell = /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
728
|
+
})), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
655
729
|
id: "cols",
|
|
656
730
|
items: colAttrs,
|
|
657
731
|
classes: "pvtAxisContainer pvtHorizList pvtCols",
|
|
658
732
|
isHorizontal: true
|
|
659
|
-
}, sharedCellProps))
|
|
660
|
-
var rowAttrsCell = /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
733
|
+
}, sharedCellProps))), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
661
734
|
id: "rows",
|
|
662
735
|
items: rowAttrs,
|
|
663
736
|
classes: "pvtAxisContainer pvtVertList pvtRows",
|
|
664
737
|
isHorizontal: false
|
|
665
|
-
}, sharedCellProps))
|
|
666
|
-
|
|
667
|
-
// Footer de paginación
|
|
668
|
-
var renderFooter = function renderFooter() {
|
|
669
|
-
var pivotData = new _Utilities.PivotData(_objectSpread(_objectSpread({}, props), {}, {
|
|
670
|
-
data: state.materializedInput
|
|
671
|
-
}));
|
|
672
|
-
var totalPivotRows = pivotData.getRowKeys().length;
|
|
673
|
-
var totalRecords = state.materializedInput.length;
|
|
674
|
-
var totalPages = Math.ceil(totalPivotRows / pageSize);
|
|
675
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
676
|
-
className: "pvtFooter"
|
|
677
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
678
|
-
className: "pvtFooterInfo"
|
|
679
|
-
}, "Total registros: ", totalRecords, " | Filas: ", totalPivotRows), /*#__PURE__*/_react["default"].createElement("div", {
|
|
680
|
-
className: "pvtFooterPagination"
|
|
681
|
-
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
682
|
-
className: "pvtButton",
|
|
683
|
-
disabled: page <= 1,
|
|
684
|
-
onClick: function onClick() {
|
|
685
|
-
return propUpdater('page')(1);
|
|
686
|
-
}
|
|
687
|
-
}, "\xAB"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
688
|
-
className: "pvtButton",
|
|
689
|
-
disabled: page <= 1,
|
|
690
|
-
onClick: function onClick() {
|
|
691
|
-
return propUpdater('page')(page - 1);
|
|
692
|
-
}
|
|
693
|
-
}, "\u2039"), /*#__PURE__*/_react["default"].createElement("span", null, "P\xE1gina", ' ', /*#__PURE__*/_react["default"].createElement("input", {
|
|
694
|
-
type: "number",
|
|
695
|
-
className: "pvtPageInput",
|
|
696
|
-
value: page,
|
|
697
|
-
min: 1,
|
|
698
|
-
max: totalPages,
|
|
699
|
-
onChange: function onChange(e) {
|
|
700
|
-
var val = parseInt(e.target.value, 10);
|
|
701
|
-
if (val > 0 && val <= totalPages) propUpdater('page')(val);
|
|
702
|
-
}
|
|
703
|
-
}), ' ', "de ", totalPages), /*#__PURE__*/_react["default"].createElement("button", {
|
|
704
|
-
className: "pvtButton",
|
|
705
|
-
disabled: page >= totalPages,
|
|
706
|
-
onClick: function onClick() {
|
|
707
|
-
return propUpdater('page')(page + 1);
|
|
708
|
-
}
|
|
709
|
-
}, "\u203A"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
710
|
-
className: "pvtButton",
|
|
711
|
-
disabled: page >= totalPages,
|
|
712
|
-
onClick: function onClick() {
|
|
713
|
-
return propUpdater('page')(totalPages);
|
|
714
|
-
}
|
|
715
|
-
}, "\xBB"), /*#__PURE__*/_react["default"].createElement("select", {
|
|
716
|
-
className: "pvtPageSize",
|
|
717
|
-
value: pageSize,
|
|
718
|
-
onChange: function onChange(e) {
|
|
719
|
-
var _onChangeRef$current2;
|
|
720
|
-
var newSize = parseInt(e.target.value, 10);
|
|
721
|
-
(_onChangeRef$current2 = onChangeRef.current) === null || _onChangeRef$current2 === void 0 || _onChangeRef$current2.call(onChangeRef, (0, _immutabilityHelper["default"])(props, {
|
|
722
|
-
pageSize: {
|
|
723
|
-
$set: newSize
|
|
724
|
-
},
|
|
725
|
-
page: {
|
|
726
|
-
$set: 1
|
|
727
|
-
}
|
|
728
|
-
}));
|
|
729
|
-
}
|
|
730
|
-
}, [10, 20, 50, 100].map(function (n) {
|
|
731
|
-
return /*#__PURE__*/_react["default"].createElement("option", {
|
|
732
|
-
key: n,
|
|
733
|
-
value: n
|
|
734
|
-
}, n, " / p\xE1g");
|
|
735
|
-
}))));
|
|
736
|
-
};
|
|
737
|
-
var outputCell = /*#__PURE__*/_react["default"].createElement("td", {
|
|
738
|
+
}, sharedCellProps)), /*#__PURE__*/_react["default"].createElement("td", {
|
|
738
739
|
className: "pvtOutput"
|
|
739
|
-
}, /*#__PURE__*/_react["default"].createElement(_PivotTable["default"], (
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
onDragStart: handleDragStart,
|
|
748
|
-
onDragOver: handleDragOver,
|
|
749
|
-
onDragEnd: handleDragEnd
|
|
750
|
-
}, /*#__PURE__*/_react["default"].createElement("table", {
|
|
751
|
-
className: "pvtUi"
|
|
752
|
-
}, /*#__PURE__*/_react["default"].createElement("tbody", {
|
|
753
|
-
onClick: function onClick() {
|
|
740
|
+
}, /*#__PURE__*/_react["default"].createElement(_PivotTable["default"], componentProps), pagination && renderFooter()))) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", {
|
|
741
|
+
className: "pvtRenderers"
|
|
742
|
+
}, /*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
743
|
+
current: actualRendererName,
|
|
744
|
+
values: Object.keys(renderers),
|
|
745
|
+
open: isOpen('renderer'),
|
|
746
|
+
zIndex: isOpen('renderer') ? state.maxZIndex + 1 : 1,
|
|
747
|
+
toggle: function toggle() {
|
|
754
748
|
return setState(function (s) {
|
|
755
749
|
return _objectSpread(_objectSpread({}, s), {}, {
|
|
756
|
-
openDropdown: false
|
|
750
|
+
openDropdown: isOpen('renderer') ? false : 'renderer'
|
|
757
751
|
});
|
|
758
752
|
});
|
|
753
|
+
},
|
|
754
|
+
setValue: propUpdater('rendererName')
|
|
755
|
+
})), /*#__PURE__*/_react["default"].createElement("td", {
|
|
756
|
+
className: "pvtVals"
|
|
757
|
+
}, /*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
758
|
+
current: aggregatorName,
|
|
759
|
+
values: Object.keys(aggregators),
|
|
760
|
+
open: isOpen('aggregators'),
|
|
761
|
+
zIndex: isOpen('aggregators') ? state.maxZIndex + 1 : 1,
|
|
762
|
+
toggle: function toggle() {
|
|
763
|
+
return setState(function (s) {
|
|
764
|
+
return _objectSpread(_objectSpread({}, s), {}, {
|
|
765
|
+
openDropdown: isOpen('aggregators') ? false : 'aggregators'
|
|
766
|
+
});
|
|
767
|
+
});
|
|
768
|
+
},
|
|
769
|
+
setValue: propUpdater('aggregatorName')
|
|
770
|
+
}), /*#__PURE__*/_react["default"].createElement("a", {
|
|
771
|
+
role: "button",
|
|
772
|
+
className: "pvtRowOrder",
|
|
773
|
+
onClick: function onClick() {
|
|
774
|
+
return propUpdater('rowOrder')(sortIcons[rowOrder].next);
|
|
759
775
|
}
|
|
760
|
-
},
|
|
776
|
+
}, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
|
|
777
|
+
role: "button",
|
|
778
|
+
className: "pvtColOrder",
|
|
779
|
+
onClick: function onClick() {
|
|
780
|
+
return propUpdater('colOrder')(sortIcons[colOrder].next);
|
|
781
|
+
}
|
|
782
|
+
}, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
|
|
783
|
+
return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
784
|
+
key: i,
|
|
785
|
+
current: vals[i],
|
|
786
|
+
values: Object.keys(state.attrValues).filter(function (e) {
|
|
787
|
+
return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
|
|
788
|
+
}),
|
|
789
|
+
open: isOpen("val".concat(i)),
|
|
790
|
+
zIndex: isOpen("val".concat(i)) ? state.maxZIndex + 1 : 1,
|
|
791
|
+
toggle: function toggle() {
|
|
792
|
+
return setState(function (s) {
|
|
793
|
+
return _objectSpread(_objectSpread({}, s), {}, {
|
|
794
|
+
openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
|
|
795
|
+
});
|
|
796
|
+
});
|
|
797
|
+
},
|
|
798
|
+
setValue: function setValue(value) {
|
|
799
|
+
return sendPropUpdate({
|
|
800
|
+
vals: {
|
|
801
|
+
$splice: [[i, 1, value]]
|
|
802
|
+
}
|
|
803
|
+
});
|
|
804
|
+
}
|
|
805
|
+
}), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
|
|
806
|
+
key: "br".concat(i)
|
|
807
|
+
}) : null];
|
|
808
|
+
})), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
809
|
+
id: "cols",
|
|
810
|
+
items: colAttrs,
|
|
811
|
+
classes: "pvtAxisContainer pvtHorizList pvtCols",
|
|
812
|
+
isHorizontal: true
|
|
813
|
+
}, sharedCellProps))), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
814
|
+
id: "unused",
|
|
815
|
+
items: unusedAttrs,
|
|
816
|
+
classes: "pvtAxisContainer pvtUnused pvtVertList",
|
|
817
|
+
isHorizontal: false
|
|
818
|
+
}, sharedCellProps)), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
819
|
+
id: "rows",
|
|
820
|
+
items: rowAttrs,
|
|
821
|
+
classes: "pvtAxisContainer pvtVertList pvtRows",
|
|
822
|
+
isHorizontal: false
|
|
823
|
+
}, sharedCellProps)), /*#__PURE__*/_react["default"].createElement("td", {
|
|
824
|
+
className: "pvtOutput"
|
|
825
|
+
}, /*#__PURE__*/_react["default"].createElement(_PivotTable["default"], componentProps), pagination && renderFooter()))))), /*#__PURE__*/_react["default"].createElement(_core.DragOverlay, null, activeId ? /*#__PURE__*/_react["default"].createElement("ul", {
|
|
761
826
|
style: {
|
|
762
827
|
listStyle: 'none',
|
|
763
828
|
padding: 0,
|
|
@@ -767,20 +832,25 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
767
832
|
className: "pvtAttr"
|
|
768
833
|
}, activeId))) : null));
|
|
769
834
|
};
|
|
770
|
-
PivotTableUI.propTypes = {
|
|
835
|
+
PivotTableUI.propTypes = Object.assign({}, _Utilities.PivotData.propTypes, {
|
|
771
836
|
onChange: _propTypes["default"].func.isRequired,
|
|
772
837
|
hiddenAttributes: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
773
838
|
hiddenFromAggregators: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
774
839
|
hiddenFromDragDrop: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
775
840
|
unusedOrientationCutoff: _propTypes["default"].number,
|
|
776
|
-
menuLimit: _propTypes["default"].number
|
|
777
|
-
|
|
778
|
-
|
|
841
|
+
menuLimit: _propTypes["default"].number,
|
|
842
|
+
rendererName: _propTypes["default"].string,
|
|
843
|
+
renderers: _propTypes["default"].objectOf(_propTypes["default"].func)
|
|
844
|
+
});
|
|
845
|
+
PivotTableUI.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps, {
|
|
846
|
+
onChange: function onChange() {},
|
|
779
847
|
hiddenAttributes: [],
|
|
780
848
|
hiddenFromAggregators: [],
|
|
781
849
|
hiddenFromDragDrop: [],
|
|
782
850
|
unusedOrientationCutoff: 85,
|
|
783
|
-
menuLimit: 500
|
|
784
|
-
|
|
851
|
+
menuLimit: 500,
|
|
852
|
+
rendererName: 'Table',
|
|
853
|
+
renderers: _TableRenderers["default"]
|
|
854
|
+
});
|
|
785
855
|
var _default = exports["default"] = PivotTableUI;
|
|
786
856
|
//# sourceMappingURL=PivotTableUI.js.map
|