react-pivottable-plus 1.0.0
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 -0
- package/PivotTable.js +51 -0
- package/PivotTable.js.map +1 -0
- package/PivotTableUI.js +786 -0
- package/PivotTableUI.js.map +1 -0
- package/PlotlyRenderers.js +267 -0
- package/PlotlyRenderers.js.map +1 -0
- package/README.md +94 -0
- package/TableRenderers.js +417 -0
- package/TableRenderers.js.map +1 -0
- package/Utilities.js +868 -0
- package/Utilities.js.map +1 -0
- package/grouping.css +111 -0
- package/hooks/usePivot.js +176 -0
- package/hooks/usePivot.js.map +1 -0
- package/package.json +102 -0
- package/pivottable.css +441 -0
- package/renderers/RadixUI.js +381 -0
- package/renderers/RadixUI.js.map +1 -0
- package/renderers/ShadcnDashboardUI.js +425 -0
- package/renderers/ShadcnDashboardUI.js.map +1 -0
- package/renderers/TailwindUI.js +425 -0
- package/renderers/TailwindUI.js.map +1 -0
package/PivotTableUI.js
ADDED
|
@@ -0,0 +1,786 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = exports.Dropdown = exports.DraggableAttribute = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
+
var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
|
|
11
|
+
var _Utilities = require("./Utilities");
|
|
12
|
+
var _PivotTable = _interopRequireDefault(require("./PivotTable"));
|
|
13
|
+
var _reactDraggable = _interopRequireDefault(require("react-draggable"));
|
|
14
|
+
var _core = require("@dnd-kit/core");
|
|
15
|
+
var _sortable = require("@dnd-kit/sortable");
|
|
16
|
+
var _utilities = require("@dnd-kit/utilities");
|
|
17
|
+
var _excluded = ["id"];
|
|
18
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
19
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
20
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
21
|
+
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."); }
|
|
22
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
23
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
24
|
+
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; }
|
|
25
|
+
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; }
|
|
26
|
+
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; }
|
|
27
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
28
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
29
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
30
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
31
|
+
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); }
|
|
32
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
33
|
+
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."); }
|
|
34
|
+
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; } }
|
|
35
|
+
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; }
|
|
36
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
37
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
38
|
+
// ─── DraggableAttribute ────────────────────────────────────────────────────────
|
|
39
|
+
|
|
40
|
+
var DraggableAttribute = exports.DraggableAttribute = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
41
|
+
var name = _ref.name,
|
|
42
|
+
attrValues = _ref.attrValues,
|
|
43
|
+
valueFilter = _ref.valueFilter,
|
|
44
|
+
sorter = _ref.sorter,
|
|
45
|
+
menuLimit = _ref.menuLimit,
|
|
46
|
+
setValuesInFilter = _ref.setValuesInFilter,
|
|
47
|
+
addValuesToFilter = _ref.addValuesToFilter,
|
|
48
|
+
moveFilterBoxToTop = _ref.moveFilterBoxToTop,
|
|
49
|
+
removeValuesFromFilter = _ref.removeValuesFromFilter,
|
|
50
|
+
zIndex = _ref.zIndex,
|
|
51
|
+
dragHandleProps = _ref.dragHandleProps,
|
|
52
|
+
isDragging = _ref.isDragging;
|
|
53
|
+
var _useState = (0, _react.useState)(false),
|
|
54
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
55
|
+
open = _useState2[0],
|
|
56
|
+
setOpen = _useState2[1];
|
|
57
|
+
var _useState3 = (0, _react.useState)(''),
|
|
58
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
59
|
+
filterText = _useState4[0],
|
|
60
|
+
setFilterText = _useState4[1];
|
|
61
|
+
var nodeRef = (0, _react.useRef)(null);
|
|
62
|
+
var toggleValue = function toggleValue(value) {
|
|
63
|
+
if (value in valueFilter) {
|
|
64
|
+
removeValuesFromFilter(name, [value]);
|
|
65
|
+
} else {
|
|
66
|
+
addValuesToFilter(name, [value]);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
var matchesFilter = function matchesFilter(x) {
|
|
70
|
+
return x.toLowerCase().trim().includes(filterText.toLowerCase().trim());
|
|
71
|
+
};
|
|
72
|
+
var selectOnly = function selectOnly(e, value) {
|
|
73
|
+
e.stopPropagation();
|
|
74
|
+
setValuesInFilter(name, Object.keys(attrValues).filter(function (y) {
|
|
75
|
+
return y !== value;
|
|
76
|
+
}));
|
|
77
|
+
};
|
|
78
|
+
var getFilterBox = function getFilterBox() {
|
|
79
|
+
var showMenu = Object.keys(attrValues).length < menuLimit;
|
|
80
|
+
var values = Object.keys(attrValues);
|
|
81
|
+
var shown = values.filter(matchesFilter).sort(sorter);
|
|
82
|
+
return /*#__PURE__*/_react["default"].createElement(_reactDraggable["default"], {
|
|
83
|
+
handle: ".pvtDragHandle",
|
|
84
|
+
nodeRef: nodeRef
|
|
85
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
86
|
+
ref: nodeRef,
|
|
87
|
+
className: "pvtFilterBox",
|
|
88
|
+
style: {
|
|
89
|
+
display: 'block',
|
|
90
|
+
cursor: 'initial',
|
|
91
|
+
zIndex: zIndex
|
|
92
|
+
},
|
|
93
|
+
onClick: function onClick() {
|
|
94
|
+
return moveFilterBoxToTop(name);
|
|
95
|
+
}
|
|
96
|
+
}, /*#__PURE__*/_react["default"].createElement("a", {
|
|
97
|
+
onClick: function onClick() {
|
|
98
|
+
return setOpen(false);
|
|
99
|
+
},
|
|
100
|
+
className: "pvtCloseX"
|
|
101
|
+
}, "\xD7"), /*#__PURE__*/_react["default"].createElement("span", {
|
|
102
|
+
className: "pvtDragHandle"
|
|
103
|
+
}, "\u2630"), /*#__PURE__*/_react["default"].createElement("h4", null, name), showMenu || /*#__PURE__*/_react["default"].createElement("p", null, "(too many values to show)"), showMenu && /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("input", {
|
|
104
|
+
type: "text",
|
|
105
|
+
placeholder: "Filter values",
|
|
106
|
+
className: "pvtSearch",
|
|
107
|
+
value: filterText,
|
|
108
|
+
onChange: function onChange(e) {
|
|
109
|
+
return setFilterText(e.target.value);
|
|
110
|
+
}
|
|
111
|
+
}), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement("a", {
|
|
112
|
+
role: "button",
|
|
113
|
+
className: "pvtButton",
|
|
114
|
+
onClick: function onClick() {
|
|
115
|
+
return removeValuesFromFilter(name, Object.keys(attrValues).filter(matchesFilter));
|
|
116
|
+
}
|
|
117
|
+
}, "Select ", values.length === shown.length ? 'All' : shown.length), ' ', /*#__PURE__*/_react["default"].createElement("a", {
|
|
118
|
+
role: "button",
|
|
119
|
+
className: "pvtButton",
|
|
120
|
+
onClick: function onClick() {
|
|
121
|
+
return addValuesToFilter(name, Object.keys(attrValues).filter(matchesFilter));
|
|
122
|
+
}
|
|
123
|
+
}, "Deselect ", values.length === shown.length ? 'All' : shown.length)), showMenu && /*#__PURE__*/_react["default"].createElement("div", {
|
|
124
|
+
className: "pvtCheckContainer"
|
|
125
|
+
}, shown.map(function (x) {
|
|
126
|
+
return /*#__PURE__*/_react["default"].createElement("p", {
|
|
127
|
+
key: x,
|
|
128
|
+
onClick: function onClick() {
|
|
129
|
+
return toggleValue(x);
|
|
130
|
+
},
|
|
131
|
+
className: x in valueFilter ? '' : 'selected'
|
|
132
|
+
}, /*#__PURE__*/_react["default"].createElement("a", {
|
|
133
|
+
className: "pvtOnly",
|
|
134
|
+
onClick: function onClick(e) {
|
|
135
|
+
return selectOnly(e, x);
|
|
136
|
+
}
|
|
137
|
+
}, "only"), /*#__PURE__*/_react["default"].createElement("a", {
|
|
138
|
+
className: "pvtOnlySpacer"
|
|
139
|
+
}, "\xA0"), x === '' ? /*#__PURE__*/_react["default"].createElement("em", null, "null") : x);
|
|
140
|
+
}))));
|
|
141
|
+
};
|
|
142
|
+
var toggleFilterBox = function toggleFilterBox() {
|
|
143
|
+
setOpen(function (o) {
|
|
144
|
+
return !o;
|
|
145
|
+
});
|
|
146
|
+
moveFilterBoxToTop(name);
|
|
147
|
+
};
|
|
148
|
+
var filtered = Object.keys(valueFilter).length !== 0 ? 'pvtFilteredAttribute' : '';
|
|
149
|
+
return /*#__PURE__*/_react["default"].createElement("li", {
|
|
150
|
+
ref: ref,
|
|
151
|
+
"data-id": name,
|
|
152
|
+
style: {
|
|
153
|
+
opacity: isDragging ? 0.4 : 1
|
|
154
|
+
}
|
|
155
|
+
}, /*#__PURE__*/_react["default"].createElement("span", _extends({
|
|
156
|
+
className: 'pvtAttr ' + filtered
|
|
157
|
+
}, dragHandleProps), name, /*#__PURE__*/_react["default"].createElement("span", {
|
|
158
|
+
className: "pvtTriangle",
|
|
159
|
+
onClick: function onClick(e) {
|
|
160
|
+
e.stopPropagation();
|
|
161
|
+
toggleFilterBox();
|
|
162
|
+
}
|
|
163
|
+
}, ' ', "\u25BE")), open ? getFilterBox() : null);
|
|
164
|
+
});
|
|
165
|
+
DraggableAttribute.displayName = 'DraggableAttribute';
|
|
166
|
+
|
|
167
|
+
// ─── SortableAttribute: wrapper que conecta dnd-kit con DraggableAttribute ────
|
|
168
|
+
|
|
169
|
+
var SortableAttribute = function SortableAttribute(_ref2) {
|
|
170
|
+
var id = _ref2.id,
|
|
171
|
+
rest = _objectWithoutProperties(_ref2, _excluded);
|
|
172
|
+
var _useSortable = (0, _sortable.useSortable)({
|
|
173
|
+
id: id
|
|
174
|
+
}),
|
|
175
|
+
attributes = _useSortable.attributes,
|
|
176
|
+
listeners = _useSortable.listeners,
|
|
177
|
+
setNodeRef = _useSortable.setNodeRef,
|
|
178
|
+
transform = _useSortable.transform,
|
|
179
|
+
transition = _useSortable.transition,
|
|
180
|
+
isDragging = _useSortable.isDragging;
|
|
181
|
+
var style = {
|
|
182
|
+
transform: _utilities.CSS.Transform.toString(transform),
|
|
183
|
+
transition: transition
|
|
184
|
+
};
|
|
185
|
+
return /*#__PURE__*/_react["default"].createElement(DraggableAttribute, _extends({
|
|
186
|
+
ref: setNodeRef,
|
|
187
|
+
name: id,
|
|
188
|
+
isDragging: isDragging,
|
|
189
|
+
dragHandleProps: _objectSpread(_objectSpread(_objectSpread({}, attributes), listeners), {}, {
|
|
190
|
+
style: style
|
|
191
|
+
})
|
|
192
|
+
}, rest));
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
// ─── Dropdown ─────────────────────────────────────────────────────────────────
|
|
196
|
+
|
|
197
|
+
var Dropdown = exports.Dropdown = function Dropdown(_ref3) {
|
|
198
|
+
var _ref3$zIndex = _ref3.zIndex,
|
|
199
|
+
zIndex = _ref3$zIndex === void 0 ? 1 : _ref3$zIndex,
|
|
200
|
+
_ref3$open = _ref3.open,
|
|
201
|
+
open = _ref3$open === void 0 ? false : _ref3$open,
|
|
202
|
+
toggle = _ref3.toggle,
|
|
203
|
+
current = _ref3.current,
|
|
204
|
+
_ref3$values = _ref3.values,
|
|
205
|
+
values = _ref3$values === void 0 ? [] : _ref3$values,
|
|
206
|
+
setValue = _ref3.setValue;
|
|
207
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
208
|
+
className: "pvtDropdown",
|
|
209
|
+
style: {
|
|
210
|
+
zIndex: zIndex
|
|
211
|
+
}
|
|
212
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
213
|
+
onClick: function onClick(e) {
|
|
214
|
+
e.stopPropagation();
|
|
215
|
+
toggle();
|
|
216
|
+
},
|
|
217
|
+
className: 'pvtDropdownValue pvtDropdownCurrent ' + (open ? 'pvtDropdownCurrentOpen' : ''),
|
|
218
|
+
role: "button"
|
|
219
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
220
|
+
className: "pvtDropdownIcon"
|
|
221
|
+
}, open ? '×' : '▾'), current || /*#__PURE__*/_react["default"].createElement("span", null, "\xA0")), open && /*#__PURE__*/_react["default"].createElement("div", {
|
|
222
|
+
className: "pvtDropdownMenu"
|
|
223
|
+
}, values.map(function (r) {
|
|
224
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
225
|
+
key: r,
|
|
226
|
+
role: "button",
|
|
227
|
+
onClick: function onClick(e) {
|
|
228
|
+
e.stopPropagation();
|
|
229
|
+
if (current === r) toggle();else {
|
|
230
|
+
setValue(r);
|
|
231
|
+
toggle();
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
className: 'pvtDropdownValue ' + (r === current ? 'pvtDropdownActiveValue' : '')
|
|
235
|
+
}, r);
|
|
236
|
+
})));
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
// ─── DnDCell: lista sortable con dnd-kit ──────────────────────────────────────
|
|
240
|
+
|
|
241
|
+
var DnDCell = function DnDCell(_ref4) {
|
|
242
|
+
var id = _ref4.id,
|
|
243
|
+
items = _ref4.items,
|
|
244
|
+
classes = _ref4.classes,
|
|
245
|
+
state = _ref4.state,
|
|
246
|
+
valueFilter = _ref4.valueFilter,
|
|
247
|
+
sorters = _ref4.sorters,
|
|
248
|
+
menuLimit = _ref4.menuLimit,
|
|
249
|
+
setValuesInFilter = _ref4.setValuesInFilter,
|
|
250
|
+
addValuesToFilter = _ref4.addValuesToFilter,
|
|
251
|
+
moveFilterBoxToTop = _ref4.moveFilterBoxToTop,
|
|
252
|
+
removeValuesFromFilter = _ref4.removeValuesFromFilter,
|
|
253
|
+
isHorizontal = _ref4.isHorizontal;
|
|
254
|
+
var strategy = isHorizontal ? _sortable.horizontalListSortingStrategy : _sortable.verticalListSortingStrategy;
|
|
255
|
+
return /*#__PURE__*/_react["default"].createElement("td", {
|
|
256
|
+
className: classes
|
|
257
|
+
}, /*#__PURE__*/_react["default"].createElement(_sortable.SortableContext, {
|
|
258
|
+
id: id,
|
|
259
|
+
items: items,
|
|
260
|
+
strategy: strategy
|
|
261
|
+
}, /*#__PURE__*/_react["default"].createElement("ul", {
|
|
262
|
+
style: {
|
|
263
|
+
listStyle: 'none',
|
|
264
|
+
padding: 0,
|
|
265
|
+
margin: 0
|
|
266
|
+
}
|
|
267
|
+
}, items.map(function (x) {
|
|
268
|
+
return /*#__PURE__*/_react["default"].createElement(SortableAttribute, {
|
|
269
|
+
key: x,
|
|
270
|
+
id: x,
|
|
271
|
+
attrValues: state.attrValues[x] || {},
|
|
272
|
+
valueFilter: valueFilter[x] || {},
|
|
273
|
+
sorter: (0, _Utilities.getSort)(sorters, x),
|
|
274
|
+
menuLimit: menuLimit,
|
|
275
|
+
setValuesInFilter: setValuesInFilter,
|
|
276
|
+
addValuesToFilter: addValuesToFilter,
|
|
277
|
+
moveFilterBoxToTop: moveFilterBoxToTop,
|
|
278
|
+
removeValuesFromFilter: removeValuesFromFilter,
|
|
279
|
+
zIndex: state.zIndices[x] || state.maxZIndex
|
|
280
|
+
});
|
|
281
|
+
}))));
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
// ─── PivotTableUI ─────────────────────────────────────────────────────────────
|
|
285
|
+
|
|
286
|
+
var PivotTableUI = function PivotTableUI(props) {
|
|
287
|
+
var _aggregators$aggregat, _aggregators$aggregat2, _aggregators$aggregat3, _aggregators$aggregat4;
|
|
288
|
+
var _useState5 = (0, _react.useState)({
|
|
289
|
+
unusedOrder: [],
|
|
290
|
+
zIndices: {},
|
|
291
|
+
maxZIndex: 1000,
|
|
292
|
+
openDropdown: false,
|
|
293
|
+
attrValues: {},
|
|
294
|
+
materializedInput: [],
|
|
295
|
+
data: null
|
|
296
|
+
}),
|
|
297
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
298
|
+
state = _useState6[0],
|
|
299
|
+
setState = _useState6[1];
|
|
300
|
+
|
|
301
|
+
// activeId: el atributo que se está arrastrando
|
|
302
|
+
var _useState7 = (0, _react.useState)(null),
|
|
303
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
304
|
+
activeId = _useState8[0],
|
|
305
|
+
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
|
+
(0, _react.useEffect)(function () {
|
|
335
|
+
if (state.data === data) return;
|
|
336
|
+
var newState = {
|
|
337
|
+
data: data,
|
|
338
|
+
attrValues: {},
|
|
339
|
+
materializedInput: []
|
|
340
|
+
};
|
|
341
|
+
var recordsProcessed = 0;
|
|
342
|
+
_Utilities.PivotData.forEachRecord(data, derivedAttributes, function (record) {
|
|
343
|
+
newState.materializedInput.push(record);
|
|
344
|
+
for (var _i = 0, _Object$keys = Object.keys(record); _i < _Object$keys.length; _i++) {
|
|
345
|
+
var attr = _Object$keys[_i];
|
|
346
|
+
if (!(attr in newState.attrValues)) {
|
|
347
|
+
newState.attrValues[attr] = {};
|
|
348
|
+
if (recordsProcessed > 0) newState.attrValues[attr]["null"] = recordsProcessed;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
for (var _attr in newState.attrValues) {
|
|
352
|
+
var value = _attr in record ? record[_attr] : 'null';
|
|
353
|
+
if (!(value in newState.attrValues[_attr])) newState.attrValues[_attr][value] = 0;
|
|
354
|
+
newState.attrValues[_attr][value]++;
|
|
355
|
+
}
|
|
356
|
+
recordsProcessed++;
|
|
357
|
+
});
|
|
358
|
+
setState(function (s) {
|
|
359
|
+
return _objectSpread(_objectSpread({}, s), newState);
|
|
360
|
+
});
|
|
361
|
+
}, [data, derivedAttributes, state.data]);
|
|
362
|
+
|
|
363
|
+
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
364
|
+
var handleDuplicates = function handleDuplicates(newAttrs, existingAttrs) {
|
|
365
|
+
if (!newAttrs || !existingAttrs) return existingAttrs || [];
|
|
366
|
+
var dups = newAttrs.filter(function (item) {
|
|
367
|
+
return existingAttrs.includes(item);
|
|
368
|
+
});
|
|
369
|
+
return dups.length > 0 ? existingAttrs.filter(function (item) {
|
|
370
|
+
return !dups.includes(item);
|
|
371
|
+
}) : existingAttrs;
|
|
372
|
+
};
|
|
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
|
+
var propUpdater = (0, _react.useCallback)(function (key) {
|
|
379
|
+
return function (value) {
|
|
380
|
+
var updateObj = _defineProperty({}, key, {
|
|
381
|
+
$set: value
|
|
382
|
+
});
|
|
383
|
+
if (key === 'rows') {
|
|
384
|
+
var updatedCols = handleDuplicates(value, cols);
|
|
385
|
+
if (updatedCols.length !== cols.length) updateObj.cols = {
|
|
386
|
+
$set: updatedCols
|
|
387
|
+
};
|
|
388
|
+
} else if (key === 'cols') {
|
|
389
|
+
var updatedRows = handleDuplicates(value, rows);
|
|
390
|
+
if (updatedRows.length !== rows.length) updateObj.rows = {
|
|
391
|
+
$set: updatedRows
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
sendPropUpdate(updateObj);
|
|
395
|
+
};
|
|
396
|
+
}, [cols, rows, sendPropUpdate]);
|
|
397
|
+
var setValuesInFilter = (0, _react.useCallback)(function (attribute, values) {
|
|
398
|
+
sendPropUpdate({
|
|
399
|
+
valueFilter: _defineProperty({}, attribute, {
|
|
400
|
+
$set: values.reduce(function (r, v) {
|
|
401
|
+
r[v] = true;
|
|
402
|
+
return r;
|
|
403
|
+
}, {})
|
|
404
|
+
})
|
|
405
|
+
});
|
|
406
|
+
}, [sendPropUpdate]);
|
|
407
|
+
var addValuesToFilter = (0, _react.useCallback)(function (attribute, values) {
|
|
408
|
+
if (attribute in valueFilter) {
|
|
409
|
+
sendPropUpdate({
|
|
410
|
+
valueFilter: _defineProperty({}, attribute, values.reduce(function (r, v) {
|
|
411
|
+
r[v] = {
|
|
412
|
+
$set: true
|
|
413
|
+
};
|
|
414
|
+
return r;
|
|
415
|
+
}, {}))
|
|
416
|
+
});
|
|
417
|
+
} else {
|
|
418
|
+
setValuesInFilter(attribute, values);
|
|
419
|
+
}
|
|
420
|
+
}, [sendPropUpdate, valueFilter, setValuesInFilter]);
|
|
421
|
+
var removeValuesFromFilter = (0, _react.useCallback)(function (attribute, values) {
|
|
422
|
+
sendPropUpdate({
|
|
423
|
+
valueFilter: _defineProperty({}, attribute, {
|
|
424
|
+
$unset: values
|
|
425
|
+
})
|
|
426
|
+
});
|
|
427
|
+
}, [sendPropUpdate]);
|
|
428
|
+
var moveFilterBoxToTop = (0, _react.useCallback)(function (attribute) {
|
|
429
|
+
setState(function (s) {
|
|
430
|
+
return _objectSpread(_objectSpread({}, s), {}, {
|
|
431
|
+
maxZIndex: s.maxZIndex + 1,
|
|
432
|
+
zIndices: _objectSpread(_objectSpread({}, s.zIndices), {}, _defineProperty({}, attribute, s.maxZIndex + 1))
|
|
433
|
+
});
|
|
434
|
+
});
|
|
435
|
+
}, []);
|
|
436
|
+
|
|
437
|
+
// ── Listas de atributos ──────────────────────────────────────────────────────
|
|
438
|
+
var unusedAttrs = Object.keys(state.attrValues).filter(function (e) {
|
|
439
|
+
return e && e.trim() !== '' && !rows.includes(e) && !cols.includes(e) && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
|
|
440
|
+
}).sort((0, _Utilities.sortAs)(state.unusedOrder));
|
|
441
|
+
var unusedLength = unusedAttrs.reduce(function (r, e) {
|
|
442
|
+
return r + e.length;
|
|
443
|
+
}, 0);
|
|
444
|
+
var horizUnused = unusedLength < unusedOrientationCutoff;
|
|
445
|
+
var colAttrs = cols.filter(function (e) {
|
|
446
|
+
return e && e.trim() !== '' && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
|
|
447
|
+
});
|
|
448
|
+
var rowAttrs = rows.filter(function (e) {
|
|
449
|
+
return e && e.trim() !== '' && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
|
|
450
|
+
});
|
|
451
|
+
|
|
452
|
+
// ── Mapa de zona → lista actual ──────────────────────────────────────────────
|
|
453
|
+
// Para saber a qué lista pertenece cada atributo durante el drag
|
|
454
|
+
var getZoneOfItem = function getZoneOfItem(id) {
|
|
455
|
+
if (rowAttrs.includes(id)) return 'rows';
|
|
456
|
+
if (colAttrs.includes(id)) return 'cols';
|
|
457
|
+
if (unusedAttrs.includes(id)) return 'unused';
|
|
458
|
+
return null;
|
|
459
|
+
};
|
|
460
|
+
var getListByZone = function getListByZone(zone) {
|
|
461
|
+
if (zone === 'rows') return rowAttrs;
|
|
462
|
+
if (zone === 'cols') return colAttrs;
|
|
463
|
+
if (zone === 'unused') return unusedAttrs;
|
|
464
|
+
return [];
|
|
465
|
+
};
|
|
466
|
+
var getUpdaterByZone = function getUpdaterByZone(zone) {
|
|
467
|
+
if (zone === 'rows') return propUpdater('rows');
|
|
468
|
+
if (zone === 'cols') return propUpdater('cols');
|
|
469
|
+
if (zone === 'unused') return function (order) {
|
|
470
|
+
return setState(function (s) {
|
|
471
|
+
return _objectSpread(_objectSpread({}, s), {}, {
|
|
472
|
+
unusedOrder: order
|
|
473
|
+
});
|
|
474
|
+
});
|
|
475
|
+
};
|
|
476
|
+
return function () {};
|
|
477
|
+
};
|
|
478
|
+
|
|
479
|
+
// ── Sensores dnd-kit ─────────────────────────────────────────────────────────
|
|
480
|
+
var sensors = (0, _core.useSensors)((0, _core.useSensor)(_core.PointerSensor, {
|
|
481
|
+
activationConstraint: {
|
|
482
|
+
distance: 5
|
|
483
|
+
}
|
|
484
|
+
}));
|
|
485
|
+
|
|
486
|
+
// ── Handlers de dnd-kit ──────────────────────────────────────────────────────
|
|
487
|
+
var handleDragStart = function handleDragStart(_ref5) {
|
|
488
|
+
var active = _ref5.active;
|
|
489
|
+
setActiveId(active.id);
|
|
490
|
+
};
|
|
491
|
+
var handleDragOver = function handleDragOver(_ref6) {
|
|
492
|
+
var _over$data$current$so, _over$data;
|
|
493
|
+
var active = _ref6.active,
|
|
494
|
+
over = _ref6.over;
|
|
495
|
+
if (!over) return;
|
|
496
|
+
var activeZone = getZoneOfItem(active.id);
|
|
497
|
+
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
|
+
if (!activeZone || !overZone || activeZone === overZone) return;
|
|
501
|
+
|
|
502
|
+
// Mover entre zonas en tiempo real (mientras se arrastra)
|
|
503
|
+
var activeList = _toConsumableArray(getListByZone(activeZone));
|
|
504
|
+
var overList = _toConsumableArray(getListByZone(overZone));
|
|
505
|
+
var activeIndex = activeList.indexOf(active.id);
|
|
506
|
+
var overIndex = overList.indexOf(over.id);
|
|
507
|
+
|
|
508
|
+
// Guardia 2: El item debe existir en la lista de origen (evita splice -1)
|
|
509
|
+
if (activeIndex === -1) return;
|
|
510
|
+
|
|
511
|
+
// Guardia 3: Evitar duplicados en la lista de destino
|
|
512
|
+
if (overList.includes(active.id)) return;
|
|
513
|
+
activeList.splice(activeIndex, 1);
|
|
514
|
+
var insertAt = overIndex >= 0 ? overIndex : overList.length;
|
|
515
|
+
overList.splice(insertAt, 0, active.id);
|
|
516
|
+
|
|
517
|
+
// Actualizar ambas listas
|
|
518
|
+
var updateActiveZone = getUpdaterByZone(activeZone);
|
|
519
|
+
var updateOverZone = getUpdaterByZone(overZone);
|
|
520
|
+
updateActiveZone(activeList);
|
|
521
|
+
updateOverZone(overList);
|
|
522
|
+
};
|
|
523
|
+
var handleDragEnd = function handleDragEnd(_ref7) {
|
|
524
|
+
var _over$data$current$so2, _over$data2;
|
|
525
|
+
var active = _ref7.active,
|
|
526
|
+
over = _ref7.over;
|
|
527
|
+
setActiveId(null);
|
|
528
|
+
if (!over) return;
|
|
529
|
+
var activeZone = getZoneOfItem(active.id);
|
|
530
|
+
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
|
+
if (!activeZone || !overZone) return;
|
|
532
|
+
if (activeZone === overZone) {
|
|
533
|
+
// Reordenamiento dentro de la misma zona
|
|
534
|
+
var list = getListByZone(activeZone);
|
|
535
|
+
var oldIndex = list.indexOf(active.id);
|
|
536
|
+
var newIndex = list.indexOf(over.id);
|
|
537
|
+
if (oldIndex !== newIndex) {
|
|
538
|
+
getUpdaterByZone(activeZone)((0, _sortable.arrayMove)(list, oldIndex, newIndex));
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
// Si activeZone !== overZone, ya fue manejado en handleDragOver
|
|
542
|
+
};
|
|
543
|
+
|
|
544
|
+
// ── UI ───────────────────────────────────────────────────────────────────────
|
|
545
|
+
var isOpen = function isOpen(dropdown) {
|
|
546
|
+
return state.openDropdown === dropdown;
|
|
547
|
+
};
|
|
548
|
+
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
|
+
var actualRendererName = rendererName in renderers ? rendererName : Object.keys(renderers)[0];
|
|
551
|
+
var sortIcons = {
|
|
552
|
+
key_a_to_z: {
|
|
553
|
+
rowSymbol: '↕',
|
|
554
|
+
colSymbol: '↔',
|
|
555
|
+
next: 'value_a_to_z'
|
|
556
|
+
},
|
|
557
|
+
value_a_to_z: {
|
|
558
|
+
rowSymbol: '↓',
|
|
559
|
+
colSymbol: '→',
|
|
560
|
+
next: 'value_z_to_a'
|
|
561
|
+
},
|
|
562
|
+
value_z_to_a: {
|
|
563
|
+
rowSymbol: '↑',
|
|
564
|
+
colSymbol: '←',
|
|
565
|
+
next: 'key_a_to_z'
|
|
566
|
+
}
|
|
567
|
+
};
|
|
568
|
+
var sharedCellProps = {
|
|
569
|
+
state: state,
|
|
570
|
+
valueFilter: valueFilter,
|
|
571
|
+
sorters: sorters,
|
|
572
|
+
menuLimit: menuLimit,
|
|
573
|
+
setValuesInFilter: setValuesInFilter,
|
|
574
|
+
addValuesToFilter: addValuesToFilter,
|
|
575
|
+
moveFilterBoxToTop: moveFilterBoxToTop,
|
|
576
|
+
removeValuesFromFilter: removeValuesFromFilter
|
|
577
|
+
};
|
|
578
|
+
var rendererCell = /*#__PURE__*/_react["default"].createElement("td", {
|
|
579
|
+
className: "pvtRenderers"
|
|
580
|
+
}, /*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
581
|
+
current: actualRendererName,
|
|
582
|
+
values: Object.keys(renderers),
|
|
583
|
+
open: isOpen('renderer'),
|
|
584
|
+
zIndex: isOpen('renderer') ? state.maxZIndex + 1 : 1,
|
|
585
|
+
toggle: function toggle() {
|
|
586
|
+
return setState(function (s) {
|
|
587
|
+
return _objectSpread(_objectSpread({}, s), {}, {
|
|
588
|
+
openDropdown: isOpen('renderer') ? false : 'renderer'
|
|
589
|
+
});
|
|
590
|
+
});
|
|
591
|
+
},
|
|
592
|
+
setValue: propUpdater('rendererName')
|
|
593
|
+
}));
|
|
594
|
+
var aggregatorCell = /*#__PURE__*/_react["default"].createElement("td", {
|
|
595
|
+
className: "pvtVals"
|
|
596
|
+
}, /*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
597
|
+
current: aggregatorName,
|
|
598
|
+
values: Object.keys(aggregators),
|
|
599
|
+
open: isOpen('aggregators'),
|
|
600
|
+
zIndex: isOpen('aggregators') ? state.maxZIndex + 1 : 1,
|
|
601
|
+
toggle: function toggle() {
|
|
602
|
+
return setState(function (s) {
|
|
603
|
+
return _objectSpread(_objectSpread({}, s), {}, {
|
|
604
|
+
openDropdown: isOpen('aggregators') ? false : 'aggregators'
|
|
605
|
+
});
|
|
606
|
+
});
|
|
607
|
+
},
|
|
608
|
+
setValue: propUpdater('aggregatorName')
|
|
609
|
+
}), /*#__PURE__*/_react["default"].createElement("a", {
|
|
610
|
+
role: "button",
|
|
611
|
+
className: "pvtRowOrder",
|
|
612
|
+
onClick: function onClick() {
|
|
613
|
+
return propUpdater('rowOrder')(sortIcons[rowOrder].next);
|
|
614
|
+
}
|
|
615
|
+
}, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
|
|
616
|
+
role: "button",
|
|
617
|
+
className: "pvtColOrder",
|
|
618
|
+
onClick: function onClick() {
|
|
619
|
+
return propUpdater('colOrder')(sortIcons[colOrder].next);
|
|
620
|
+
}
|
|
621
|
+
}, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
|
|
622
|
+
return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
623
|
+
key: i,
|
|
624
|
+
current: vals[i],
|
|
625
|
+
values: Object.keys(state.attrValues).filter(function (e) {
|
|
626
|
+
return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
|
|
627
|
+
}),
|
|
628
|
+
open: isOpen("val".concat(i)),
|
|
629
|
+
zIndex: isOpen("val".concat(i)) ? state.maxZIndex + 1 : 1,
|
|
630
|
+
toggle: function toggle() {
|
|
631
|
+
return setState(function (s) {
|
|
632
|
+
return _objectSpread(_objectSpread({}, s), {}, {
|
|
633
|
+
openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
|
|
634
|
+
});
|
|
635
|
+
});
|
|
636
|
+
},
|
|
637
|
+
setValue: function setValue(value) {
|
|
638
|
+
return sendPropUpdate({
|
|
639
|
+
vals: {
|
|
640
|
+
$splice: [[i, 1, value]]
|
|
641
|
+
}
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
}), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
|
|
645
|
+
key: "br".concat(i)
|
|
646
|
+
}) : null];
|
|
647
|
+
}), aggregatorCellOutlet && aggregatorCellOutlet(data));
|
|
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({
|
|
655
|
+
id: "cols",
|
|
656
|
+
items: colAttrs,
|
|
657
|
+
classes: "pvtAxisContainer pvtHorizList pvtCols",
|
|
658
|
+
isHorizontal: true
|
|
659
|
+
}, sharedCellProps));
|
|
660
|
+
var rowAttrsCell = /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
661
|
+
id: "rows",
|
|
662
|
+
items: rowAttrs,
|
|
663
|
+
classes: "pvtAxisContainer pvtVertList pvtRows",
|
|
664
|
+
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
|
+
className: "pvtOutput"
|
|
739
|
+
}, /*#__PURE__*/_react["default"].createElement(_PivotTable["default"], (0, _immutabilityHelper["default"])(props, {
|
|
740
|
+
data: {
|
|
741
|
+
$set: state.materializedInput
|
|
742
|
+
}
|
|
743
|
+
})), pagination && renderFooter());
|
|
744
|
+
return /*#__PURE__*/_react["default"].createElement(_core.DndContext, {
|
|
745
|
+
sensors: sensors,
|
|
746
|
+
collisionDetection: _core.closestCorners,
|
|
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() {
|
|
754
|
+
return setState(function (s) {
|
|
755
|
+
return _objectSpread(_objectSpread({}, s), {}, {
|
|
756
|
+
openDropdown: false
|
|
757
|
+
});
|
|
758
|
+
});
|
|
759
|
+
}
|
|
760
|
+
}, horizUnused ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tr", null, rendererCell, unusedAttrsCell), /*#__PURE__*/_react["default"].createElement("tr", null, aggregatorCell, colAttrsCell), /*#__PURE__*/_react["default"].createElement("tr", null, rowAttrsCell, outputCell)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tr", null, rendererCell, aggregatorCell, colAttrsCell), /*#__PURE__*/_react["default"].createElement("tr", null, unusedAttrsCell, rowAttrsCell, outputCell)))), /*#__PURE__*/_react["default"].createElement(_core.DragOverlay, null, activeId ? /*#__PURE__*/_react["default"].createElement("ul", {
|
|
761
|
+
style: {
|
|
762
|
+
listStyle: 'none',
|
|
763
|
+
padding: 0,
|
|
764
|
+
margin: 0
|
|
765
|
+
}
|
|
766
|
+
}, /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("span", {
|
|
767
|
+
className: "pvtAttr"
|
|
768
|
+
}, activeId))) : null));
|
|
769
|
+
};
|
|
770
|
+
PivotTableUI.propTypes = {
|
|
771
|
+
onChange: _propTypes["default"].func.isRequired,
|
|
772
|
+
hiddenAttributes: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
773
|
+
hiddenFromAggregators: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
774
|
+
hiddenFromDragDrop: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
775
|
+
unusedOrientationCutoff: _propTypes["default"].number,
|
|
776
|
+
menuLimit: _propTypes["default"].number
|
|
777
|
+
};
|
|
778
|
+
PivotTableUI.defaultProps = {
|
|
779
|
+
hiddenAttributes: [],
|
|
780
|
+
hiddenFromAggregators: [],
|
|
781
|
+
hiddenFromDragDrop: [],
|
|
782
|
+
unusedOrientationCutoff: 85,
|
|
783
|
+
menuLimit: 500
|
|
784
|
+
};
|
|
785
|
+
var _default = exports["default"] = PivotTableUI;
|
|
786
|
+
//# sourceMappingURL=PivotTableUI.js.map
|