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.
@@ -0,0 +1,417 @@
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"] = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _Utilities = require("./Utilities");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
+ 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
+ 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
+ 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; }
15
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
16
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
17
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
19
+ 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); }
20
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
21
+ function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
22
+ function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
23
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
24
+ function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
25
+ function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
26
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
27
+ // helper function for setting row/col-span in pivotTableRenderer
28
+ var spanSize = function spanSize(arr, i, j) {
29
+ var no_loop = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
30
+ var x;
31
+ if (i !== 0) {
32
+ var asc, end;
33
+ var noDraw = true;
34
+ for (x = 0, end = j, asc = end >= 0; asc ? x <= end : x >= end; asc ? x++ : x--) {
35
+ if (arr[i - 1][x] !== arr[i][x]) {
36
+ noDraw = false;
37
+ }
38
+ }
39
+ if (noDraw) {
40
+ return -1;
41
+ }
42
+ }
43
+ var len = 0;
44
+ while (i + len < arr.length) {
45
+ var asc1 = void 0,
46
+ end1 = void 0;
47
+ var stop = false;
48
+ for (x = no_loop ? j : 0, end1 = j, asc1 = end1 >= 0; asc1 ? x <= end1 : x >= end1; asc1 ? x++ : x--) {
49
+ if (arr[i][x] !== arr[i + len][x]) {
50
+ stop = true;
51
+ }
52
+ }
53
+ if (stop) {
54
+ break;
55
+ }
56
+ len++;
57
+ }
58
+ return len;
59
+ };
60
+ function redColorScaleGenerator(values) {
61
+ var min = Math.min.apply(Math, values);
62
+ var max = Math.max.apply(Math, values);
63
+ return function (x) {
64
+ // eslint-disable-next-line no-magic-numbers
65
+ var nonRed = 255 - Math.round(255 * (x - min) / (max - min));
66
+ return {
67
+ backgroundColor: "rgb(255,".concat(nonRed, ",").concat(nonRed, ")")
68
+ };
69
+ };
70
+ }
71
+ var flatKey = function flatKey(arr) {
72
+ return arr.join(String.fromCharCode(0));
73
+ };
74
+ var has = function has(set, arr) {
75
+ return arr.every(set.has, set);
76
+ };
77
+ var add = function add(set, arr) {
78
+ return arr.forEach(set.add, set) || set;
79
+ };
80
+ var remove = function remove(set, arr) {
81
+ return arr.forEach(set["delete"], set) || set;
82
+ };
83
+ var toggle = function toggle(set, arr) {
84
+ return (has(set, arr) ? remove : add)(set, arr);
85
+ };
86
+ function makeRenderer() {
87
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
88
+ var TableRenderer = /*#__PURE__*/function (_React$PureComponent) {
89
+ function TableRenderer() {
90
+ _classCallCheck(this, TableRenderer);
91
+ return _callSuper(this, TableRenderer, arguments);
92
+ }
93
+ _inherits(TableRenderer, _React$PureComponent);
94
+ return _createClass(TableRenderer, [{
95
+ key: "render",
96
+ value: function render() {
97
+ var _this = this;
98
+ var pivotData = new _Utilities.PivotData(this.props);
99
+ var id = pivotData.props.id;
100
+ var colAttrs = pivotData.props.cols;
101
+ var rowAttrs = pivotData.props.rows;
102
+ var rowKeys = pivotData.getRowKeys(true);
103
+ var colKeys = pivotData.getColKeys(true);
104
+ var grandTotalAggregator = pivotData.getAggregator([], []);
105
+ var grouping = pivotData.props.grouping;
106
+ var compactRows = grouping && this.props.compactRows;
107
+ // speacial case for spanSize counting (no_loop)
108
+ var specialCase = grouping && !this.props.rowGroupBefore;
109
+ var folded = (this.state || {}).folded || new Set();
110
+ var isFolded = function isFolded(keys) {
111
+ return has(folded, keys.map(flatKey));
112
+ };
113
+ var fold = function fold(keys) {
114
+ return _this.setState({
115
+ folded: toggle(new Set(folded), keys.map(flatKey))
116
+ });
117
+ };
118
+ if (grouping) {
119
+ var _iterator = _createForOfIteratorHelper(folded),
120
+ _step;
121
+ try {
122
+ var _loop = function _loop() {
123
+ var key = _step.value;
124
+ colKeys = colKeys.filter(function (colKey) {
125
+ return !flatKey(colKey).startsWith(key + String.fromCharCode(0));
126
+ });
127
+ rowKeys = rowKeys.filter(function (rowKey) {
128
+ return !flatKey(rowKey).startsWith(key + String.fromCharCode(0));
129
+ });
130
+ };
131
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
132
+ _loop();
133
+ }
134
+ } catch (err) {
135
+ _iterator.e(err);
136
+ } finally {
137
+ _iterator.f();
138
+ }
139
+ }
140
+ var totalRows = rowKeys.length;
141
+ if (this.props.pagination) {
142
+ var start = (this.props.page - 1) * this.props.pageSize;
143
+ var end = start + this.props.pageSize;
144
+ rowKeys = rowKeys.slice(start, end);
145
+ }
146
+ var valueCellColors = function valueCellColors() {};
147
+ var rowTotalColors = function rowTotalColors() {};
148
+ var colTotalColors = function colTotalColors() {};
149
+ if (opts.heatmapMode) {
150
+ var colorScaleGenerator = this.props.tableColorScaleGenerator;
151
+ var rowTotalValues = colKeys.map(function (x) {
152
+ return pivotData.getAggregator([], x).value();
153
+ });
154
+ rowTotalColors = colorScaleGenerator(rowTotalValues);
155
+ var colTotalValues = rowKeys.map(function (x) {
156
+ return pivotData.getAggregator(x, []).value();
157
+ });
158
+ colTotalColors = colorScaleGenerator(colTotalValues);
159
+ if (opts.heatmapMode === 'full') {
160
+ var allValues = [];
161
+ rowKeys.map(function (r) {
162
+ return colKeys.map(function (c) {
163
+ return allValues.push(pivotData.getAggregator(r, c).value());
164
+ });
165
+ });
166
+ var colorScale = colorScaleGenerator(allValues);
167
+ valueCellColors = function valueCellColors(r, c, v) {
168
+ return colorScale(v);
169
+ };
170
+ } else if (opts.heatmapMode === 'row') {
171
+ var rowColorScales = {};
172
+ rowKeys.map(function (r) {
173
+ var rowValues = colKeys.map(function (x) {
174
+ return pivotData.getAggregator(r, x).value();
175
+ });
176
+ rowColorScales[r] = colorScaleGenerator(rowValues);
177
+ });
178
+ valueCellColors = function valueCellColors(r, c, v) {
179
+ return rowColorScales[r](v);
180
+ };
181
+ } else if (opts.heatmapMode === 'col') {
182
+ var colColorScales = {};
183
+ colKeys.map(function (c) {
184
+ var colValues = rowKeys.map(function (x) {
185
+ return pivotData.getAggregator(x, c).value();
186
+ });
187
+ colColorScales[c] = colorScaleGenerator(colValues);
188
+ });
189
+ valueCellColors = function valueCellColors(r, c, v) {
190
+ return colColorScales[c](v);
191
+ };
192
+ }
193
+ }
194
+ var getClickHandler = this.props.tableOptions && this.props.tableOptions.clickCallback ? function (value, rowValues, colValues) {
195
+ var filters = {};
196
+ for (var _i = 0, _Object$keys = Object.keys(colAttrs || {}); _i < _Object$keys.length; _i++) {
197
+ var i = _Object$keys[_i];
198
+ var attr = colAttrs[i];
199
+ if (colValues[i] !== null) {
200
+ filters[attr] = colValues[i];
201
+ }
202
+ }
203
+ for (var _i2 = 0, _Object$keys2 = Object.keys(rowAttrs || {}); _i2 < _Object$keys2.length; _i2++) {
204
+ var _i3 = _Object$keys2[_i2];
205
+ var _attr = rowAttrs[_i3];
206
+ if (rowValues[_i3] !== null) {
207
+ filters[_attr] = rowValues[_i3];
208
+ }
209
+ }
210
+ return function (e) {
211
+ return _this.props.tableOptions.clickCallback(e, value, filters, pivotData);
212
+ };
213
+ } : null;
214
+ var rbClass = grouping ? this.props.rowGroupBefore ? "rowGroupBefore" : "rowGroupAfter" : "";
215
+ var cbClass = grouping ? this.props.colGroupBefore ? "colGroupBefore" : "colGroupAfter" : "";
216
+ var clickClass = function clickClass(pred, closed) {
217
+ return pred ? " pvtClickable" + (closed ? " closed" : "") : "";
218
+ };
219
+ return /*#__PURE__*/_react["default"].createElement("table", {
220
+ id: id,
221
+ className: "pvtTable ".concat(rbClass, " ").concat(cbClass)
222
+ }, /*#__PURE__*/_react["default"].createElement("thead", null, colAttrs.map(function (c, j) {
223
+ var clickable = grouping && colAttrs.length > j + 1;
224
+ var levelKeys = colKeys.filter(function (x) {
225
+ return x.length === j + 1;
226
+ });
227
+ return /*#__PURE__*/_react["default"].createElement("tr", {
228
+ key: "colAttr".concat(j)
229
+ }, j === 0 && rowAttrs.length !== 0 && /*#__PURE__*/_react["default"].createElement("th", {
230
+ colSpan: rowAttrs.length,
231
+ rowSpan: colAttrs.length
232
+ }), /*#__PURE__*/_react["default"].createElement("th", {
233
+ className: "pvtAxisLabel" + clickClass(clickable, isFolded(levelKeys)),
234
+ onClick: clickable ? function (_) {
235
+ return fold(levelKeys);
236
+ } : null
237
+ }, c), colKeys.map(function (colKey, i) {
238
+ var x = spanSize(colKeys, i, j);
239
+ if (x === -1) {
240
+ return null;
241
+ }
242
+ return /*#__PURE__*/_react["default"].createElement("th", {
243
+ className: "pvtColLabel" + clickClass(clickable && colKey[j], isFolded([colKey.slice(0, j + 1)])),
244
+ key: "colKey-".concat(i, "-").concat(j, "-").concat(colKey[j]),
245
+ colSpan: x,
246
+ rowSpan: j === colAttrs.length - 1 && rowAttrs.length !== 0 ? 2 : 1,
247
+ onClick: clickable && colKey[j] ? function (_) {
248
+ return fold([colKey.slice(0, j + 1)]);
249
+ } : null
250
+ }, colKey[j]);
251
+ }), j === 0 && /*#__PURE__*/_react["default"].createElement("th", {
252
+ className: "pvtTotalLabel",
253
+ rowSpan: colAttrs.length + (rowAttrs.length === 0 ? 0 : 1)
254
+ }, "Totals"));
255
+ }), rowAttrs.length !== 0 && /*#__PURE__*/_react["default"].createElement("tr", null, rowAttrs.map(function (r, i) {
256
+ var clickable = grouping && rowAttrs.length > i + 1;
257
+ var levelKeys = rowKeys.filter(function (x) {
258
+ return x.length === i + 1;
259
+ });
260
+ return /*#__PURE__*/_react["default"].createElement("th", {
261
+ className: "pvtAxisLabel" + clickClass(clickable, isFolded(levelKeys)),
262
+ onClick: clickable ? function (_) {
263
+ return fold(levelKeys);
264
+ } : null,
265
+ key: "rowAttr".concat(i)
266
+ }, r);
267
+ }), /*#__PURE__*/_react["default"].createElement("th", {
268
+ className: "pvtTotalLabel"
269
+ }, colAttrs.length === 0 ? 'Totals' : null))), /*#__PURE__*/_react["default"].createElement("tbody", null, rowKeys.map(function (rowKey, i) {
270
+ var totalAggregator = pivotData.getAggregator(rowKey, []);
271
+ var rowGap = rowAttrs.length - rowKey.length;
272
+ var rowTotalValue = totalAggregator.value();
273
+ return /*#__PURE__*/_react["default"].createElement("tr", {
274
+ key: "rowKeyRow".concat(i),
275
+ className: (rowGap ? "pvtLevel" + rowGap : "pvtData") + " pvtRow-data"
276
+ }, rowKey.map(function (txt, j) {
277
+ if (compactRows && j < rowKey.length - 1) {
278
+ return null;
279
+ }
280
+ var clickable = grouping && rowAttrs.length > j + 1;
281
+ var x = compactRows ? 1 : spanSize(rowKeys, i, j, specialCase);
282
+ if (x === -1) {
283
+ return null;
284
+ }
285
+ return /*#__PURE__*/_react["default"].createElement("th", {
286
+ key: "rowKeyLabel-".concat(i, "-").concat(j, "-").concat(txt),
287
+ className: "pvtRowLabel" + clickClass(clickable && rowKey[j], isFolded([rowKey.slice(0, j + 1)])),
288
+ rowSpan: x,
289
+ colSpan: compactRows ? rowAttrs.length + 1 : j === rowAttrs.length - 1 && colAttrs.length !== 0 ? 2 : 1,
290
+ style: {
291
+ paddingLeft: compactRows ? "calc(var(--pvt-row-padding, 5px) + ".concat(j, " * var(--pvt-row-indent, 20px))") : null
292
+ },
293
+ onClick: clickable && rowKey[j] ? function (_) {
294
+ return fold([rowKey.slice(0, j + 1)]);
295
+ } : null
296
+ }, txt);
297
+ }), !compactRows && rowGap ? /*#__PURE__*/_react["default"].createElement("th", {
298
+ className: "pvtRowLabel",
299
+ colSpan: rowGap + 1
300
+ }, "Total (" + rowKey[rowKey.length - 1] + ")") : null, colKeys.map(function (colKey, j) {
301
+ var aggregator = pivotData.getAggregator(rowKey, colKey);
302
+ var colGap = colAttrs.length - colKey.length;
303
+ var val = aggregator.value();
304
+ var isNumeric = typeof val === 'number';
305
+ return /*#__PURE__*/_react["default"].createElement("td", {
306
+ className: "pvtVal" + (colGap ? " pvtLevel" + colGap : "") + (isNumeric ? " pvtVal-numeric" : ""),
307
+ key: "pvtVal".concat(i, "-").concat(j),
308
+ onClick: getClickHandler && getClickHandler(val, rowKey, colKey),
309
+ style: valueCellColors(rowKey, colKey, val)
310
+ }, aggregator.format(val));
311
+ }), /*#__PURE__*/_react["default"].createElement("td", {
312
+ className: "pvtTotal" + (typeof rowTotalValue === 'number' ? " pvtVal-numeric" : ""),
313
+ onClick: getClickHandler && getClickHandler(rowTotalValue, rowKey, [null]),
314
+ style: colTotalColors(rowTotalValue)
315
+ }, totalAggregator.format(rowTotalValue)));
316
+ }), /*#__PURE__*/_react["default"].createElement("tr", {
317
+ className: "pvtTotalRow"
318
+ }, /*#__PURE__*/_react["default"].createElement("th", {
319
+ className: "pvtTotalLabel",
320
+ colSpan: rowAttrs.length + (colAttrs.length === 0 ? 0 : 1)
321
+ }, "Totals"), colKeys.map(function (colKey, i) {
322
+ var totalAggregator = pivotData.getAggregator([], colKey);
323
+ var colGap = colAttrs.length - colKey.length;
324
+ var totalVal = totalAggregator.value();
325
+ var isNumeric = typeof totalVal === 'number';
326
+ return /*#__PURE__*/_react["default"].createElement("td", {
327
+ className: "pvtTotal" + (colGap ? " pvtLevel" + colGap : "") + (isNumeric ? " pvtVal-numeric" : ""),
328
+ key: "total".concat(i),
329
+ onClick: getClickHandler && getClickHandler(totalVal, [null], colKey),
330
+ style: rowTotalColors(totalVal)
331
+ }, totalAggregator.format(totalVal));
332
+ }), /*#__PURE__*/_react["default"].createElement("td", {
333
+ onClick: getClickHandler && getClickHandler(grandTotalAggregator.value(), [null], [null]),
334
+ className: "pvtGrandTotal" + (typeof grandTotalAggregator.value() === 'number' ? " pvtVal-numeric" : "")
335
+ }, grandTotalAggregator.format(grandTotalAggregator.value())))));
336
+ }
337
+ }]);
338
+ }(_react["default"].PureComponent);
339
+ TableRenderer.defaultProps = _Utilities.PivotData.defaultProps;
340
+ TableRenderer.propTypes = _Utilities.PivotData.propTypes;
341
+ TableRenderer.defaultProps.tableColorScaleGenerator = redColorScaleGenerator;
342
+ TableRenderer.defaultProps.tableOptions = {};
343
+ TableRenderer.propTypes.tableColorScaleGenerator = _propTypes["default"].func;
344
+ TableRenderer.propTypes.tableOptions = _propTypes["default"].object;
345
+ TableRenderer.defaultProps.compactRows = true;
346
+ TableRenderer.propTypes.compactRows = _propTypes["default"].bool;
347
+ return TableRenderer;
348
+ }
349
+ var TSVExportRenderer = /*#__PURE__*/function (_React$PureComponent2) {
350
+ function TSVExportRenderer() {
351
+ _classCallCheck(this, TSVExportRenderer);
352
+ return _callSuper(this, TSVExportRenderer, arguments);
353
+ }
354
+ _inherits(TSVExportRenderer, _React$PureComponent2);
355
+ return _createClass(TSVExportRenderer, [{
356
+ key: "render",
357
+ value: function render() {
358
+ var pivotData = new _Utilities.PivotData(this.props);
359
+ var rowKeys = pivotData.getRowKeys();
360
+ var colKeys = pivotData.getColKeys();
361
+ if (rowKeys.length === 0) {
362
+ rowKeys.push([]);
363
+ }
364
+ if (colKeys.length === 0) {
365
+ colKeys.push([]);
366
+ }
367
+ var headerRow = pivotData.props.rows.map(function (r) {
368
+ return r;
369
+ });
370
+ if (colKeys.length === 1 && colKeys[0].length === 0) {
371
+ headerRow.push(this.props.aggregatorName);
372
+ } else {
373
+ colKeys.map(function (c) {
374
+ return headerRow.push(c.join('-'));
375
+ });
376
+ }
377
+ var result = rowKeys.map(function (r) {
378
+ var row = r.map(function (x) {
379
+ return x;
380
+ });
381
+ colKeys.map(function (c) {
382
+ var v = pivotData.getAggregator(r, c).value();
383
+ row.push(v ? v : '');
384
+ });
385
+ return row;
386
+ });
387
+ result.unshift(headerRow);
388
+ return /*#__PURE__*/_react["default"].createElement("textarea", {
389
+ value: result.map(function (r) {
390
+ return r.join('\t');
391
+ }).join('\n'),
392
+ style: {
393
+ width: window.innerWidth / 2,
394
+ height: window.innerHeight / 2
395
+ },
396
+ readOnly: true
397
+ });
398
+ }
399
+ }]);
400
+ }(_react["default"].PureComponent);
401
+ TSVExportRenderer.defaultProps = _Utilities.PivotData.defaultProps;
402
+ TSVExportRenderer.propTypes = _Utilities.PivotData.propTypes;
403
+ var _default = exports["default"] = {
404
+ Table: makeRenderer(),
405
+ 'Table Heatmap': makeRenderer({
406
+ heatmapMode: 'full'
407
+ }),
408
+ 'Table Col Heatmap': makeRenderer({
409
+ heatmapMode: 'col'
410
+ }),
411
+ 'Table Row Heatmap': makeRenderer({
412
+ heatmapMode: 'row'
413
+ }),
414
+ 'Exportable TSV': TSVExportRenderer
415
+ };
416
+ module.exports = exports.default;
417
+ //# sourceMappingURL=TableRenderers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableRenderers.js","names":["_react","_interopRequireDefault","require","_propTypes","_Utilities","e","__esModule","_createForOfIteratorHelper","r","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","_classCallCheck","_defineProperties","enumerable","configurable","writable","Object","defineProperty","_toPropertyKey","key","_createClass","prototype","i","_toPrimitive","_typeof","toPrimitive","String","Number","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","apply","_assertThisInitialized","ReferenceError","Boolean","valueOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_inherits","create","_setPrototypeOf","spanSize","arr","j","no_loop","arguments","undefined","x","asc","end","noDraw","len","asc1","end1","stop","redColorScaleGenerator","values","min","Math","max","nonRed","round","backgroundColor","concat","flatKey","join","fromCharCode","has","set","every","add","forEach","remove","toggle","makeRenderer","opts","TableRenderer","_React$PureComponent","render","_this","pivotData","PivotData","props","id","colAttrs","cols","rowAttrs","rows","rowKeys","getRowKeys","colKeys","getColKeys","grandTotalAggregator","getAggregator","grouping","compactRows","specialCase","rowGroupBefore","folded","state","Set","isFolded","keys","map","fold","setState","_iterator","_step","_loop","filter","colKey","startsWith","rowKey","err","totalRows","pagination","start","page","pageSize","valueCellColors","rowTotalColors","colTotalColors","heatmapMode","colorScaleGenerator","tableColorScaleGenerator","rowTotalValues","colTotalValues","allValues","c","push","colorScale","v","rowColorScales","rowValues","colColorScales","colValues","getClickHandler","tableOptions","clickCallback","filters","_i","_Object$keys","attr","_i2","_Object$keys2","rbClass","cbClass","colGroupBefore","clickClass","pred","closed","createElement","className","clickable","levelKeys","colSpan","rowSpan","onClick","_","totalAggregator","rowGap","rowTotalValue","txt","style","paddingLeft","aggregator","colGap","val","isNumeric","format","totalVal","React","PureComponent","defaultProps","propTypes","PropTypes","func","object","bool","TSVExportRenderer","_React$PureComponent2","headerRow","aggregatorName","result","row","unshift","width","window","innerWidth","height","innerHeight","readOnly","_default","exports","Table","module","default"],"sources":["src/TableRenderers.jsx"],"sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {PivotData} from './Utilities';\r\n\r\n// helper function for setting row/col-span in pivotTableRenderer\r\nconst spanSize = function(arr, i, j, no_loop = false) {\r\n let x;\r\n if (i !== 0) {\r\n let asc, end;\r\n let noDraw = true;\r\n for (\r\n x = 0, end = j, asc = end >= 0;\r\n asc ? x <= end : x >= end;\r\n asc ? x++ : x--\r\n ) {\r\n if (arr[i - 1][x] !== arr[i][x]) {\r\n noDraw = false;\r\n }\r\n }\r\n if (noDraw) {\r\n return -1;\r\n }\r\n }\r\n let len = 0;\r\n while (i + len < arr.length) {\r\n let asc1, end1;\r\n let stop = false;\r\n for (\r\n x = no_loop ? j : 0, end1 = j, asc1 = end1 >= 0;\r\n asc1 ? x <= end1 : x >= end1;\r\n asc1 ? x++ : x--\r\n ) {\r\n if (arr[i][x] !== arr[i + len][x]) {\r\n stop = true;\r\n }\r\n }\r\n if (stop) {\r\n break;\r\n }\r\n len++;\r\n }\r\n return len;\r\n};\r\n\r\nfunction redColorScaleGenerator(values) {\r\n const min = Math.min.apply(Math, values);\r\n const max = Math.max.apply(Math, values);\r\n return x => {\r\n // eslint-disable-next-line no-magic-numbers\r\n const nonRed = 255 - Math.round((255 * (x - min)) / (max - min));\r\n return {backgroundColor: `rgb(255,${nonRed},${nonRed})`};\r\n };\r\n}\r\n\r\nconst flatKey = arr => arr.join(String.fromCharCode(0));\r\nconst has = (set, arr) => arr.every(set.has, set);\r\nconst add = (set, arr) => (arr.forEach(set.add, set) || set);\r\nconst remove = (set, arr) => (arr.forEach(set.delete, set) || set);\r\nconst toggle = (set, arr) => (has(set, arr) ? remove : add)(set, arr);\r\n\r\nfunction makeRenderer(opts = {}) {\r\n class TableRenderer extends React.PureComponent {\r\n render() {\r\n const pivotData = new PivotData(this.props);\r\n const id = pivotData.props.id;\r\n const colAttrs = pivotData.props.cols;\r\n const rowAttrs = pivotData.props.rows;\r\n let rowKeys = pivotData.getRowKeys(true);\r\n let colKeys = pivotData.getColKeys(true);\r\n const grandTotalAggregator = pivotData.getAggregator([], []);\r\n\r\n const grouping = pivotData.props.grouping;\r\n const compactRows = grouping && this.props.compactRows;\r\n // speacial case for spanSize counting (no_loop)\r\n const specialCase = grouping && !this.props.rowGroupBefore;\r\n const folded = (this.state || {}).folded || new Set();\r\n const isFolded = keys => has(folded, keys.map(flatKey));\r\n const fold = keys => this.setState({folded: toggle(new Set(folded), keys.map(flatKey))});\r\n\r\n if(grouping){\r\n for (const key of folded) {\r\n colKeys = colKeys.filter(colKey => !flatKey(colKey).startsWith(key + String.fromCharCode(0)));\r\n rowKeys = rowKeys.filter(rowKey => !flatKey(rowKey).startsWith(key + String.fromCharCode(0)));\r\n }\r\n }\r\n\r\n const totalRows = rowKeys.length;\r\n if (this.props.pagination) {\r\n const start = (this.props.page - 1) * this.props.pageSize;\r\n const end = start + this.props.pageSize;\r\n rowKeys = rowKeys.slice(start, end);\r\n }\r\n\r\n let valueCellColors = () => {};\r\n let rowTotalColors = () => {};\r\n let colTotalColors = () => {};\r\n if (opts.heatmapMode) {\r\n const colorScaleGenerator = this.props.tableColorScaleGenerator;\r\n const rowTotalValues = colKeys.map(x =>\r\n pivotData.getAggregator([], x).value()\r\n );\r\n rowTotalColors = colorScaleGenerator(rowTotalValues);\r\n const colTotalValues = rowKeys.map(x =>\r\n pivotData.getAggregator(x, []).value()\r\n );\r\n colTotalColors = colorScaleGenerator(colTotalValues);\r\n\r\n if (opts.heatmapMode === 'full') {\r\n const allValues = [];\r\n rowKeys.map(r =>\r\n colKeys.map(c =>\r\n allValues.push(pivotData.getAggregator(r, c).value())\r\n )\r\n );\r\n const colorScale = colorScaleGenerator(allValues);\r\n valueCellColors = (r, c, v) => colorScale(v);\r\n } else if (opts.heatmapMode === 'row') {\r\n const rowColorScales = {};\r\n rowKeys.map(r => {\r\n const rowValues = colKeys.map(x =>\r\n pivotData.getAggregator(r, x).value()\r\n );\r\n rowColorScales[r] = colorScaleGenerator(rowValues);\r\n });\r\n valueCellColors = (r, c, v) => rowColorScales[r](v);\r\n } else if (opts.heatmapMode === 'col') {\r\n const colColorScales = {};\r\n colKeys.map(c => {\r\n const colValues = rowKeys.map(x =>\r\n pivotData.getAggregator(x, c).value()\r\n );\r\n colColorScales[c] = colorScaleGenerator(colValues);\r\n });\r\n valueCellColors = (r, c, v) => colColorScales[c](v);\r\n }\r\n }\r\n\r\n const getClickHandler =\r\n this.props.tableOptions && this.props.tableOptions.clickCallback\r\n ? (value, rowValues, colValues) => {\r\n const filters = {};\r\n for (const i of Object.keys(colAttrs || {})) {\r\n const attr = colAttrs[i];\r\n if (colValues[i] !== null) {\r\n filters[attr] = colValues[i];\r\n }\r\n }\r\n for (const i of Object.keys(rowAttrs || {})) {\r\n const attr = rowAttrs[i];\r\n if (rowValues[i] !== null) {\r\n filters[attr] = rowValues[i];\r\n }\r\n }\r\n return e =>\r\n this.props.tableOptions.clickCallback(\r\n e,\r\n value,\r\n filters,\r\n pivotData\r\n );\r\n }\r\n : null;\r\n\r\n const rbClass = grouping? this.props.rowGroupBefore ? \"rowGroupBefore\" : \"rowGroupAfter\" : \"\";\r\n const cbClass = grouping? this.props.colGroupBefore ? \"colGroupBefore\" : \"colGroupAfter\" : \"\";\r\n const clickClass = (pred, closed) => pred? \" pvtClickable\" + (closed? \" closed\": \"\") : \"\";\r\n return (\r\n <table id={id} className={`pvtTable ${rbClass} ${cbClass}`}>\r\n <thead>\r\n {colAttrs.map(function(c, j) {\r\n const clickable = grouping && colAttrs.length > j + 1;\r\n const levelKeys = colKeys.filter(x => x.length === j+1);\r\n return (\r\n <tr key={`colAttr${j}`}>\r\n {j === 0 && rowAttrs.length !== 0 && (\r\n <th colSpan={rowAttrs.length} rowSpan={colAttrs.length} />\r\n )}\r\n <th className={\"pvtAxisLabel\" + clickClass(clickable, isFolded(levelKeys))}\r\n onClick={clickable? _ => fold(levelKeys): null}\r\n >{c}</th>\r\n {colKeys.map(function(colKey, i) {\r\n const x = spanSize(colKeys, i, j);\r\n if (x === -1) {\r\n return null;\r\n }\r\n return (\r\n <th\r\n className={\"pvtColLabel\" + clickClass(clickable && colKey[j], isFolded([colKey.slice(0, j + 1)]))}\r\n key={`colKey-${i}-${j}-${colKey[j]}`}\r\n colSpan={x}\r\n rowSpan={\r\n j === colAttrs.length - 1 && rowAttrs.length !== 0\r\n ? 2\r\n : 1\r\n }\r\n onClick={clickable && colKey[j] ? _ => fold([colKey.slice(0, j + 1)]) : null}\r\n >\r\n {colKey[j]}\r\n </th>\r\n );\r\n })}\r\n\r\n {j === 0 && (\r\n <th\r\n className=\"pvtTotalLabel\"\r\n rowSpan={\r\n colAttrs.length + (rowAttrs.length === 0 ? 0 : 1)\r\n }\r\n >\r\n Totals\r\n </th>\r\n )}\r\n </tr>\r\n );\r\n })}\r\n\r\n {rowAttrs.length !== 0 && (\r\n <tr>\r\n {rowAttrs.map(function(r, i) {\r\n const clickable = grouping && rowAttrs.length > i + 1;\r\n const levelKeys = rowKeys.filter(x => x.length === i+1);\r\n return (\r\n <th className={\"pvtAxisLabel\" + clickClass(clickable, isFolded(levelKeys))}\r\n onClick={clickable? _ => fold(levelKeys): null}\r\n key={`rowAttr${i}`}>\r\n {r}\r\n </th>\r\n );\r\n })}\r\n <th className=\"pvtTotalLabel\">\r\n {colAttrs.length === 0 ? 'Totals' : null}\r\n </th>\r\n </tr>\r\n )}\r\n </thead>\r\n\r\n <tbody>\r\n {rowKeys.map(function(rowKey, i) {\r\n const totalAggregator = pivotData.getAggregator(rowKey, []);\r\n const rowGap = rowAttrs.length - rowKey.length;\r\n const rowTotalValue = totalAggregator.value();\r\n return (\r\n <tr key={`rowKeyRow${i}`}\r\n className={(rowGap ? \"pvtLevel\" + rowGap : \"pvtData\") + \" pvtRow-data\"}>\r\n {rowKey.map(function(txt, j) {\r\n if (compactRows && j < rowKey.length - 1) {\r\n return null;\r\n }\r\n const clickable = grouping && rowAttrs.length > j + 1;\r\n const x = compactRows ? 1 : spanSize(rowKeys, i, j, specialCase);\r\n if (x === -1) {\r\n return null;\r\n }\r\n return (\r\n <th\r\n key={`rowKeyLabel-${i}-${j}-${txt}`}\r\n className={\"pvtRowLabel\" + clickClass(clickable && rowKey[j], isFolded([rowKey.slice(0, j + 1)]))}\r\n rowSpan={x}\r\n colSpan={\r\n compactRows ?\r\n rowAttrs.length + 1 :\r\n j === rowAttrs.length - 1 && colAttrs.length !== 0\r\n ? 2\r\n : 1\r\n }\r\n style={{paddingLeft: compactRows ? `calc(var(--pvt-row-padding, 5px) + ${j} * var(--pvt-row-indent, 20px))` : null}}\r\n onClick={clickable && rowKey[j] ? _ => fold([rowKey.slice(0, j + 1)]) : null}\r\n >\r\n {txt}\r\n </th>\r\n );\r\n })}\r\n {!compactRows && rowGap\r\n ? <th className=\"pvtRowLabel\" colSpan={rowGap + 1}>{\"Total (\" + rowKey[rowKey.length - 1] + \")\"}</th>\r\n : null\r\n }\r\n {colKeys.map(function(colKey, j) {\r\n const aggregator = pivotData.getAggregator(rowKey, colKey);\r\n const colGap = colAttrs.length - colKey.length;\r\n const val = aggregator.value();\r\n const isNumeric = typeof val === 'number';\r\n return (\r\n <td\r\n className={\"pvtVal\" + (colGap ? \" pvtLevel\" + colGap : \"\") + (isNumeric ? \" pvtVal-numeric\" : \"\")}\r\n key={`pvtVal${i}-${j}`}\r\n onClick={\r\n getClickHandler &&\r\n getClickHandler(val, rowKey, colKey)\r\n }\r\n style={valueCellColors(\r\n rowKey,\r\n colKey,\r\n val\r\n )}\r\n >\r\n {aggregator.format(val)}\r\n </td>\r\n );\r\n })}\r\n <td\r\n className={\"pvtTotal\" + (typeof rowTotalValue === 'number' ? \" pvtVal-numeric\" : \"\")}\r\n onClick={\r\n getClickHandler &&\r\n getClickHandler(rowTotalValue, rowKey, [null])\r\n }\r\n style={colTotalColors(rowTotalValue)}\r\n >\r\n {totalAggregator.format(rowTotalValue)}\r\n </td>\r\n </tr>\r\n );\r\n })}\r\n\r\n <tr className=\"pvtTotalRow\">\r\n <th\r\n className=\"pvtTotalLabel\"\r\n colSpan={rowAttrs.length + (colAttrs.length === 0 ? 0 : 1)}\r\n >\r\n Totals\r\n </th>\r\n\r\n {colKeys.map(function(colKey, i) {\r\n const totalAggregator = pivotData.getAggregator([], colKey);\r\n const colGap = colAttrs.length - colKey.length;\r\n const totalVal = totalAggregator.value();\r\n const isNumeric = typeof totalVal === 'number';\r\n return (\r\n <td\r\n className={\"pvtTotal\" + (colGap ? \" pvtLevel\" + colGap : \"\") + (isNumeric ? \" pvtVal-numeric\" : \"\")}\r\n key={`total${i}`}\r\n onClick={\r\n getClickHandler &&\r\n getClickHandler(totalVal, [null], colKey)\r\n }\r\n style={rowTotalColors(totalVal)}\r\n >\r\n {totalAggregator.format(totalVal)}\r\n </td>\r\n );\r\n })}\r\n\r\n <td\r\n onClick={\r\n getClickHandler &&\r\n getClickHandler(grandTotalAggregator.value(), [null], [null])\r\n }\r\n className={\"pvtGrandTotal\" + (typeof grandTotalAggregator.value() === 'number' ? \" pvtVal-numeric\" : \"\")}\r\n >\r\n {grandTotalAggregator.format(grandTotalAggregator.value())}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n );\r\n }\r\n }\r\n\r\n TableRenderer.defaultProps = PivotData.defaultProps;\r\n TableRenderer.propTypes = PivotData.propTypes;\r\n TableRenderer.defaultProps.tableColorScaleGenerator = redColorScaleGenerator;\r\n TableRenderer.defaultProps.tableOptions = {};\r\n TableRenderer.propTypes.tableColorScaleGenerator = PropTypes.func;\r\n TableRenderer.propTypes.tableOptions = PropTypes.object;\r\n TableRenderer.defaultProps.compactRows = true;\r\n TableRenderer.propTypes.compactRows = PropTypes.bool;\r\n return TableRenderer;\r\n}\r\n\r\nclass TSVExportRenderer extends React.PureComponent {\r\n render() {\r\n const pivotData = new PivotData(this.props);\r\n const rowKeys = pivotData.getRowKeys();\r\n const colKeys = pivotData.getColKeys();\r\n if (rowKeys.length === 0) {\r\n rowKeys.push([]);\r\n }\r\n if (colKeys.length === 0) {\r\n colKeys.push([]);\r\n }\r\n\r\n const headerRow = pivotData.props.rows.map(r => r);\r\n if (colKeys.length === 1 && colKeys[0].length === 0) {\r\n headerRow.push(this.props.aggregatorName);\r\n } else {\r\n colKeys.map(c => headerRow.push(c.join('-')));\r\n }\r\n\r\n const result = rowKeys.map(r => {\r\n const row = r.map(x => x);\r\n colKeys.map(c => {\r\n const v = pivotData.getAggregator(r, c).value();\r\n row.push(v ? v : '');\r\n });\r\n return row;\r\n });\r\n\r\n result.unshift(headerRow);\r\n\r\n return (\r\n <textarea\r\n value={result.map(r => r.join('\\t')).join('\\n')}\r\n style={{width: window.innerWidth / 2, height: window.innerHeight / 2}}\r\n readOnly={true}\r\n />\r\n );\r\n }\r\n}\r\n\r\nTSVExportRenderer.defaultProps = PivotData.defaultProps;\r\nTSVExportRenderer.propTypes = PivotData.propTypes;\r\n\r\nexport default {\r\n Table: makeRenderer(),\r\n 'Table Heatmap': makeRenderer({heatmapMode: 'full'}),\r\n 'Table Col Heatmap': makeRenderer({heatmapMode: 'col'}),\r\n 'Table Row Heatmap': makeRenderer({heatmapMode: 'row'}),\r\n 'Exportable TSV': TSVExportRenderer,\r\n};\r\n"],"mappings":"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","ignoreList":[]}