diff --git a/PivotTableUI.js b/PivotTableUI.js index 3b7e855..6568101 100644 --- a/PivotTableUI.js +++ b/PivotTableUI.js @@ -485,7 +485,19 @@ var PivotTableUI = function (_React$PureComponent2) { }, tag: 'td', className: classes, - onChange: onChange + onChange: onChange, + onDrag: function onDrag(event) { + event.stopPropagation();event.preventDefault(); + }, + onDragCapture: function onDragCapture(event) { + event.stopPropagation();event.preventDefault(); + }, + onDragStart: function onDragStart(event) { + event.stopPropagation();event.preventDefault(); + }, + onDragEnd: function onDragEnd(event) { + event.stopPropagation();event.preventDefault(); + } }, items.map(function (x) { return _react2.default.createElement(DraggableAttribute, { diff --git a/PivotTableUI.js.map b/PivotTableUI.js.map index 4a4dbec..92a68c3 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","showMenu","length","menuLimit","values","shown","matchesFilter","bind","sort","sorter","display","cursor","zIndex","moveFilterBoxToTop","setState","target","map","toggleValue","selectOnly","filtered","toggleFilterBox","getFilterBox","React","Component","defaultProps","propTypes","PropTypes","string","isRequired","func","objectOf","number","bool","Dropdown","toggle","current","r","setValue","PureComponent","PivotTableUI","unusedOrder","zIndices","maxZIndex","openDropdown","materializedInput","hideConfiguration","materializeInput","data","nextData","newState","recordsProcessed","PivotData","forEachRecord","derivedAttributes","record","push","attr","null","command","onChange","key","sendPropUpdate","$set","attribute","reduce","v","$unset","dropdown","items","classes","group","ghostClass","preventOnFilter","sorters","numValsAllowed","aggregators","aggregatorName","numInputs","aggregatorCellOutlet","outlet","rendererName","renderers","rendererCell","isOpen","propUpdater","sortIcons","key_a_to_z","rowSymbol","colSymbol","next","value_a_to_z","value_z_to_a","aggregatorCell","rowOrder","colOrder","Array","fill","n","i","vals","hiddenAttributes","hiddenFromAggregators","$splice","unusedAttrs","rows","cols","hiddenFromDragDrop","unusedLength","horizUnused","unusedOrientationCutoff","unusedAttrsCell","makeDnDCell","order","colAttrs","colAttrsCell","rowAttrs","rowAttrsCell","outputCell","assign","PivotTable","arrayOf"],"mappings":"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","file":"PivotTableUI.js","sourcesContent":["import React from 'react';\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 =\r\n Object.keys(this.props.attrValues).length < this.props.menuLimit;\r\n\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\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 {showMenu && (\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\r\n {showMenu && (\r\n
\r\n {shown.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\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 {this.props.name}\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 };\r\n }\r\n\r\n componentDidMount() {\r\n this.materializeInput(this.props.data);\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 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});\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","showMenu","length","menuLimit","values","shown","matchesFilter","bind","sort","sorter","display","cursor","zIndex","moveFilterBoxToTop","setState","target","map","toggleValue","selectOnly","filtered","toggleFilterBox","getFilterBox","React","Component","defaultProps","propTypes","PropTypes","string","isRequired","func","objectOf","number","bool","Dropdown","toggle","current","r","setValue","PureComponent","PivotTableUI","unusedOrder","zIndices","maxZIndex","openDropdown","materializedInput","hideConfiguration","materializeInput","data","nextData","newState","recordsProcessed","PivotData","forEachRecord","derivedAttributes","record","push","attr","null","command","onChange","key","sendPropUpdate","$set","attribute","reduce","v","$unset","dropdown","items","classes","group","ghostClass","preventOnFilter","event","preventDefault","sorters","numValsAllowed","aggregators","aggregatorName","numInputs","aggregatorCellOutlet","outlet","rendererName","renderers","rendererCell","isOpen","propUpdater","sortIcons","key_a_to_z","rowSymbol","colSymbol","next","value_a_to_z","value_z_to_a","aggregatorCell","rowOrder","colOrder","Array","fill","n","i","vals","hiddenAttributes","hiddenFromAggregators","$splice","unusedAttrs","rows","cols","hiddenFromDragDrop","unusedLength","horizUnused","unusedOrientationCutoff","unusedAttrsCell","makeDnDCell","order","colAttrs","colAttrsCell","rowAttrs","rowAttrsCell","outputCell","assign","PivotTable","arrayOf"],"mappings":"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","file":"PivotTableUI.js","sourcesContent":["import React from 'react';\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 =\r\n Object.keys(this.props.attrValues).length < this.props.menuLimit;\r\n\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\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 {showMenu && (\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\r\n {showMenu && (\r\n
    \r\n {shown.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\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 {this.props.name}\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 };\r\n }\r\n\r\n componentDidMount() {\r\n this.materializeInput(this.props.data);\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 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 { event.stopPropagation(); event.preventDefault(); }}\r\n onDragCapture={(event) => { event.stopPropagation(); event.preventDefault(); }}\r\n onDragStart={(event) => { event.stopPropagation(); event.preventDefault(); }}\r\n onDragEnd={(event) => { event.stopPropagation(); event.preventDefault(); }}\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});\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/Utilities.js b/Utilities.js index 0b17832..304288c 100644 --- a/Utilities.js +++ b/Utilities.js @@ -485,7 +485,7 @@ aggregatorTemplates.stdev = function (ddof, f) { // default aggregators & renderers use US naming and number formatting var aggregators = function (tpl) { return { - // Count: tpl.count(usFmtInt), + Conteo: tpl.count(usFmtInt), // 'Count Unique Values': tpl.countUnique(usFmtInt), // 'List Unique Values': tpl.listUnique(', '), Suma: tpl.sum(usFmt), diff --git a/Utilities.js.map b/Utilities.js.map index 62c9066..9fe577b 100644 --- a/Utilities.js.map +++ b/Utilities.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/Utilities.js"],"names":["addSeparators","nStr","thousandsSep","decimalSep","x","String","split","x1","x2","length","rgx","test","replace","numberFormat","opts_in","defaults","digitsAfterDecimal","scaler","prefix","suffix","opts","Object","assign","isNaN","isFinite","result","toFixed","rx","rd","rz","naturalSort","as","bs","nas","Number","nbs","a","b","match","a1","shift","b1","sortAs","order","mapping","l_mapping","i","toLowerCase","getSort","sorters","attr","sort","usFmt","usFmtInt","usFmtPct","aggregatorTemplates","count","formatter","push","value","format","uniques","fn","uniq","record","Array","from","includes","numInputs","sum","parseFloat","extremes","mode","data","val","sorter","Math","quantile","q","vals","floor","ceil","runningStat","ddof","n","m","s","m_new","sqrt","Error","sumOverSum","num","denom","sumNum","sumDenom","fractionOf","wrapped","type","rowKey","colKey","selector","total","row","col","inner","getAggregator","countUnique","f","listUnique","join","max","min","first","last","median","average","var","stdev","aggregators","Suma","tpl","Promedio","locales","en","localeStrings","renderError","computeError","uiRenderError","selectAll","selectNone","tooMany","filterResults","apply","cancel","totals","vs","by","mthNamesEn","dayNamesEn","zeroPad","number","substr","derivers","bin","binWidth","dateFormat","formatString","utcOutput","mthNames","dayNames","utc","date","Date","parse","p","PivotData","inputProps","props","defaultProps","PropTypes","checkPropTypes","propTypes","aggregator","aggregatorName","tree","rowKeys","colKeys","rowTotals","colTotals","allTotal","sorted","forEachRecord","derivedAttributes","filter","processRecord","k","valueFilter","criteria","callback","v","attrs","sortersArr","keys","comparison","r","c","rowOrder","arrSort","rows","colOrder","cols","sortKeys","flatRowKey","fromCharCode","flatColKey","agg","input","addRecord","getOwnPropertyNames","derived","isArray","compactRecord","j","result1","oneOfType","array","object","func","isRequired","string","arrayOf","objectOf","bool","oneOf"],"mappings":"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","file":"Utilities.js","sourcesContent":["import PropTypes from 'prop-types';\r\n\r\n/*\r\n * decaffeinate suggestions:\r\n * DS101: Remove unnecessary use of Array.from\r\n * DS102: Remove unnecessary code created because of implicit returns\r\n * DS104: Avoid inline assignments\r\n * DS201: Simplify complex destructure assignments\r\n * DS203: Remove `|| {}` from converted for-own loops\r\n * DS205: Consider reworking code to avoid use of IIFEs\r\n * DS207: Consider shorter variations of null checks\r\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\r\n */\r\n\r\nconst addSeparators = function(nStr, thousandsSep, decimalSep) {\r\n const x = String(nStr).split('.');\r\n let x1 = x[0];\r\n const x2 = x.length > 1 ? decimalSep + x[1] : '';\r\n const rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, `$1${thousandsSep}$2`);\r\n }\r\n return x1 + x2;\r\n};\r\n\r\nconst numberFormat = function(opts_in) {\r\n const defaults = {\r\n digitsAfterDecimal: 2,\r\n scaler: 1,\r\n thousandsSep: ',',\r\n decimalSep: '.',\r\n prefix: '',\r\n suffix: '',\r\n };\r\n const opts = Object.assign({}, defaults, opts_in);\r\n return function(x) {\r\n if (isNaN(x) || !isFinite(x)) {\r\n return '';\r\n }\r\n const result = addSeparators(\r\n (opts.scaler * x).toFixed(opts.digitsAfterDecimal),\r\n opts.thousandsSep,\r\n opts.decimalSep\r\n );\r\n return `${opts.prefix}${result}${opts.suffix}`;\r\n };\r\n};\r\n\r\nconst rx = /(\\d+)|(\\D+)/g;\r\nconst rd = /\\d/;\r\nconst rz = /^0/;\r\nconst naturalSort = (as, bs) => {\r\n // nulls first\r\n if (bs !== null && as === null) {\r\n return -1;\r\n }\r\n if (as !== null && bs === null) {\r\n return 1;\r\n }\r\n\r\n // then raw NaNs\r\n if (typeof as === 'number' && isNaN(as)) {\r\n return -1;\r\n }\r\n if (typeof bs === 'number' && isNaN(bs)) {\r\n return 1;\r\n }\r\n\r\n // numbers and numbery strings group together\r\n const nas = Number(as);\r\n const nbs = Number(bs);\r\n if (nas < nbs) {\r\n return -1;\r\n }\r\n if (nas > nbs) {\r\n return 1;\r\n }\r\n\r\n // within that, true numbers before numbery strings\r\n if (typeof as === 'number' && typeof bs !== 'number') {\r\n return -1;\r\n }\r\n if (typeof bs === 'number' && typeof as !== 'number') {\r\n return 1;\r\n }\r\n if (typeof as === 'number' && typeof bs === 'number') {\r\n return 0;\r\n }\r\n\r\n // 'Infinity' is a textual number, so less than 'A'\r\n if (isNaN(nbs) && !isNaN(nas)) {\r\n return -1;\r\n }\r\n if (isNaN(nas) && !isNaN(nbs)) {\r\n return 1;\r\n }\r\n\r\n // finally, \"smart\" string sorting per http://stackoverflow.com/a/4373421/112871\r\n let a = String(as);\r\n let b = String(bs);\r\n if (a === b) {\r\n return 0;\r\n }\r\n if (!rd.test(a) || !rd.test(b)) {\r\n return a > b ? 1 : -1;\r\n }\r\n\r\n // special treatment for strings containing digits\r\n a = a.match(rx);\r\n b = b.match(rx);\r\n while (a.length && b.length) {\r\n const a1 = a.shift();\r\n const b1 = b.shift();\r\n if (a1 !== b1) {\r\n if (rd.test(a1) && rd.test(b1)) {\r\n return a1.replace(rz, '.0') - b1.replace(rz, '.0');\r\n }\r\n return a1 > b1 ? 1 : -1;\r\n }\r\n }\r\n return a.length - b.length;\r\n};\r\n\r\nconst sortAs = function(order) {\r\n const mapping = {};\r\n\r\n // sort lowercased keys similarly\r\n const l_mapping = {};\r\n for (const i in order) {\r\n const x = order[i];\r\n mapping[x] = i;\r\n if (typeof x === 'string') {\r\n l_mapping[x.toLowerCase()] = i;\r\n }\r\n }\r\n return function(a, b) {\r\n if (a in mapping && b in mapping) {\r\n return mapping[a] - mapping[b];\r\n } else if (a in mapping) {\r\n return -1;\r\n } else if (b in mapping) {\r\n return 1;\r\n } else if (a in l_mapping && b in l_mapping) {\r\n return l_mapping[a] - l_mapping[b];\r\n } else if (a in l_mapping) {\r\n return -1;\r\n } else if (b in l_mapping) {\r\n return 1;\r\n }\r\n return naturalSort(a, b);\r\n };\r\n};\r\n\r\nconst getSort = function(sorters, attr) {\r\n if (sorters) {\r\n if (typeof sorters === 'function') {\r\n const sort = sorters(attr);\r\n if (typeof sort === 'function') {\r\n return sort;\r\n }\r\n } else if (attr in sorters) {\r\n return sorters[attr];\r\n }\r\n }\r\n return naturalSort;\r\n};\r\n\r\n// aggregator templates default to US number formatting but this is overrideable\r\nconst usFmt = numberFormat();\r\nconst usFmtInt = numberFormat({digitsAfterDecimal: 0});\r\nconst usFmtPct = numberFormat({\r\n digitsAfterDecimal: 1,\r\n scaler: 100,\r\n suffix: '%',\r\n});\r\n\r\nconst aggregatorTemplates = {\r\n count(formatter = usFmtInt) {\r\n return () =>\r\n function() {\r\n return {\r\n count: 0,\r\n push() {\r\n this.count++;\r\n },\r\n value() {\r\n return this.count;\r\n },\r\n format: formatter,\r\n };\r\n };\r\n },\r\n\r\n uniques(fn, formatter = usFmtInt) {\r\n return function([attr]) {\r\n return function() {\r\n return {\r\n uniq: [],\r\n push(record) {\r\n if (!Array.from(this.uniq).includes(record[attr])) {\r\n this.uniq.push(record[attr]);\r\n }\r\n },\r\n value() {\r\n return fn(this.uniq);\r\n },\r\n format: formatter,\r\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\r\n };\r\n };\r\n };\r\n },\r\n\r\n sum(formatter = usFmt) {\r\n return function([attr]) {\r\n return function() {\r\n return {\r\n sum: 0,\r\n push(record) {\r\n if (!isNaN(parseFloat(record[attr]))) {\r\n this.sum += parseFloat(record[attr]);\r\n }\r\n },\r\n value() {\r\n return this.sum;\r\n },\r\n format: formatter,\r\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\r\n };\r\n };\r\n };\r\n },\r\n\r\n extremes(mode, formatter = usFmt) {\r\n return function([attr]) {\r\n return function(data) {\r\n return {\r\n val: null,\r\n sorter: getSort(\r\n typeof data !== 'undefined' ? data.sorters : null,\r\n attr\r\n ),\r\n push(record) {\r\n let x = record[attr];\r\n if (['min', 'max'].includes(mode)) {\r\n x = parseFloat(x);\r\n if (!isNaN(x)) {\r\n this.val = Math[mode](x, this.val !== null ? this.val : x);\r\n }\r\n }\r\n if (\r\n mode === 'first' &&\r\n this.sorter(x, this.val !== null ? this.val : x) <= 0\r\n ) {\r\n this.val = x;\r\n }\r\n if (\r\n mode === 'last' &&\r\n this.sorter(x, this.val !== null ? this.val : x) >= 0\r\n ) {\r\n this.val = x;\r\n }\r\n },\r\n value() {\r\n return this.val;\r\n },\r\n format(x) {\r\n if (isNaN(x)) {\r\n return x;\r\n }\r\n return formatter(x);\r\n },\r\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\r\n };\r\n };\r\n };\r\n },\r\n\r\n quantile(q, formatter = usFmt) {\r\n return function([attr]) {\r\n return function() {\r\n return {\r\n vals: [],\r\n push(record) {\r\n const x = parseFloat(record[attr]);\r\n if (!isNaN(x)) {\r\n this.vals.push(x);\r\n }\r\n },\r\n value() {\r\n if (this.vals.length === 0) {\r\n return null;\r\n }\r\n this.vals.sort((a, b) => a - b);\r\n const i = (this.vals.length - 1) * q;\r\n return (this.vals[Math.floor(i)] + this.vals[Math.ceil(i)]) / 2.0;\r\n },\r\n format: formatter,\r\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\r\n };\r\n };\r\n };\r\n },\r\n\r\n runningStat(mode = 'mean', ddof = 1, formatter = usFmt) {\r\n return function([attr]) {\r\n return function() {\r\n return {\r\n n: 0.0,\r\n m: 0.0,\r\n s: 0.0,\r\n push(record) {\r\n const x = parseFloat(record[attr]);\r\n if (isNaN(x)) {\r\n return;\r\n }\r\n this.n += 1.0;\r\n if (this.n === 1.0) {\r\n this.m = x;\r\n }\r\n const m_new = this.m + (x - this.m) / this.n;\r\n this.s = this.s + (x - this.m) * (x - m_new);\r\n this.m = m_new;\r\n },\r\n value() {\r\n if (mode === 'mean') {\r\n if (this.n === 0) {\r\n return 0 / 0;\r\n }\r\n return this.m;\r\n }\r\n if (this.n <= ddof) {\r\n return 0;\r\n }\r\n switch (mode) {\r\n case 'var':\r\n return this.s / (this.n - ddof);\r\n case 'stdev':\r\n return Math.sqrt(this.s / (this.n - ddof));\r\n default:\r\n throw new Error('unknown mode for runningStat');\r\n }\r\n },\r\n format: formatter,\r\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\r\n };\r\n };\r\n };\r\n },\r\n\r\n sumOverSum(formatter = usFmt) {\r\n return function([num, denom]) {\r\n return function() {\r\n return {\r\n sumNum: 0,\r\n sumDenom: 0,\r\n push(record) {\r\n if (!isNaN(parseFloat(record[num]))) {\r\n this.sumNum += parseFloat(record[num]);\r\n }\r\n if (!isNaN(parseFloat(record[denom]))) {\r\n this.sumDenom += parseFloat(record[denom]);\r\n }\r\n },\r\n value() {\r\n return this.sumNum / this.sumDenom;\r\n },\r\n format: formatter,\r\n numInputs:\r\n typeof num !== 'undefined' && typeof denom !== 'undefined' ? 0 : 2,\r\n };\r\n };\r\n };\r\n },\r\n\r\n fractionOf(wrapped, type = 'total', formatter = usFmtPct) {\r\n return (...x) =>\r\n function(data, rowKey, colKey) {\r\n return {\r\n selector: {total: [[], []], row: [rowKey, []], col: [[], colKey]}[\r\n type\r\n ],\r\n inner: wrapped(...Array.from(x || []))(data, rowKey, colKey),\r\n push(record) {\r\n this.inner.push(record);\r\n },\r\n format: formatter,\r\n value() {\r\n return (\r\n this.inner.value() /\r\n data\r\n .getAggregator(...Array.from(this.selector || []))\r\n .inner.value()\r\n );\r\n },\r\n numInputs: wrapped(...Array.from(x || []))().numInputs,\r\n };\r\n };\r\n },\r\n};\r\n\r\naggregatorTemplates.countUnique = f =>\r\n aggregatorTemplates.uniques(x => x.length, f);\r\naggregatorTemplates.listUnique = s =>\r\n aggregatorTemplates.uniques(\r\n x => x.join(s),\r\n x => x\r\n );\r\naggregatorTemplates.max = f => aggregatorTemplates.extremes('max', f);\r\naggregatorTemplates.min = f => aggregatorTemplates.extremes('min', f);\r\naggregatorTemplates.first = f => aggregatorTemplates.extremes('first', f);\r\naggregatorTemplates.last = f => aggregatorTemplates.extremes('last', f);\r\naggregatorTemplates.median = f => aggregatorTemplates.quantile(0.5, f);\r\naggregatorTemplates.average = f =>\r\n aggregatorTemplates.runningStat('mean', 1, f);\r\naggregatorTemplates.var = (ddof, f) =>\r\n aggregatorTemplates.runningStat('var', ddof, f);\r\naggregatorTemplates.stdev = (ddof, f) =>\r\n aggregatorTemplates.runningStat('stdev', ddof, f);\r\n\r\n// default aggregators & renderers use US naming and number formatting\r\nconst aggregators = (tpl => ({\r\n // Count: tpl.count(usFmtInt),\r\n // 'Count Unique Values': tpl.countUnique(usFmtInt),\r\n // 'List Unique Values': tpl.listUnique(', '),\r\n Suma: tpl.sum(usFmt),\r\n // 'Integer Sum': tpl.sum(usFmtInt),\r\n Promedio: tpl.average(usFmt),\r\n // Median: tpl.median(usFmt),\r\n // 'Sample Variance': tpl.var(1, usFmt),\r\n // 'Sample Standard Deviation': tpl.stdev(1, usFmt),\r\n \"Mínimo\": tpl.min(usFmt),\r\n \"Máximo\": tpl.max(usFmt),\r\n // First: tpl.first(usFmt),\r\n // Last: tpl.last(usFmt),\r\n // 'Sum over Sum': tpl.sumOverSum(usFmt),\r\n // 'Sum as Fraction of Total': tpl.fractionOf(tpl.sum(), 'total', usFmtPct),\r\n // 'Sum as Fraction of Rows': tpl.fractionOf(tpl.sum(), 'row', usFmtPct),\r\n // 'Sum as Fraction of Columns': tpl.fractionOf(tpl.sum(), 'col', usFmtPct),\r\n // 'Count as Fraction of Total': tpl.fractionOf(tpl.count(), 'total', usFmtPct),\r\n // 'Count as Fraction of Rows': tpl.fractionOf(tpl.count(), 'row', usFmtPct),\r\n // 'Count as Fraction of Columns': tpl.fractionOf(tpl.count(), 'col', usFmtPct),\r\n}))(aggregatorTemplates);\r\n\r\nconst locales = {\r\n en: {\r\n aggregators,\r\n localeStrings: {\r\n renderError: 'An error occurred rendering the PivotTable results.',\r\n computeError: 'An error occurred computing the PivotTable results.',\r\n uiRenderError: 'An error occurred rendering the PivotTable UI.',\r\n selectAll: 'Select All',\r\n selectNone: 'Select None',\r\n tooMany: '(too many to list)',\r\n filterResults: 'Filter values',\r\n apply: 'Apply',\r\n cancel: 'Cancel',\r\n totals: 'Totals',\r\n vs: 'vs',\r\n by: 'by',\r\n },\r\n },\r\n};\r\n\r\n// dateFormat deriver l10n requires month and day names to be passed in directly\r\nconst mthNamesEn = [\r\n 'Jan',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'May',\r\n 'Jun',\r\n 'Jul',\r\n 'Aug',\r\n 'Sep',\r\n 'Oct',\r\n 'Nov',\r\n 'Dec',\r\n];\r\nconst dayNamesEn = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\nconst zeroPad = number => `0${number}`.substr(-2, 2); // eslint-disable-line no-magic-numbers\r\n\r\nconst derivers = {\r\n bin(col, binWidth) {\r\n return record => record[col] - (record[col] % binWidth);\r\n },\r\n dateFormat(\r\n col,\r\n formatString,\r\n utcOutput = false,\r\n mthNames = mthNamesEn,\r\n dayNames = dayNamesEn\r\n ) {\r\n const utc = utcOutput ? 'UTC' : '';\r\n return function(record) {\r\n const date = new Date(Date.parse(record[col]));\r\n if (isNaN(date)) {\r\n return '';\r\n }\r\n return formatString.replace(/%(.)/g, function(m, p) {\r\n switch (p) {\r\n case 'y':\r\n return date[`get${utc}FullYear`]();\r\n case 'm':\r\n return zeroPad(date[`get${utc}Month`]() + 1);\r\n case 'n':\r\n return mthNames[date[`get${utc}Month`]()];\r\n case 'd':\r\n return zeroPad(date[`get${utc}Date`]());\r\n case 'w':\r\n return dayNames[date[`get${utc}Day`]()];\r\n case 'x':\r\n return date[`get${utc}Day`]();\r\n case 'H':\r\n return zeroPad(date[`get${utc}Hours`]());\r\n case 'M':\r\n return zeroPad(date[`get${utc}Minutes`]());\r\n case 'S':\r\n return zeroPad(date[`get${utc}Seconds`]());\r\n default:\r\n return `%${p}`;\r\n }\r\n });\r\n };\r\n },\r\n};\r\n\r\n/*\r\nData Model class\r\n*/\r\n\r\nclass PivotData {\r\n constructor(inputProps = {}) {\r\n this.props = Object.assign({}, PivotData.defaultProps, inputProps);\r\n PropTypes.checkPropTypes(\r\n PivotData.propTypes,\r\n this.props,\r\n 'prop',\r\n 'PivotData'\r\n );\r\n\r\n this.aggregator = this.props.aggregators[this.props.aggregatorName](\r\n this.props.vals\r\n );\r\n this.tree = {};\r\n this.rowKeys = [];\r\n this.colKeys = [];\r\n this.rowTotals = {};\r\n this.colTotals = {};\r\n this.allTotal = this.aggregator(this, [], []);\r\n this.sorted = false;\r\n\r\n // iterate through input, accumulating data for cells\r\n PivotData.forEachRecord(\r\n this.props.data,\r\n this.props.derivedAttributes,\r\n record => {\r\n if (this.filter(record)) {\r\n this.processRecord(record);\r\n }\r\n }\r\n );\r\n }\r\n\r\n filter(record) {\r\n for (const k in this.props.valueFilter) {\r\n if (record[k] in this.props.valueFilter[k]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n forEachMatchingRecord(criteria, callback) {\r\n return PivotData.forEachRecord(\r\n this.props.data,\r\n this.props.derivedAttributes,\r\n record => {\r\n if (!this.filter(record)) {\r\n return;\r\n }\r\n for (const k in criteria) {\r\n const v = criteria[k];\r\n if (v !== (k in record ? record[k] : 'null')) {\r\n return;\r\n }\r\n }\r\n callback(record);\r\n }\r\n );\r\n }\r\n\r\n arrSort(attrs) {\r\n let a;\r\n const sortersArr = (() => {\r\n const result = [];\r\n for (a of Array.from(attrs)) {\r\n result.push(getSort(this.props.sorters, a));\r\n }\r\n return result;\r\n })();\r\n return function(a, b) {\r\n for (const i of Object.keys(sortersArr || {})) {\r\n const sorter = sortersArr[i];\r\n const comparison = sorter(a[i], b[i]);\r\n if (comparison !== 0) {\r\n return comparison;\r\n }\r\n }\r\n return 0;\r\n };\r\n }\r\n\r\n sortKeys() {\r\n if (!this.sorted) {\r\n this.sorted = true;\r\n const v = (r, c) => this.getAggregator(r, c).value();\r\n switch (this.props.rowOrder) {\r\n case 'value_a_to_z':\r\n this.rowKeys.sort((a, b) => naturalSort(v(a, []), v(b, [])));\r\n break;\r\n case 'value_z_to_a':\r\n this.rowKeys.sort((a, b) => -naturalSort(v(a, []), v(b, [])));\r\n break;\r\n default:\r\n this.rowKeys.sort(this.arrSort(this.props.rows));\r\n }\r\n switch (this.props.colOrder) {\r\n case 'value_a_to_z':\r\n this.colKeys.sort((a, b) => naturalSort(v([], a), v([], b)));\r\n break;\r\n case 'value_z_to_a':\r\n this.colKeys.sort((a, b) => -naturalSort(v([], a), v([], b)));\r\n break;\r\n default:\r\n this.colKeys.sort(this.arrSort(this.props.cols));\r\n }\r\n }\r\n }\r\n\r\n getColKeys() {\r\n this.sortKeys();\r\n return this.colKeys;\r\n }\r\n\r\n getRowKeys() {\r\n this.sortKeys();\r\n return this.rowKeys;\r\n }\r\n\r\n processRecord(record) {\r\n // this code is called in a tight loop\r\n const colKey = [];\r\n const rowKey = [];\r\n for (const x of Array.from(this.props.cols)) {\r\n colKey.push(x in record ? record[x] : 'null');\r\n }\r\n for (const x of Array.from(this.props.rows)) {\r\n rowKey.push(x in record ? record[x] : 'null');\r\n }\r\n const flatRowKey = rowKey.join(String.fromCharCode(0));\r\n const flatColKey = colKey.join(String.fromCharCode(0));\r\n\r\n this.allTotal.push(record);\r\n\r\n if (rowKey.length !== 0) {\r\n if (!this.rowTotals[flatRowKey]) {\r\n this.rowKeys.push(rowKey);\r\n this.rowTotals[flatRowKey] = this.aggregator(this, rowKey, []);\r\n }\r\n this.rowTotals[flatRowKey].push(record);\r\n }\r\n\r\n if (colKey.length !== 0) {\r\n if (!this.colTotals[flatColKey]) {\r\n this.colKeys.push(colKey);\r\n this.colTotals[flatColKey] = this.aggregator(this, [], colKey);\r\n }\r\n this.colTotals[flatColKey].push(record);\r\n }\r\n\r\n if (colKey.length !== 0 && rowKey.length !== 0) {\r\n if (!this.tree[flatRowKey]) {\r\n this.tree[flatRowKey] = {};\r\n }\r\n if (!this.tree[flatRowKey][flatColKey]) {\r\n this.tree[flatRowKey][flatColKey] = this.aggregator(\r\n this,\r\n rowKey,\r\n colKey\r\n );\r\n }\r\n this.tree[flatRowKey][flatColKey].push(record);\r\n }\r\n }\r\n\r\n getAggregator(rowKey, colKey) {\r\n let agg;\r\n const flatRowKey = rowKey.join(String.fromCharCode(0));\r\n const flatColKey = colKey.join(String.fromCharCode(0));\r\n if (rowKey.length === 0 && colKey.length === 0) {\r\n agg = this.allTotal;\r\n } else if (rowKey.length === 0) {\r\n agg = this.colTotals[flatColKey];\r\n } else if (colKey.length === 0) {\r\n agg = this.rowTotals[flatRowKey];\r\n } else {\r\n agg = this.tree[flatRowKey][flatColKey];\r\n }\r\n return (\r\n agg || {\r\n value() {\r\n return null;\r\n },\r\n format() {\r\n return '';\r\n },\r\n }\r\n );\r\n }\r\n}\r\n\r\n// can handle arrays or jQuery selections of tables\r\nPivotData.forEachRecord = function(input, derivedAttributes, f) {\r\n let addRecord, record;\r\n if (Object.getOwnPropertyNames(derivedAttributes).length === 0) {\r\n addRecord = f;\r\n } else {\r\n addRecord = function(record) {\r\n for (const k in derivedAttributes) {\r\n const derived = derivedAttributes[k](record);\r\n if (derived !== null) {\r\n record[k] = derived;\r\n }\r\n }\r\n return f(record);\r\n };\r\n }\r\n\r\n // if it's a function, have it call us back\r\n if (typeof input === 'function') {\r\n return input(addRecord);\r\n } else if (Array.isArray(input)) {\r\n if (Array.isArray(input[0])) {\r\n // array of arrays\r\n return (() => {\r\n const result = [];\r\n for (const i of Object.keys(input || {})) {\r\n const compactRecord = input[i];\r\n if (i > 0) {\r\n record = {};\r\n for (const j of Object.keys(input[0] || {})) {\r\n const k = input[0][j];\r\n record[k] = compactRecord[j];\r\n }\r\n result.push(addRecord(record));\r\n }\r\n }\r\n return result;\r\n })();\r\n }\r\n\r\n // array of objects\r\n return (() => {\r\n const result1 = [];\r\n for (record of Array.from(input)) {\r\n result1.push(addRecord(record));\r\n }\r\n return result1;\r\n })();\r\n }\r\n throw new Error('unknown input format');\r\n};\r\n\r\nPivotData.defaultProps = {\r\n aggregators: aggregators,\r\n cols: [],\r\n rows: [],\r\n vals: [],\r\n aggregatorName: 'Suma', // 'Count',\r\n sorters: {},\r\n valueFilter: {},\r\n rowOrder: 'key_a_to_z',\r\n colOrder: 'key_a_to_z',\r\n derivedAttributes: {},\r\n};\r\n\r\nPivotData.propTypes = {\r\n data: PropTypes.oneOfType([PropTypes.array, PropTypes.object, PropTypes.func])\r\n .isRequired,\r\n aggregatorName: PropTypes.string,\r\n cols: PropTypes.arrayOf(PropTypes.string),\r\n rows: PropTypes.arrayOf(PropTypes.string),\r\n vals: PropTypes.arrayOf(PropTypes.string),\r\n valueFilter: PropTypes.objectOf(PropTypes.objectOf(PropTypes.bool)),\r\n sorters: PropTypes.oneOfType([\r\n PropTypes.func,\r\n PropTypes.objectOf(PropTypes.func),\r\n ]),\r\n derivedAttributes: PropTypes.objectOf(PropTypes.func),\r\n rowOrder: PropTypes.oneOf(['key_a_to_z', 'value_a_to_z', 'value_z_to_a']),\r\n colOrder: PropTypes.oneOf(['key_a_to_z', 'value_a_to_z', 'value_z_to_a']),\r\n};\r\n\r\nexport {\r\n aggregatorTemplates,\r\n aggregators,\r\n derivers,\r\n locales,\r\n naturalSort,\r\n numberFormat,\r\n getSort,\r\n sortAs,\r\n PivotData,\r\n};\r\n"]} \ No newline at end of file +{"version":3,"sources":["../src/Utilities.js"],"names":["addSeparators","nStr","thousandsSep","decimalSep","x","String","split","x1","x2","length","rgx","test","replace","numberFormat","opts_in","defaults","digitsAfterDecimal","scaler","prefix","suffix","opts","Object","assign","isNaN","isFinite","result","toFixed","rx","rd","rz","naturalSort","as","bs","nas","Number","nbs","a","b","match","a1","shift","b1","sortAs","order","mapping","l_mapping","i","toLowerCase","getSort","sorters","attr","sort","usFmt","usFmtInt","usFmtPct","aggregatorTemplates","count","formatter","push","value","format","uniques","fn","uniq","record","Array","from","includes","numInputs","sum","parseFloat","extremes","mode","data","val","sorter","Math","quantile","q","vals","floor","ceil","runningStat","ddof","n","m","s","m_new","sqrt","Error","sumOverSum","num","denom","sumNum","sumDenom","fractionOf","wrapped","type","rowKey","colKey","selector","total","row","col","inner","getAggregator","countUnique","f","listUnique","join","max","min","first","last","median","average","var","stdev","aggregators","Conteo","tpl","Suma","Promedio","locales","en","localeStrings","renderError","computeError","uiRenderError","selectAll","selectNone","tooMany","filterResults","apply","cancel","totals","vs","by","mthNamesEn","dayNamesEn","zeroPad","number","substr","derivers","bin","binWidth","dateFormat","formatString","utcOutput","mthNames","dayNames","utc","date","Date","parse","p","PivotData","inputProps","props","defaultProps","PropTypes","checkPropTypes","propTypes","aggregator","aggregatorName","tree","rowKeys","colKeys","rowTotals","colTotals","allTotal","sorted","forEachRecord","derivedAttributes","filter","processRecord","k","valueFilter","criteria","callback","v","attrs","sortersArr","keys","comparison","r","c","rowOrder","arrSort","rows","colOrder","cols","sortKeys","flatRowKey","fromCharCode","flatColKey","agg","input","addRecord","getOwnPropertyNames","derived","isArray","compactRecord","j","result1","oneOfType","array","object","func","isRequired","string","arrayOf","objectOf","bool","oneOf"],"mappings":"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","file":"Utilities.js","sourcesContent":["import PropTypes from 'prop-types';\r\n\r\n/*\r\n * decaffeinate suggestions:\r\n * DS101: Remove unnecessary use of Array.from\r\n * DS102: Remove unnecessary code created because of implicit returns\r\n * DS104: Avoid inline assignments\r\n * DS201: Simplify complex destructure assignments\r\n * DS203: Remove `|| {}` from converted for-own loops\r\n * DS205: Consider reworking code to avoid use of IIFEs\r\n * DS207: Consider shorter variations of null checks\r\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\r\n */\r\n\r\nconst addSeparators = function(nStr, thousandsSep, decimalSep) {\r\n const x = String(nStr).split('.');\r\n let x1 = x[0];\r\n const x2 = x.length > 1 ? decimalSep + x[1] : '';\r\n const rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, `$1${thousandsSep}$2`);\r\n }\r\n return x1 + x2;\r\n};\r\n\r\nconst numberFormat = function(opts_in) {\r\n const defaults = {\r\n digitsAfterDecimal: 2,\r\n scaler: 1,\r\n thousandsSep: ',',\r\n decimalSep: '.',\r\n prefix: '',\r\n suffix: '',\r\n };\r\n const opts = Object.assign({}, defaults, opts_in);\r\n return function(x) {\r\n if (isNaN(x) || !isFinite(x)) {\r\n return '';\r\n }\r\n const result = addSeparators(\r\n (opts.scaler * x).toFixed(opts.digitsAfterDecimal),\r\n opts.thousandsSep,\r\n opts.decimalSep\r\n );\r\n return `${opts.prefix}${result}${opts.suffix}`;\r\n };\r\n};\r\n\r\nconst rx = /(\\d+)|(\\D+)/g;\r\nconst rd = /\\d/;\r\nconst rz = /^0/;\r\nconst naturalSort = (as, bs) => {\r\n // nulls first\r\n if (bs !== null && as === null) {\r\n return -1;\r\n }\r\n if (as !== null && bs === null) {\r\n return 1;\r\n }\r\n\r\n // then raw NaNs\r\n if (typeof as === 'number' && isNaN(as)) {\r\n return -1;\r\n }\r\n if (typeof bs === 'number' && isNaN(bs)) {\r\n return 1;\r\n }\r\n\r\n // numbers and numbery strings group together\r\n const nas = Number(as);\r\n const nbs = Number(bs);\r\n if (nas < nbs) {\r\n return -1;\r\n }\r\n if (nas > nbs) {\r\n return 1;\r\n }\r\n\r\n // within that, true numbers before numbery strings\r\n if (typeof as === 'number' && typeof bs !== 'number') {\r\n return -1;\r\n }\r\n if (typeof bs === 'number' && typeof as !== 'number') {\r\n return 1;\r\n }\r\n if (typeof as === 'number' && typeof bs === 'number') {\r\n return 0;\r\n }\r\n\r\n // 'Infinity' is a textual number, so less than 'A'\r\n if (isNaN(nbs) && !isNaN(nas)) {\r\n return -1;\r\n }\r\n if (isNaN(nas) && !isNaN(nbs)) {\r\n return 1;\r\n }\r\n\r\n // finally, \"smart\" string sorting per http://stackoverflow.com/a/4373421/112871\r\n let a = String(as);\r\n let b = String(bs);\r\n if (a === b) {\r\n return 0;\r\n }\r\n if (!rd.test(a) || !rd.test(b)) {\r\n return a > b ? 1 : -1;\r\n }\r\n\r\n // special treatment for strings containing digits\r\n a = a.match(rx);\r\n b = b.match(rx);\r\n while (a.length && b.length) {\r\n const a1 = a.shift();\r\n const b1 = b.shift();\r\n if (a1 !== b1) {\r\n if (rd.test(a1) && rd.test(b1)) {\r\n return a1.replace(rz, '.0') - b1.replace(rz, '.0');\r\n }\r\n return a1 > b1 ? 1 : -1;\r\n }\r\n }\r\n return a.length - b.length;\r\n};\r\n\r\nconst sortAs = function(order) {\r\n const mapping = {};\r\n\r\n // sort lowercased keys similarly\r\n const l_mapping = {};\r\n for (const i in order) {\r\n const x = order[i];\r\n mapping[x] = i;\r\n if (typeof x === 'string') {\r\n l_mapping[x.toLowerCase()] = i;\r\n }\r\n }\r\n return function(a, b) {\r\n if (a in mapping && b in mapping) {\r\n return mapping[a] - mapping[b];\r\n } else if (a in mapping) {\r\n return -1;\r\n } else if (b in mapping) {\r\n return 1;\r\n } else if (a in l_mapping && b in l_mapping) {\r\n return l_mapping[a] - l_mapping[b];\r\n } else if (a in l_mapping) {\r\n return -1;\r\n } else if (b in l_mapping) {\r\n return 1;\r\n }\r\n return naturalSort(a, b);\r\n };\r\n};\r\n\r\nconst getSort = function(sorters, attr) {\r\n if (sorters) {\r\n if (typeof sorters === 'function') {\r\n const sort = sorters(attr);\r\n if (typeof sort === 'function') {\r\n return sort;\r\n }\r\n } else if (attr in sorters) {\r\n return sorters[attr];\r\n }\r\n }\r\n return naturalSort;\r\n};\r\n\r\n// aggregator templates default to US number formatting but this is overrideable\r\nconst usFmt = numberFormat();\r\nconst usFmtInt = numberFormat({digitsAfterDecimal: 0});\r\nconst usFmtPct = numberFormat({\r\n digitsAfterDecimal: 1,\r\n scaler: 100,\r\n suffix: '%',\r\n});\r\n\r\nconst aggregatorTemplates = {\r\n count(formatter = usFmtInt) {\r\n return () =>\r\n function() {\r\n return {\r\n count: 0,\r\n push() {\r\n this.count++;\r\n },\r\n value() {\r\n return this.count;\r\n },\r\n format: formatter,\r\n };\r\n };\r\n },\r\n\r\n uniques(fn, formatter = usFmtInt) {\r\n return function([attr]) {\r\n return function() {\r\n return {\r\n uniq: [],\r\n push(record) {\r\n if (!Array.from(this.uniq).includes(record[attr])) {\r\n this.uniq.push(record[attr]);\r\n }\r\n },\r\n value() {\r\n return fn(this.uniq);\r\n },\r\n format: formatter,\r\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\r\n };\r\n };\r\n };\r\n },\r\n\r\n sum(formatter = usFmt) {\r\n return function([attr]) {\r\n return function() {\r\n return {\r\n sum: 0,\r\n push(record) {\r\n if (!isNaN(parseFloat(record[attr]))) {\r\n this.sum += parseFloat(record[attr]);\r\n }\r\n },\r\n value() {\r\n return this.sum;\r\n },\r\n format: formatter,\r\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\r\n };\r\n };\r\n };\r\n },\r\n\r\n extremes(mode, formatter = usFmt) {\r\n return function([attr]) {\r\n return function(data) {\r\n return {\r\n val: null,\r\n sorter: getSort(\r\n typeof data !== 'undefined' ? data.sorters : null,\r\n attr\r\n ),\r\n push(record) {\r\n let x = record[attr];\r\n if (['min', 'max'].includes(mode)) {\r\n x = parseFloat(x);\r\n if (!isNaN(x)) {\r\n this.val = Math[mode](x, this.val !== null ? this.val : x);\r\n }\r\n }\r\n if (\r\n mode === 'first' &&\r\n this.sorter(x, this.val !== null ? this.val : x) <= 0\r\n ) {\r\n this.val = x;\r\n }\r\n if (\r\n mode === 'last' &&\r\n this.sorter(x, this.val !== null ? this.val : x) >= 0\r\n ) {\r\n this.val = x;\r\n }\r\n },\r\n value() {\r\n return this.val;\r\n },\r\n format(x) {\r\n if (isNaN(x)) {\r\n return x;\r\n }\r\n return formatter(x);\r\n },\r\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\r\n };\r\n };\r\n };\r\n },\r\n\r\n quantile(q, formatter = usFmt) {\r\n return function([attr]) {\r\n return function() {\r\n return {\r\n vals: [],\r\n push(record) {\r\n const x = parseFloat(record[attr]);\r\n if (!isNaN(x)) {\r\n this.vals.push(x);\r\n }\r\n },\r\n value() {\r\n if (this.vals.length === 0) {\r\n return null;\r\n }\r\n this.vals.sort((a, b) => a - b);\r\n const i = (this.vals.length - 1) * q;\r\n return (this.vals[Math.floor(i)] + this.vals[Math.ceil(i)]) / 2.0;\r\n },\r\n format: formatter,\r\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\r\n };\r\n };\r\n };\r\n },\r\n\r\n runningStat(mode = 'mean', ddof = 1, formatter = usFmt) {\r\n return function([attr]) {\r\n return function() {\r\n return {\r\n n: 0.0,\r\n m: 0.0,\r\n s: 0.0,\r\n push(record) {\r\n const x = parseFloat(record[attr]);\r\n if (isNaN(x)) {\r\n return;\r\n }\r\n this.n += 1.0;\r\n if (this.n === 1.0) {\r\n this.m = x;\r\n }\r\n const m_new = this.m + (x - this.m) / this.n;\r\n this.s = this.s + (x - this.m) * (x - m_new);\r\n this.m = m_new;\r\n },\r\n value() {\r\n if (mode === 'mean') {\r\n if (this.n === 0) {\r\n return 0 / 0;\r\n }\r\n return this.m;\r\n }\r\n if (this.n <= ddof) {\r\n return 0;\r\n }\r\n switch (mode) {\r\n case 'var':\r\n return this.s / (this.n - ddof);\r\n case 'stdev':\r\n return Math.sqrt(this.s / (this.n - ddof));\r\n default:\r\n throw new Error('unknown mode for runningStat');\r\n }\r\n },\r\n format: formatter,\r\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\r\n };\r\n };\r\n };\r\n },\r\n\r\n sumOverSum(formatter = usFmt) {\r\n return function([num, denom]) {\r\n return function() {\r\n return {\r\n sumNum: 0,\r\n sumDenom: 0,\r\n push(record) {\r\n if (!isNaN(parseFloat(record[num]))) {\r\n this.sumNum += parseFloat(record[num]);\r\n }\r\n if (!isNaN(parseFloat(record[denom]))) {\r\n this.sumDenom += parseFloat(record[denom]);\r\n }\r\n },\r\n value() {\r\n return this.sumNum / this.sumDenom;\r\n },\r\n format: formatter,\r\n numInputs:\r\n typeof num !== 'undefined' && typeof denom !== 'undefined' ? 0 : 2,\r\n };\r\n };\r\n };\r\n },\r\n\r\n fractionOf(wrapped, type = 'total', formatter = usFmtPct) {\r\n return (...x) =>\r\n function(data, rowKey, colKey) {\r\n return {\r\n selector: {total: [[], []], row: [rowKey, []], col: [[], colKey]}[\r\n type\r\n ],\r\n inner: wrapped(...Array.from(x || []))(data, rowKey, colKey),\r\n push(record) {\r\n this.inner.push(record);\r\n },\r\n format: formatter,\r\n value() {\r\n return (\r\n this.inner.value() /\r\n data\r\n .getAggregator(...Array.from(this.selector || []))\r\n .inner.value()\r\n );\r\n },\r\n numInputs: wrapped(...Array.from(x || []))().numInputs,\r\n };\r\n };\r\n },\r\n};\r\n\r\naggregatorTemplates.countUnique = f =>\r\n aggregatorTemplates.uniques(x => x.length, f);\r\naggregatorTemplates.listUnique = s =>\r\n aggregatorTemplates.uniques(\r\n x => x.join(s),\r\n x => x\r\n );\r\naggregatorTemplates.max = f => aggregatorTemplates.extremes('max', f);\r\naggregatorTemplates.min = f => aggregatorTemplates.extremes('min', f);\r\naggregatorTemplates.first = f => aggregatorTemplates.extremes('first', f);\r\naggregatorTemplates.last = f => aggregatorTemplates.extremes('last', f);\r\naggregatorTemplates.median = f => aggregatorTemplates.quantile(0.5, f);\r\naggregatorTemplates.average = f =>\r\n aggregatorTemplates.runningStat('mean', 1, f);\r\naggregatorTemplates.var = (ddof, f) =>\r\n aggregatorTemplates.runningStat('var', ddof, f);\r\naggregatorTemplates.stdev = (ddof, f) =>\r\n aggregatorTemplates.runningStat('stdev', ddof, f);\r\n\r\n// default aggregators & renderers use US naming and number formatting\r\nconst aggregators = (tpl => ({\r\n Conteo: tpl.count(usFmtInt),\r\n // 'Count Unique Values': tpl.countUnique(usFmtInt),\r\n // 'List Unique Values': tpl.listUnique(', '),\r\n Suma: tpl.sum(usFmt),\r\n // 'Integer Sum': tpl.sum(usFmtInt),\r\n Promedio: tpl.average(usFmt),\r\n // Median: tpl.median(usFmt),\r\n // 'Sample Variance': tpl.var(1, usFmt),\r\n // 'Sample Standard Deviation': tpl.stdev(1, usFmt),\r\n \"Mínimo\": tpl.min(usFmt),\r\n \"Máximo\": tpl.max(usFmt),\r\n // First: tpl.first(usFmt),\r\n // Last: tpl.last(usFmt),\r\n // 'Sum over Sum': tpl.sumOverSum(usFmt),\r\n // 'Sum as Fraction of Total': tpl.fractionOf(tpl.sum(), 'total', usFmtPct),\r\n // 'Sum as Fraction of Rows': tpl.fractionOf(tpl.sum(), 'row', usFmtPct),\r\n // 'Sum as Fraction of Columns': tpl.fractionOf(tpl.sum(), 'col', usFmtPct),\r\n // 'Count as Fraction of Total': tpl.fractionOf(tpl.count(), 'total', usFmtPct),\r\n // 'Count as Fraction of Rows': tpl.fractionOf(tpl.count(), 'row', usFmtPct),\r\n // 'Count as Fraction of Columns': tpl.fractionOf(tpl.count(), 'col', usFmtPct),\r\n}))(aggregatorTemplates);\r\n\r\nconst locales = {\r\n en: {\r\n aggregators,\r\n localeStrings: {\r\n renderError: 'An error occurred rendering the PivotTable results.',\r\n computeError: 'An error occurred computing the PivotTable results.',\r\n uiRenderError: 'An error occurred rendering the PivotTable UI.',\r\n selectAll: 'Select All',\r\n selectNone: 'Select None',\r\n tooMany: '(too many to list)',\r\n filterResults: 'Filter values',\r\n apply: 'Apply',\r\n cancel: 'Cancel',\r\n totals: 'Totals',\r\n vs: 'vs',\r\n by: 'by',\r\n },\r\n },\r\n};\r\n\r\n// dateFormat deriver l10n requires month and day names to be passed in directly\r\nconst mthNamesEn = [\r\n 'Jan',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'May',\r\n 'Jun',\r\n 'Jul',\r\n 'Aug',\r\n 'Sep',\r\n 'Oct',\r\n 'Nov',\r\n 'Dec',\r\n];\r\nconst dayNamesEn = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\nconst zeroPad = number => `0${number}`.substr(-2, 2); // eslint-disable-line no-magic-numbers\r\n\r\nconst derivers = {\r\n bin(col, binWidth) {\r\n return record => record[col] - (record[col] % binWidth);\r\n },\r\n dateFormat(\r\n col,\r\n formatString,\r\n utcOutput = false,\r\n mthNames = mthNamesEn,\r\n dayNames = dayNamesEn\r\n ) {\r\n const utc = utcOutput ? 'UTC' : '';\r\n return function(record) {\r\n const date = new Date(Date.parse(record[col]));\r\n if (isNaN(date)) {\r\n return '';\r\n }\r\n return formatString.replace(/%(.)/g, function(m, p) {\r\n switch (p) {\r\n case 'y':\r\n return date[`get${utc}FullYear`]();\r\n case 'm':\r\n return zeroPad(date[`get${utc}Month`]() + 1);\r\n case 'n':\r\n return mthNames[date[`get${utc}Month`]()];\r\n case 'd':\r\n return zeroPad(date[`get${utc}Date`]());\r\n case 'w':\r\n return dayNames[date[`get${utc}Day`]()];\r\n case 'x':\r\n return date[`get${utc}Day`]();\r\n case 'H':\r\n return zeroPad(date[`get${utc}Hours`]());\r\n case 'M':\r\n return zeroPad(date[`get${utc}Minutes`]());\r\n case 'S':\r\n return zeroPad(date[`get${utc}Seconds`]());\r\n default:\r\n return `%${p}`;\r\n }\r\n });\r\n };\r\n },\r\n};\r\n\r\n/*\r\nData Model class\r\n*/\r\n\r\nclass PivotData {\r\n constructor(inputProps = {}) {\r\n this.props = Object.assign({}, PivotData.defaultProps, inputProps);\r\n PropTypes.checkPropTypes(\r\n PivotData.propTypes,\r\n this.props,\r\n 'prop',\r\n 'PivotData'\r\n );\r\n\r\n this.aggregator = this.props.aggregators[this.props.aggregatorName](\r\n this.props.vals\r\n );\r\n this.tree = {};\r\n this.rowKeys = [];\r\n this.colKeys = [];\r\n this.rowTotals = {};\r\n this.colTotals = {};\r\n this.allTotal = this.aggregator(this, [], []);\r\n this.sorted = false;\r\n\r\n // iterate through input, accumulating data for cells\r\n PivotData.forEachRecord(\r\n this.props.data,\r\n this.props.derivedAttributes,\r\n record => {\r\n if (this.filter(record)) {\r\n this.processRecord(record);\r\n }\r\n }\r\n );\r\n }\r\n\r\n filter(record) {\r\n for (const k in this.props.valueFilter) {\r\n if (record[k] in this.props.valueFilter[k]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n forEachMatchingRecord(criteria, callback) {\r\n return PivotData.forEachRecord(\r\n this.props.data,\r\n this.props.derivedAttributes,\r\n record => {\r\n if (!this.filter(record)) {\r\n return;\r\n }\r\n for (const k in criteria) {\r\n const v = criteria[k];\r\n if (v !== (k in record ? record[k] : 'null')) {\r\n return;\r\n }\r\n }\r\n callback(record);\r\n }\r\n );\r\n }\r\n\r\n arrSort(attrs) {\r\n let a;\r\n const sortersArr = (() => {\r\n const result = [];\r\n for (a of Array.from(attrs)) {\r\n result.push(getSort(this.props.sorters, a));\r\n }\r\n return result;\r\n })();\r\n return function(a, b) {\r\n for (const i of Object.keys(sortersArr || {})) {\r\n const sorter = sortersArr[i];\r\n const comparison = sorter(a[i], b[i]);\r\n if (comparison !== 0) {\r\n return comparison;\r\n }\r\n }\r\n return 0;\r\n };\r\n }\r\n\r\n sortKeys() {\r\n if (!this.sorted) {\r\n this.sorted = true;\r\n const v = (r, c) => this.getAggregator(r, c).value();\r\n switch (this.props.rowOrder) {\r\n case 'value_a_to_z':\r\n this.rowKeys.sort((a, b) => naturalSort(v(a, []), v(b, [])));\r\n break;\r\n case 'value_z_to_a':\r\n this.rowKeys.sort((a, b) => -naturalSort(v(a, []), v(b, [])));\r\n break;\r\n default:\r\n this.rowKeys.sort(this.arrSort(this.props.rows));\r\n }\r\n switch (this.props.colOrder) {\r\n case 'value_a_to_z':\r\n this.colKeys.sort((a, b) => naturalSort(v([], a), v([], b)));\r\n break;\r\n case 'value_z_to_a':\r\n this.colKeys.sort((a, b) => -naturalSort(v([], a), v([], b)));\r\n break;\r\n default:\r\n this.colKeys.sort(this.arrSort(this.props.cols));\r\n }\r\n }\r\n }\r\n\r\n getColKeys() {\r\n this.sortKeys();\r\n return this.colKeys;\r\n }\r\n\r\n getRowKeys() {\r\n this.sortKeys();\r\n return this.rowKeys;\r\n }\r\n\r\n processRecord(record) {\r\n // this code is called in a tight loop\r\n const colKey = [];\r\n const rowKey = [];\r\n for (const x of Array.from(this.props.cols)) {\r\n colKey.push(x in record ? record[x] : 'null');\r\n }\r\n for (const x of Array.from(this.props.rows)) {\r\n rowKey.push(x in record ? record[x] : 'null');\r\n }\r\n const flatRowKey = rowKey.join(String.fromCharCode(0));\r\n const flatColKey = colKey.join(String.fromCharCode(0));\r\n\r\n this.allTotal.push(record);\r\n\r\n if (rowKey.length !== 0) {\r\n if (!this.rowTotals[flatRowKey]) {\r\n this.rowKeys.push(rowKey);\r\n this.rowTotals[flatRowKey] = this.aggregator(this, rowKey, []);\r\n }\r\n this.rowTotals[flatRowKey].push(record);\r\n }\r\n\r\n if (colKey.length !== 0) {\r\n if (!this.colTotals[flatColKey]) {\r\n this.colKeys.push(colKey);\r\n this.colTotals[flatColKey] = this.aggregator(this, [], colKey);\r\n }\r\n this.colTotals[flatColKey].push(record);\r\n }\r\n\r\n if (colKey.length !== 0 && rowKey.length !== 0) {\r\n if (!this.tree[flatRowKey]) {\r\n this.tree[flatRowKey] = {};\r\n }\r\n if (!this.tree[flatRowKey][flatColKey]) {\r\n this.tree[flatRowKey][flatColKey] = this.aggregator(\r\n this,\r\n rowKey,\r\n colKey\r\n );\r\n }\r\n this.tree[flatRowKey][flatColKey].push(record);\r\n }\r\n }\r\n\r\n getAggregator(rowKey, colKey) {\r\n let agg;\r\n const flatRowKey = rowKey.join(String.fromCharCode(0));\r\n const flatColKey = colKey.join(String.fromCharCode(0));\r\n if (rowKey.length === 0 && colKey.length === 0) {\r\n agg = this.allTotal;\r\n } else if (rowKey.length === 0) {\r\n agg = this.colTotals[flatColKey];\r\n } else if (colKey.length === 0) {\r\n agg = this.rowTotals[flatRowKey];\r\n } else {\r\n agg = this.tree[flatRowKey][flatColKey];\r\n }\r\n return (\r\n agg || {\r\n value() {\r\n return null;\r\n },\r\n format() {\r\n return '';\r\n },\r\n }\r\n );\r\n }\r\n}\r\n\r\n// can handle arrays or jQuery selections of tables\r\nPivotData.forEachRecord = function(input, derivedAttributes, f) {\r\n let addRecord, record;\r\n if (Object.getOwnPropertyNames(derivedAttributes).length === 0) {\r\n addRecord = f;\r\n } else {\r\n addRecord = function(record) {\r\n for (const k in derivedAttributes) {\r\n const derived = derivedAttributes[k](record);\r\n if (derived !== null) {\r\n record[k] = derived;\r\n }\r\n }\r\n return f(record);\r\n };\r\n }\r\n\r\n // if it's a function, have it call us back\r\n if (typeof input === 'function') {\r\n return input(addRecord);\r\n } else if (Array.isArray(input)) {\r\n if (Array.isArray(input[0])) {\r\n // array of arrays\r\n return (() => {\r\n const result = [];\r\n for (const i of Object.keys(input || {})) {\r\n const compactRecord = input[i];\r\n if (i > 0) {\r\n record = {};\r\n for (const j of Object.keys(input[0] || {})) {\r\n const k = input[0][j];\r\n record[k] = compactRecord[j];\r\n }\r\n result.push(addRecord(record));\r\n }\r\n }\r\n return result;\r\n })();\r\n }\r\n\r\n // array of objects\r\n return (() => {\r\n const result1 = [];\r\n for (record of Array.from(input)) {\r\n result1.push(addRecord(record));\r\n }\r\n return result1;\r\n })();\r\n }\r\n throw new Error('unknown input format');\r\n};\r\n\r\nPivotData.defaultProps = {\r\n aggregators: aggregators,\r\n cols: [],\r\n rows: [],\r\n vals: [],\r\n aggregatorName: 'Suma', // 'Count',\r\n sorters: {},\r\n valueFilter: {},\r\n rowOrder: 'key_a_to_z',\r\n colOrder: 'key_a_to_z',\r\n derivedAttributes: {},\r\n};\r\n\r\nPivotData.propTypes = {\r\n data: PropTypes.oneOfType([PropTypes.array, PropTypes.object, PropTypes.func])\r\n .isRequired,\r\n aggregatorName: PropTypes.string,\r\n cols: PropTypes.arrayOf(PropTypes.string),\r\n rows: PropTypes.arrayOf(PropTypes.string),\r\n vals: PropTypes.arrayOf(PropTypes.string),\r\n valueFilter: PropTypes.objectOf(PropTypes.objectOf(PropTypes.bool)),\r\n sorters: PropTypes.oneOfType([\r\n PropTypes.func,\r\n PropTypes.objectOf(PropTypes.func),\r\n ]),\r\n derivedAttributes: PropTypes.objectOf(PropTypes.func),\r\n rowOrder: PropTypes.oneOf(['key_a_to_z', 'value_a_to_z', 'value_z_to_a']),\r\n colOrder: PropTypes.oneOf(['key_a_to_z', 'value_a_to_z', 'value_z_to_a']),\r\n};\r\n\r\nexport {\r\n aggregatorTemplates,\r\n aggregators,\r\n derivers,\r\n locales,\r\n naturalSort,\r\n numberFormat,\r\n getSort,\r\n sortAs,\r\n PivotData,\r\n};\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 0da25e1..fd70ad1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "v-react-pivottable", - "version": "0.11.10", + "version": "0.11.11", "description": "A React-based pivot table", "main": "PivotTableUI.js", "files": [