@ayd-ab/react-pivottable 0.12.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 +66 -0
- package/PivotTable.js.map +1 -0
- package/PivotTableUI.js +722 -0
- package/PivotTableUI.js.map +1 -0
- package/PlotlyRenderers.js +265 -0
- package/PlotlyRenderers.js.map +1 -0
- package/README.md +3 -0
- package/TableRenderers.js +435 -0
- package/TableRenderers.js.map +1 -0
- package/Utilities.js +1035 -0
- package/Utilities.js.map +1 -0
- package/package.json +81 -0
- package/pivottable.css +323 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/PivotTableUI.jsx"],"names":["DraggableAttribute","props","state","open","filterText","nodeRef","React","createRef","value","valueFilter","removeValuesFromFilter","name","addValuesToFilter","x","toLowerCase","trim","includes","e","stopPropagation","setValuesInFilter","Object","keys","attrValues","filter","y","showMenu","length","menuLimit","values","shown","matchesFilter","bind","sort","sorter","display","cursor","zIndex","moveFilterBoxToTop","setState","target","map","toggleValue","selectOnly","filtered","toggleFilterBox","getFilterBox","Component","defaultProps","propTypes","PropTypes","string","isRequired","func","objectOf","number","bool","Dropdown","toggle","current","r","setValue","PureComponent","PivotTableUI","unusedOrder","zIndices","maxZIndex","openDropdown","materializedInput","materializeInput","data","nextData","newState","recordsProcessed","PivotData","forEachRecord","derivedAttributes","record","push","attr","null","command","onChange","key","sendPropUpdate","$set","attribute","reduce","v","$unset","dropdown","items","classes","group","ghostClass","preventOnFilter","sorters","numValsAllowed","aggregators","aggregatorName","numInputs","aggregatorCellOutlet","outlet","rendererName","renderers","rendererCell","isOpen","propUpdater","sortIcons","key_a_to_z","rowSymbol","colSymbol","next","value_a_to_z","value_z_to_a","aggregatorCell","rowOrder","colOrder","Array","fill","n","i","vals","hiddenAttributes","hiddenFromAggregators","$splice","unusedAttrs","rows","cols","hiddenFromDragDrop","unusedLength","horizUnused","unusedOrientationCutoff","unusedAttrsCell","makeDnDCell","order","colAttrs","colAttrsCell","rowAttrs","rowAttrsCell","outputCell","assign","PivotTable","arrayOf"],"mappings":"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","file":"PivotTableUI.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport update from 'immutability-helper';\nimport {PivotData, sortAs, getSort} from './Utilities';\nimport PivotTable from './PivotTable';\nimport Sortable from 'react-sortablejs';\nimport Draggable from 'react-draggable';\n\n/* eslint-disable react/prop-types */\n// eslint can't see inherited propTypes!\n\nexport class DraggableAttribute extends React.Component {\n constructor(props) {\n super(props);\n this.state = {open: false, filterText: ''};\n this.nodeRef = React.createRef();\n }\n\n toggleValue(value) {\n if (value in this.props.valueFilter) {\n this.props.removeValuesFromFilter(this.props.name, [value]);\n } else {\n this.props.addValuesToFilter(this.props.name, [value]);\n }\n }\n\n matchesFilter(x) {\n return x\n .toLowerCase()\n .trim()\n .includes(this.state.filterText.toLowerCase().trim());\n }\n\n selectOnly(e, value) {\n e.stopPropagation();\n this.props.setValuesInFilter(\n this.props.name,\n Object.keys(this.props.attrValues).filter(y => y !== value)\n );\n }\n\n getFilterBox() {\n const showMenu =\n Object.keys(this.props.attrValues).length < this.props.menuLimit;\n\n const values = Object.keys(this.props.attrValues);\n const shown = values\n .filter(this.matchesFilter.bind(this))\n .sort(this.props.sorter);\n\n return (\n <Draggable handle=\".pvtDragHandle\" nodeRef={this.nodeRef}>\n <div\n ref={this.nodeRef}\n className=\"pvtFilterBox\"\n style={{\n display: 'block',\n cursor: 'initial',\n zIndex: this.props.zIndex,\n }}\n onClick={() => this.props.moveFilterBoxToTop(this.props.name)}\n >\n <a onClick={() => this.setState({open: false})} className=\"pvtCloseX\">\n ×\n </a>\n <span className=\"pvtDragHandle\">☰</span>\n <h4>{this.props.name}</h4>\n\n {showMenu || <p>(too many values to show)</p>}\n\n {showMenu && (\n <p>\n <input\n type=\"text\"\n placeholder=\"Filter values\"\n className=\"pvtSearch\"\n value={this.state.filterText}\n onChange={e =>\n this.setState({\n filterText: e.target.value,\n })\n }\n />\n <br />\n <a\n role=\"button\"\n className=\"pvtButton\"\n onClick={() =>\n this.props.removeValuesFromFilter(\n this.props.name,\n Object.keys(this.props.attrValues).filter(\n this.matchesFilter.bind(this)\n )\n )\n }\n >\n Select {values.length === shown.length ? 'All' : shown.length}\n </a>{' '}\n <a\n role=\"button\"\n className=\"pvtButton\"\n onClick={() =>\n this.props.addValuesToFilter(\n this.props.name,\n Object.keys(this.props.attrValues).filter(\n this.matchesFilter.bind(this)\n )\n )\n }\n >\n Deselect {values.length === shown.length ? 'All' : shown.length}\n </a>\n </p>\n )}\n\n {showMenu && (\n <div className=\"pvtCheckContainer\">\n {shown.map(x => (\n <p\n key={x}\n onClick={() => this.toggleValue(x)}\n className={x in this.props.valueFilter ? '' : 'selected'}\n >\n <a className=\"pvtOnly\" onClick={e => this.selectOnly(e, x)}>\n only\n </a>\n <a className=\"pvtOnlySpacer\"> </a>\n\n {x === '' ? <em>null</em> : x}\n </p>\n ))}\n </div>\n )}\n </div>\n </Draggable>\n );\n }\n\n toggleFilterBox() {\n this.setState({open: !this.state.open});\n this.props.moveFilterBoxToTop(this.props.name);\n }\n\n render() {\n const filtered =\n Object.keys(this.props.valueFilter).length !== 0\n ? 'pvtFilteredAttribute'\n : '';\n return (\n <li data-id={this.props.name}>\n <span className={'pvtAttr ' + filtered}>\n {this.props.name}\n <span\n className=\"pvtTriangle\"\n onClick={this.toggleFilterBox.bind(this)}\n >\n {' '}\n ▾\n </span>\n </span>\n\n {this.state.open ? this.getFilterBox() : null}\n </li>\n );\n }\n}\n\nDraggableAttribute.defaultProps = {\n valueFilter: {},\n};\n\nDraggableAttribute.propTypes = {\n name: PropTypes.string.isRequired,\n addValuesToFilter: PropTypes.func.isRequired,\n removeValuesFromFilter: PropTypes.func.isRequired,\n attrValues: PropTypes.objectOf(PropTypes.number).isRequired,\n valueFilter: PropTypes.objectOf(PropTypes.bool),\n moveFilterBoxToTop: PropTypes.func.isRequired,\n sorter: PropTypes.func.isRequired,\n menuLimit: PropTypes.number,\n zIndex: PropTypes.number,\n};\n\nexport class Dropdown extends React.PureComponent {\n render() {\n return (\n <div className=\"pvtDropdown\" style={{zIndex: this.props.zIndex}}>\n <div\n onClick={e => {\n e.stopPropagation();\n this.props.toggle();\n }}\n className={\n 'pvtDropdownValue pvtDropdownCurrent ' +\n (this.props.open ? 'pvtDropdownCurrentOpen' : '')\n }\n role=\"button\"\n >\n <div className=\"pvtDropdownIcon\">{this.props.open ? '×' : '▾'}</div>\n {this.props.current || <span> </span>}\n </div>\n\n {this.props.open && (\n <div className=\"pvtDropdownMenu\">\n {this.props.values.map(r => (\n <div\n key={r}\n role=\"button\"\n onClick={e => {\n e.stopPropagation();\n if (this.props.current === r) {\n this.props.toggle();\n } else {\n this.props.setValue(r);\n }\n }}\n className={\n 'pvtDropdownValue ' +\n (r === this.props.current ? 'pvtDropdownActiveValue' : '')\n }\n >\n {r}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n}\n\nclass PivotTableUI extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n unusedOrder: [],\n zIndices: {},\n maxZIndex: 1000,\n openDropdown: false,\n attrValues: {},\n materializedInput: [],\n };\n }\n\n componentDidMount() {\n this.materializeInput(this.props.data);\n }\n\n componentDidUpdate() {\n this.materializeInput(this.props.data);\n }\n\n materializeInput(nextData) {\n if (this.state.data === nextData) {\n return;\n }\n const newState = {\n data: nextData,\n attrValues: {},\n materializedInput: [],\n };\n let recordsProcessed = 0;\n PivotData.forEachRecord(\n newState.data,\n this.props.derivedAttributes,\n function(record) {\n newState.materializedInput.push(record);\n for (const attr of Object.keys(record)) {\n if (!(attr in newState.attrValues)) {\n newState.attrValues[attr] = {};\n if (recordsProcessed > 0) {\n newState.attrValues[attr].null = recordsProcessed;\n }\n }\n }\n for (const attr in newState.attrValues) {\n const value = attr in record ? record[attr] : 'null';\n if (!(value in newState.attrValues[attr])) {\n newState.attrValues[attr][value] = 0;\n }\n newState.attrValues[attr][value]++;\n }\n recordsProcessed++;\n }\n );\n this.setState(newState);\n }\n\n sendPropUpdate(command) {\n this.props.onChange(update(this.props, command));\n }\n\n propUpdater(key) {\n return value => this.sendPropUpdate({[key]: {$set: value}});\n }\n\n setValuesInFilter(attribute, values) {\n this.sendPropUpdate({\n valueFilter: {\n [attribute]: {\n $set: values.reduce((r, v) => {\n r[v] = true;\n return r;\n }, {}),\n },\n },\n });\n }\n\n addValuesToFilter(attribute, values) {\n if (attribute in this.props.valueFilter) {\n this.sendPropUpdate({\n valueFilter: {\n [attribute]: values.reduce((r, v) => {\n r[v] = {$set: true};\n return r;\n }, {}),\n },\n });\n } else {\n this.setValuesInFilter(attribute, values);\n }\n }\n\n removeValuesFromFilter(attribute, values) {\n this.sendPropUpdate({\n valueFilter: {[attribute]: {$unset: values}},\n });\n }\n\n moveFilterBoxToTop(attribute) {\n this.setState(\n update(this.state, {\n maxZIndex: {$set: this.state.maxZIndex + 1},\n zIndices: {[attribute]: {$set: this.state.maxZIndex + 1}},\n })\n );\n }\n\n isOpen(dropdown) {\n return this.state.openDropdown === dropdown;\n }\n\n makeDnDCell(items, onChange, classes) {\n return (\n <Sortable\n options={{\n group: 'shared',\n ghostClass: 'pvtPlaceholder',\n filter: '.pvtFilterBox',\n preventOnFilter: false,\n }}\n tag=\"td\"\n className={classes}\n onChange={onChange}\n >\n {items.map(x => (\n <DraggableAttribute\n name={x}\n key={x}\n attrValues={this.state.attrValues[x]}\n valueFilter={this.props.valueFilter[x] || {}}\n sorter={getSort(this.props.sorters, x)}\n menuLimit={this.props.menuLimit}\n setValuesInFilter={this.setValuesInFilter.bind(this)}\n addValuesToFilter={this.addValuesToFilter.bind(this)}\n moveFilterBoxToTop={this.moveFilterBoxToTop.bind(this)}\n removeValuesFromFilter={this.removeValuesFromFilter.bind(this)}\n zIndex={this.state.zIndices[x] || this.state.maxZIndex}\n />\n ))}\n </Sortable>\n );\n }\n\n render() {\n const numValsAllowed =\n this.props.aggregators[this.props.aggregatorName]([])().numInputs || 0;\n\n const aggregatorCellOutlet = this.props.aggregators[\n this.props.aggregatorName\n ]([])().outlet;\n\n const rendererName =\n this.props.rendererName in this.props.renderers\n ? this.props.rendererName\n : Object.keys(this.props.renderers)[0];\n\n const rendererCell = (\n <td className=\"pvtRenderers\">\n <Dropdown\n current={rendererName}\n values={Object.keys(this.props.renderers)}\n open={this.isOpen('renderer')}\n zIndex={this.isOpen('renderer') ? this.state.maxZIndex + 1 : 1}\n toggle={() =>\n this.setState({\n openDropdown: this.isOpen('renderer') ? false : 'renderer',\n })\n }\n setValue={this.propUpdater('rendererName')}\n />\n </td>\n );\n\n const sortIcons = {\n key_a_to_z: {\n rowSymbol: '↕',\n colSymbol: '↔',\n next: 'value_a_to_z',\n },\n value_a_to_z: {\n rowSymbol: '↓',\n colSymbol: '→',\n next: 'value_z_to_a',\n },\n value_z_to_a: {rowSymbol: '↑', colSymbol: '←', next: 'key_a_to_z'},\n };\n\n const aggregatorCell = (\n <td className=\"pvtVals\">\n <Dropdown\n current={this.props.aggregatorName}\n values={Object.keys(this.props.aggregators)}\n open={this.isOpen('aggregators')}\n zIndex={this.isOpen('aggregators') ? this.state.maxZIndex + 1 : 1}\n toggle={() =>\n this.setState({\n openDropdown: this.isOpen('aggregators') ? false : 'aggregators',\n })\n }\n setValue={this.propUpdater('aggregatorName')}\n />\n <a\n role=\"button\"\n className=\"pvtRowOrder\"\n onClick={() =>\n this.propUpdater('rowOrder')(sortIcons[this.props.rowOrder].next)\n }\n >\n {sortIcons[this.props.rowOrder].rowSymbol}\n </a>\n <a\n role=\"button\"\n className=\"pvtColOrder\"\n onClick={() =>\n this.propUpdater('colOrder')(sortIcons[this.props.colOrder].next)\n }\n >\n {sortIcons[this.props.colOrder].colSymbol}\n </a>\n {numValsAllowed > 0 && <br />}\n {new Array(numValsAllowed).fill().map((n, i) => [\n <Dropdown\n key={i}\n current={this.props.vals[i]}\n values={Object.keys(this.state.attrValues).filter(\n e =>\n !this.props.hiddenAttributes.includes(e) &&\n !this.props.hiddenFromAggregators.includes(e)\n )}\n open={this.isOpen(`val${i}`)}\n zIndex={this.isOpen(`val${i}`) ? this.state.maxZIndex + 1 : 1}\n toggle={() =>\n this.setState({\n openDropdown: this.isOpen(`val${i}`) ? false : `val${i}`,\n })\n }\n setValue={value =>\n this.sendPropUpdate({\n vals: {$splice: [[i, 1, value]]},\n })\n }\n />,\n i + 1 !== numValsAllowed ? <br key={`br${i}`} /> : null,\n ])}\n {aggregatorCellOutlet && aggregatorCellOutlet(this.props.data)}\n </td>\n );\n\n const unusedAttrs = Object.keys(this.state.attrValues)\n .filter(\n e =>\n !this.props.rows.includes(e) &&\n !this.props.cols.includes(e) &&\n !this.props.hiddenAttributes.includes(e) &&\n !this.props.hiddenFromDragDrop.includes(e)\n )\n .sort(sortAs(this.state.unusedOrder));\n\n const unusedLength = unusedAttrs.reduce((r, e) => r + e.length, 0);\n const horizUnused = unusedLength < this.props.unusedOrientationCutoff;\n\n const unusedAttrsCell = this.makeDnDCell(\n unusedAttrs,\n order => this.setState({unusedOrder: order}),\n `pvtAxisContainer pvtUnused ${\n horizUnused ? 'pvtHorizList' : 'pvtVertList'\n }`\n );\n\n const colAttrs = this.props.cols.filter(\n e =>\n !this.props.hiddenAttributes.includes(e) &&\n !this.props.hiddenFromDragDrop.includes(e)\n );\n\n const colAttrsCell = this.makeDnDCell(\n colAttrs,\n this.propUpdater('cols'),\n 'pvtAxisContainer pvtHorizList pvtCols'\n );\n\n const rowAttrs = this.props.rows.filter(\n e =>\n !this.props.hiddenAttributes.includes(e) &&\n !this.props.hiddenFromDragDrop.includes(e)\n );\n const rowAttrsCell = this.makeDnDCell(\n rowAttrs,\n this.propUpdater('rows'),\n 'pvtAxisContainer pvtVertList pvtRows'\n );\n const outputCell = (\n <td className=\"pvtOutput\">\n <PivotTable\n {...update(this.props, {\n data: {$set: this.state.materializedInput},\n })}\n />\n </td>\n );\n\n if (horizUnused) {\n return (\n <table className=\"pvtUi\">\n <tbody onClick={() => this.setState({openDropdown: false})}>\n <tr>\n {rendererCell}\n {unusedAttrsCell}\n </tr>\n <tr>\n {aggregatorCell}\n {colAttrsCell}\n </tr>\n <tr>\n {rowAttrsCell}\n {outputCell}\n </tr>\n </tbody>\n </table>\n );\n }\n\n return (\n <table className=\"pvtUi\">\n <tbody onClick={() => this.setState({openDropdown: false})}>\n <tr>\n {rendererCell}\n {aggregatorCell}\n {colAttrsCell}\n </tr>\n <tr>\n {unusedAttrsCell}\n {rowAttrsCell}\n {outputCell}\n </tr>\n </tbody>\n </table>\n );\n }\n}\n\nPivotTableUI.propTypes = Object.assign({}, PivotTable.propTypes, {\n onChange: PropTypes.func.isRequired,\n hiddenAttributes: PropTypes.arrayOf(PropTypes.string),\n hiddenFromAggregators: PropTypes.arrayOf(PropTypes.string),\n hiddenFromDragDrop: PropTypes.arrayOf(PropTypes.string),\n unusedOrientationCutoff: PropTypes.number,\n menuLimit: PropTypes.number,\n});\n\nPivotTableUI.defaultProps = Object.assign({}, PivotTable.defaultProps, {\n hiddenAttributes: [],\n hiddenFromAggregators: [],\n hiddenFromDragDrop: [],\n unusedOrientationCutoff: 85,\n menuLimit: 500,\n});\n\nexport default PivotTableUI;\n"]}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
8
|
+
|
|
9
|
+
exports.default = createPlotlyRenderers;
|
|
10
|
+
|
|
11
|
+
var _react = require('react');
|
|
12
|
+
|
|
13
|
+
var _react2 = _interopRequireDefault(_react);
|
|
14
|
+
|
|
15
|
+
var _propTypes = require('prop-types');
|
|
16
|
+
|
|
17
|
+
var _propTypes2 = _interopRequireDefault(_propTypes);
|
|
18
|
+
|
|
19
|
+
var _Utilities = require('./Utilities');
|
|
20
|
+
|
|
21
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
|
+
|
|
23
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
24
|
+
|
|
25
|
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
26
|
+
|
|
27
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
28
|
+
|
|
29
|
+
/* eslint-disable react/prop-types */
|
|
30
|
+
// eslint can't see inherited propTypes!
|
|
31
|
+
|
|
32
|
+
function makeRenderer(PlotlyComponent) {
|
|
33
|
+
var traceOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
34
|
+
var layoutOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
35
|
+
var transpose = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
36
|
+
|
|
37
|
+
var Renderer = function (_React$PureComponent) {
|
|
38
|
+
_inherits(Renderer, _React$PureComponent);
|
|
39
|
+
|
|
40
|
+
function Renderer() {
|
|
41
|
+
_classCallCheck(this, Renderer);
|
|
42
|
+
|
|
43
|
+
return _possibleConstructorReturn(this, (Renderer.__proto__ || Object.getPrototypeOf(Renderer)).apply(this, arguments));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
_createClass(Renderer, [{
|
|
47
|
+
key: 'render',
|
|
48
|
+
value: function render() {
|
|
49
|
+
var pivotData = new _Utilities.PivotData(this.props);
|
|
50
|
+
var rowKeys = pivotData.getRowKeys();
|
|
51
|
+
var colKeys = pivotData.getColKeys();
|
|
52
|
+
var traceKeys = transpose ? colKeys : rowKeys;
|
|
53
|
+
if (traceKeys.length === 0) {
|
|
54
|
+
traceKeys.push([]);
|
|
55
|
+
}
|
|
56
|
+
var datumKeys = transpose ? rowKeys : colKeys;
|
|
57
|
+
if (datumKeys.length === 0) {
|
|
58
|
+
datumKeys.push([]);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
var fullAggName = this.props.aggregatorName;
|
|
62
|
+
var numInputs = this.props.aggregators[fullAggName]([])().numInputs || 0;
|
|
63
|
+
if (numInputs !== 0) {
|
|
64
|
+
fullAggName += ' of ' + this.props.vals.slice(0, numInputs).join(', ');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var data = traceKeys.map(function (traceKey) {
|
|
68
|
+
var values = [];
|
|
69
|
+
var labels = [];
|
|
70
|
+
var _iteratorNormalCompletion = true;
|
|
71
|
+
var _didIteratorError = false;
|
|
72
|
+
var _iteratorError = undefined;
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
for (var _iterator = datumKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
76
|
+
var datumKey = _step.value;
|
|
77
|
+
|
|
78
|
+
var val = parseFloat(pivotData.getAggregator(transpose ? datumKey : traceKey, transpose ? traceKey : datumKey).value());
|
|
79
|
+
values.push(isFinite(val) ? val : null);
|
|
80
|
+
labels.push(datumKey.join('-') || ' ');
|
|
81
|
+
}
|
|
82
|
+
} catch (err) {
|
|
83
|
+
_didIteratorError = true;
|
|
84
|
+
_iteratorError = err;
|
|
85
|
+
} finally {
|
|
86
|
+
try {
|
|
87
|
+
if (!_iteratorNormalCompletion && _iterator.return) {
|
|
88
|
+
_iterator.return();
|
|
89
|
+
}
|
|
90
|
+
} finally {
|
|
91
|
+
if (_didIteratorError) {
|
|
92
|
+
throw _iteratorError;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
var trace = { name: traceKey.join('-') || fullAggName };
|
|
98
|
+
if (traceOptions.type === 'pie') {
|
|
99
|
+
trace.values = values;
|
|
100
|
+
trace.labels = labels.length > 1 ? labels : [fullAggName];
|
|
101
|
+
} else {
|
|
102
|
+
trace.x = transpose ? values : labels;
|
|
103
|
+
trace.y = transpose ? labels : values;
|
|
104
|
+
}
|
|
105
|
+
return Object.assign(trace, traceOptions);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
var titleText = fullAggName;
|
|
109
|
+
var hAxisTitle = transpose ? this.props.rows.join('-') : this.props.cols.join('-');
|
|
110
|
+
var groupByTitle = transpose ? this.props.cols.join('-') : this.props.rows.join('-');
|
|
111
|
+
if (hAxisTitle !== '') {
|
|
112
|
+
titleText += ' vs ' + hAxisTitle;
|
|
113
|
+
}
|
|
114
|
+
if (groupByTitle !== '') {
|
|
115
|
+
titleText += ' by ' + groupByTitle;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
var layout = {
|
|
119
|
+
title: titleText,
|
|
120
|
+
hovermode: 'closest',
|
|
121
|
+
/* eslint-disable no-magic-numbers */
|
|
122
|
+
width: window.innerWidth / 1.5,
|
|
123
|
+
height: window.innerHeight / 1.4 - 50
|
|
124
|
+
/* eslint-enable no-magic-numbers */
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
if (traceOptions.type === 'pie') {
|
|
128
|
+
var columns = Math.ceil(Math.sqrt(data.length));
|
|
129
|
+
var rows = Math.ceil(data.length / columns);
|
|
130
|
+
layout.grid = { columns: columns, rows: rows };
|
|
131
|
+
data.forEach(function (d, i) {
|
|
132
|
+
d.domain = {
|
|
133
|
+
row: Math.floor(i / columns),
|
|
134
|
+
column: i - columns * Math.floor(i / columns)
|
|
135
|
+
};
|
|
136
|
+
if (data.length > 1) {
|
|
137
|
+
d.title = d.name;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
if (data[0].labels.length === 1) {
|
|
141
|
+
layout.showlegend = false;
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
layout.xaxis = {
|
|
145
|
+
title: transpose ? fullAggName : null,
|
|
146
|
+
automargin: true
|
|
147
|
+
};
|
|
148
|
+
layout.yaxis = {
|
|
149
|
+
title: transpose ? null : fullAggName,
|
|
150
|
+
automargin: true
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return _react2.default.createElement(PlotlyComponent, {
|
|
155
|
+
data: data,
|
|
156
|
+
layout: Object.assign(layout, layoutOptions, this.props.plotlyOptions),
|
|
157
|
+
config: this.props.plotlyConfig,
|
|
158
|
+
onUpdate: this.props.onRendererUpdate
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}]);
|
|
162
|
+
|
|
163
|
+
return Renderer;
|
|
164
|
+
}(_react2.default.PureComponent);
|
|
165
|
+
|
|
166
|
+
Renderer.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps, {
|
|
167
|
+
plotlyOptions: {},
|
|
168
|
+
plotlyConfig: {}
|
|
169
|
+
});
|
|
170
|
+
Renderer.propTypes = Object.assign({}, _Utilities.PivotData.propTypes, {
|
|
171
|
+
plotlyOptions: _propTypes2.default.object,
|
|
172
|
+
plotlyConfig: _propTypes2.default.object,
|
|
173
|
+
onRendererUpdate: _propTypes2.default.func
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
return Renderer;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function makeScatterRenderer(PlotlyComponent) {
|
|
180
|
+
var Renderer = function (_React$PureComponent2) {
|
|
181
|
+
_inherits(Renderer, _React$PureComponent2);
|
|
182
|
+
|
|
183
|
+
function Renderer() {
|
|
184
|
+
_classCallCheck(this, Renderer);
|
|
185
|
+
|
|
186
|
+
return _possibleConstructorReturn(this, (Renderer.__proto__ || Object.getPrototypeOf(Renderer)).apply(this, arguments));
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
_createClass(Renderer, [{
|
|
190
|
+
key: 'render',
|
|
191
|
+
value: function render() {
|
|
192
|
+
var pivotData = new _Utilities.PivotData(this.props);
|
|
193
|
+
var rowKeys = pivotData.getRowKeys();
|
|
194
|
+
var colKeys = pivotData.getColKeys();
|
|
195
|
+
if (rowKeys.length === 0) {
|
|
196
|
+
rowKeys.push([]);
|
|
197
|
+
}
|
|
198
|
+
if (colKeys.length === 0) {
|
|
199
|
+
colKeys.push([]);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
var data = { x: [], y: [], text: [], type: 'scatter', mode: 'markers' };
|
|
203
|
+
|
|
204
|
+
rowKeys.map(function (rowKey) {
|
|
205
|
+
colKeys.map(function (colKey) {
|
|
206
|
+
var v = pivotData.getAggregator(rowKey, colKey).value();
|
|
207
|
+
if (v !== null) {
|
|
208
|
+
data.x.push(colKey.join('-'));
|
|
209
|
+
data.y.push(rowKey.join('-'));
|
|
210
|
+
data.text.push(v);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
var layout = {
|
|
216
|
+
title: this.props.rows.join('-') + ' vs ' + this.props.cols.join('-'),
|
|
217
|
+
hovermode: 'closest',
|
|
218
|
+
/* eslint-disable no-magic-numbers */
|
|
219
|
+
xaxis: { title: this.props.cols.join('-'), automargin: true },
|
|
220
|
+
yaxis: { title: this.props.rows.join('-'), automargin: true },
|
|
221
|
+
width: window.innerWidth / 1.5,
|
|
222
|
+
height: window.innerHeight / 1.4 - 50
|
|
223
|
+
/* eslint-enable no-magic-numbers */
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
return _react2.default.createElement(PlotlyComponent, {
|
|
227
|
+
data: [data],
|
|
228
|
+
layout: Object.assign(layout, this.props.plotlyOptions),
|
|
229
|
+
config: this.props.plotlyConfig,
|
|
230
|
+
onUpdate: this.props.onRendererUpdate
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}]);
|
|
234
|
+
|
|
235
|
+
return Renderer;
|
|
236
|
+
}(_react2.default.PureComponent);
|
|
237
|
+
|
|
238
|
+
Renderer.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps, {
|
|
239
|
+
plotlyOptions: {},
|
|
240
|
+
plotlyConfig: {}
|
|
241
|
+
});
|
|
242
|
+
Renderer.propTypes = Object.assign({}, _Utilities.PivotData.propTypes, {
|
|
243
|
+
plotlyOptions: _propTypes2.default.object,
|
|
244
|
+
plotlyConfig: _propTypes2.default.object,
|
|
245
|
+
onRendererUpdate: _propTypes2.default.func
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
return Renderer;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
function createPlotlyRenderers(PlotlyComponent) {
|
|
252
|
+
return {
|
|
253
|
+
'Grouped Column Chart': makeRenderer(PlotlyComponent, { type: 'bar' }, { barmode: 'group' }),
|
|
254
|
+
'Stacked Column Chart': makeRenderer(PlotlyComponent, { type: 'bar' }, { barmode: 'relative' }),
|
|
255
|
+
'Grouped Bar Chart': makeRenderer(PlotlyComponent, { type: 'bar', orientation: 'h' }, { barmode: 'group' }, true),
|
|
256
|
+
'Stacked Bar Chart': makeRenderer(PlotlyComponent, { type: 'bar', orientation: 'h' }, { barmode: 'relative' }, true),
|
|
257
|
+
'Line Chart': makeRenderer(PlotlyComponent),
|
|
258
|
+
'Dot Chart': makeRenderer(PlotlyComponent, { mode: 'markers' }, {}, true),
|
|
259
|
+
'Area Chart': makeRenderer(PlotlyComponent, { stackgroup: 1 }),
|
|
260
|
+
'Scatter Chart': makeScatterRenderer(PlotlyComponent),
|
|
261
|
+
'Multiple Pie Chart': makeRenderer(PlotlyComponent, { type: 'pie', scalegroup: 1, hoverinfo: 'label+value', textinfo: 'none' }, {}, true)
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
module.exports = exports['default'];
|
|
265
|
+
//# sourceMappingURL=PlotlyRenderers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/PlotlyRenderers.jsx"],"names":["createPlotlyRenderers","makeRenderer","PlotlyComponent","traceOptions","layoutOptions","transpose","Renderer","pivotData","PivotData","props","rowKeys","getRowKeys","colKeys","getColKeys","traceKeys","length","push","datumKeys","fullAggName","aggregatorName","numInputs","aggregators","vals","slice","join","data","map","values","labels","datumKey","val","parseFloat","getAggregator","traceKey","value","isFinite","trace","name","type","x","y","Object","assign","titleText","hAxisTitle","rows","cols","groupByTitle","layout","title","hovermode","width","window","innerWidth","height","innerHeight","columns","Math","ceil","sqrt","grid","forEach","d","i","domain","row","floor","column","showlegend","xaxis","automargin","yaxis","plotlyOptions","plotlyConfig","onRendererUpdate","React","PureComponent","defaultProps","propTypes","PropTypes","object","func","makeScatterRenderer","text","mode","v","rowKey","colKey","barmode","orientation","stackgroup","scalegroup","hoverinfo","textinfo"],"mappings":"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","file":"PlotlyRenderers.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {PivotData} from './Utilities';\n\n/* eslint-disable react/prop-types */\n// eslint can't see inherited propTypes!\n\nfunction makeRenderer(\n PlotlyComponent,\n traceOptions = {},\n layoutOptions = {},\n transpose = false\n) {\n class Renderer extends React.PureComponent {\n render() {\n const pivotData = new PivotData(this.props);\n const rowKeys = pivotData.getRowKeys();\n const colKeys = pivotData.getColKeys();\n const traceKeys = transpose ? colKeys : rowKeys;\n if (traceKeys.length === 0) {\n traceKeys.push([]);\n }\n const datumKeys = transpose ? rowKeys : colKeys;\n if (datumKeys.length === 0) {\n datumKeys.push([]);\n }\n\n let fullAggName = this.props.aggregatorName;\n const numInputs =\n this.props.aggregators[fullAggName]([])().numInputs || 0;\n if (numInputs !== 0) {\n fullAggName += ` of ${this.props.vals.slice(0, numInputs).join(', ')}`;\n }\n\n const data = traceKeys.map(traceKey => {\n const values = [];\n const labels = [];\n for (const datumKey of datumKeys) {\n const val = parseFloat(\n pivotData\n .getAggregator(\n transpose ? datumKey : traceKey,\n transpose ? traceKey : datumKey\n )\n .value()\n );\n values.push(isFinite(val) ? val : null);\n labels.push(datumKey.join('-') || ' ');\n }\n const trace = {name: traceKey.join('-') || fullAggName};\n if (traceOptions.type === 'pie') {\n trace.values = values;\n trace.labels = labels.length > 1 ? labels : [fullAggName];\n } else {\n trace.x = transpose ? values : labels;\n trace.y = transpose ? labels : values;\n }\n return Object.assign(trace, traceOptions);\n });\n\n let titleText = fullAggName;\n const hAxisTitle = transpose\n ? this.props.rows.join('-')\n : this.props.cols.join('-');\n const groupByTitle = transpose\n ? this.props.cols.join('-')\n : this.props.rows.join('-');\n if (hAxisTitle !== '') {\n titleText += ` vs ${hAxisTitle}`;\n }\n if (groupByTitle !== '') {\n titleText += ` by ${groupByTitle}`;\n }\n\n const layout = {\n title: titleText,\n hovermode: 'closest',\n /* eslint-disable no-magic-numbers */\n width: window.innerWidth / 1.5,\n height: window.innerHeight / 1.4 - 50,\n /* eslint-enable no-magic-numbers */\n };\n\n if (traceOptions.type === 'pie') {\n const columns = Math.ceil(Math.sqrt(data.length));\n const rows = Math.ceil(data.length / columns);\n layout.grid = {columns, rows};\n data.forEach((d, i) => {\n d.domain = {\n row: Math.floor(i / columns),\n column: i - columns * Math.floor(i / columns),\n };\n if (data.length > 1) {\n d.title = d.name;\n }\n });\n if (data[0].labels.length === 1) {\n layout.showlegend = false;\n }\n } else {\n layout.xaxis = {\n title: transpose ? fullAggName : null,\n automargin: true,\n };\n layout.yaxis = {\n title: transpose ? null : fullAggName,\n automargin: true,\n };\n }\n\n return (\n <PlotlyComponent\n data={data}\n layout={Object.assign(\n layout,\n layoutOptions,\n this.props.plotlyOptions\n )}\n config={this.props.plotlyConfig}\n onUpdate={this.props.onRendererUpdate}\n />\n );\n }\n }\n\n Renderer.defaultProps = Object.assign({}, PivotData.defaultProps, {\n plotlyOptions: {},\n plotlyConfig: {},\n });\n Renderer.propTypes = Object.assign({}, PivotData.propTypes, {\n plotlyOptions: PropTypes.object,\n plotlyConfig: PropTypes.object,\n onRendererUpdate: PropTypes.func,\n });\n\n return Renderer;\n}\n\nfunction makeScatterRenderer(PlotlyComponent) {\n class Renderer extends React.PureComponent {\n render() {\n const pivotData = new PivotData(this.props);\n const rowKeys = pivotData.getRowKeys();\n const colKeys = pivotData.getColKeys();\n if (rowKeys.length === 0) {\n rowKeys.push([]);\n }\n if (colKeys.length === 0) {\n colKeys.push([]);\n }\n\n const data = {x: [], y: [], text: [], type: 'scatter', mode: 'markers'};\n\n rowKeys.map(rowKey => {\n colKeys.map(colKey => {\n const v = pivotData.getAggregator(rowKey, colKey).value();\n if (v !== null) {\n data.x.push(colKey.join('-'));\n data.y.push(rowKey.join('-'));\n data.text.push(v);\n }\n });\n });\n\n const layout = {\n title: this.props.rows.join('-') + ' vs ' + this.props.cols.join('-'),\n hovermode: 'closest',\n /* eslint-disable no-magic-numbers */\n xaxis: {title: this.props.cols.join('-'), automargin: true},\n yaxis: {title: this.props.rows.join('-'), automargin: true},\n width: window.innerWidth / 1.5,\n height: window.innerHeight / 1.4 - 50,\n /* eslint-enable no-magic-numbers */\n };\n\n return (\n <PlotlyComponent\n data={[data]}\n layout={Object.assign(layout, this.props.plotlyOptions)}\n config={this.props.plotlyConfig}\n onUpdate={this.props.onRendererUpdate}\n />\n );\n }\n }\n\n Renderer.defaultProps = Object.assign({}, PivotData.defaultProps, {\n plotlyOptions: {},\n plotlyConfig: {},\n });\n Renderer.propTypes = Object.assign({}, PivotData.propTypes, {\n plotlyOptions: PropTypes.object,\n plotlyConfig: PropTypes.object,\n onRendererUpdate: PropTypes.func,\n });\n\n return Renderer;\n}\n\nexport default function createPlotlyRenderers(PlotlyComponent) {\n return {\n 'Grouped Column Chart': makeRenderer(\n PlotlyComponent,\n {type: 'bar'},\n {barmode: 'group'}\n ),\n 'Stacked Column Chart': makeRenderer(\n PlotlyComponent,\n {type: 'bar'},\n {barmode: 'relative'}\n ),\n 'Grouped Bar Chart': makeRenderer(\n PlotlyComponent,\n {type: 'bar', orientation: 'h'},\n {barmode: 'group'},\n true\n ),\n 'Stacked Bar Chart': makeRenderer(\n PlotlyComponent,\n {type: 'bar', orientation: 'h'},\n {barmode: 'relative'},\n true\n ),\n 'Line Chart': makeRenderer(PlotlyComponent),\n 'Dot Chart': makeRenderer(PlotlyComponent, {mode: 'markers'}, {}, true),\n 'Area Chart': makeRenderer(PlotlyComponent, {stackgroup: 1}),\n 'Scatter Chart': makeScatterRenderer(PlotlyComponent),\n 'Multiple Pie Chart': makeRenderer(\n PlotlyComponent,\n {type: 'pie', scalegroup: 1, hoverinfo: 'label+value', textinfo: 'none'},\n {},\n true\n ),\n };\n}\n"]}
|
package/README.md
ADDED