UNPKG

18.8 kBSource Map (JSON)View Raw
1{"version":3,"sources":["src/TableRenderers.jsx"],"names":["spanSize","arr","i","j","x","asc","end","noDraw","len","length","asc1","end1","stop","redColorScaleGenerator","values","min","Math","apply","max","nonRed","round","backgroundColor","makeRenderer","opts","TableRenderer","pivotData","props","colAttrs","cols","rowAttrs","rows","rowKeys","getRowKeys","colKeys","getColKeys","grandTotalAggregator","getAggregator","valueCellColors","rowTotalColors","colTotalColors","heatmapMode","colorScaleGenerator","tableColorScaleGenerator","rowTotalValues","map","value","colTotalValues","allValues","push","r","c","colorScale","v","rowColorScales","rowValues","colColorScales","colValues","colKey","rowKey","totalAggregator","txt","aggregator","format","PureComponent","defaultProps","propTypes","func","TSVExportRenderer","headerRow","aggregatorName","join","result","row","unshift","width","window","innerWidth","height","innerHeight","Table"],"mappings":"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","file":"TableRenderers.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {PivotData} from './Utilities';\n\n// helper function for setting row/col-span in pivotTableRenderer\nconst spanSize = function(arr, i, j) {\n let x;\n if (i !== 0) {\n let asc, end;\n let noDraw = true;\n for (\n x = 0, end = j, asc = end >= 0;\n asc ? x <= end : x >= end;\n asc ? x++ : x--\n ) {\n if (arr[i - 1][x] !== arr[i][x]) {\n noDraw = false;\n }\n }\n if (noDraw) {\n return -1;\n }\n }\n let len = 0;\n while (i + len < arr.length) {\n let asc1, end1;\n let stop = false;\n for (\n x = 0, end1 = j, asc1 = end1 >= 0;\n asc1 ? x <= end1 : x >= end1;\n asc1 ? x++ : x--\n ) {\n if (arr[i][x] !== arr[i + len][x]) {\n stop = true;\n }\n }\n if (stop) {\n break;\n }\n len++;\n }\n return len;\n};\n\nfunction redColorScaleGenerator(values) {\n const min = Math.min.apply(Math, values);\n const max = Math.max.apply(Math, values);\n return x => {\n // eslint-disable-next-line no-magic-numbers\n const nonRed = 255 - Math.round(255 * (x - min) / (max - min));\n return {backgroundColor: `rgb(255,${nonRed},${nonRed})`};\n };\n}\n\nfunction makeRenderer(opts = {}) {\n class TableRenderer extends React.PureComponent {\n render() {\n const pivotData = new PivotData(this.props);\n const colAttrs = pivotData.props.cols;\n const rowAttrs = pivotData.props.rows;\n const rowKeys = pivotData.getRowKeys();\n const colKeys = pivotData.getColKeys();\n const grandTotalAggregator = pivotData.getAggregator([], []);\n\n let valueCellColors = () => {};\n let rowTotalColors = () => {};\n let colTotalColors = () => {};\n if (opts.heatmapMode) {\n const colorScaleGenerator = this.props.tableColorScaleGenerator;\n const rowTotalValues = colKeys.map(x =>\n pivotData.getAggregator([], x).value()\n );\n rowTotalColors = colorScaleGenerator(rowTotalValues);\n const colTotalValues = rowKeys.map(x =>\n pivotData.getAggregator(x, []).value()\n );\n colTotalColors = colorScaleGenerator(colTotalValues);\n\n if (opts.heatmapMode === 'full') {\n const allValues = [];\n rowKeys.map(r =>\n colKeys.map(c =>\n allValues.push(pivotData.getAggregator(r, c).value())\n )\n );\n const colorScale = colorScaleGenerator(allValues);\n valueCellColors = (r, c, v) => colorScale(v);\n } else if (opts.heatmapMode === 'row') {\n const rowColorScales = {};\n rowKeys.map(r => {\n const rowValues = colKeys.map(x =>\n pivotData.getAggregator(r, x).value()\n );\n rowColorScales[r] = colorScaleGenerator(rowValues);\n });\n valueCellColors = (r, c, v) => rowColorScales[r](v);\n } else if (opts.heatmapMode === 'col') {\n const colColorScales = {};\n colKeys.map(c => {\n const colValues = rowKeys.map(x =>\n pivotData.getAggregator(x, c).value()\n );\n colColorScales[c] = colorScaleGenerator(colValues);\n });\n valueCellColors = (r, c, v) => colColorScales[c](v);\n }\n }\n\n return (\n <table className=\"pvtTable\">\n <thead>\n {colAttrs.map(function(c, j) {\n return (\n <tr key={`colAttr${j}`}>\n {j === 0 &&\n rowAttrs.length !== 0 && (\n <th colSpan={rowAttrs.length} rowSpan={colAttrs.length} />\n )}\n <th className=\"pvtAxisLabel\">{c}</th>\n {colKeys.map(function(colKey, i) {\n const x = spanSize(colKeys, i, j);\n if (x === -1) {\n return null;\n }\n return (\n <th\n className=\"pvtColLabel\"\n key={`colKey${i}`}\n colSpan={x}\n rowSpan={\n j === colAttrs.length - 1 && rowAttrs.length !== 0\n ? 2\n : 1\n }\n >\n {colKey[j]}\n </th>\n );\n })}\n\n {j === 0 && (\n <th\n className=\"pvtTotalLabel\"\n rowSpan={\n colAttrs.length + (rowAttrs.length === 0 ? 0 : 1)\n }\n >\n Totals\n </th>\n )}\n </tr>\n );\n })}\n\n {rowAttrs.length !== 0 && (\n <tr>\n {rowAttrs.map(function(r, i) {\n return (\n <th className=\"pvtAxisLabel\" key={`rowAttr${i}`}>\n {r}\n </th>\n );\n })}\n <th className=\"pvtTotalLabel\">\n {colAttrs.length === 0 ? 'Totals' : null}\n </th>\n </tr>\n )}\n </thead>\n\n <tbody>\n {rowKeys.map(function(rowKey, i) {\n const totalAggregator = pivotData.getAggregator(rowKey, []);\n return (\n <tr key={`rowKeyRow${i}`}>\n {rowKey.map(function(txt, j) {\n const x = spanSize(rowKeys, i, j);\n if (x === -1) {\n return null;\n }\n return (\n <th\n key={`rowKeyLabel${i}-${j}`}\n className=\"pvtRowLabel\"\n rowSpan={x}\n colSpan={\n j === rowAttrs.length - 1 && colAttrs.length !== 0\n ? 2\n : 1\n }\n >\n {txt}\n </th>\n );\n })}\n {colKeys.map(function(colKey, j) {\n const aggregator = pivotData.getAggregator(rowKey, colKey);\n return (\n <td\n className=\"pvtVal\"\n key={`pvtVal${i}-${j}`}\n style={valueCellColors(\n rowKey,\n colKey,\n aggregator.value()\n )}\n >\n {aggregator.format(aggregator.value())}\n </td>\n );\n })}\n <td\n className=\"pvtTotal\"\n style={colTotalColors(totalAggregator.value())}\n >\n {totalAggregator.format(totalAggregator.value())}\n </td>\n </tr>\n );\n })}\n\n <tr>\n <th\n className=\"pvtTotalLabel\"\n colSpan={rowAttrs.length + (colAttrs.length === 0 ? 0 : 1)}\n >\n Totals\n </th>\n\n {colKeys.map(function(colKey, i) {\n const totalAggregator = pivotData.getAggregator([], colKey);\n return (\n <td\n className=\"pvtTotal\"\n key={`total${i}`}\n style={rowTotalColors(totalAggregator.value())}\n >\n {totalAggregator.format(totalAggregator.value())}\n </td>\n );\n })}\n\n <td className=\"pvtGrandTotal\">\n {grandTotalAggregator.format(grandTotalAggregator.value())}\n </td>\n </tr>\n </tbody>\n </table>\n );\n }\n }\n\n TableRenderer.defaultProps = PivotData.defaultProps;\n TableRenderer.propTypes = PivotData.propTypes;\n TableRenderer.defaultProps.tableColorScaleGenerator = redColorScaleGenerator;\n TableRenderer.propTypes.tableColorScaleGenerator = PropTypes.func;\n return TableRenderer;\n}\n\nclass TSVExportRenderer extends React.PureComponent {\n render() {\n const pivotData = new PivotData(this.props);\n const rowKeys = pivotData.getRowKeys();\n const colKeys = pivotData.getColKeys();\n if (rowKeys.length === 0) {\n rowKeys.push([]);\n }\n if (colKeys.length === 0) {\n colKeys.push([]);\n }\n\n const headerRow = pivotData.props.rows.map(r => r);\n if (colKeys.length === 1 && colKeys[0].length === 0) {\n headerRow.push(this.props.aggregatorName);\n } else {\n colKeys.map(c => headerRow.push(c.join('-')));\n }\n\n const result = rowKeys.map(r => {\n const row = r.map(x => x);\n colKeys.map(c => {\n const v = pivotData.getAggregator(r, c).value();\n row.push(v ? v : '');\n });\n return row;\n });\n\n result.unshift(headerRow);\n\n return (\n <textarea\n value={result.map(r => r.join('\\t')).join('\\n')}\n style={{width: window.innerWidth / 2, height: window.innerHeight / 2}}\n readOnly={true}\n />\n );\n }\n}\n\nTSVExportRenderer.defaultProps = PivotData.defaultProps;\nTSVExportRenderer.propTypes = PivotData.propTypes;\n\nexport default {\n Table: makeRenderer(),\n 'Table Heatmap': makeRenderer({heatmapMode: 'full'}),\n 'Table Col Heatmap': makeRenderer({heatmapMode: 'col'}),\n 'Table Row Heatmap': makeRenderer({heatmapMode: 'row'}),\n 'Exportable TSV': TSVExportRenderer,\n};\n"]}
\No newline at end of file