From b8af03c035880aa3633efb159ae5cb656da66306 Mon Sep 17 00:00:00 2001 From: dehernandezm Date: Thu, 6 Feb 2025 12:53:06 -0600 Subject: [PATCH] test filtrar datos segun valuefilter, remover console log --- PivotTableUI.js | 98 ++++++++++++++++++++++++------------------- PivotTableUI.js.map | 2 +- TableRenderers.js | 3 -- TableRenderers.js.map | 2 +- package.json | 17 +------- 5 files changed, 60 insertions(+), 62 deletions(-) diff --git a/PivotTableUI.js b/PivotTableUI.js index e46163e..c4f6588 100644 --- a/PivotTableUI.js +++ b/PivotTableUI.js @@ -70,7 +70,6 @@ var DraggableAttribute = exports.DraggableAttribute = function (_React$Component }, { key: 'matchesFilter', value: function matchesFilter(x) { - console.log(' matchesFilter x ', x); return x.toLowerCase().trim().includes(this.state.filterText.toLowerCase().trim()); } }, { @@ -357,15 +356,32 @@ var PivotTableUI = function (_React$PureComponent2) { }, { key: 'componentDidUpdate', value: function componentDidUpdate() { + var _this6 = this; + console.log(' componentDidUpdate '); - var pivotData = new _Utilities.PivotData(this.props); - console.log(' componentDidUpdate pivotData ', pivotData); + console.log(' componentDidUpdate this.props.data ', this.props.data); + console.log(' componentDidUpdate state ', this.state); + var filteredData = this.props.data.filter(function (row) { + var _valuefilter = _this6.props.valueFilter; + if (typeof _valuefilter !== 'undefined' && _valuefilter !== null) { + var keysFilter = Object.keys(_valuefilter); + keysFilter.forEach(function (keyF) { + var valsFilter = Object.keys(_valuefilter[keyF]); + valsFilter.forEach(function (valF) { + if (row[keyF] === valF) { + return false; + } + }); + }); + } + return true; + }); + console.log(' componentDidUpdate filteredData ', filteredData); this.materializeInput(this.props.data); } }, { key: 'materializeInput', value: function materializeInput(nextData) { - console.log(' materializeInput nextData ', nextData); if (this.state.data === nextData) { return; } @@ -416,8 +432,6 @@ var PivotTableUI = function (_React$PureComponent2) { } recordsProcessed++; }); - console.log(' newState materializedInput ', newState.materializedInput); - console.log(' newState derivedAttributes ', this.props.derivedAttributes); console.log(' newState attrValues ', newState.attrValues); this.setState(newState); } @@ -429,10 +443,10 @@ var PivotTableUI = function (_React$PureComponent2) { }, { key: 'propUpdater', value: function propUpdater(key) { - var _this6 = this; + var _this7 = this; return function (value) { - return _this6.sendPropUpdate(_defineProperty({}, key, { $set: value })); + return _this7.sendPropUpdate(_defineProperty({}, key, { $set: value })); }; } }, { @@ -487,7 +501,7 @@ var PivotTableUI = function (_React$PureComponent2) { }, { key: 'makeDnDCell', value: function makeDnDCell(items, onChange, classes) { - var _this7 = this; + var _this8 = this; return _react2.default.createElement( _reactSortablejs2.default, @@ -506,15 +520,15 @@ var PivotTableUI = function (_React$PureComponent2) { return _react2.default.createElement(DraggableAttribute, { name: x, key: x, - attrValues: _this7.state.attrValues[x], - valueFilter: _this7.props.valueFilter[x] || {}, - sorter: (0, _Utilities.getSort)(_this7.props.sorters, x), - menuLimit: _this7.props.menuLimit, - setValuesInFilter: _this7.setValuesInFilter.bind(_this7), - addValuesToFilter: _this7.addValuesToFilter.bind(_this7), - moveFilterBoxToTop: _this7.moveFilterBoxToTop.bind(_this7), - removeValuesFromFilter: _this7.removeValuesFromFilter.bind(_this7), - zIndex: _this7.state.zIndices[x] || _this7.state.maxZIndex + attrValues: _this8.state.attrValues[x], + valueFilter: _this8.props.valueFilter[x] || {}, + sorter: (0, _Utilities.getSort)(_this8.props.sorters, x), + menuLimit: _this8.props.menuLimit, + setValuesInFilter: _this8.setValuesInFilter.bind(_this8), + addValuesToFilter: _this8.addValuesToFilter.bind(_this8), + moveFilterBoxToTop: _this8.moveFilterBoxToTop.bind(_this8), + removeValuesFromFilter: _this8.removeValuesFromFilter.bind(_this8), + zIndex: _this8.state.zIndices[x] || _this8.state.maxZIndex }); }) ); @@ -522,7 +536,7 @@ var PivotTableUI = function (_React$PureComponent2) { }, { key: 'render', value: function render() { - var _this8 = this; + var _this9 = this; var numValsAllowed = this.props.aggregators[this.props.aggregatorName]([])().numInputs || 0; @@ -539,8 +553,8 @@ var PivotTableUI = function (_React$PureComponent2) { open: this.isOpen('renderer'), zIndex: this.isOpen('renderer') ? this.state.maxZIndex + 1 : 1, toggle: function toggle() { - return _this8.setState({ - openDropdown: _this8.isOpen('renderer') ? false : 'renderer' + return _this9.setState({ + openDropdown: _this9.isOpen('renderer') ? false : 'renderer' }); }, setValue: this.propUpdater('rendererName') @@ -570,8 +584,8 @@ var PivotTableUI = function (_React$PureComponent2) { open: this.isOpen('aggregators'), zIndex: this.isOpen('aggregators') ? this.state.maxZIndex + 1 : 1, toggle: function toggle() { - return _this8.setState({ - openDropdown: _this8.isOpen('aggregators') ? false : 'aggregators' + return _this9.setState({ + openDropdown: _this9.isOpen('aggregators') ? false : 'aggregators' }); }, setValue: this.propUpdater('aggregatorName') @@ -582,7 +596,7 @@ var PivotTableUI = function (_React$PureComponent2) { role: 'button', className: 'pvtRowOrder', onClick: function onClick() { - return _this8.propUpdater('rowOrder')(sortIcons[_this8.props.rowOrder].next); + return _this9.propUpdater('rowOrder')(sortIcons[_this9.props.rowOrder].next); } }, sortIcons[this.props.rowOrder].rowSymbol @@ -593,7 +607,7 @@ var PivotTableUI = function (_React$PureComponent2) { role: 'button', className: 'pvtColOrder', onClick: function onClick() { - return _this8.propUpdater('colOrder')(sortIcons[_this8.props.colOrder].next); + return _this9.propUpdater('colOrder')(sortIcons[_this9.props.colOrder].next); } }, sortIcons[this.props.colOrder].colSymbol @@ -602,19 +616,19 @@ var PivotTableUI = function (_React$PureComponent2) { new Array(numValsAllowed).fill().map(function (n, i) { return [_react2.default.createElement(Dropdown, { key: i, - current: _this8.props.vals[i], - values: Object.keys(_this8.state.attrValues).filter(function (e) { - return !_this8.props.hiddenAttributes.includes(e) && !_this8.props.hiddenFromAggregators.includes(e); + current: _this9.props.vals[i], + values: Object.keys(_this9.state.attrValues).filter(function (e) { + return !_this9.props.hiddenAttributes.includes(e) && !_this9.props.hiddenFromAggregators.includes(e); }), - open: _this8.isOpen('val' + i), - zIndex: _this8.isOpen('val' + i) ? _this8.state.maxZIndex + 1 : 1, + open: _this9.isOpen('val' + i), + zIndex: _this9.isOpen('val' + i) ? _this9.state.maxZIndex + 1 : 1, toggle: function toggle() { - return _this8.setState({ - openDropdown: _this8.isOpen('val' + i) ? false : 'val' + i + return _this9.setState({ + openDropdown: _this9.isOpen('val' + i) ? false : 'val' + i }); }, setValue: function setValue(value) { - return _this8.sendPropUpdate({ + return _this9.sendPropUpdate({ vals: { $splice: [[i, 1, value]] } }); } @@ -624,7 +638,7 @@ var PivotTableUI = function (_React$PureComponent2) { ); var unusedAttrs = Object.keys(this.state.attrValues).filter(function (e) { - return !_this8.props.rows.includes(e) && !_this8.props.cols.includes(e) && !_this8.props.hiddenAttributes.includes(e) && !_this8.props.hiddenFromDragDrop.includes(e); + return !_this9.props.rows.includes(e) && !_this9.props.cols.includes(e) && !_this9.props.hiddenAttributes.includes(e) && !_this9.props.hiddenFromDragDrop.includes(e); }).sort((0, _Utilities.sortAs)(this.state.unusedOrder)); var unusedLength = unusedAttrs.reduce(function (r, e) { @@ -633,17 +647,17 @@ var PivotTableUI = function (_React$PureComponent2) { var horizUnused = unusedLength < this.props.unusedOrientationCutoff; var unusedAttrsCell = this.makeDnDCell(unusedAttrs, function (order) { - return _this8.setState({ unusedOrder: order }); + return _this9.setState({ unusedOrder: order }); }, 'pvtAxisContainer pvtUnused ' + (horizUnused ? 'pvtHorizList' : 'pvtVertList')); var colAttrs = this.props.cols.filter(function (e) { - return !_this8.props.hiddenAttributes.includes(e) && !_this8.props.hiddenFromDragDrop.includes(e); + return !_this9.props.hiddenAttributes.includes(e) && !_this9.props.hiddenFromDragDrop.includes(e); }); var colAttrsCell = this.makeDnDCell(colAttrs, this.propUpdater('cols'), 'pvtAxisContainer pvtHorizList pvtCols'); var rowAttrs = this.props.rows.filter(function (e) { - return !_this8.props.hiddenAttributes.includes(e) && !_this8.props.hiddenFromDragDrop.includes(e); + return !_this9.props.hiddenAttributes.includes(e) && !_this9.props.hiddenFromDragDrop.includes(e); }); var rowAttrsCell = this.makeDnDCell(rowAttrs, this.propUpdater('rows'), 'pvtAxisContainer pvtVertList pvtRows'); var outputCell = _react2.default.createElement( @@ -661,7 +675,7 @@ var PivotTableUI = function (_React$PureComponent2) { _react2.default.createElement( 'tbody', { onClick: function onClick() { - return _this8.setState({ openDropdown: false }); + return _this9.setState({ openDropdown: false }); } }, _react2.default.createElement( 'tr', @@ -679,7 +693,7 @@ var PivotTableUI = function (_React$PureComponent2) { this.props.hideConfiguration && _react2.default.createElement( 'tbody', { onClick: function onClick() { - return _this8.setState({ openDropdown: false }); + return _this9.setState({ openDropdown: false }); } }, _react2.default.createElement( 'tr', @@ -690,7 +704,7 @@ var PivotTableUI = function (_React$PureComponent2) { !this.props.hideConfiguration && _react2.default.createElement( 'tbody', { onClick: function onClick() { - return _this8.setState({ openDropdown: false }); + return _this9.setState({ openDropdown: false }); } }, _react2.default.createElement( 'tr', @@ -720,7 +734,7 @@ var PivotTableUI = function (_React$PureComponent2) { this.props.hideConfiguration && _react2.default.createElement( 'tbody', { onClick: function onClick() { - return _this8.setState({ openDropdown: false }); + return _this9.setState({ openDropdown: false }); } }, _react2.default.createElement( 'tr', @@ -731,7 +745,7 @@ var PivotTableUI = function (_React$PureComponent2) { !this.props.hideConfiguration && _react2.default.createElement( 'tbody', { onClick: function onClick() { - return _this8.setState({ openDropdown: false }); + return _this9.setState({ openDropdown: false }); } }, _react2.default.createElement( 'tr', diff --git a/PivotTableUI.js.map b/PivotTableUI.js.map index 49a7665..6e5be2e 100644 --- a/PivotTableUI.js.map +++ b/PivotTableUI.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/PivotTableUI.jsx"],"names":["DraggableAttribute","props","state","open","filterText","value","valueFilter","removeValuesFromFilter","name","addValuesToFilter","x","console","log","toLowerCase","trim","includes","e","stopPropagation","setValuesInFilter","Object","keys","attrValues","filter","y","values","shown","matchesFilter","bind","sort","sorter","truncatedShown","display","cursor","zIndex","moveFilterBoxToTop","setState","target","length","map","toggleValue","selectOnly","filtered","toggleFilterBox","getFilterBox","React","Component","defaultProps","propTypes","PropTypes","string","isRequired","func","objectOf","number","bool","menuLimit","Dropdown","toggle","current","r","setValue","PureComponent","PivotTableUI","unusedOrder","zIndices","maxZIndex","openDropdown","attrValuesReduced","materializedInput","hideConfiguration","headerClass","stylesHeaders","materializeInput","data","pivotData","PivotData","nextData","newState","recordsProcessed","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","object"],"mappings":"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","file":"PivotTableUI.js","sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport update from 'immutability-helper';\r\nimport {PivotData, sortAs, getSort} from './Utilities';\r\nimport PivotTable from './PivotTable';\r\nimport Sortable from 'react-sortablejs';\r\nimport Draggable from 'react-draggable';\r\n\r\n/* eslint-disable react/prop-types */\r\n// eslint can't see inherited propTypes!\r\n\r\nexport class DraggableAttribute extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {open: false, filterText: ''};\r\n }\r\n\r\n toggleValue(value) {\r\n if (value in this.props.valueFilter) {\r\n this.props.removeValuesFromFilter(this.props.name, [value]);\r\n } else {\r\n this.props.addValuesToFilter(this.props.name, [value]);\r\n }\r\n }\r\n\r\n matchesFilter(x) {\r\n console.log(' matchesFilter x ', x)\r\n return x\r\n .toLowerCase()\r\n .trim()\r\n .includes(this.state.filterText.toLowerCase().trim());\r\n }\r\n\r\n selectOnly(e, value) {\r\n e.stopPropagation();\r\n this.props.setValuesInFilter(\r\n this.props.name,\r\n Object.keys(this.props.attrValues).filter(y => y !== value)\r\n );\r\n }\r\n\r\n getFilterBox() {\r\n // const showMenu = Object.keys(this.props.attrValues).length < this.props.menuLimit;\r\n console.log(' this.props.attrValues ', this.props.attrValues)\r\n const values = Object.keys(this.props.attrValues);\r\n const shown = values\r\n .filter(this.matchesFilter.bind(this))\r\n .sort(this.props.sorter)\r\n const truncatedShown = values\r\n .filter(this.matchesFilter.bind(this))\r\n .sort(this.props.sorter)\r\n // .slice(0, this.props.menuLimit);\r\n\r\n return (\r\n \r\n this.props.moveFilterBoxToTop(this.props.name)}\r\n >\r\n this.setState({open: false})} className=\"pvtCloseX\">\r\n ×\r\n \r\n \r\n

{this.props.name}

\r\n\r\n {/* showMenu ||

(too many values to show)

*/}\r\n\r\n

\r\n \r\n this.setState({\r\n filterText: e.target.value,\r\n })\r\n }\r\n />\r\n
\r\n {\r\n this.props.removeValuesFromFilter(\r\n this.props.name,\r\n Object.keys(this.props.attrValues).filter(\r\n this.matchesFilter.bind(this)\r\n )\r\n )\r\n }}\r\n >\r\n Select {values.length === shown.length ? 'All' : shown.length}\r\n {' '}\r\n \r\n this.props.addValuesToFilter(\r\n this.props.name,\r\n Object.keys(this.props.attrValues).filter(\r\n this.matchesFilter.bind(this)\r\n )\r\n )\r\n }\r\n >\r\n Deselect {values.length === shown.length ? 'All' : shown.length}\r\n \r\n

\r\n
\r\n {truncatedShown.map(x => (\r\n this.toggleValue(x)}\r\n className={x in this.props.valueFilter ? '' : 'selected'}\r\n >\r\n this.selectOnly(e, x)}>\r\n only\r\n \r\n  \r\n\r\n {x === '' ? null : x}\r\n

\r\n ))}\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n toggleFilterBox() {\r\n this.setState({open: !this.state.open});\r\n this.props.moveFilterBoxToTop(this.props.name);\r\n }\r\n\r\n render() {\r\n const filtered =\r\n Object.keys(this.props.valueFilter).length !== 0\r\n ? 'pvtFilteredAttribute'\r\n : '';\r\n return (\r\n
  • \r\n \r\n \r\n {this.props.name}\r\n \r\n \r\n {' '}\r\n ▾\r\n \r\n \r\n\r\n {this.state.open ? this.getFilterBox() : null}\r\n
  • \r\n );\r\n }\r\n}\r\n\r\nDraggableAttribute.defaultProps = {\r\n valueFilter: {},\r\n};\r\n\r\nDraggableAttribute.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n addValuesToFilter: PropTypes.func.isRequired,\r\n removeValuesFromFilter: PropTypes.func.isRequired,\r\n attrValues: PropTypes.objectOf(PropTypes.number).isRequired,\r\n valueFilter: PropTypes.objectOf(PropTypes.bool),\r\n moveFilterBoxToTop: PropTypes.func.isRequired,\r\n sorter: PropTypes.func.isRequired,\r\n menuLimit: PropTypes.number,\r\n zIndex: PropTypes.number,\r\n};\r\n\r\nexport class Dropdown extends React.PureComponent {\r\n render() {\r\n return (\r\n
    \r\n {\r\n e.stopPropagation();\r\n this.props.toggle();\r\n }}\r\n className={\r\n 'pvtDropdownValue pvtDropdownCurrent ' +\r\n (this.props.open ? 'pvtDropdownCurrentOpen' : '')\r\n }\r\n role=\"button\"\r\n >\r\n
    {this.props.open ? '×' : '▾'}
    \r\n {this.props.current ||  }\r\n
    \r\n\r\n {this.props.open && (\r\n
    \r\n {this.props.values.map(r => (\r\n {\r\n e.stopPropagation();\r\n if (this.props.current === r) {\r\n this.props.toggle();\r\n } else {\r\n this.props.setValue(r);\r\n }\r\n }}\r\n className={\r\n 'pvtDropdownValue ' +\r\n (r === this.props.current ? 'pvtDropdownActiveValue' : '')\r\n }\r\n >\r\n {r}\r\n
    \r\n ))}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nclass PivotTableUI extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n unusedOrder: [],\r\n zIndices: {},\r\n maxZIndex: 1000,\r\n openDropdown: false,\r\n attrValues: {},\r\n attrValuesReduced: {},\r\n materializedInput: [],\r\n hideConfiguration: false,\r\n headerClass: '',\r\n stylesHeaders: {}\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.materializeInput(this.props.data);\r\n }\r\n\r\n componentDidUpdate() {\r\n console.log(' componentDidUpdate ')\r\n const pivotData = new PivotData(this.props);\r\n console.log(' componentDidUpdate pivotData ', pivotData)\r\n this.materializeInput(this.props.data);\r\n }\r\n\r\n materializeInput(nextData) {\r\n console.log(' materializeInput nextData ', nextData)\r\n if (this.state.data === nextData) {\r\n return;\r\n }\r\n const newState = {\r\n data: nextData,\r\n attrValues: {},\r\n materializedInput: []\r\n };\r\n let recordsProcessed = 0;\r\n PivotData.forEachRecord(\r\n newState.data,\r\n this.props.derivedAttributes,\r\n function(record) {\r\n newState.materializedInput.push(record);\r\n for (const attr of Object.keys(record)) {\r\n if (!(attr in newState.attrValues)) {\r\n newState.attrValues[attr] = {};\r\n if (recordsProcessed > 0) {\r\n newState.attrValues[attr].null = recordsProcessed;\r\n }\r\n }\r\n }\r\n for (const attr in newState.attrValues) {\r\n const value = attr in record ? record[attr] : 'null';\r\n if (!(value in newState.attrValues[attr])) {\r\n newState.attrValues[attr][value] = 0;\r\n }\r\n newState.attrValues[attr][value]++;\r\n }\r\n recordsProcessed++;\r\n }\r\n );\r\n console.log(' newState materializedInput ', newState.materializedInput)\r\n console.log(' newState derivedAttributes ', this.props.derivedAttributes)\r\n console.log(' newState attrValues ', newState.attrValues)\r\n this.setState(newState);\r\n }\r\n\r\n sendPropUpdate(command) {\r\n this.props.onChange(update(this.props, command));\r\n }\r\n\r\n propUpdater(key) {\r\n return value => this.sendPropUpdate({[key]: {$set: value}});\r\n }\r\n\r\n setValuesInFilter(attribute, values) {\r\n this.sendPropUpdate({\r\n valueFilter: {\r\n [attribute]: {\r\n $set: values.reduce((r, v) => {\r\n r[v] = true;\r\n return r;\r\n }, {}),\r\n },\r\n },\r\n });\r\n }\r\n\r\n addValuesToFilter(attribute, values) {\r\n if (attribute in this.props.valueFilter) {\r\n this.sendPropUpdate({\r\n valueFilter: {\r\n [attribute]: values.reduce((r, v) => {\r\n r[v] = {$set: true};\r\n return r;\r\n }, {}),\r\n },\r\n });\r\n } else {\r\n this.setValuesInFilter(attribute, values);\r\n }\r\n }\r\n\r\n removeValuesFromFilter(attribute, values) {\r\n if (!this.props.valueFilter[attribute]) {\r\n return\r\n }\r\n this.sendPropUpdate({\r\n valueFilter: {[attribute]: {$unset: values}},\r\n });\r\n }\r\n\r\n moveFilterBoxToTop(attribute) {\r\n this.setState(\r\n update(this.state, {\r\n maxZIndex: {$set: this.state.maxZIndex + 1},\r\n zIndices: {[attribute]: {$set: this.state.maxZIndex + 1}},\r\n })\r\n );\r\n }\r\n\r\n isOpen(dropdown) {\r\n return this.state.openDropdown === dropdown;\r\n }\r\n\r\n makeDnDCell(items, onChange, classes) {\r\n return (\r\n \r\n {items.map(x => (\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const numValsAllowed =\r\n this.props.aggregators[this.props.aggregatorName]([])().numInputs || 0;\r\n\r\n const aggregatorCellOutlet = this.props.aggregators[\r\n this.props.aggregatorName\r\n ]([])().outlet;\r\n\r\n const rendererName =\r\n this.props.rendererName in this.props.renderers\r\n ? this.props.rendererName\r\n : Object.keys(this.props.renderers)[0];\r\n\r\n const rendererCell = (\r\n \r\n \r\n this.setState({\r\n openDropdown: this.isOpen('renderer') ? false : 'renderer',\r\n })\r\n }\r\n setValue={this.propUpdater('rendererName')}\r\n />\r\n \r\n );\r\n\r\n const sortIcons = {\r\n key_a_to_z: {\r\n rowSymbol: '↕',\r\n colSymbol: '↔',\r\n next: 'value_a_to_z',\r\n },\r\n value_a_to_z: {\r\n rowSymbol: '↓',\r\n colSymbol: '→',\r\n next: 'value_z_to_a',\r\n },\r\n value_z_to_a: {rowSymbol: '↑', colSymbol: '←', next: 'key_a_to_z'},\r\n };\r\n\r\n const aggregatorCell = (\r\n \r\n \r\n this.setState({\r\n openDropdown: this.isOpen('aggregators') ? false : 'aggregators',\r\n })\r\n }\r\n setValue={this.propUpdater('aggregatorName')}\r\n />\r\n \r\n this.propUpdater('rowOrder')(sortIcons[this.props.rowOrder].next)\r\n }\r\n >\r\n {sortIcons[this.props.rowOrder].rowSymbol}\r\n \r\n \r\n this.propUpdater('colOrder')(sortIcons[this.props.colOrder].next)\r\n }\r\n >\r\n {sortIcons[this.props.colOrder].colSymbol}\r\n \r\n {numValsAllowed > 0 &&
    }\r\n {new Array(numValsAllowed).fill().map((n, i) => [\r\n \r\n !this.props.hiddenAttributes.includes(e) &&\r\n !this.props.hiddenFromAggregators.includes(e)\r\n )}\r\n open={this.isOpen(`val${i}`)}\r\n zIndex={this.isOpen(`val${i}`) ? this.state.maxZIndex + 1 : 1}\r\n toggle={() =>\r\n this.setState({\r\n openDropdown: this.isOpen(`val${i}`) ? false : `val${i}`,\r\n })\r\n }\r\n setValue={value =>\r\n this.sendPropUpdate({\r\n vals: {$splice: [[i, 1, value]]},\r\n })\r\n }\r\n />,\r\n i + 1 !== numValsAllowed ?
    : null,\r\n ])}\r\n {aggregatorCellOutlet && aggregatorCellOutlet(this.props.data)}\r\n \r\n );\r\n\r\n const unusedAttrs = Object.keys(this.state.attrValues)\r\n .filter(\r\n e =>\r\n !this.props.rows.includes(e) &&\r\n !this.props.cols.includes(e) &&\r\n !this.props.hiddenAttributes.includes(e) &&\r\n !this.props.hiddenFromDragDrop.includes(e)\r\n )\r\n .sort(sortAs(this.state.unusedOrder));\r\n\r\n const unusedLength = unusedAttrs.reduce((r, e) => r + e.length, 0);\r\n const horizUnused = unusedLength < this.props.unusedOrientationCutoff;\r\n\r\n const unusedAttrsCell = this.makeDnDCell(\r\n unusedAttrs,\r\n order => this.setState({unusedOrder: order}),\r\n `pvtAxisContainer pvtUnused ${\r\n horizUnused ? 'pvtHorizList' : 'pvtVertList'\r\n }`\r\n );\r\n\r\n const colAttrs = this.props.cols.filter(\r\n e =>\r\n !this.props.hiddenAttributes.includes(e) &&\r\n !this.props.hiddenFromDragDrop.includes(e)\r\n );\r\n\r\n const colAttrsCell = this.makeDnDCell(\r\n colAttrs,\r\n this.propUpdater('cols'),\r\n 'pvtAxisContainer pvtHorizList pvtCols'\r\n );\r\n\r\n const rowAttrs = this.props.rows.filter(\r\n e =>\r\n !this.props.hiddenAttributes.includes(e) &&\r\n !this.props.hiddenFromDragDrop.includes(e)\r\n );\r\n const rowAttrsCell = this.makeDnDCell(\r\n rowAttrs,\r\n this.propUpdater('rows'),\r\n 'pvtAxisContainer pvtVertList pvtRows'\r\n );\r\n const outputCell = (\r\n \r\n \r\n \r\n );\r\n\r\n if (this.props.hideConfiguration) {\r\n return (\r\n \r\n this.setState({openDropdown: false})}>\r\n \r\n {outputCell}\r\n \r\n \r\n
    \r\n );\r\n }\r\n\r\n if (horizUnused) {\r\n return (\r\n \r\n { this.props.hideConfiguration &&\r\n this.setState({openDropdown: false})}>\r\n \r\n {outputCell}\r\n \r\n \r\n }\r\n { !this.props.hideConfiguration &&\r\n this.setState({openDropdown: false})}>\r\n \r\n {rendererCell}\r\n {unusedAttrsCell}\r\n \r\n \r\n {aggregatorCell}\r\n {colAttrsCell}\r\n \r\n \r\n {rowAttrsCell}\r\n {outputCell}\r\n \r\n \r\n }\r\n
    \r\n );\r\n }\r\n\r\n return (\r\n \r\n { this.props.hideConfiguration &&\r\n this.setState({openDropdown: false})}>\r\n \r\n {outputCell}\r\n \r\n \r\n }\r\n { !this.props.hideConfiguration &&\r\n this.setState({openDropdown: false})}>\r\n \r\n {rendererCell}\r\n {aggregatorCell}\r\n {colAttrsCell}\r\n \r\n \r\n {unusedAttrsCell}\r\n {rowAttrsCell}\r\n {outputCell}\r\n \r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nPivotTableUI.propTypes = Object.assign({}, PivotTable.propTypes, {\r\n onChange: PropTypes.func.isRequired,\r\n hiddenAttributes: PropTypes.arrayOf(PropTypes.string),\r\n hiddenFromAggregators: PropTypes.arrayOf(PropTypes.string),\r\n hiddenFromDragDrop: PropTypes.arrayOf(PropTypes.string),\r\n unusedOrientationCutoff: PropTypes.number,\r\n menuLimit: PropTypes.number,\r\n hideConfiguration: PropTypes.bool,\r\n headerClass: PropTypes.string,\r\n stylesHeaders: PropTypes.object\r\n});\r\n\r\nPivotTableUI.defaultProps = Object.assign({}, PivotTable.defaultProps, {\r\n hiddenAttributes: [],\r\n hiddenFromAggregators: [],\r\n hiddenFromDragDrop: [],\r\n unusedOrientationCutoff: 85,\r\n menuLimit: 500,\r\n hideConfiguration: true\r\n});\r\n\r\nexport default PivotTableUI;\r\n"]} \ No newline at end of file +{"version":3,"sources":["../src/PivotTableUI.jsx"],"names":["DraggableAttribute","props","state","open","filterText","value","valueFilter","removeValuesFromFilter","name","addValuesToFilter","x","toLowerCase","trim","includes","e","stopPropagation","setValuesInFilter","Object","keys","attrValues","filter","y","console","log","values","shown","matchesFilter","bind","sort","sorter","truncatedShown","display","cursor","zIndex","moveFilterBoxToTop","setState","target","length","map","toggleValue","selectOnly","filtered","toggleFilterBox","getFilterBox","React","Component","defaultProps","propTypes","PropTypes","string","isRequired","func","objectOf","number","bool","menuLimit","Dropdown","toggle","current","r","setValue","PureComponent","PivotTableUI","unusedOrder","zIndices","maxZIndex","openDropdown","attrValuesReduced","materializedInput","hideConfiguration","headerClass","stylesHeaders","materializeInput","data","filteredData","row","_valuefilter","keysFilter","forEach","keyF","valsFilter","valF","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","object"],"mappings":"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","file":"PivotTableUI.js","sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport update from 'immutability-helper';\r\nimport {PivotData, sortAs, getSort} from './Utilities';\r\nimport PivotTable from './PivotTable';\r\nimport Sortable from 'react-sortablejs';\r\nimport Draggable from 'react-draggable';\r\n\r\n/* eslint-disable react/prop-types */\r\n// eslint can't see inherited propTypes!\r\n\r\nexport class DraggableAttribute extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {open: false, filterText: ''};\r\n }\r\n\r\n toggleValue(value) {\r\n if (value in this.props.valueFilter) {\r\n this.props.removeValuesFromFilter(this.props.name, [value]);\r\n } else {\r\n this.props.addValuesToFilter(this.props.name, [value]);\r\n }\r\n }\r\n\r\n matchesFilter(x) {\r\n return x\r\n .toLowerCase()\r\n .trim()\r\n .includes(this.state.filterText.toLowerCase().trim());\r\n }\r\n\r\n selectOnly(e, value) {\r\n e.stopPropagation();\r\n this.props.setValuesInFilter(\r\n this.props.name,\r\n Object.keys(this.props.attrValues).filter(y => y !== value)\r\n );\r\n }\r\n\r\n getFilterBox() {\r\n // const showMenu = Object.keys(this.props.attrValues).length < this.props.menuLimit;\r\n console.log(' this.props.attrValues ', this.props.attrValues)\r\n const values = Object.keys(this.props.attrValues);\r\n const shown = values\r\n .filter(this.matchesFilter.bind(this))\r\n .sort(this.props.sorter)\r\n const truncatedShown = values\r\n .filter(this.matchesFilter.bind(this))\r\n .sort(this.props.sorter)\r\n // .slice(0, this.props.menuLimit);\r\n\r\n return (\r\n \r\n this.props.moveFilterBoxToTop(this.props.name)}\r\n >\r\n this.setState({open: false})} className=\"pvtCloseX\">\r\n ×\r\n \r\n \r\n

    {this.props.name}

    \r\n\r\n {/* showMenu ||

    (too many values to show)

    */}\r\n\r\n

    \r\n \r\n this.setState({\r\n filterText: e.target.value,\r\n })\r\n }\r\n />\r\n
    \r\n {\r\n this.props.removeValuesFromFilter(\r\n this.props.name,\r\n Object.keys(this.props.attrValues).filter(\r\n this.matchesFilter.bind(this)\r\n )\r\n )\r\n }}\r\n >\r\n Select {values.length === shown.length ? 'All' : shown.length}\r\n {' '}\r\n \r\n this.props.addValuesToFilter(\r\n this.props.name,\r\n Object.keys(this.props.attrValues).filter(\r\n this.matchesFilter.bind(this)\r\n )\r\n )\r\n }\r\n >\r\n Deselect {values.length === shown.length ? 'All' : shown.length}\r\n \r\n

    \r\n
    \r\n {truncatedShown.map(x => (\r\n this.toggleValue(x)}\r\n className={x in this.props.valueFilter ? '' : 'selected'}\r\n >\r\n this.selectOnly(e, x)}>\r\n only\r\n \r\n  \r\n\r\n {x === '' ? null : x}\r\n

    \r\n ))}\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n toggleFilterBox() {\r\n this.setState({open: !this.state.open});\r\n this.props.moveFilterBoxToTop(this.props.name);\r\n }\r\n\r\n render() {\r\n const filtered =\r\n Object.keys(this.props.valueFilter).length !== 0\r\n ? 'pvtFilteredAttribute'\r\n : '';\r\n return (\r\n
  • \r\n \r\n \r\n {this.props.name}\r\n \r\n \r\n {' '}\r\n ▾\r\n \r\n \r\n\r\n {this.state.open ? this.getFilterBox() : null}\r\n
  • \r\n );\r\n }\r\n}\r\n\r\nDraggableAttribute.defaultProps = {\r\n valueFilter: {},\r\n};\r\n\r\nDraggableAttribute.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n addValuesToFilter: PropTypes.func.isRequired,\r\n removeValuesFromFilter: PropTypes.func.isRequired,\r\n attrValues: PropTypes.objectOf(PropTypes.number).isRequired,\r\n valueFilter: PropTypes.objectOf(PropTypes.bool),\r\n moveFilterBoxToTop: PropTypes.func.isRequired,\r\n sorter: PropTypes.func.isRequired,\r\n menuLimit: PropTypes.number,\r\n zIndex: PropTypes.number,\r\n};\r\n\r\nexport class Dropdown extends React.PureComponent {\r\n render() {\r\n return (\r\n
    \r\n {\r\n e.stopPropagation();\r\n this.props.toggle();\r\n }}\r\n className={\r\n 'pvtDropdownValue pvtDropdownCurrent ' +\r\n (this.props.open ? 'pvtDropdownCurrentOpen' : '')\r\n }\r\n role=\"button\"\r\n >\r\n
    {this.props.open ? '×' : '▾'}
    \r\n {this.props.current ||  }\r\n
    \r\n\r\n {this.props.open && (\r\n
    \r\n {this.props.values.map(r => (\r\n {\r\n e.stopPropagation();\r\n if (this.props.current === r) {\r\n this.props.toggle();\r\n } else {\r\n this.props.setValue(r);\r\n }\r\n }}\r\n className={\r\n 'pvtDropdownValue ' +\r\n (r === this.props.current ? 'pvtDropdownActiveValue' : '')\r\n }\r\n >\r\n {r}\r\n
    \r\n ))}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nclass PivotTableUI extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n unusedOrder: [],\r\n zIndices: {},\r\n maxZIndex: 1000,\r\n openDropdown: false,\r\n attrValues: {},\r\n attrValuesReduced: {},\r\n materializedInput: [],\r\n hideConfiguration: false,\r\n headerClass: '',\r\n stylesHeaders: {}\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.materializeInput(this.props.data);\r\n }\r\n\r\n componentDidUpdate() {\r\n console.log(' componentDidUpdate ')\r\n console.log(' componentDidUpdate this.props.data ', this.props.data)\r\n console.log(' componentDidUpdate state ', this.state)\r\n const filteredData = this.props.data.filter((row) => {\r\n const _valuefilter = this.props.valueFilter\r\n if (typeof _valuefilter !== 'undefined' && _valuefilter !== null) {\r\n const keysFilter = Object.keys(_valuefilter)\r\n keysFilter.forEach((keyF) => {\r\n const valsFilter = Object.keys(_valuefilter[keyF])\r\n valsFilter.forEach((valF) => {\r\n if (row[keyF] === valF) {\r\n return false\r\n }\r\n })\r\n })\r\n }\r\n return true\r\n })\r\n console.log(' componentDidUpdate filteredData ', filteredData)\r\n this.materializeInput(this.props.data);\r\n }\r\n\r\n materializeInput(nextData) {\r\n if (this.state.data === nextData) {\r\n return;\r\n }\r\n const newState = {\r\n data: nextData,\r\n attrValues: {},\r\n materializedInput: []\r\n };\r\n let recordsProcessed = 0;\r\n PivotData.forEachRecord(\r\n newState.data,\r\n this.props.derivedAttributes,\r\n function(record) {\r\n newState.materializedInput.push(record);\r\n for (const attr of Object.keys(record)) {\r\n if (!(attr in newState.attrValues)) {\r\n newState.attrValues[attr] = {};\r\n if (recordsProcessed > 0) {\r\n newState.attrValues[attr].null = recordsProcessed;\r\n }\r\n }\r\n }\r\n for (const attr in newState.attrValues) {\r\n const value = attr in record ? record[attr] : 'null';\r\n if (!(value in newState.attrValues[attr])) {\r\n newState.attrValues[attr][value] = 0;\r\n }\r\n newState.attrValues[attr][value]++;\r\n }\r\n recordsProcessed++;\r\n }\r\n );\r\n console.log(' newState attrValues ', newState.attrValues)\r\n this.setState(newState);\r\n }\r\n\r\n sendPropUpdate(command) {\r\n this.props.onChange(update(this.props, command));\r\n }\r\n\r\n propUpdater(key) {\r\n return value => this.sendPropUpdate({[key]: {$set: value}});\r\n }\r\n\r\n setValuesInFilter(attribute, values) {\r\n this.sendPropUpdate({\r\n valueFilter: {\r\n [attribute]: {\r\n $set: values.reduce((r, v) => {\r\n r[v] = true;\r\n return r;\r\n }, {}),\r\n },\r\n },\r\n });\r\n }\r\n\r\n addValuesToFilter(attribute, values) {\r\n if (attribute in this.props.valueFilter) {\r\n this.sendPropUpdate({\r\n valueFilter: {\r\n [attribute]: values.reduce((r, v) => {\r\n r[v] = {$set: true};\r\n return r;\r\n }, {}),\r\n },\r\n });\r\n } else {\r\n this.setValuesInFilter(attribute, values);\r\n }\r\n }\r\n\r\n removeValuesFromFilter(attribute, values) {\r\n if (!this.props.valueFilter[attribute]) {\r\n return\r\n }\r\n this.sendPropUpdate({\r\n valueFilter: {[attribute]: {$unset: values}},\r\n });\r\n }\r\n\r\n moveFilterBoxToTop(attribute) {\r\n this.setState(\r\n update(this.state, {\r\n maxZIndex: {$set: this.state.maxZIndex + 1},\r\n zIndices: {[attribute]: {$set: this.state.maxZIndex + 1}},\r\n })\r\n );\r\n }\r\n\r\n isOpen(dropdown) {\r\n return this.state.openDropdown === dropdown;\r\n }\r\n\r\n makeDnDCell(items, onChange, classes) {\r\n return (\r\n \r\n {items.map(x => (\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const numValsAllowed =\r\n this.props.aggregators[this.props.aggregatorName]([])().numInputs || 0;\r\n\r\n const aggregatorCellOutlet = this.props.aggregators[\r\n this.props.aggregatorName\r\n ]([])().outlet;\r\n\r\n const rendererName =\r\n this.props.rendererName in this.props.renderers\r\n ? this.props.rendererName\r\n : Object.keys(this.props.renderers)[0];\r\n\r\n const rendererCell = (\r\n \r\n \r\n this.setState({\r\n openDropdown: this.isOpen('renderer') ? false : 'renderer',\r\n })\r\n }\r\n setValue={this.propUpdater('rendererName')}\r\n />\r\n \r\n );\r\n\r\n const sortIcons = {\r\n key_a_to_z: {\r\n rowSymbol: '↕',\r\n colSymbol: '↔',\r\n next: 'value_a_to_z',\r\n },\r\n value_a_to_z: {\r\n rowSymbol: '↓',\r\n colSymbol: '→',\r\n next: 'value_z_to_a',\r\n },\r\n value_z_to_a: {rowSymbol: '↑', colSymbol: '←', next: 'key_a_to_z'},\r\n };\r\n\r\n const aggregatorCell = (\r\n \r\n \r\n this.setState({\r\n openDropdown: this.isOpen('aggregators') ? false : 'aggregators',\r\n })\r\n }\r\n setValue={this.propUpdater('aggregatorName')}\r\n />\r\n \r\n this.propUpdater('rowOrder')(sortIcons[this.props.rowOrder].next)\r\n }\r\n >\r\n {sortIcons[this.props.rowOrder].rowSymbol}\r\n \r\n \r\n this.propUpdater('colOrder')(sortIcons[this.props.colOrder].next)\r\n }\r\n >\r\n {sortIcons[this.props.colOrder].colSymbol}\r\n \r\n {numValsAllowed > 0 &&
    }\r\n {new Array(numValsAllowed).fill().map((n, i) => [\r\n \r\n !this.props.hiddenAttributes.includes(e) &&\r\n !this.props.hiddenFromAggregators.includes(e)\r\n )}\r\n open={this.isOpen(`val${i}`)}\r\n zIndex={this.isOpen(`val${i}`) ? this.state.maxZIndex + 1 : 1}\r\n toggle={() =>\r\n this.setState({\r\n openDropdown: this.isOpen(`val${i}`) ? false : `val${i}`,\r\n })\r\n }\r\n setValue={value =>\r\n this.sendPropUpdate({\r\n vals: {$splice: [[i, 1, value]]},\r\n })\r\n }\r\n />,\r\n i + 1 !== numValsAllowed ?
    : null,\r\n ])}\r\n {aggregatorCellOutlet && aggregatorCellOutlet(this.props.data)}\r\n \r\n );\r\n\r\n const unusedAttrs = Object.keys(this.state.attrValues)\r\n .filter(\r\n e =>\r\n !this.props.rows.includes(e) &&\r\n !this.props.cols.includes(e) &&\r\n !this.props.hiddenAttributes.includes(e) &&\r\n !this.props.hiddenFromDragDrop.includes(e)\r\n )\r\n .sort(sortAs(this.state.unusedOrder));\r\n\r\n const unusedLength = unusedAttrs.reduce((r, e) => r + e.length, 0);\r\n const horizUnused = unusedLength < this.props.unusedOrientationCutoff;\r\n\r\n const unusedAttrsCell = this.makeDnDCell(\r\n unusedAttrs,\r\n order => this.setState({unusedOrder: order}),\r\n `pvtAxisContainer pvtUnused ${\r\n horizUnused ? 'pvtHorizList' : 'pvtVertList'\r\n }`\r\n );\r\n\r\n const colAttrs = this.props.cols.filter(\r\n e =>\r\n !this.props.hiddenAttributes.includes(e) &&\r\n !this.props.hiddenFromDragDrop.includes(e)\r\n );\r\n\r\n const colAttrsCell = this.makeDnDCell(\r\n colAttrs,\r\n this.propUpdater('cols'),\r\n 'pvtAxisContainer pvtHorizList pvtCols'\r\n );\r\n\r\n const rowAttrs = this.props.rows.filter(\r\n e =>\r\n !this.props.hiddenAttributes.includes(e) &&\r\n !this.props.hiddenFromDragDrop.includes(e)\r\n );\r\n const rowAttrsCell = this.makeDnDCell(\r\n rowAttrs,\r\n this.propUpdater('rows'),\r\n 'pvtAxisContainer pvtVertList pvtRows'\r\n );\r\n const outputCell = (\r\n \r\n \r\n \r\n );\r\n\r\n if (this.props.hideConfiguration) {\r\n return (\r\n \r\n this.setState({openDropdown: false})}>\r\n \r\n {outputCell}\r\n \r\n \r\n
    \r\n );\r\n }\r\n\r\n if (horizUnused) {\r\n return (\r\n \r\n { this.props.hideConfiguration &&\r\n this.setState({openDropdown: false})}>\r\n \r\n {outputCell}\r\n \r\n \r\n }\r\n { !this.props.hideConfiguration &&\r\n this.setState({openDropdown: false})}>\r\n \r\n {rendererCell}\r\n {unusedAttrsCell}\r\n \r\n \r\n {aggregatorCell}\r\n {colAttrsCell}\r\n \r\n \r\n {rowAttrsCell}\r\n {outputCell}\r\n \r\n \r\n }\r\n
    \r\n );\r\n }\r\n\r\n return (\r\n \r\n { this.props.hideConfiguration &&\r\n this.setState({openDropdown: false})}>\r\n \r\n {outputCell}\r\n \r\n \r\n }\r\n { !this.props.hideConfiguration &&\r\n this.setState({openDropdown: false})}>\r\n \r\n {rendererCell}\r\n {aggregatorCell}\r\n {colAttrsCell}\r\n \r\n \r\n {unusedAttrsCell}\r\n {rowAttrsCell}\r\n {outputCell}\r\n \r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nPivotTableUI.propTypes = Object.assign({}, PivotTable.propTypes, {\r\n onChange: PropTypes.func.isRequired,\r\n hiddenAttributes: PropTypes.arrayOf(PropTypes.string),\r\n hiddenFromAggregators: PropTypes.arrayOf(PropTypes.string),\r\n hiddenFromDragDrop: PropTypes.arrayOf(PropTypes.string),\r\n unusedOrientationCutoff: PropTypes.number,\r\n menuLimit: PropTypes.number,\r\n hideConfiguration: PropTypes.bool,\r\n headerClass: PropTypes.string,\r\n stylesHeaders: PropTypes.object\r\n});\r\n\r\nPivotTableUI.defaultProps = Object.assign({}, PivotTable.defaultProps, {\r\n hiddenAttributes: [],\r\n hiddenFromAggregators: [],\r\n hiddenFromDragDrop: [],\r\n unusedOrientationCutoff: 85,\r\n menuLimit: 500,\r\n hideConfiguration: true\r\n});\r\n\r\nexport default PivotTableUI;\r\n"]} \ No newline at end of file diff --git a/TableRenderers.js b/TableRenderers.js index 37ab3d5..9e79263 100644 --- a/TableRenderers.js +++ b/TableRenderers.js @@ -86,13 +86,10 @@ function makeRenderer() { var _this2 = this; var pivotData = new _Utilities.PivotData(this.props); - console.log(' TableRenderer pivotData ', pivotData); var colAttrs = pivotData.props.cols; var rowAttrs = pivotData.props.rows; var rowKeys = pivotData.getRowKeys(); - console.log(' TableRenderer rowKeys ', rowKeys); var colKeys = pivotData.getColKeys(); - console.log(' TableRenderer colKeys ', colKeys); var grandTotalAggregator = pivotData.getAggregator([], []); var getStylesHeaders = function getStylesHeaders() { diff --git a/TableRenderers.js.map b/TableRenderers.js.map index 3fa6e00..4e0ebf0 100644 --- a/TableRenderers.js.map +++ b/TableRenderers.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/TableRenderers.jsx"],"names":["spanSize","arr","i","j","x","asc","end","noDraw","len","length","asc1","end1","stop","redColorScaleGenerator","values","min","Math","apply","max","nonRed","round","backgroundColor","makeRenderer","opts","TableRenderer","pivotData","PivotData","props","console","log","colAttrs","cols","rowAttrs","rows","rowKeys","getRowKeys","colKeys","getColKeys","grandTotalAggregator","getAggregator","getStylesHeaders","stylesHeaders","getHeaderClass","headerClass","valueCellColors","rowTotalColors","colTotalColors","heatmapMode","colorScaleGenerator","tableColorScaleGenerator","rowTotalValues","map","value","colTotalValues","allValues","push","r","c","colorScale","v","rowColorScales","rowValues","colColorScales","colValues","getClickHandler","tableOptions","clickCallback","filters","Object","keys","attr","e","isNotNullish","val","getFinalFormat","objCol","type","format","includes","number_decimals","numberDecimals","parseInt","resultDecimals","isNaN","counter","replace","getLocaleConfig","delimiters","thousands","delimiter_thousands","decimal","delimiter_decimal","abbreviations","thousand","million","billion","trillion","currency","symbol","currency_symbol","getFormatedValue","aggregator","valToFormat","resultValue","keyColumnaCalculo","vals","aggregatorName","functions","formatedValue","headersDefinitions","_definition","startsWith","chartFunctions","getValueClass","objItem","classItem","colKey","rowKey","totalAggregator","txt","React","PureComponent","defaultProps","propTypes","PropTypes","func","object","TSVExportRenderer","headerRow","join","result","row","unshift","width","window","innerWidth","height","innerHeight","Table"],"mappings":"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","file":"TableRenderers.js","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) {\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 = 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\nfunction makeRenderer(opts = {}) {\r\n class TableRenderer extends React.PureComponent {\r\n render() {\r\n const pivotData = new PivotData(this.props);\r\n console.log(' TableRenderer pivotData ', pivotData)\r\n const colAttrs = pivotData.props.cols;\r\n const rowAttrs = pivotData.props.rows;\r\n const rowKeys = pivotData.getRowKeys();\r\n console.log(' TableRenderer rowKeys ', rowKeys)\r\n const colKeys = pivotData.getColKeys();\r\n console.log(' TableRenderer colKeys ', colKeys)\r\n const grandTotalAggregator = pivotData.getAggregator([], []);\r\n\r\n const getStylesHeaders = () => { return this.props.stylesHeaders }\r\n const getHeaderClass = () => { return this.props.headerClass }\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 isNotNullish = (val) => {\r\n if (typeof val !== 'undefined' && val !== null) {\r\n return true\r\n }\r\n return false\r\n }\r\n \r\n const getFinalFormat = (objCol) => {\r\n if (objCol.type !== 'number' || (isNotNullish(objCol.format) && objCol.format.includes('Q'))) {\r\n return objCol.format\r\n }\r\n if (objCol.format.includes('.')) {\r\n if (isNotNullish(objCol.number_decimals)) {\r\n const numberDecimals = parseInt(objCol.number_decimals)\r\n let resultDecimals = ''\r\n if (numberDecimals && !isNaN(numberDecimals) && numberDecimals > 0) {\r\n let counter = 0\r\n resultDecimals = '.'\r\n while (counter < numberDecimals) {\r\n resultDecimals = `${resultDecimals}0`\r\n counter += 1\r\n }\r\n }\r\n return objCol.format.replace('.00', resultDecimals)\r\n }\r\n return objCol.format\r\n }\r\n return objCol.format\r\n }\r\n \r\n const getLocaleConfig = (objCol) => {\r\n if (objCol.type !== 'number' || (isNotNullish(objCol.format) && objCol.format.includes('Q'))) {\r\n return null\r\n }\r\n return {\r\n delimiters: {\r\n thousands: isNotNullish(objCol.delimiter_thousands) ? objCol.delimiter_thousands : ',',\r\n decimal: isNotNullish(objCol.delimiter_decimal) ? objCol.delimiter_decimal : '.'\r\n },\r\n abbreviations: {\r\n thousand: 'k',\r\n million: 'm',\r\n billion: 'b',\r\n trillion: 't'\r\n },\r\n currency: {\r\n symbol: isNotNullish(objCol.currency_symbol) ? objCol.currency_symbol : '$'\r\n }\r\n }\r\n }\r\n\r\n const getFormatedValue = (aggregator) => {\r\n const valToFormat = aggregator.value()\r\n let resultValue = aggregator.format(valToFormat)\r\n const keyColumnaCalculo = isNotNullish(this.props.vals) && this.props.vals.length ? this.props.vals[0] : null\r\n if (this.props.aggregatorName === 'Conteo') {\r\n resultValue = isNotNullish(this.props.functions) ? this.props.functions.formatedValue(valToFormat, '0,0', 'number', false) : resultValue\r\n } else if (isNotNullish(keyColumnaCalculo) && isNotNullish(this.props.headersDefinitions)) {\r\n const _definition = this.props.headersDefinitions[keyColumnaCalculo]\r\n if (isNotNullish(_definition) && isNotNullish(_definition.value)) {\r\n if (_definition.value.startsWith('count_') || _definition.value.startsWith('countd_')) {\r\n resultValue = isNotNullish(this.props.functions) ? this.props.functions.formatedValue(valToFormat, '0,0', 'number', false) : resultValue\r\n } else if (isNotNullish(_definition.format) && _definition.format !== '') {\r\n resultValue = isNotNullish(this.props.chartFunctions) ?\r\n this.props.chartFunctions.formatedValue(valToFormat, getFinalFormat(_definition), _definition.type, false, null, getLocaleConfig(_definition)) :\r\n resultValue\r\n }\r\n }\r\n } \r\n return resultValue\r\n }\r\n\r\n const getValueClass = (aggregator) => {\r\n const valToFormat = aggregator.value()\r\n const keyColumnaCalculo = isNotNullish(this.props.vals) && this.props.vals.length ? this.props.vals[0] : null\r\n if (isNotNullish(keyColumnaCalculo) && isNotNullish(this.props.headersDefinitions)) {\r\n const _definition = this.props.headersDefinitions[keyColumnaCalculo]\r\n const objItem = {}\r\n if (isNotNullish(_definition) && isNotNullish(_definition.value) && isNotNullish(_definition.classItem) && typeof _definition.classItem === 'function') {\r\n objItem[_definition.value] = valToFormat\r\n objItem[`rv_${_definition.value}`] = valToFormat\r\n return _definition.classItem(objItem, true)\r\n }\r\n } \r\n return ''\r\n }\r\n\r\n return (\r\n \r\n \r\n {colAttrs.map(function(c, j) {\r\n return (\r\n \r\n {j === 0 && rowAttrs.length !== 0 && (\r\n \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 \r\n {colKey[j]}\r\n \r\n );\r\n })}\r\n\r\n {j === 0 && (\r\n \r\n Total\r\n \r\n )}\r\n \r\n );\r\n })}\r\n\r\n {rowAttrs.length !== 0 && (\r\n \r\n {rowAttrs.map(function(r, i) {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n {rowKeys.map(function(rowKey, i) {\r\n const totalAggregator = pivotData.getAggregator(rowKey, []);\r\n return (\r\n \r\n {rowKey.map(function(txt, j) {\r\n const x = spanSize(rowKeys, i, j);\r\n if (x === -1) {\r\n return null;\r\n }\r\n return (\r\n \r\n {txt}\r\n \r\n );\r\n })}\r\n {colKeys.map(function(colKey, j) {\r\n const aggregator = pivotData.getAggregator(rowKey, colKey);\r\n return (\r\n \r\n { getFormatedValue(aggregator) }\r\n \r\n );\r\n })}\r\n \r\n {/* totalAggregator.format(totalAggregator.value()) */}\r\n { getFormatedValue(totalAggregator) }\r\n \r\n \r\n );\r\n })}\r\n\r\n \r\n \r\n Total\r\n \r\n\r\n {colKeys.map(function(colKey, i) {\r\n const totalAggregator = pivotData.getAggregator([], colKey);\r\n return (\r\n \r\n {/* totalAggregator.format(totalAggregator.value()) */}\r\n { getFormatedValue(totalAggregator) }\r\n \r\n );\r\n })}\r\n\r\n \r\n {/* grandTotalAggregator.format(grandTotalAggregator.value()) */}\r\n { getFormatedValue(grandTotalAggregator) }\r\n \r\n \r\n \r\n
    \r\n )}\r\n {c}
    \r\n {r}\r\n \r\n {colAttrs.length === 0 ? 'Total' : null}\r\n
    \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 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 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"]} \ No newline at end of file +{"version":3,"sources":["../src/TableRenderers.jsx"],"names":["spanSize","arr","i","j","x","asc","end","noDraw","len","length","asc1","end1","stop","redColorScaleGenerator","values","min","Math","apply","max","nonRed","round","backgroundColor","makeRenderer","opts","TableRenderer","pivotData","PivotData","props","colAttrs","cols","rowAttrs","rows","rowKeys","getRowKeys","colKeys","getColKeys","grandTotalAggregator","getAggregator","getStylesHeaders","stylesHeaders","getHeaderClass","headerClass","valueCellColors","rowTotalColors","colTotalColors","heatmapMode","colorScaleGenerator","tableColorScaleGenerator","rowTotalValues","map","value","colTotalValues","allValues","push","r","c","colorScale","v","rowColorScales","rowValues","colColorScales","colValues","getClickHandler","tableOptions","clickCallback","filters","Object","keys","attr","e","isNotNullish","val","getFinalFormat","objCol","type","format","includes","number_decimals","numberDecimals","parseInt","resultDecimals","isNaN","counter","replace","getLocaleConfig","delimiters","thousands","delimiter_thousands","decimal","delimiter_decimal","abbreviations","thousand","million","billion","trillion","currency","symbol","currency_symbol","getFormatedValue","aggregator","valToFormat","resultValue","keyColumnaCalculo","vals","aggregatorName","functions","formatedValue","headersDefinitions","_definition","startsWith","chartFunctions","getValueClass","objItem","classItem","colKey","rowKey","totalAggregator","txt","React","PureComponent","defaultProps","propTypes","PropTypes","func","object","TSVExportRenderer","headerRow","join","result","row","unshift","width","window","innerWidth","height","innerHeight","Table"],"mappings":"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","file":"TableRenderers.js","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) {\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 = 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\nfunction makeRenderer(opts = {}) {\r\n class TableRenderer extends React.PureComponent {\r\n render() {\r\n const pivotData = new PivotData(this.props);\r\n const colAttrs = pivotData.props.cols;\r\n const rowAttrs = pivotData.props.rows;\r\n const rowKeys = pivotData.getRowKeys();\r\n const colKeys = pivotData.getColKeys();\r\n const grandTotalAggregator = pivotData.getAggregator([], []);\r\n\r\n const getStylesHeaders = () => { return this.props.stylesHeaders }\r\n const getHeaderClass = () => { return this.props.headerClass }\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 isNotNullish = (val) => {\r\n if (typeof val !== 'undefined' && val !== null) {\r\n return true\r\n }\r\n return false\r\n }\r\n \r\n const getFinalFormat = (objCol) => {\r\n if (objCol.type !== 'number' || (isNotNullish(objCol.format) && objCol.format.includes('Q'))) {\r\n return objCol.format\r\n }\r\n if (objCol.format.includes('.')) {\r\n if (isNotNullish(objCol.number_decimals)) {\r\n const numberDecimals = parseInt(objCol.number_decimals)\r\n let resultDecimals = ''\r\n if (numberDecimals && !isNaN(numberDecimals) && numberDecimals > 0) {\r\n let counter = 0\r\n resultDecimals = '.'\r\n while (counter < numberDecimals) {\r\n resultDecimals = `${resultDecimals}0`\r\n counter += 1\r\n }\r\n }\r\n return objCol.format.replace('.00', resultDecimals)\r\n }\r\n return objCol.format\r\n }\r\n return objCol.format\r\n }\r\n \r\n const getLocaleConfig = (objCol) => {\r\n if (objCol.type !== 'number' || (isNotNullish(objCol.format) && objCol.format.includes('Q'))) {\r\n return null\r\n }\r\n return {\r\n delimiters: {\r\n thousands: isNotNullish(objCol.delimiter_thousands) ? objCol.delimiter_thousands : ',',\r\n decimal: isNotNullish(objCol.delimiter_decimal) ? objCol.delimiter_decimal : '.'\r\n },\r\n abbreviations: {\r\n thousand: 'k',\r\n million: 'm',\r\n billion: 'b',\r\n trillion: 't'\r\n },\r\n currency: {\r\n symbol: isNotNullish(objCol.currency_symbol) ? objCol.currency_symbol : '$'\r\n }\r\n }\r\n }\r\n\r\n const getFormatedValue = (aggregator) => {\r\n const valToFormat = aggregator.value()\r\n let resultValue = aggregator.format(valToFormat)\r\n const keyColumnaCalculo = isNotNullish(this.props.vals) && this.props.vals.length ? this.props.vals[0] : null\r\n if (this.props.aggregatorName === 'Conteo') {\r\n resultValue = isNotNullish(this.props.functions) ? this.props.functions.formatedValue(valToFormat, '0,0', 'number', false) : resultValue\r\n } else if (isNotNullish(keyColumnaCalculo) && isNotNullish(this.props.headersDefinitions)) {\r\n const _definition = this.props.headersDefinitions[keyColumnaCalculo]\r\n if (isNotNullish(_definition) && isNotNullish(_definition.value)) {\r\n if (_definition.value.startsWith('count_') || _definition.value.startsWith('countd_')) {\r\n resultValue = isNotNullish(this.props.functions) ? this.props.functions.formatedValue(valToFormat, '0,0', 'number', false) : resultValue\r\n } else if (isNotNullish(_definition.format) && _definition.format !== '') {\r\n resultValue = isNotNullish(this.props.chartFunctions) ?\r\n this.props.chartFunctions.formatedValue(valToFormat, getFinalFormat(_definition), _definition.type, false, null, getLocaleConfig(_definition)) :\r\n resultValue\r\n }\r\n }\r\n } \r\n return resultValue\r\n }\r\n\r\n const getValueClass = (aggregator) => {\r\n const valToFormat = aggregator.value()\r\n const keyColumnaCalculo = isNotNullish(this.props.vals) && this.props.vals.length ? this.props.vals[0] : null\r\n if (isNotNullish(keyColumnaCalculo) && isNotNullish(this.props.headersDefinitions)) {\r\n const _definition = this.props.headersDefinitions[keyColumnaCalculo]\r\n const objItem = {}\r\n if (isNotNullish(_definition) && isNotNullish(_definition.value) && isNotNullish(_definition.classItem) && typeof _definition.classItem === 'function') {\r\n objItem[_definition.value] = valToFormat\r\n objItem[`rv_${_definition.value}`] = valToFormat\r\n return _definition.classItem(objItem, true)\r\n }\r\n } \r\n return ''\r\n }\r\n\r\n return (\r\n \r\n \r\n {colAttrs.map(function(c, j) {\r\n return (\r\n \r\n {j === 0 && rowAttrs.length !== 0 && (\r\n \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 \r\n {colKey[j]}\r\n \r\n );\r\n })}\r\n\r\n {j === 0 && (\r\n \r\n Total\r\n \r\n )}\r\n \r\n );\r\n })}\r\n\r\n {rowAttrs.length !== 0 && (\r\n \r\n {rowAttrs.map(function(r, i) {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n {rowKeys.map(function(rowKey, i) {\r\n const totalAggregator = pivotData.getAggregator(rowKey, []);\r\n return (\r\n \r\n {rowKey.map(function(txt, j) {\r\n const x = spanSize(rowKeys, i, j);\r\n if (x === -1) {\r\n return null;\r\n }\r\n return (\r\n \r\n {txt}\r\n \r\n );\r\n })}\r\n {colKeys.map(function(colKey, j) {\r\n const aggregator = pivotData.getAggregator(rowKey, colKey);\r\n return (\r\n \r\n { getFormatedValue(aggregator) }\r\n \r\n );\r\n })}\r\n \r\n {/* totalAggregator.format(totalAggregator.value()) */}\r\n { getFormatedValue(totalAggregator) }\r\n \r\n \r\n );\r\n })}\r\n\r\n \r\n \r\n Total\r\n \r\n\r\n {colKeys.map(function(colKey, i) {\r\n const totalAggregator = pivotData.getAggregator([], colKey);\r\n return (\r\n \r\n {/* totalAggregator.format(totalAggregator.value()) */}\r\n { getFormatedValue(totalAggregator) }\r\n \r\n );\r\n })}\r\n\r\n \r\n {/* grandTotalAggregator.format(grandTotalAggregator.value()) */}\r\n { getFormatedValue(grandTotalAggregator) }\r\n \r\n \r\n \r\n
    \r\n )}\r\n {c}
    \r\n {r}\r\n \r\n {colAttrs.length === 0 ? 'Total' : null}\r\n
    \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 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 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"]} \ No newline at end of file diff --git a/package.json b/package.json index 0d9bdf5..b54e78a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "v-react-pivottable", - "version": "0.11.35", + "version": "0.11.36", "description": "A React-based pivot table", "main": "PivotTableUI.js", "files": [ @@ -16,20 +16,7 @@ "Utilities.js.map", "pivottable.css" ], - "scripts": { - "start": "webpack-dev-server", - "test:eslint": "eslint src/*.js* && echo 'eslint: \\033[0;32m'PASS'\\033[0m'", - "test:eslint:fix": "eslint src/*.js* --fix", - "test:prettier": "prettier -l \"src/*.js*\" && echo 'prettier: \\033[0;32m'PASS'\\033[0m'", - "test:prettier:fix": "prettier --write \"src/*.js*\"", - "test:jest": "jest", - "test": "npm run test:eslint && npm run test:prettier && npm run test:jest", - "clean": "rm -rf __tests__ PivotTable.js* PivotTableUI.js* PlotlyRenderers.js* TableRenderers.js* Utilities.js* pivottable.css", - "build": "npm run clean && cp src/pivottable.css . && babel src --out-dir=. --source-maps --presets=env,react --plugins babel-plugin-add-module-exports", - "doPublish": "npm run build && npm publish", - "postpublish": "npm run clean", - "deploy": "webpack -p && mv bundle.js examples && cd examples && git init && git add . && git commit -m build && git push --force git@github.com:plotly/react-pivottable.git master:gh-pages && rm -rf .git bundle.js" - }, + "scripts": {}, "repository": { "type": "git", "url": "git+https://github.com/plotly/react-pivottable.git"