diff --git a/src/defaultProps.js b/src/defaultProps.js
index 2f3583d..b13f879 100644
--- a/src/defaultProps.js
+++ b/src/defaultProps.js
@@ -168,12 +168,12 @@ export default {
PivotValueComponent: ({subRows, value}) => (
{value} {subRows && `(${subRows.length})`}
),
- PivotPreviewComponent: ({subRows, column}) => {
- const previewValues = subRows.slice(0, 3).map((row, i) => (
- {row[column.id]},
+ AggregateComponent: ({subRows, column}) => {
+ const previewValues = subRows.map((row, i) => (
+ {row[column.id]}{i < subRows.length - 1 ? ', ' : ''}
))
return (
- {previewValues}...
+ {previewValues}
)
},
PivotComponent: undefined, // this is a computed default generated using
diff --git a/src/index.js b/src/index.js
index 4db0069..0486f6c 100644
--- a/src/index.js
+++ b/src/index.js
@@ -108,7 +108,7 @@ export default class ReactTable extends Methods(Lifecycle(Component)) {
ResizerComponent,
ExpanderComponent,
PivotValueComponent,
- PivotPreviewComponent,
+ AggregateComponent,
// Data model
resolvedData,
allVisibleColumns,
@@ -511,8 +511,17 @@ export default class ReactTable extends Methods(Lifecycle(Component)) {
let isPreview
let expandable
+ // Resolve Aggregate Renderer
+ const ResolvedAggregateComponent = column.aggregateRender ||
+ !column.aggregate && AggregateComponent
+
// Is this column pivoted?
if (pivotBy && column.pivot) {
+ // Make it expandable
+ expandable = true
+ interactionProps = {
+ onClick: onExpanderClick
+ }
// Is this column a branch?
isBranch = rowInfo.rowValues[pivotIDKey] === column.id &&
cellInfo.subRows
@@ -520,10 +529,9 @@ export default class ReactTable extends Methods(Lifecycle(Component)) {
isPreview = pivotBy.indexOf(column.id) >= pivotBy.indexOf(rowInfo.rowValues[pivotIDKey]) &&
cellInfo.subRows
- // Resolve renderers
+ // Resolve Pivot Renderers
const ResolvedExpanderComponent = column.expanderRender || ExpanderComponent
const ResolvedPivotValueComponent = column.pivotValueRender || PivotValueComponent
- const ResolvedPivotPreviewComponent = column.pivotPreviewRender || PivotPreviewComponent
// Build the default PivotComponent
const DefaultResolvedPivotComponent = props => (
@@ -541,24 +549,22 @@ export default class ReactTable extends Methods(Lifecycle(Component)) {
value: row[pivotValKey],
isExpanded
}, cellInfo.rowValues[column.id])
- interactionProps = {
- onClick: onExpanderClick
- }
- expandable = true
} else if (isPreview) {
// Show the pivot preview
- resolvedCell = _.normalizeComponent(ResolvedPivotPreviewComponent, {
+ resolvedCell = _.normalizeComponent(ResolvedAggregateComponent, {
...cellInfo,
value: cellInfo.rowValues[column.id],
isExpanded
}, cellInfo.rowValues[column.id])
- interactionProps = {
- onClick: onExpanderClick
- }
- expandable = true
} else {
resolvedCell = null
}
+ } else if (cellInfo.aggregated) {
+ resolvedCell = _.normalizeComponent(ResolvedAggregateComponent, {
+ ...cellInfo,
+ value: cellInfo.rowValues[column.id],
+ isExpanded
+ }, cellInfo.rowValues[column.id])
}
// Expander onClick event
@@ -572,8 +578,8 @@ export default class ReactTable extends Methods(Lifecycle(Component)) {
}
}
}
-
- // Return regular cell
+
+ // Return the cell
return (
{
header: 'Age',
accessor: 'age',
aggregate: vals => _.round(_.mean(vals)),
- render: row => {
- return {row.aggregated ? `${row.value} (avg)` : row.value}
+ aggregateRender: row => {
+ return {row.value} (avg)
}
}, {
header: 'Visits',
diff --git a/stories/Pivoting.js b/stories/Pivoting.js
index ec44759..f565d67 100644
--- a/stories/Pivoting.js
+++ b/stories/Pivoting.js
@@ -31,8 +31,8 @@ export default () => {
header: 'Age',
accessor: 'age',
aggregate: vals => _.round(_.mean(vals)),
- render: row => {
- return {row.aggregated ? `${row.value} (avg)` : row.value}
+ aggregateRender: row => {
+ return {row.value} (avg)
}
}, {
header: 'Visits',
diff --git a/stories/PivotingOptions.js b/stories/PivotingOptions.js
index b3f42ec..0940d5a 100644
--- a/stories/PivotingOptions.js
+++ b/stories/PivotingOptions.js
@@ -32,17 +32,21 @@ export default () => {
columns: [{
header: 'Age',
accessor: 'age',
- // aggregate: vals => {
- // return _.round(_.mean(vals))
- // },
- render: row => {
+ aggregate: vals => {
+ return _.round(_.mean(vals))
+ },
+ aggregateRender: row => {
console.log(row.value)
- return {row.aggregated ? `${row.value} (avg)` : row.value}
+ return {row.value} (avg)
}
}, {
header: 'Visits',
accessor: 'visits',
aggregate: vals => _.sum(vals),
+ // aggregateRender: row => {
+ // console.log(row.value)
+ // return {row.value}
+ // },
hideFilter: true
}]
}, {
diff --git a/stories/PivotingSubComponents.js b/stories/PivotingSubComponents.js
index 236efc2..acd4032 100644
--- a/stories/PivotingSubComponents.js
+++ b/stories/PivotingSubComponents.js
@@ -31,10 +31,10 @@ export default () => {
header: 'Age',
accessor: 'age',
aggregate: vals => _.round(_.mean(vals)),
- render: row => {
- return {row.aggregated ? `${row.value} (avg)` : row.value}
+ aggregateRender: row => {
+ return {row.value} (avg)
},
- filterMethod: (filter, row) => (filter.value == `${row[filter.id]} (avg)`)
+ filterMethod: (filter, row) => (filter.value === `${row[filter.id]} (avg)`)
}, {
header: 'Visits',
accessor: 'visits',
@@ -108,7 +108,7 @@ const columns = [{
render: row => {
return {row.aggregated ? \`\${row.value} (avg)\` : row.value}
},
- filterMethod: (filter, row) => (filter.value == \`\${row[filter.id]} (avg)\`)
+ filterMethod: (filter, row) => (filter.value == \`\${row[filter.id]} (avg)\`)
}, {
header: 'Visits',
accessor: 'visits',