diff --git a/PivotTableUI.js b/PivotTableUI.js index 16b3286..5f8b2ec 100644 --- a/PivotTableUI.js +++ b/PivotTableUI.js @@ -54,7 +54,7 @@ var DraggableAttribute = exports.DraggableAttribute = function (_React$Component var _this = _possibleConstructorReturn(this, (DraggableAttribute.__proto__ || Object.getPrototypeOf(DraggableAttribute)).call(this, props)); - _this.state = { open: false, filterText: '' }; + _this.state = { open: false, filterText: '', attrValues: {} }; return _this; } @@ -67,6 +67,14 @@ var DraggableAttribute = exports.DraggableAttribute = function (_React$Component this.props.addValuesToFilter(this.props.name, [value]); } } + }, { + key: 'updateFilterOptions', + value: function updateFilterOptions() { + var showAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + var _attrValuesReduced = this.props.getFilterOptions(showAll); + this.setState({ attrValues: _attrValuesReduced[this.props.name] }); + } }, { key: 'matchesFilter', value: function matchesFilter(x) { @@ -88,8 +96,8 @@ var DraggableAttribute = exports.DraggableAttribute = function (_React$Component // const showMenu = Object.keys(this.props.attrValues).length < this.props.menuLimit; // const values = Object.keys(this.props.attrValues); var stringAttr = JSON.stringify(this.props.attrValues); - var stringAttrReduced = JSON.stringify(this.props.attrValuesReduced); - var values = Object.keys(this.props.attrValuesReduced); + var stringAttrReduced = JSON.stringify(this.state.attrValues); + var values = Object.keys(this.state.attrValues); var shown = values.filter(this.matchesFilter.bind(this)).sort(this.props.sorter); var truncatedShown = values.filter(this.matchesFilter.bind(this)).sort(this.props.sorter); // .slice(0, this.props.menuLimit); @@ -136,7 +144,7 @@ var DraggableAttribute = exports.DraggableAttribute = function (_React$Component role: 'button', className: 'pvtButton ' + (stringAttr === stringAttrReduced ? 'disabled' : ''), onClick: function onClick() { - _this2.props.updateFilterOptions(true); + _this2.updateFilterOptions(true); } }, 'Mostrar Todas las Opciones' @@ -148,7 +156,7 @@ var DraggableAttribute = exports.DraggableAttribute = function (_React$Component role: 'button', className: 'pvtButton', onClick: function onClick() { - _this2.props.updateFilterOptions(); + _this2.updateFilterOptions(); } }, 'Mostrar Opciones en Tabla' @@ -276,7 +284,6 @@ DraggableAttribute.propTypes = { addValuesToFilter: _propTypes2.default.func.isRequired, removeValuesFromFilter: _propTypes2.default.func.isRequired, attrValues: _propTypes2.default.objectOf(_propTypes2.default.number).isRequired, - attrValuesReduced: _propTypes2.default.objectOf(_propTypes2.default.number).isRequired, valueFilter: _propTypes2.default.objectOf(_propTypes2.default.bool), moveFilterBoxToTop: _propTypes2.default.func.isRequired, sorter: _propTypes2.default.func.isRequired, @@ -366,7 +373,6 @@ var PivotTableUI = function (_React$PureComponent2) { maxZIndex: 1000, openDropdown: false, attrValues: {}, - attrValuesReduced: {}, materializedInput: [], hideConfiguration: false, headerClass: '', @@ -381,16 +387,14 @@ var PivotTableUI = function (_React$PureComponent2) { this.materializeInput(this.props.data); } }, { - key: 'updateFilterOptions', - value: function updateFilterOptions() { + key: 'getFilterOptions', + value: function getFilterOptions() { var showAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; console.log('updateFilterOptions showAll', showAll); if (showAll) { - var _newState = JSON.parse(JSON.stringify(this.state)); - _newState.attrValuesReduced = JSON.parse(JSON.stringify(this.state.attrValues)); - this.setState(_newState); - return; + var _attrValuesReduced2 = JSON.parse(JSON.stringify(this.state.attrValues)); + return _attrValuesReduced2; } var _valuefilter = this.props.valueFilter; var keysFilter = Object.keys(_valuefilter); @@ -412,8 +416,7 @@ var PivotTableUI = function (_React$PureComponent2) { return true; }); console.log('updateFilterOptions filteredData', filteredData); - var newState = JSON.parse(JSON.stringify(this.state)); - newState.attrValuesReduced = {}; + var _attrValuesReduced = {}; var recordsProcessed = 0; _Utilities.PivotData.forEachRecord(filteredData, this.props.derivedAttributes, function (record) { var _iteratorNormalCompletion = true; @@ -424,10 +427,10 @@ var PivotTableUI = function (_React$PureComponent2) { for (var _iterator = Object.keys(record)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var attr = _step.value; - if (!(attr in newState.attrValuesReduced)) { - newState.attrValuesReduced[attr] = {}; + if (!(attr in _attrValuesReduced)) { + _attrValuesReduced[attr] = {}; if (recordsProcessed > 0) { - newState.attrValuesReduced[attr].null = recordsProcessed; + _attrValuesReduced[attr].null = recordsProcessed; } } } @@ -446,17 +449,17 @@ var PivotTableUI = function (_React$PureComponent2) { } } - for (var _attr in newState.attrValuesReduced) { + for (var _attr in _attrValuesReduced) { var value = _attr in record ? record[_attr] : 'null'; - if (!(value in newState.attrValuesReduced[_attr])) { - newState.attrValuesReduced[_attr][value] = 0; + if (!(value in _attrValuesReduced[_attr])) { + _attrValuesReduced[_attr][value] = 0; } - newState.attrValuesReduced[_attr][value]++; + _attrValuesReduced[_attr][value]++; } recordsProcessed++; }); - console.log('updateFilterOptions newState', newState); - this.setState(newState); + console.log('updateFilterOptions _attrValuesReduced', _attrValuesReduced); + return _attrValuesReduced; } }, { key: 'componentDidUpdate', @@ -472,7 +475,6 @@ var PivotTableUI = function (_React$PureComponent2) { var newState = { data: nextData, attrValues: {}, - attrValuesReduced: {}, materializedInput: [] }; var recordsProcessed = 0; @@ -517,7 +519,6 @@ var PivotTableUI = function (_React$PureComponent2) { } recordsProcessed++; }); - newState.attrValuesReduced = JSON.parse(JSON.stringify(newState.attrValues)); this.setState(newState); } }, { @@ -606,7 +607,6 @@ var PivotTableUI = function (_React$PureComponent2) { name: x, key: x, attrValues: _this7.state.attrValues[x], - attrValuesReduced: _this7.state.attrValuesReduced[x], valueFilter: _this7.props.valueFilter[x] || {}, sorter: (0, _Utilities.getSort)(_this7.props.sorters, x), menuLimit: _this7.props.menuLimit, @@ -615,7 +615,7 @@ var PivotTableUI = function (_React$PureComponent2) { moveFilterBoxToTop: _this7.moveFilterBoxToTop.bind(_this7), removeValuesFromFilter: _this7.removeValuesFromFilter.bind(_this7), zIndex: _this7.state.zIndices[x] || _this7.state.maxZIndex, - updateFilterOptions: _this7.updateFilterOptions.bind(_this7) + getFilterOptions: _this7.getFilterOptions.bind(_this7) }); }) ); diff --git a/PivotTableUI.js.map b/PivotTableUI.js.map index 916081d..876f227 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","toLowerCase","trim","includes","e","stopPropagation","setValuesInFilter","Object","keys","attrValues","filter","y","stringAttr","JSON","stringify","stringAttrReduced","attrValuesReduced","values","shown","matchesFilter","bind","sort","sorter","truncatedShown","display","cursor","zIndex","moveFilterBoxToTop","setState","updateFilterOptions","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","materializedInput","hideConfiguration","headerClass","stylesHeaders","materializeInput","data","showAll","console","log","newState","parse","_valuefilter","keysFilter","filteredData","row","idx","keyF","valsFilter","idy","valF","parseFloat","String","recordsProcessed","PivotData","forEachRecord","derivedAttributes","record","attr","null","nextData","push","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 // const values = Object.keys(this.props.attrValues);\r\n const stringAttr = JSON.stringify(this.props.attrValues)\r\n const stringAttrReduced = JSON.stringify(this.props.attrValuesReduced)\r\n const values = Object.keys(this.props.attrValuesReduced);\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 { this.props.updateFilterOptions(true) }}\r\n >\r\n Mostrar Todas las Opciones\r\n {' '}\r\n { this.props.updateFilterOptions() }}\r\n >\r\n Mostrar Opciones en Tabla\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 Seleccionar {values.length === shown.length ? 'Todo' : 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 Deseleccionar {values.length === shown.length ? 'Todo' : 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 attrValuesReduced: 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 updateFilterOptions(showAll = false) {\r\n console.log('updateFilterOptions showAll', showAll)\r\n if (showAll) {\r\n const newState = JSON.parse(JSON.stringify(this.state))\r\n newState.attrValuesReduced = JSON.parse(JSON.stringify(this.state.attrValues))\r\n this.setState(newState)\r\n return\r\n }\r\n const _valuefilter = this.props.valueFilter\r\n const keysFilter = Object.keys(_valuefilter)\r\n const filteredData = this.props.data.filter((row) => {\r\n if (typeof _valuefilter !== 'undefined' && _valuefilter !== null) {\r\n for (let idx = 0; idx < keysFilter.length; idx++) {\r\n const keyF = keysFilter[idx];\r\n const valsFilter = Object.keys(_valuefilter[keyF])\r\n for (let idy = 0; idy < valsFilter.length; idy++) {\r\n const valF = valsFilter[idy];\r\n if (typeof row[keyF] === 'number' && row[keyF] === parseFloat(valF)) {\r\n return false\r\n } else if (String(row[keyF]) === String(valF)) {\r\n return false\r\n } \r\n }\r\n }\r\n }\r\n return true\r\n })\r\n console.log('updateFilterOptions filteredData', filteredData)\r\n const newState = JSON.parse(JSON.stringify(this.state))\r\n newState.attrValuesReduced = {}\r\n let recordsProcessed = 0;\r\n PivotData.forEachRecord(\r\n filteredData,\r\n this.props.derivedAttributes,\r\n function(record) {\r\n for (const attr of Object.keys(record)) {\r\n if (!(attr in newState.attrValuesReduced)) {\r\n newState.attrValuesReduced[attr] = {};\r\n if (recordsProcessed > 0) {\r\n newState.attrValuesReduced[attr].null = recordsProcessed;\r\n }\r\n }\r\n }\r\n for (const attr in newState.attrValuesReduced) {\r\n const value = attr in record ? record[attr] : 'null';\r\n if (!(value in newState.attrValuesReduced[attr])) {\r\n newState.attrValuesReduced[attr][value] = 0;\r\n }\r\n newState.attrValuesReduced[attr][value]++;\r\n }\r\n recordsProcessed++;\r\n }\r\n );\r\n console.log('updateFilterOptions newState', newState)\r\n this.setState(newState)\r\n }\r\n\r\n componentDidUpdate() {\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 attrValuesReduced: {},\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 newState.attrValuesReduced = JSON.parse(JSON.stringify(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","attrValues","value","valueFilter","removeValuesFromFilter","name","addValuesToFilter","showAll","_attrValuesReduced","getFilterOptions","setState","x","toLowerCase","trim","includes","e","stopPropagation","setValuesInFilter","Object","keys","filter","y","stringAttr","JSON","stringify","stringAttrReduced","values","shown","matchesFilter","bind","sort","sorter","truncatedShown","display","cursor","zIndex","moveFilterBoxToTop","updateFilterOptions","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","materializedInput","hideConfiguration","headerClass","stylesHeaders","materializeInput","data","console","log","parse","_valuefilter","keysFilter","filteredData","row","idx","keyF","valsFilter","idy","valF","parseFloat","String","recordsProcessed","PivotData","forEachRecord","derivedAttributes","record","attr","null","nextData","newState","push","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":";;;;;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;;;;;;;;;;;AAEA;AACA;;IAEaA,kB,WAAAA,kB;;;AACX,8BAAYC,KAAZ,EAAmB;AAAA;;AAAA,wIACXA,KADW;;AAEjB,UAAKC,KAAL,GAAa,EAACC,MAAM,KAAP,EAAcC,YAAY,EAA1B,EAA8BC,YAAY,EAA1C,EAAb;AAFiB;AAGlB;;;;gCAEWC,K,EAAO;AACjB,UAAIA,SAAS,KAAKL,KAAL,CAAWM,WAAxB,EAAqC;AACnC,aAAKN,KAAL,CAAWO,sBAAX,CAAkC,KAAKP,KAAL,CAAWQ,IAA7C,EAAmD,CAACH,KAAD,CAAnD;AACD,OAFD,MAEO;AACL,aAAKL,KAAL,CAAWS,iBAAX,CAA6B,KAAKT,KAAL,CAAWQ,IAAxC,EAA8C,CAACH,KAAD,CAA9C;AACD;AACF;;;0CAEoC;AAAA,UAAjBK,OAAiB,uEAAP,KAAO;;AACnC,UAAMC,qBAAqB,KAAKX,KAAL,CAAWY,gBAAX,CAA4BF,OAA5B,CAA3B;AACA,WAAKG,QAAL,CAAc,EAAET,YAAYO,mBAAmB,KAAKX,KAAL,CAAWQ,IAA9B,CAAd,EAAd;AACD;;;kCAEaM,C,EAAG;AACf,aAAOA,EACJC,WADI,GAEJC,IAFI,GAGJC,QAHI,CAGK,KAAKhB,KAAL,CAAWE,UAAX,CAAsBY,WAAtB,GAAoCC,IAApC,EAHL,CAAP;AAID;;;+BAEUE,C,EAAGb,K,EAAO;AACnBa,QAAEC,eAAF;AACA,WAAKnB,KAAL,CAAWoB,iBAAX,CACE,KAAKpB,KAAL,CAAWQ,IADb,EAEEa,OAAOC,IAAP,CAAY,KAAKtB,KAAL,CAAWI,UAAvB,EAAmCmB,MAAnC,CAA0C;AAAA,eAAKC,MAAMnB,KAAX;AAAA,OAA1C,CAFF;AAID;;;mCAEc;AAAA;;AACb;AACA;AACA,UAAMoB,aAAaC,KAAKC,SAAL,CAAe,KAAK3B,KAAL,CAAWI,UAA1B,CAAnB;AACA,UAAMwB,oBAAoBF,KAAKC,SAAL,CAAe,KAAK1B,KAAL,CAAWG,UAA1B,CAA1B;AACA,UAAMyB,SAASR,OAAOC,IAAP,CAAY,KAAKrB,KAAL,CAAWG,UAAvB,CAAf;AACA,UAAM0B,QAAQD,OACXN,MADW,CACJ,KAAKQ,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CADI,EAEXC,IAFW,CAEN,KAAKjC,KAAL,CAAWkC,MAFL,CAAd;AAGA,UAAMC,iBAAiBN,OACpBN,MADoB,CACb,KAAKQ,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CADa,EAEpBC,IAFoB,CAEf,KAAKjC,KAAL,CAAWkC,MAFI,CAAvB;AAGE;;AAEF,aACE;AAAC,gCAAD;AAAA,UAAW,QAAO,gBAAlB;AACE;AAAA;AAAA;AACE,uBAAU,cADZ;AAEE,mBAAO;AACLE,uBAAS,OADJ;AAELC,sBAAQ,SAFH;AAGLC,sBAAQ,KAAKtC,KAAL,CAAWsC;AAHd,aAFT;AAOE,qBAAS;AAAA,qBAAM,OAAKtC,KAAL,CAAWuC,kBAAX,CAA8B,OAAKvC,KAAL,CAAWQ,IAAzC,CAAN;AAAA;AAPX;AASE;AAAA;AAAA,cAAG,SAAS;AAAA,uBAAM,OAAKK,QAAL,CAAc,EAACX,MAAM,KAAP,EAAd,CAAN;AAAA,eAAZ,EAAgD,WAAU,WAA1D;AAAA;AAAA,WATF;AAYE;AAAA;AAAA,cAAM,WAAU,eAAhB;AAAA;AAAA,WAZF;AAaE;AAAA;AAAA;AAAK,iBAAKF,KAAL,CAAWQ;AAAhB,WAbF;AAiBE;AAAA;AAAA;AACE;AAAA;AAAA;AACE,sBAAK,QADP;AAEE,2CAAwBiB,eAAeG,iBAAf,GAAmC,UAAnC,GAAgD,EAAxE,CAFF;AAGE,yBAAS,mBAAM;AAAE,yBAAKY,mBAAL,CAAyB,IAAzB;AAAgC;AAHnD;AAAA;AAAA,aADF;AAOO,eAPP;AAQE;AAAA;AAAA;AACE,sBAAK,QADP;AAEE,2BAAU,WAFZ;AAGE,yBAAS,mBAAM;AAAE,yBAAKA,mBAAL;AAA4B;AAH/C;AAAA;AAAA,aARF;AAeE,qDAfF;AAgBE;AACE,oBAAK,MADP;AAEE,2BAAY,kBAFd;AAGE,yBAAU,WAHZ;AAIE,qBAAO,KAAKvC,KAAL,CAAWE,UAJpB;AAKE,wBAAU;AAAA,uBACR,OAAKU,QAAL,CAAc;AACZV,8BAAYe,EAAEuB,MAAF,CAASpC;AADT,iBAAd,CADQ;AAAA;AALZ,cAhBF;AA2BE,qDA3BF;AA4BE;AAAA;AAAA;AACE,sBAAK,QADP;AAEE,2BAAU,WAFZ;AAGE,yBAAS,mBAAM;AACb,yBAAKL,KAAL,CAAWO,sBAAX,CACE,OAAKP,KAAL,CAAWQ,IADb,EAEEa,OAAOC,IAAP,CAAY,OAAKtB,KAAL,CAAWI,UAAvB,EAAmCmB,MAAnC,CACE,OAAKQ,aAAL,CAAmBC,IAAnB,CAAwB,MAAxB,CADF,CAFF;AAMD;AAVH;AAAA;AAYeH,qBAAOa,MAAP,KAAkBZ,MAAMY,MAAxB,GAAiC,MAAjC,GAA0CZ,MAAMY;AAZ/D,aA5BF;AAyCO,eAzCP;AA0CE;AAAA;AAAA;AACE,sBAAK,QADP;AAEE,2BAAU,WAFZ;AAGE,yBAAS;AAAA,yBACP,OAAK1C,KAAL,CAAWS,iBAAX,CACE,OAAKT,KAAL,CAAWQ,IADb,EAEEa,OAAOC,IAAP,CAAY,OAAKtB,KAAL,CAAWI,UAAvB,EAAmCmB,MAAnC,CACE,OAAKQ,aAAL,CAAmBC,IAAnB,CAAwB,MAAxB,CADF,CAFF,CADO;AAAA;AAHX;AAAA;AAYiBH,qBAAOa,MAAP,KAAkBZ,MAAMY,MAAxB,GAAiC,MAAjC,GAA0CZ,MAAMY;AAZjE;AA1CF,WAjBF;AA0EE;AAAA;AAAA,cAAK,WAAU,mBAAf;AACGP,2BAAeQ,GAAf,CAAmB;AAAA,qBAClB;AAAA;AAAA;AACE,uBAAK7B,CADP;AAEE,2BAAS;AAAA,2BAAM,OAAK8B,WAAL,CAAiB9B,CAAjB,CAAN;AAAA,mBAFX;AAGE,6BAAWA,KAAK,OAAKd,KAAL,CAAWM,WAAhB,GAA8B,EAA9B,GAAmC;AAHhD;AAKE;AAAA;AAAA,oBAAG,WAAU,SAAb,EAAuB,SAAS;AAAA,6BAAK,OAAKuC,UAAL,CAAgB3B,CAAhB,EAAmBJ,CAAnB,CAAL;AAAA,qBAAhC;AAAA;AAAA,iBALF;AAQE;AAAA;AAAA,oBAAG,WAAU,eAAb;AAAA;AAAA,iBARF;AAUGA,sBAAM,EAAN,GAAW;AAAA;AAAA;AAAA;AAAA,iBAAX,GAA2BA;AAV9B,eADkB;AAAA,aAAnB;AADH;AA1EF;AADF,OADF;AA+FD;;;sCAEiB;AAChB,WAAKD,QAAL,CAAc,EAACX,MAAM,CAAC,KAAKD,KAAL,CAAWC,IAAnB,EAAd;AACA,WAAKF,KAAL,CAAWuC,kBAAX,CAA8B,KAAKvC,KAAL,CAAWQ,IAAzC;AACD;;;6BAEQ;AACP,UAAMsC,WACJzB,OAAOC,IAAP,CAAY,KAAKtB,KAAL,CAAWM,WAAvB,EAAoCoC,MAApC,KAA+C,CAA/C,GACI,sBADJ,GAEI,EAHN;AAIA,aACE;AAAA;AAAA,UAAI,WAAS,KAAK1C,KAAL,CAAWQ,IAAxB,EAA8B,OAAO,KAAKR,KAAL,CAAWQ,IAAhD;AACE;AAAA;AAAA,YAAM,WAAW,aAAasC,QAA9B;AACE;AAAA;AAAA,cAAM,WAAU,cAAhB;AACG,iBAAK9C,KAAL,CAAWQ;AADd,WADF;AAIE;AAAA;AAAA;AACE,yBAAU,aADZ;AAEE,uBAAS,KAAKuC,eAAL,CAAqBf,IAArB,CAA0B,IAA1B;AAFX;AAIG,eAJH;AAAA;AAAA;AAJF,SADF;AAcG,aAAK/B,KAAL,CAAWC,IAAX,GAAkB,KAAK8C,YAAL,EAAlB,GAAwC;AAd3C,OADF;AAkBD;;;;EA7KqCC,gBAAMC,S;;AAgL9CnD,mBAAmBoD,YAAnB,GAAkC;AAChC7C,eAAa;AADmB,CAAlC;;AAIAP,mBAAmBqD,SAAnB,GAA+B;AAC7B5C,QAAM6C,oBAAUC,MAAV,CAAiBC,UADM;AAE7B9C,qBAAmB4C,oBAAUG,IAAV,CAAeD,UAFL;AAG7BhD,0BAAwB8C,oBAAUG,IAAV,CAAeD,UAHV;AAI7BnD,cAAYiD,oBAAUI,QAAV,CAAmBJ,oBAAUK,MAA7B,EAAqCH,UAJpB;AAK7BjD,eAAa+C,oBAAUI,QAAV,CAAmBJ,oBAAUM,IAA7B,CALgB;AAM7BpB,sBAAoBc,oBAAUG,IAAV,CAAeD,UANN;AAO7BrB,UAAQmB,oBAAUG,IAAV,CAAeD,UAPM;AAQ7BK,aAAWP,oBAAUK,MARQ;AAS7BpB,UAAQe,oBAAUK;AATW,CAA/B;;IAYaG,Q,WAAAA,Q;;;;;;;;;;;6BACF;AAAA;;AACP,aACE;AAAA;AAAA,UAAK,WAAU,aAAf,EAA6B,OAAO,EAACvB,QAAQ,KAAKtC,KAAL,CAAWsC,MAApB,EAApC;AACE;AAAA;AAAA;AACE,qBAAS,oBAAK;AACZpB,gBAAEC,eAAF;AACA,qBAAKnB,KAAL,CAAW8D,MAAX;AACD,aAJH;AAKE,uBACE,0CACC,KAAK9D,KAAL,CAAWE,IAAX,GAAkB,wBAAlB,GAA6C,EAD9C,CANJ;AASE,kBAAK;AATP;AAWE;AAAA;AAAA,cAAK,WAAU,iBAAf;AAAkC,iBAAKF,KAAL,CAAWE,IAAX,GAAkB,GAAlB,GAAwB;AAA1D,WAXF;AAYG,eAAKF,KAAL,CAAW+D,OAAX,IAAsB;AAAA;AAAA;AAAA;AAAA;AAZzB,SADF;AAgBG,aAAK/D,KAAL,CAAWE,IAAX,IACC;AAAA;AAAA,YAAK,WAAU,iBAAf;AACG,eAAKF,KAAL,CAAW6B,MAAX,CAAkBc,GAAlB,CAAsB;AAAA,mBACrB;AAAA;AAAA;AACE,qBAAKqB,CADP;AAEE,sBAAK,QAFP;AAGE,yBAAS,oBAAK;AACZ9C,oBAAEC,eAAF;AACA,sBAAI,OAAKnB,KAAL,CAAW+D,OAAX,KAAuBC,CAA3B,EAA8B;AAC5B,2BAAKhE,KAAL,CAAW8D,MAAX;AACD,mBAFD,MAEO;AACL,2BAAK9D,KAAL,CAAWiE,QAAX,CAAoBD,CAApB;AACD;AACF,iBAVH;AAWE,2BACE,uBACCA,MAAM,OAAKhE,KAAL,CAAW+D,OAAjB,GAA2B,wBAA3B,GAAsD,EADvD;AAZJ;AAgBGC;AAhBH,aADqB;AAAA,WAAtB;AADH;AAjBJ,OADF;AA2CD;;;;EA7C2Bf,gBAAMiB,a;;IAgD9BC,Y;;;AACJ,wBAAYnE,KAAZ,EAAmB;AAAA;;AAAA,6HACXA,KADW;;AAEjB,WAAKC,KAAL,GAAa;AACXmE,mBAAa,EADF;AAEXC,gBAAU,EAFC;AAGXC,iBAAW,IAHA;AAIXC,oBAAc,KAJH;AAKXnE,kBAAY,EALD;AAMXoE,yBAAmB,EANR;AAOXC,yBAAmB,KAPR;AAQXC,mBAAa,EARF;AASXC,qBAAe;AATJ,KAAb;AAFiB;AAalB;;;;wCAEmB;AAClB,WAAKC,gBAAL,CAAsB,KAAK5E,KAAL,CAAW6E,IAAjC;AACD;;;uCAEiC;AAAA,UAAjBnE,OAAiB,uEAAP,KAAO;;AAChCoE,cAAQC,GAAR,CAAY,6BAAZ,EAA2CrE,OAA3C;AACA,UAAIA,OAAJ,EAAa;AACX,YAAMC,sBAAqBe,KAAKsD,KAAL,CAAWtD,KAAKC,SAAL,CAAe,KAAK1B,KAAL,CAAWG,UAA1B,CAAX,CAA3B;AACA,eAAOO,mBAAP;AACD;AACD,UAAMsE,eAAe,KAAKjF,KAAL,CAAWM,WAAhC;AACA,UAAM4E,aAAa7D,OAAOC,IAAP,CAAY2D,YAAZ,CAAnB;AACA,UAAME,eAAe,KAAKnF,KAAL,CAAW6E,IAAX,CAAgBtD,MAAhB,CAAuB,UAAC6D,GAAD,EAAS;AACnD,YAAI,OAAOH,YAAP,KAAwB,WAAxB,IAAuCA,iBAAiB,IAA5D,EAAkE;AAChE,eAAK,IAAII,MAAM,CAAf,EAAkBA,MAAMH,WAAWxC,MAAnC,EAA2C2C,KAA3C,EAAkD;AAChD,gBAAMC,OAAOJ,WAAWG,GAAX,CAAb;AACA,gBAAME,aAAalE,OAAOC,IAAP,CAAY2D,aAAaK,IAAb,CAAZ,CAAnB;AACA,iBAAK,IAAIE,MAAM,CAAf,EAAkBA,MAAMD,WAAW7C,MAAnC,EAA2C8C,KAA3C,EAAkD;AAChD,kBAAMC,OAAOF,WAAWC,GAAX,CAAb;AACA,kBAAI,OAAOJ,IAAIE,IAAJ,CAAP,KAAqB,QAArB,IAAiCF,IAAIE,IAAJ,MAAcI,WAAWD,IAAX,CAAnD,EAAqE;AACnE,uBAAO,KAAP;AACD,eAFD,MAEO,IAAIE,OAAOP,IAAIE,IAAJ,CAAP,MAAsBK,OAAOF,IAAP,CAA1B,EAAwC;AAC7C,uBAAO,KAAP;AACD;AACF;AACF;AACF;AACD,eAAO,IAAP;AACD,OAhBoB,CAArB;AAiBAX,cAAQC,GAAR,CAAY,kCAAZ,EAAgDI,YAAhD;AACA,UAAMxE,qBAAqB,EAA3B;AACA,UAAIiF,mBAAmB,CAAvB;AACAC,2BAAUC,aAAV,CACEX,YADF,EAEE,KAAKnF,KAAL,CAAW+F,iBAFb,EAGE,UAASC,MAAT,EAAiB;AAAA;AAAA;AAAA;;AAAA;AACf,+BAAmB3E,OAAOC,IAAP,CAAY0E,MAAZ,CAAnB,8HAAwC;AAAA,gBAA7BC,IAA6B;;AACtC,gBAAI,EAAEA,QAAQtF,kBAAV,CAAJ,EAAmC;AACjCA,iCAAmBsF,IAAnB,IAA2B,EAA3B;AACA,kBAAIL,mBAAmB,CAAvB,EAA0B;AACxBjF,mCAAmBsF,IAAnB,EAAyBC,IAAzB,GAAgCN,gBAAhC;AACD;AACF;AACF;AARc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AASf,aAAK,IAAMK,KAAX,IAAmBtF,kBAAnB,EAAuC;AACrC,cAAMN,QAAQ4F,SAAQD,MAAR,GAAiBA,OAAOC,KAAP,CAAjB,GAAgC,MAA9C;AACA,cAAI,EAAE5F,SAASM,mBAAmBsF,KAAnB,CAAX,CAAJ,EAA0C;AACxCtF,+BAAmBsF,KAAnB,EAAyB5F,KAAzB,IAAkC,CAAlC;AACD;AACDM,6BAAmBsF,KAAnB,EAAyB5F,KAAzB;AACD;AACDuF;AACD,OApBH;AAsBAd,cAAQC,GAAR,CAAY,wCAAZ,EAAsDpE,kBAAtD;AACA,aAAOA,kBAAP;AACD;;;yCAEoB;AACnB,WAAKiE,gBAAL,CAAsB,KAAK5E,KAAL,CAAW6E,IAAjC;AACD;;;qCAEgBsB,Q,EAAU;AACzB,UAAI,KAAKlG,KAAL,CAAW4E,IAAX,KAAoBsB,QAAxB,EAAkC;AAChC;AACD;AACD,UAAMC,WAAW;AACfvB,cAAMsB,QADS;AAEf/F,oBAAY,EAFG;AAGfoE,2BAAmB;AAHJ,OAAjB;AAKA,UAAIoB,mBAAmB,CAAvB;AACAC,2BAAUC,aAAV,CACEM,SAASvB,IADX,EAEE,KAAK7E,KAAL,CAAW+F,iBAFb,EAGE,UAASC,MAAT,EAAiB;AACfI,iBAAS5B,iBAAT,CAA2B6B,IAA3B,CAAgCL,MAAhC;AADe;AAAA;AAAA;;AAAA;AAEf,gCAAmB3E,OAAOC,IAAP,CAAY0E,MAAZ,CAAnB,mIAAwC;AAAA,gBAA7BC,IAA6B;;AACtC,gBAAI,EAAEA,QAAQG,SAAShG,UAAnB,CAAJ,EAAoC;AAClCgG,uBAAShG,UAAT,CAAoB6F,IAApB,IAA4B,EAA5B;AACA,kBAAIL,mBAAmB,CAAvB,EAA0B;AACxBQ,yBAAShG,UAAT,CAAoB6F,IAApB,EAA0BC,IAA1B,GAAiCN,gBAAjC;AACD;AACF;AACF;AATc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAUf,aAAK,IAAMK,MAAX,IAAmBG,SAAShG,UAA5B,EAAwC;AACtC,cAAMC,QAAQ4F,UAAQD,MAAR,GAAiBA,OAAOC,MAAP,CAAjB,GAAgC,MAA9C;AACA,cAAI,EAAE5F,SAAS+F,SAAShG,UAAT,CAAoB6F,MAApB,CAAX,CAAJ,EAA2C;AACzCG,qBAAShG,UAAT,CAAoB6F,MAApB,EAA0B5F,KAA1B,IAAmC,CAAnC;AACD;AACD+F,mBAAShG,UAAT,CAAoB6F,MAApB,EAA0B5F,KAA1B;AACD;AACDuF;AACD,OArBH;AAuBA,WAAK/E,QAAL,CAAcuF,QAAd;AACD;;;mCAEcE,O,EAAS;AACtB,WAAKtG,KAAL,CAAWuG,QAAX,CAAoB,kCAAO,KAAKvG,KAAZ,EAAmBsG,OAAnB,CAApB;AACD;;;gCAEWE,G,EAAK;AAAA;;AACf,aAAO;AAAA,eAAS,OAAKC,cAAL,qBAAsBD,GAAtB,EAA4B,EAACE,MAAMrG,KAAP,EAA5B,EAAT;AAAA,OAAP;AACD;;;sCAEiBsG,S,EAAW9E,M,EAAQ;AACnC,WAAK4E,cAAL,CAAoB;AAClBnG,yCACGqG,SADH,EACe;AACXD,gBAAM7E,OAAO+E,MAAP,CAAc,UAAC5C,CAAD,EAAI6C,CAAJ,EAAU;AAC5B7C,cAAE6C,CAAF,IAAO,IAAP;AACA,mBAAO7C,CAAP;AACD,WAHK,EAGH,EAHG;AADK,SADf;AADkB,OAApB;AAUD;;;sCAEiB2C,S,EAAW9E,M,EAAQ;AACnC,UAAI8E,aAAa,KAAK3G,KAAL,CAAWM,WAA5B,EAAyC;AACvC,aAAKmG,cAAL,CAAoB;AAClBnG,2CACGqG,SADH,EACe9E,OAAO+E,MAAP,CAAc,UAAC5C,CAAD,EAAI6C,CAAJ,EAAU;AACnC7C,cAAE6C,CAAF,IAAO,EAACH,MAAM,IAAP,EAAP;AACA,mBAAO1C,CAAP;AACD,WAHY,EAGV,EAHU,CADf;AADkB,SAApB;AAQD,OATD,MASO;AACL,aAAK5C,iBAAL,CAAuBuF,SAAvB,EAAkC9E,MAAlC;AACD;AACF;;;2CAEsB8E,S,EAAW9E,M,EAAQ;AACxC,UAAI,CAAC,KAAK7B,KAAL,CAAWM,WAAX,CAAuBqG,SAAvB,CAAL,EAAwC;AACtC;AACD;AACD,WAAKF,cAAL,CAAoB;AAClBnG,yCAAeqG,SAAf,EAA2B,EAACG,QAAQjF,MAAT,EAA3B;AADkB,OAApB;AAGD;;;uCAEkB8E,S,EAAW;AAC5B,WAAK9F,QAAL,CACE,kCAAO,KAAKZ,KAAZ,EAAmB;AACjBqE,mBAAW,EAACoC,MAAM,KAAKzG,KAAL,CAAWqE,SAAX,GAAuB,CAA9B,EADM;AAEjBD,sCAAYsC,SAAZ,EAAwB,EAACD,MAAM,KAAKzG,KAAL,CAAWqE,SAAX,GAAuB,CAA9B,EAAxB;AAFiB,OAAnB,CADF;AAMD;;;2BAEMyC,Q,EAAU;AACf,aAAO,KAAK9G,KAAL,CAAWsE,YAAX,KAA4BwC,QAAnC;AACD;;;gCAEWC,K,EAAOT,Q,EAAUU,O,EAAS;AAAA;;AACpC,aACE;AAAC,iCAAD;AAAA;AACE,mBAAS;AACPC,mBAAO,QADA;AAEPC,wBAAY,gBAFL;AAGP5F,oBAAQ,eAHD;AAIP6F,6BAAiB;AAJV,WADX;AAOE,eAAI,IAPN;AAQE,qBAAWH,OARb;AASE,oBAAUV;AATZ;AAWGS,cAAMrE,GAAN,CAAU;AAAA,iBACT,8BAAC,kBAAD;AACE,kBAAM7B,CADR;AAEE,iBAAKA,CAFP;AAGE,wBAAY,OAAKb,KAAL,CAAWG,UAAX,CAAsBU,CAAtB,CAHd;AAIE,yBAAa,OAAKd,KAAL,CAAWM,WAAX,CAAuBQ,CAAvB,KAA6B,EAJ5C;AAKE,oBAAQ,wBAAQ,OAAKd,KAAL,CAAWqH,OAAnB,EAA4BvG,CAA5B,CALV;AAME,uBAAW,OAAKd,KAAL,CAAW4D,SANxB;AAOE,+BAAmB,OAAKxC,iBAAL,CAAuBY,IAAvB,CAA4B,MAA5B,CAPrB;AAQE,+BAAmB,OAAKvB,iBAAL,CAAuBuB,IAAvB,CAA4B,MAA5B,CARrB;AASE,gCAAoB,OAAKO,kBAAL,CAAwBP,IAAxB,CAA6B,MAA7B,CATtB;AAUE,oCAAwB,OAAKzB,sBAAL,CAA4ByB,IAA5B,CAAiC,MAAjC,CAV1B;AAWE,oBAAQ,OAAK/B,KAAL,CAAWoE,QAAX,CAAoBvD,CAApB,KAA0B,OAAKb,KAAL,CAAWqE,SAX/C;AAYE,8BAAkB,OAAK1D,gBAAL,CAAsBoB,IAAtB,CAA2B,MAA3B;AAZpB,YADS;AAAA,SAAV;AAXH,OADF;AA8BD;;;6BAEQ;AAAA;;AACP,UAAMsF,iBACJ,KAAKtH,KAAL,CAAWuH,WAAX,CAAuB,KAAKvH,KAAL,CAAWwH,cAAlC,EAAkD,EAAlD,IAAwDC,SAAxD,IAAqE,CADvE;;AAGA,UAAMC,uBAAuB,KAAK1H,KAAL,CAAWuH,WAAX,CAC3B,KAAKvH,KAAL,CAAWwH,cADgB,EAE3B,EAF2B,IAErBG,MAFR;;AAIA,UAAMC,eACJ,KAAK5H,KAAL,CAAW4H,YAAX,IAA2B,KAAK5H,KAAL,CAAW6H,SAAtC,GACI,KAAK7H,KAAL,CAAW4H,YADf,GAEIvG,OAAOC,IAAP,CAAY,KAAKtB,KAAL,CAAW6H,SAAvB,EAAkC,CAAlC,CAHN;;AAKA,UAAMC,eACJ;AAAA;AAAA,UAAI,WAAU,cAAd;AACE,sCAAC,QAAD;AACE,mBAASF,YADX;AAEE,kBAAQvG,OAAOC,IAAP,CAAY,KAAKtB,KAAL,CAAW6H,SAAvB,CAFV;AAGE,gBAAM,KAAKE,MAAL,CAAY,UAAZ,CAHR;AAIE,kBAAQ,KAAKA,MAAL,CAAY,UAAZ,IAA0B,KAAK9H,KAAL,CAAWqE,SAAX,GAAuB,CAAjD,GAAqD,CAJ/D;AAKE,kBAAQ;AAAA,mBACN,OAAKzD,QAAL,CAAc;AACZ0D,4BAAc,OAAKwD,MAAL,CAAY,UAAZ,IAA0B,KAA1B,GAAkC;AADpC,aAAd,CADM;AAAA,WALV;AAUE,oBAAU,KAAKC,WAAL,CAAiB,cAAjB;AAVZ;AADF,OADF;;AAiBA,UAAMC,YAAY;AAChBC,oBAAY;AACVC,qBAAW,GADD;AAEVC,qBAAW,GAFD;AAGVC,gBAAM;AAHI,SADI;AAMhBC,sBAAc;AACZH,qBAAW,GADC;AAEZC,qBAAW,GAFC;AAGZC,gBAAM;AAHM,SANE;AAWhBE,sBAAc,EAACJ,WAAW,GAAZ,EAAiBC,WAAW,GAA5B,EAAiCC,MAAM,YAAvC;AAXE,OAAlB;;AAcA,UAAMG,iBACJ;AAAA;AAAA,UAAI,WAAU,SAAd;AACE,sCAAC,QAAD;AACE,mBAAS,KAAKxI,KAAL,CAAWwH,cADtB;AAEE,kBAAQnG,OAAOC,IAAP,CAAY,KAAKtB,KAAL,CAAWuH,WAAvB,CAFV;AAGE,gBAAM,KAAKQ,MAAL,CAAY,aAAZ,CAHR;AAIE,kBAAQ,KAAKA,MAAL,CAAY,aAAZ,IAA6B,KAAK9H,KAAL,CAAWqE,SAAX,GAAuB,CAApD,GAAwD,CAJlE;AAKE,kBAAQ;AAAA,mBACN,OAAKzD,QAAL,CAAc;AACZ0D,4BAAc,OAAKwD,MAAL,CAAY,aAAZ,IAA6B,KAA7B,GAAqC;AADvC,aAAd,CADM;AAAA,WALV;AAUE,oBAAU,KAAKC,WAAL,CAAiB,gBAAjB;AAVZ,UADF;AAaE;AAAA;AAAA;AACE,kBAAK,QADP;AAEE,uBAAU,aAFZ;AAGE,qBAAS;AAAA,qBACP,OAAKA,WAAL,CAAiB,UAAjB,EAA6BC,UAAU,OAAKjI,KAAL,CAAWyI,QAArB,EAA+BJ,IAA5D,CADO;AAAA;AAHX;AAOGJ,oBAAU,KAAKjI,KAAL,CAAWyI,QAArB,EAA+BN;AAPlC,SAbF;AAsBE;AAAA;AAAA;AACE,kBAAK,QADP;AAEE,uBAAU,aAFZ;AAGE,qBAAS;AAAA,qBACP,OAAKH,WAAL,CAAiB,UAAjB,EAA6BC,UAAU,OAAKjI,KAAL,CAAW0I,QAArB,EAA+BL,IAA5D,CADO;AAAA;AAHX;AAOGJ,oBAAU,KAAKjI,KAAL,CAAW0I,QAArB,EAA+BN;AAPlC,SAtBF;AA+BGd,yBAAiB,CAAjB,IAAsB,yCA/BzB;AAgCG,YAAIqB,KAAJ,CAAUrB,cAAV,EAA0BsB,IAA1B,GAAiCjG,GAAjC,CAAqC,UAACkG,CAAD,EAAIC,CAAJ;AAAA,iBAAU,CAC9C,8BAAC,QAAD;AACE,iBAAKA,CADP;AAEE,qBAAS,OAAK9I,KAAL,CAAW+I,IAAX,CAAgBD,CAAhB,CAFX;AAGE,oBAAQzH,OAAOC,IAAP,CAAY,OAAKrB,KAAL,CAAWG,UAAvB,EAAmCmB,MAAnC,CACN;AAAA,qBACE,CAAC,OAAKvB,KAAL,CAAWgJ,gBAAX,CAA4B/H,QAA5B,CAAqCC,CAArC,CAAD,IACA,CAAC,OAAKlB,KAAL,CAAWiJ,qBAAX,CAAiChI,QAAjC,CAA0CC,CAA1C,CAFH;AAAA,aADM,CAHV;AAQE,kBAAM,OAAK6G,MAAL,SAAkBe,CAAlB,CARR;AASE,oBAAQ,OAAKf,MAAL,SAAkBe,CAAlB,IAAyB,OAAK7I,KAAL,CAAWqE,SAAX,GAAuB,CAAhD,GAAoD,CAT9D;AAUE,oBAAQ;AAAA,qBACN,OAAKzD,QAAL,CAAc;AACZ0D,8BAAc,OAAKwD,MAAL,SAAkBe,CAAlB,IAAyB,KAAzB,WAAuCA;AADzC,eAAd,CADM;AAAA,aAVV;AAeE,sBAAU;AAAA,qBACR,OAAKrC,cAAL,CAAoB;AAClBsC,sBAAM,EAACG,SAAS,CAAC,CAACJ,CAAD,EAAI,CAAJ,EAAOzI,KAAP,CAAD,CAAV;AADY,eAApB,CADQ;AAAA;AAfZ,YAD8C,EAsB9CyI,IAAI,CAAJ,KAAUxB,cAAV,GAA2B,sCAAI,YAAUwB,CAAd,GAA3B,GAAmD,IAtBL,CAAV;AAAA,SAArC,CAhCH;AAwDGpB,gCAAwBA,qBAAqB,KAAK1H,KAAL,CAAW6E,IAAhC;AAxD3B,OADF;;AA6DA,UAAMsE,cAAc9H,OAAOC,IAAP,CAAY,KAAKrB,KAAL,CAAWG,UAAvB,EACjBmB,MADiB,CAEhB;AAAA,eACE,CAAC,OAAKvB,KAAL,CAAWoJ,IAAX,CAAgBnI,QAAhB,CAAyBC,CAAzB,CAAD,IACA,CAAC,OAAKlB,KAAL,CAAWqJ,IAAX,CAAgBpI,QAAhB,CAAyBC,CAAzB,CADD,IAEA,CAAC,OAAKlB,KAAL,CAAWgJ,gBAAX,CAA4B/H,QAA5B,CAAqCC,CAArC,CAFD,IAGA,CAAC,OAAKlB,KAAL,CAAWsJ,kBAAX,CAA8BrI,QAA9B,CAAuCC,CAAvC,CAJH;AAAA,OAFgB,EAQjBe,IARiB,CAQZ,uBAAO,KAAKhC,KAAL,CAAWmE,WAAlB,CARY,CAApB;;AAUA,UAAMmF,eAAeJ,YAAYvC,MAAZ,CAAmB,UAAC5C,CAAD,EAAI9C,CAAJ;AAAA,eAAU8C,IAAI9C,EAAEwB,MAAhB;AAAA,OAAnB,EAA2C,CAA3C,CAArB;AACA,UAAM8G,cAAcD,eAAe,KAAKvJ,KAAL,CAAWyJ,uBAA9C;;AAEA,UAAMC,kBAAkB,KAAKC,WAAL,CACtBR,WADsB,EAEtB;AAAA,eAAS,OAAKtI,QAAL,CAAc,EAACuD,aAAawF,KAAd,EAAd,CAAT;AAAA,OAFsB,mCAIpBJ,cAAc,cAAd,GAA+B,aAJX,EAAxB;;AAQA,UAAMK,WAAW,KAAK7J,KAAL,CAAWqJ,IAAX,CAAgB9H,MAAhB,CACf;AAAA,eACE,CAAC,OAAKvB,KAAL,CAAWgJ,gBAAX,CAA4B/H,QAA5B,CAAqCC,CAArC,CAAD,IACA,CAAC,OAAKlB,KAAL,CAAWsJ,kBAAX,CAA8BrI,QAA9B,CAAuCC,CAAvC,CAFH;AAAA,OADe,CAAjB;;AAMA,UAAM4I,eAAe,KAAKH,WAAL,CACnBE,QADmB,EAEnB,KAAK7B,WAAL,CAAiB,MAAjB,CAFmB,EAGnB,uCAHmB,CAArB;;AAMA,UAAM+B,WAAW,KAAK/J,KAAL,CAAWoJ,IAAX,CAAgB7H,MAAhB,CACf;AAAA,eACE,CAAC,OAAKvB,KAAL,CAAWgJ,gBAAX,CAA4B/H,QAA5B,CAAqCC,CAArC,CAAD,IACA,CAAC,OAAKlB,KAAL,CAAWsJ,kBAAX,CAA8BrI,QAA9B,CAAuCC,CAAvC,CAFH;AAAA,OADe,CAAjB;AAKA,UAAM8I,eAAe,KAAKL,WAAL,CACnBI,QADmB,EAEnB,KAAK/B,WAAL,CAAiB,MAAjB,CAFmB,EAGnB,sCAHmB,CAArB;AAKA,UAAMiC,aACJ;AAAA;AAAA,UAAI,WAAU,WAAd;AACE,sCAAC,oBAAD,EACM,kCAAO,KAAKjK,KAAZ,EAAmB;AACrB6E,gBAAM,EAAC6B,MAAM,KAAKzG,KAAL,CAAWuE,iBAAlB;AADe,SAAnB,CADN;AADF,OADF;;AAUA,UAAI,KAAKxE,KAAL,CAAWyE,iBAAf,EAAkC;AAChC,eACE;AAAA;AAAA,YAAO,WAAU,OAAjB;AACE;AAAA;AAAA,cAAO,SAAS;AAAA,uBAAM,OAAK5D,QAAL,CAAc,EAAC0D,cAAc,KAAf,EAAd,CAAN;AAAA,eAAhB;AACE;AAAA;AAAA;AACG0F;AADH;AADF;AADF,SADF;AASD;;AAED,UAAIT,WAAJ,EAAiB;AACf,eACE;AAAA;AAAA,YAAO,WAAU,OAAjB;AACI,eAAKxJ,KAAL,CAAWyE,iBAAX,IACA;AAAA;AAAA,cAAO,SAAS;AAAA,uBAAM,OAAK5D,QAAL,CAAc,EAAC0D,cAAc,KAAf,EAAd,CAAN;AAAA,eAAhB;AACE;AAAA;AAAA;AACG0F;AADH;AADF,WAFJ;AAQI,WAAC,KAAKjK,KAAL,CAAWyE,iBAAZ,IACA;AAAA;AAAA,cAAO,SAAS;AAAA,uBAAM,OAAK5D,QAAL,CAAc,EAAC0D,cAAc,KAAf,EAAd,CAAN;AAAA,eAAhB;AACE;AAAA;AAAA;AACGuD,0BADH;AAEG4B;AAFH,aADF;AAKE;AAAA;AAAA;AACGlB,4BADH;AAEGsB;AAFH,aALF;AASE;AAAA;AAAA;AACGE,0BADH;AAEGC;AAFH;AATF;AATJ,SADF;AA2BD;;AAED,aACE;AAAA;AAAA,UAAO,WAAU,OAAjB;AACI,aAAKjK,KAAL,CAAWyE,iBAAX,IACA;AAAA;AAAA,YAAO,SAAS;AAAA,qBAAM,OAAK5D,QAAL,CAAc,EAAC0D,cAAc,KAAf,EAAd,CAAN;AAAA,aAAhB;AACE;AAAA;AAAA;AACG0F;AADH;AADF,SAFJ;AAQI,SAAC,KAAKjK,KAAL,CAAWyE,iBAAZ,IACA;AAAA;AAAA,YAAO,SAAS;AAAA,qBAAM,OAAK5D,QAAL,CAAc,EAAC0D,cAAc,KAAf,EAAd,CAAN;AAAA,aAAhB;AACE;AAAA;AAAA;AACGuD,wBADH;AAEGU,0BAFH;AAGGsB;AAHH,WADF;AAME;AAAA;AAAA;AACGJ,2BADH;AAEGM,wBAFH;AAGGC;AAHH;AANF;AATJ,OADF;AAyBD;;;;EA9awBhH,gBAAMiB,a;;AAibjCC,aAAaf,SAAb,GAAyB/B,OAAO6I,MAAP,CAAc,EAAd,EAAkBC,qBAAW/G,SAA7B,EAAwC;AAC/DmD,YAAUlD,oBAAUG,IAAV,CAAeD,UADsC;AAE/DyF,oBAAkB3F,oBAAU+G,OAAV,CAAkB/G,oBAAUC,MAA5B,CAF6C;AAG/D2F,yBAAuB5F,oBAAU+G,OAAV,CAAkB/G,oBAAUC,MAA5B,CAHwC;AAI/DgG,sBAAoBjG,oBAAU+G,OAAV,CAAkB/G,oBAAUC,MAA5B,CAJ2C;AAK/DmG,2BAAyBpG,oBAAUK,MAL4B;AAM/DE,aAAWP,oBAAUK,MAN0C;AAO/De,qBAAmBpB,oBAAUM,IAPkC;AAQ/De,eAAarB,oBAAUC,MARwC;AAS/DqB,iBAAetB,oBAAUgH;AATsC,CAAxC,CAAzB;;AAYAlG,aAAahB,YAAb,GAA4B9B,OAAO6I,MAAP,CAAc,EAAd,EAAkBC,qBAAWhH,YAA7B,EAA2C;AACrE6F,oBAAkB,EADmD;AAErEC,yBAAuB,EAF8C;AAGrEK,sBAAoB,EAHiD;AAIrEG,2BAAyB,EAJ4C;AAKrE7F,aAAW,GAL0D;AAMrEa,qBAAmB;AANkD,CAA3C,CAA5B;;kBASeN,Y","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: '', attrValues: {}};\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 updateFilterOptions(showAll = false) {\r\n const _attrValuesReduced = this.props.getFilterOptions(showAll)\r\n this.setState({ attrValues: _attrValuesReduced[this.props.name] })\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 // const values = Object.keys(this.props.attrValues);\r\n const stringAttr = JSON.stringify(this.props.attrValues)\r\n const stringAttrReduced = JSON.stringify(this.state.attrValues)\r\n const values = Object.keys(this.state.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 { this.updateFilterOptions(true) }}\r\n >\r\n Mostrar Todas las Opciones\r\n {' '}\r\n { this.updateFilterOptions() }}\r\n >\r\n Mostrar Opciones en Tabla\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 Seleccionar {values.length === shown.length ? 'Todo' : 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 Deseleccionar {values.length === shown.length ? 'Todo' : 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 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 getFilterOptions(showAll = false) {\r\n console.log('updateFilterOptions showAll', showAll)\r\n if (showAll) {\r\n const _attrValuesReduced = JSON.parse(JSON.stringify(this.state.attrValues))\r\n return _attrValuesReduced\r\n }\r\n const _valuefilter = this.props.valueFilter\r\n const keysFilter = Object.keys(_valuefilter)\r\n const filteredData = this.props.data.filter((row) => {\r\n if (typeof _valuefilter !== 'undefined' && _valuefilter !== null) {\r\n for (let idx = 0; idx < keysFilter.length; idx++) {\r\n const keyF = keysFilter[idx];\r\n const valsFilter = Object.keys(_valuefilter[keyF])\r\n for (let idy = 0; idy < valsFilter.length; idy++) {\r\n const valF = valsFilter[idy];\r\n if (typeof row[keyF] === 'number' && row[keyF] === parseFloat(valF)) {\r\n return false\r\n } else if (String(row[keyF]) === String(valF)) {\r\n return false\r\n } \r\n }\r\n }\r\n }\r\n return true\r\n })\r\n console.log('updateFilterOptions filteredData', filteredData)\r\n const _attrValuesReduced = {}\r\n let recordsProcessed = 0;\r\n PivotData.forEachRecord(\r\n filteredData,\r\n this.props.derivedAttributes,\r\n function(record) {\r\n for (const attr of Object.keys(record)) {\r\n if (!(attr in _attrValuesReduced)) {\r\n _attrValuesReduced[attr] = {};\r\n if (recordsProcessed > 0) {\r\n _attrValuesReduced[attr].null = recordsProcessed;\r\n }\r\n }\r\n }\r\n for (const attr in _attrValuesReduced) {\r\n const value = attr in record ? record[attr] : 'null';\r\n if (!(value in _attrValuesReduced[attr])) {\r\n _attrValuesReduced[attr][value] = 0;\r\n }\r\n _attrValuesReduced[attr][value]++;\r\n }\r\n recordsProcessed++;\r\n }\r\n );\r\n console.log('updateFilterOptions _attrValuesReduced', _attrValuesReduced)\r\n return _attrValuesReduced\r\n }\r\n\r\n componentDidUpdate() {\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 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/package.json b/package.json index 742fcc8..2201bd2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "v-react-pivottable", - "version": "0.11.44", + "version": "0.11.45", "description": "A React-based pivot table", "main": "PivotTableUI.js", "files": [