Skip to content

Commit c9a2067

Browse files
Refactor PivotTableUI a bit to make it easier to extend.
1 parent 61739b2 commit c9a2067

File tree

1 file changed

+37
-56
lines changed

1 file changed

+37
-56
lines changed

Diff for: src/PivotTableUI.jsx

+37-56
Original file line numberDiff line numberDiff line change
@@ -367,32 +367,30 @@ class PivotTableUI extends React.PureComponent {
367367
);
368368
}
369369

370-
render() {
370+
rendererCell = () => (
371+
<td className="pvtRenderers">
372+
<Dropdown
373+
current={this.props.rendererName in this.props.renderers
374+
? this.props.rendererName
375+
: Object.keys(this.props.renderers)[0]
376+
}
377+
values={Object.keys(this.props.renderers)}
378+
open={this.isOpen('renderer')}
379+
zIndex={this.isOpen('renderer') ? this.state.maxZIndex + 1 : 1}
380+
toggle={() =>
381+
this.setState({
382+
openDropdown: this.isOpen('renderer') ? false : 'renderer',
383+
})
384+
}
385+
setValue={this.propUpdater('rendererName')}
386+
/>
387+
</td>
388+
);
389+
390+
aggregatorCell = () => {
371391
const numValsAllowed =
372392
this.props.aggregators[this.props.aggregatorName]([])().numInputs || 0;
373393

374-
const rendererName =
375-
this.props.rendererName in this.props.renderers
376-
? this.props.rendererName
377-
: Object.keys(this.props.renderers)[0];
378-
379-
const rendererCell = (
380-
<td className="pvtRenderers">
381-
<Dropdown
382-
current={rendererName}
383-
values={Object.keys(this.props.renderers)}
384-
open={this.isOpen('renderer')}
385-
zIndex={this.isOpen('renderer') ? this.state.maxZIndex + 1 : 1}
386-
toggle={() =>
387-
this.setState({
388-
openDropdown: this.isOpen('renderer') ? false : 'renderer',
389-
})
390-
}
391-
setValue={this.propUpdater('rendererName')}
392-
/>
393-
</td>
394-
);
395-
396394
const sortIcons = {
397395
key_a_to_z: {
398396
rowSymbol: '↕',
@@ -407,7 +405,7 @@ class PivotTableUI extends React.PureComponent {
407405
value_z_to_a: {rowSymbol: '↑', colSymbol: '←', next: 'key_a_to_z'},
408406
};
409407

410-
const aggregatorCell = (
408+
return (
411409
<td className="pvtVals">
412410
<Dropdown
413411
current={this.props.aggregatorName}
@@ -466,7 +464,9 @@ class PivotTableUI extends React.PureComponent {
466464
])}
467465
</td>
468466
);
469-
467+
}
468+
469+
render() {
470470
const unusedAttrs = Object.keys(this.attrValues)
471471
.filter(
472472
e =>
@@ -520,40 +520,21 @@ class PivotTableUI extends React.PureComponent {
520520
</td>
521521
);
522522

523-
if (horizUnused) {
524-
return (
525-
<table className="pvtUi">
526-
<tbody onClick={() => this.setState({openDropdown: false})}>
527-
<tr>
528-
{rendererCell}
529-
{unusedAttrsCell}
530-
</tr>
531-
<tr>
532-
{aggregatorCell}
533-
{colAttrsCell}
534-
</tr>
535-
<tr>
536-
{rowAttrsCell}
537-
{outputCell}
538-
</tr>
539-
</tbody>
540-
</table>
541-
);
542-
}
543-
523+
const outputRows = horizUnused
524+
? [
525+
(<tr key="R">{this.rendererCell()}{unusedAttrsCell}</tr>),
526+
(<tr key="A">{this.aggregatorCell()}{colAttrsCell}</tr>),
527+
(<tr key="O">{rowAttrsCell}{outputCell}</tr>),
528+
]
529+
: [
530+
(<tr key="RA">{this.rendererCell()}{this.aggregatorCell()}{colAttrsCell}</tr>),
531+
(<tr key="O">{unusedAttrsCell}{rowAttrsCell}{outputCell}</tr>),
532+
];
533+
544534
return (
545535
<table className="pvtUi">
546536
<tbody onClick={() => this.setState({openDropdown: false})}>
547-
<tr>
548-
{rendererCell}
549-
{aggregatorCell}
550-
{colAttrsCell}
551-
</tr>
552-
<tr>
553-
{unusedAttrsCell}
554-
{rowAttrsCell}
555-
{outputCell}
556-
</tr>
537+
{outputRows}
557538
</tbody>
558539
</table>
559540
);

0 commit comments

Comments
 (0)