From dbc8168d3adee08c95ed3a2c314ef7cf03ce3c5b Mon Sep 17 00:00:00 2001 From: Prakhar Goel Date: Thu, 6 Jun 2019 00:11:11 +0000 Subject: [PATCH] Added in support for the rowTotal and colTotal table options. --- src/TableRenderers.jsx | 112 +++++++++++++++++++++++------------------ 1 file changed, 62 insertions(+), 50 deletions(-) diff --git a/src/TableRenderers.jsx b/src/TableRenderers.jsx index 849894d..c11a858 100644 --- a/src/TableRenderers.jsx +++ b/src/TableRenderers.jsx @@ -61,21 +61,27 @@ function makeRenderer(opts = {}) { const rowKeys = pivotData.getRowKeys(); const colKeys = pivotData.getColKeys(); const grandTotalAggregator = pivotData.getAggregator([], []); + const tableOptions = this.props.tableOptions; + const rowTotals = ('rowTotals' in tableOptions ? tableOptions.rowTotals : true) || colAttrs.length === 0; + const colTotals = ('colTotals' in tableOptions ? tableOptions.colTotals : true) || rowAttrs.length === 0; let valueCellColors = () => {}; let rowTotalColors = () => {}; let colTotalColors = () => {}; if (opts.heatmapMode) { const colorScaleGenerator = this.props.tableColorScaleGenerator; - const rowTotalValues = colKeys.map(x => - pivotData.getAggregator([], x).value() - ); - rowTotalColors = colorScaleGenerator(rowTotalValues); - const colTotalValues = rowKeys.map(x => - pivotData.getAggregator(x, []).value() - ); - colTotalColors = colorScaleGenerator(colTotalValues); - + if (colTotals) { + const rowTotalValues = colKeys.map(x => + pivotData.getAggregator([], x).value() + ); + rowTotalColors = colorScaleGenerator(rowTotalValues); + } + if (rowTotals) { + const colTotalValues = rowKeys.map(x => + pivotData.getAggregator(x, []).value() + ); + colTotalColors = colorScaleGenerator(colTotalValues); + } if (opts.heatmapMode === 'full') { const allValues = []; rowKeys.map(r => @@ -164,7 +170,7 @@ function makeRenderer(opts = {}) { ); })} - {j === 0 && ( + {j === 0 && rowTotals && ( ); })} - - {totalAggregator.format(totalAggregator.value())} - + {rowTotals && ( + + {totalAggregator.format(totalAggregator.value())} + + )} ); })} - - - Totals - - - {colKeys.map(function(colKey, i) { - const totalAggregator = pivotData.getAggregator([], colKey); - return ( + {colTotals && ( + + + Totals + + + {colKeys.map(function(colKey, i) { + const totalAggregator = pivotData.getAggregator([], colKey); + return ( + + {totalAggregator.format(totalAggregator.value())} + + ); + })} + + {rowTotals && ( - {totalAggregator.format(totalAggregator.value())} + {grandTotalAggregator.format(grandTotalAggregator.value())} - ); - })} - - - {grandTotalAggregator.format(grandTotalAggregator.value())} - - + )} + + )} ); @@ -297,7 +309,7 @@ function makeRenderer(opts = {}) { TableRenderer.defaultProps = PivotData.defaultProps; TableRenderer.propTypes = PivotData.propTypes; TableRenderer.defaultProps.tableColorScaleGenerator = redColorScaleGenerator; - TableRenderer.defaultProps.tableOptions = {}; + TableRenderer.defaultProps.tableOptions = {rowTotals: true, colTotals: true}; TableRenderer.propTypes.tableColorScaleGenerator = PropTypes.func; TableRenderer.propTypes.tableOptions = PropTypes.object; return TableRenderer;