Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[data grid] Implement Aggregation (not publicly released) #4208

Merged
merged 612 commits into from
Jul 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
612 commits
Select commit Hold shift + click to select a range
47fd23d
Work
flaviendelangle Mar 31, 2022
52f32e3
Work
flaviendelangle Mar 31, 2022
6084f68
Work
flaviendelangle Mar 31, 2022
92cb0cc
Work
flaviendelangle Mar 31, 2022
9d354c0
Merge
flaviendelangle Mar 31, 2022
bb6ab44
Work
flaviendelangle Mar 31, 2022
2c84bc5
Work
flaviendelangle Mar 31, 2022
53ca7e6
Work
flaviendelangle Mar 31, 2022
f3a7b4e
Merge branch 'master' into aggregation
flaviendelangle Apr 1, 2022
202d64e
Merge branch 'master' into premium-plan-package
flaviendelangle Apr 1, 2022
f6ba752
Merge branch 'premium-plan-package' into aggregation
flaviendelangle Apr 1, 2022
6448062
Work
flaviendelangle Apr 1, 2022
7eca55b
Work
flaviendelangle Apr 1, 2022
e9d5059
Merge branch 'premium-plan-package' into aggregation
flaviendelangle Apr 1, 2022
0ad2be0
Work
flaviendelangle Apr 1, 2022
6c8e7ab
Work
flaviendelangle Apr 1, 2022
6696c8b
Work
flaviendelangle Apr 1, 2022
45b9319
Work
flaviendelangle Apr 1, 2022
cfc543b
Work
flaviendelangle Apr 1, 2022
ce88baa
Merge branch 'master' into premium-plan-package
flaviendelangle Apr 4, 2022
47fd61e
Merge branch 'premium-plan-package' into aggregation
flaviendelangle Apr 4, 2022
f36911c
[data grid] Apply filtering before sorting
flaviendelangle Apr 4, 2022
b44a3a0
Work
flaviendelangle Apr 4, 2022
a191a0d
Work
flaviendelangle Apr 4, 2022
70b4c12
Work
flaviendelangle Apr 4, 2022
3ee138a
Work
flaviendelangle Apr 4, 2022
90f1fd2
Merge
flaviendelangle Apr 4, 2022
54a4b55
Merge branch 'master' into premium-plan-package
flaviendelangle Apr 5, 2022
93f50ac
Merge branch 'premium-plan-package' into aggregation
flaviendelangle Apr 5, 2022
82511b9
Work
flaviendelangle Apr 5, 2022
baa8a1d
Work
flaviendelangle Apr 5, 2022
d6a10f4
Work
flaviendelangle Apr 5, 2022
516ff96
Work
flaviendelangle Apr 5, 2022
759a78c
Work
flaviendelangle Apr 5, 2022
cf7b15f
Work
flaviendelangle Apr 5, 2022
00fdbab
Work
flaviendelangle Apr 6, 2022
d32262a
Work
flaviendelangle Apr 6, 2022
016e338
[core] Move away for the event system to trigger pipe processings
flaviendelangle Apr 6, 2022
fa15c2e
Work
flaviendelangle Apr 6, 2022
55651da
Merge branch 'sorting-filtering' into aggregation-pre
flaviendelangle Apr 6, 2022
96206d5
Merge branch 'pipe-applier' into aggregation-pre
flaviendelangle Apr 6, 2022
cfbfd4b
Work
flaviendelangle Apr 6, 2022
6ff25fb
Merge branch 'sorting-filtering' into aggregation-pre
flaviendelangle Apr 6, 2022
cd46a1a
Merge
flaviendelangle Apr 6, 2022
67569e2
Work
flaviendelangle Apr 6, 2022
accce47
Merge branch 'pipe-applier' into aggregation-pre
flaviendelangle Apr 6, 2022
dadd6fa
Merge branch 'aggregation-pre' into aggregation
flaviendelangle Apr 6, 2022
fb723ca
Work
flaviendelangle Apr 6, 2022
8a1918f
Work
flaviendelangle Apr 6, 2022
6f14bbe
Work
flaviendelangle Apr 7, 2022
5a7694d
Work
flaviendelangle Apr 7, 2022
c07e2c7
Work
flaviendelangle Apr 7, 2022
95971c8
Merge
flaviendelangle Apr 11, 2022
e5e81d4
Merge branch 'master' into premium-plan-package
flaviendelangle Apr 11, 2022
d2123c7
Merge
flaviendelangle Apr 11, 2022
ca7e324
Merge branch 'master' into premium-plan-package
flaviendelangle Apr 11, 2022
127d717
Merge branch 'premium-plan-package' into aggregation-pre
flaviendelangle Apr 11, 2022
db88d43
Merge
flaviendelangle Apr 11, 2022
ad9350b
Fix api
flaviendelangle Apr 11, 2022
783f3c3
Merge
flaviendelangle Apr 13, 2022
27201f1
Merge branch 'master' into premium-plan-package
flaviendelangle Apr 13, 2022
49dff06
Work
flaviendelangle Apr 13, 2022
4fae794
Work
flaviendelangle Apr 13, 2022
9a3064f
Merge branch 'master' into premium-plan-package
flaviendelangle Apr 14, 2022
3c40cb8
Work
flaviendelangle Apr 14, 2022
bf90fa1
Merge
flaviendelangle Apr 20, 2022
99678c4
Work
flaviendelangle Apr 20, 2022
0a1f1b1
Merge
flaviendelangle Apr 20, 2022
66a3644
Merge
flaviendelangle Apr 20, 2022
581f0fd
Work
flaviendelangle Apr 20, 2022
601c1de
Work
flaviendelangle Apr 22, 2022
2e4cb3f
Merge
flaviendelangle Apr 22, 2022
3c6bd37
Work
flaviendelangle Apr 22, 2022
5ef7d60
Work
flaviendelangle Apr 22, 2022
eccf7c7
Merge branch 'master' into premium-plan-package
flaviendelangle Apr 25, 2022
c7631b9
Merge branch 'premium-plan-package' into aggregation
flaviendelangle Apr 25, 2022
7bab866
Merge
flaviendelangle Apr 26, 2022
59a211f
Empty
flaviendelangle Apr 26, 2022
ee3bf53
Merge branch 'master' into premium-plan-package
flaviendelangle Apr 27, 2022
ea23e0e
Work
flaviendelangle Apr 27, 2022
b6658a9
Merge
flaviendelangle Apr 27, 2022
a2a0d53
Merge
flaviendelangle Apr 27, 2022
aeeb156
Work
flaviendelangle Apr 27, 2022
23d9eb8
Merge branch 'master' into aggregation
flaviendelangle Apr 28, 2022
35f0ff5
Merge
flaviendelangle Apr 29, 2022
13eae19
Work
flaviendelangle Apr 29, 2022
8d3020a
Merge branch 'master' into aggregation
flaviendelangle Apr 29, 2022
4c025d0
Work
flaviendelangle Apr 29, 2022
47e2512
Work
flaviendelangle Apr 29, 2022
0d3d4c1
Merge branch 'master' into aggregation
flaviendelangle Apr 29, 2022
760b057
Work
flaviendelangle Apr 29, 2022
669673f
Work
flaviendelangle Apr 29, 2022
76aca0d
Merge
flaviendelangle May 2, 2022
c119567
Restucture inline / footer to allow to use both together
flaviendelangle May 3, 2022
f5fab10
Work
flaviendelangle May 3, 2022
db72e09
Merge
flaviendelangle May 3, 2022
11d557d
Work
flaviendelangle May 3, 2022
900a807
Work
flaviendelangle May 3, 2022
80b4222
Fix
flaviendelangle May 3, 2022
d6d7711
Work
flaviendelangle May 3, 2022
7db11e6
Merge branch 'master' into aggregation
flaviendelangle May 4, 2022
b7e121e
Work
flaviendelangle May 4, 2022
882d670
Fix
flaviendelangle May 4, 2022
85a365e
Merge
flaviendelangle May 4, 2022
5692686
Work
flaviendelangle May 5, 2022
ab9a96b
Work
flaviendelangle May 5, 2022
60d38e8
Merge branch 'master' into aggregation
flaviendelangle May 5, 2022
97884a0
Work on doc
flaviendelangle May 5, 2022
138c3e2
Work
flaviendelangle May 5, 2022
398d749
Merge branch 'master' into aggregation
flaviendelangle May 5, 2022
e634034
WOrk
flaviendelangle May 5, 2022
13d8844
Work
flaviendelangle May 5, 2022
92fdfa4
Work
flaviendelangle May 5, 2022
c9e97ce
Add state import / export
flaviendelangle May 5, 2022
abbddf8
Merge
flaviendelangle May 9, 2022
ea03928
Work
flaviendelangle May 9, 2022
1f25464
Merge branch 'master' into aggregation
flaviendelangle May 10, 2022
2cfc114
Work
flaviendelangle May 10, 2022
39c4a45
Merge
flaviendelangle May 10, 2022
bcfe25d
Merge
flaviendelangle May 13, 2022
378e06c
Work
flaviendelangle May 13, 2022
ea87811
Work
flaviendelangle May 13, 2022
9bbd93f
Merge branch 'master' into aggregation
flaviendelangle May 16, 2022
37423a4
Code review Matheus
flaviendelangle May 16, 2022
60c6daf
Work on aggregation labels
flaviendelangle May 16, 2022
4e3c031
Work
flaviendelangle May 16, 2022
2185a9b
Work
flaviendelangle May 17, 2022
72f42a5
Work
flaviendelangle May 17, 2022
c95553e
Work
flaviendelangle May 17, 2022
eeb9b3c
Work
flaviendelangle May 17, 2022
b053812
Merge branch 'master' into aggregation
flaviendelangle May 17, 2022
4f1b3f2
Work
flaviendelangle May 17, 2022
d5710bd
Work
flaviendelangle May 17, 2022
95ec7bb
Work
flaviendelangle May 17, 2022
b80faf5
Work
flaviendelangle May 17, 2022
89ad5f6
Work
flaviendelangle May 17, 2022
e5ed1db
Merge branch 'master' into aggregation
flaviendelangle May 18, 2022
dcd5c44
Work
flaviendelangle May 18, 2022
c8a319c
Work
flaviendelangle May 18, 2022
90c2327
Work
flaviendelangle May 18, 2022
9ddbd01
Work
flaviendelangle May 18, 2022
eff294a
Work
flaviendelangle May 18, 2022
871b769
Work
flaviendelangle May 18, 2022
269f091
Update packages/grid/x-data-grid-premium/src/components/GridAggregati…
flaviendelangle May 20, 2022
66828be
Update packages/grid/x-data-grid-premium/src/components/GridAggregati…
flaviendelangle May 20, 2022
f302d1c
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 20, 2022
08301a6
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 20, 2022
cd0a627
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 20, 2022
ec658d6
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 20, 2022
ada5a5f
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 20, 2022
fce9335
Code review Andrew
flaviendelangle May 20, 2022
94b5707
Merge
flaviendelangle May 20, 2022
7b37ba6
Build api
flaviendelangle May 20, 2022
5c84e4a
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 23, 2022
ade049a
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 23, 2022
1a95f7e
Merge
flaviendelangle May 23, 2022
801f716
Merge remote-tracking branch 'origin/aggregation' into aggregation
flaviendelangle May 23, 2022
edfe338
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 24, 2022
3a2ee20
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 24, 2022
dde2e27
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 24, 2022
2d8d32d
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 24, 2022
8ec4e8f
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 24, 2022
b82e0d7
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 24, 2022
3db81a4
Code review
flaviendelangle May 24, 2022
0bfdf5c
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 24, 2022
783ec57
Merge
flaviendelangle May 24, 2022
7722a9c
Merge remote-tracking branch 'origin/aggregation' into aggregation
flaviendelangle May 24, 2022
31964f0
Merge branch 'master' into aggregation
flaviendelangle May 24, 2022
a0a5660
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 25, 2022
b849001
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 25, 2022
551b12a
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 25, 2022
f159729
Update packages/grid/x-data-grid-premium/src/components/GridAggregati…
flaviendelangle May 25, 2022
4acc4a1
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 25, 2022
bc019bd
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 25, 2022
9196fc4
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 25, 2022
093a42f
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 25, 2022
1fa60d9
Update docs/data/data-grid/aggregation/aggregation.md
flaviendelangle May 25, 2022
f551113
Code review: Sam
flaviendelangle May 25, 2022
fb81f01
Code review: Matheus
flaviendelangle May 25, 2022
81ff9bd
Merge branch 'master' into aggregation
flaviendelangle May 25, 2022
255bda5
Empty
flaviendelangle May 25, 2022
1eee2e2
Move footer id outside of group.children
flaviendelangle May 25, 2022
a2d9262
Work
flaviendelangle May 30, 2022
ca31d32
Code review: Sam
flaviendelangle May 30, 2022
c8d6051
Work
flaviendelangle May 30, 2022
127b36a
Fix
flaviendelangle May 30, 2022
84f974f
Empty
flaviendelangle May 30, 2022
e9761aa
Merge branch 'master' into aggregation
flaviendelangle May 30, 2022
8e9cb8e
Work
flaviendelangle May 31, 2022
0da558d
Merge
flaviendelangle May 31, 2022
ce95b46
Add aggregation label doc
flaviendelangle May 31, 2022
c4dcd26
Merge branch 'master' into aggregation
flaviendelangle Jun 1, 2022
be7e5ca
Work
flaviendelangle Jun 1, 2022
0ce7b65
Work
flaviendelangle Jun 1, 2022
51bd025
Work
flaviendelangle Jun 1, 2022
b544815
Work
flaviendelangle Jun 1, 2022
1bd4e6a
Work
flaviendelangle Jun 1, 2022
27577aa
Work
flaviendelangle Jun 1, 2022
f1d85f3
Work
flaviendelangle Jun 1, 2022
45fcebc
Fix
flaviendelangle Jun 1, 2022
3704923
Work
flaviendelangle Jun 1, 2022
015486b
Work
flaviendelangle Jun 3, 2022
fc73c09
Work
flaviendelangle Jun 3, 2022
c6f0138
Fix
flaviendelangle Jun 3, 2022
2d80975
Fix
flaviendelangle Jun 3, 2022
a119683
Merge branch 'master' into aggregation
flaviendelangle Jun 5, 2022
5bf2fdf
Code review: Andrew
flaviendelangle Jun 5, 2022
d314ca8
Merge branch 'master' into aggregation
flaviendelangle Jun 6, 2022
566b803
Work
flaviendelangle Jun 6, 2022
3d109f5
Merge
flaviendelangle Jun 6, 2022
1f6b269
Work
flaviendelangle Jun 6, 2022
b1dc566
Merge branch 'master' into aggregation
flaviendelangle Jun 8, 2022
0c393e8
Code review: Sam and Matheus
flaviendelangle Jun 8, 2022
2dbac32
Fix
flaviendelangle Jun 8, 2022
64093a0
New api method isRowSelectable
flaviendelangle Jun 8, 2022
a442d18
Make the aggregation feature experimental
flaviendelangle Jun 8, 2022
1ac629e
Work
flaviendelangle Jun 8, 2022
9f30f70
Merge
flaviendelangle Jun 9, 2022
d4c8756
Merge branch 'master' into aggregation
flaviendelangle Jun 10, 2022
a2fd800
Merge
flaviendelangle Jun 13, 2022
f324567
Code review: Olivier
flaviendelangle Jun 13, 2022
cefd121
Work
flaviendelangle Jun 13, 2022
ea8e425
Fix
flaviendelangle Jun 13, 2022
c143b07
Disable aggregation on some cols
flaviendelangle Jun 14, 2022
81f4030
Merge branch 'master' into aggregation
flaviendelangle Jun 17, 2022
c57cba4
Rework aggregation header label
flaviendelangle Jun 17, 2022
2b80887
Fix
flaviendelangle Jun 17, 2022
25667a6
Work
flaviendelangle Jun 17, 2022
0719374
Work
flaviendelangle Jun 20, 2022
b62869c
Merge
flaviendelangle Jun 20, 2022
69aa18d
Work
flaviendelangle Jun 20, 2022
5e27898
Work
flaviendelangle Jun 20, 2022
44de462
Fix
flaviendelangle Jun 20, 2022
be74786
Work
flaviendelangle Jun 20, 2022
fc7eca6
Fix
flaviendelangle Jun 20, 2022
2d94b1d
Merge
flaviendelangle Jun 22, 2022
94ffe98
Code review: José
flaviendelangle Jun 22, 2022
2bfa238
Fix agg color
flaviendelangle Jun 22, 2022
2a59861
Fix
flaviendelangle Jun 22, 2022
514062f
WOrk
flaviendelangle Jun 22, 2022
ac44713
Merge branch 'master' into aggregation
flaviendelangle Jun 24, 2022
add5e20
Work
flaviendelangle Jul 4, 2022
0b8af60
Merge branch 'master' into aggregation
flaviendelangle Jul 4, 2022
4debb5b
Fix
flaviendelangle Jul 7, 2022
b3521e9
Merge branch 'master' into aggregation
flaviendelangle Jul 8, 2022
cdfc496
Prefix aggregation apis with private_
flaviendelangle Jul 8, 2022
e6e9d99
Code review Andrew
flaviendelangle Jul 11, 2022
6a9db27
Merge
flaviendelangle Jul 11, 2022
50a3a02
l10n
flaviendelangle Jul 13, 2022
cbbc54c
Merge remote-tracking branch 'origin/aggregation' into aggregation
flaviendelangle Jul 13, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions docs/data/data-grid/aggregation/AggregationColDefAggregable.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import * as React from 'react';
import { DataGridPremium } from '@mui/x-data-grid-premium';
import { useMovieData } from '@mui/x-data-grid-generator';

const currencyFormatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});

const COLUMNS = [
{
field: 'title',
headerName: 'Title',
width: 200,
groupable: false,
private_aggregable: false,
},
{
field: 'gross',
headerName: 'Gross',
type: 'number',
width: 150,
groupable: false,
valueFormatter: ({ value }) => {
if (!value) {
return value;
}
return currencyFormatter.format(value);
},
},
{
field: 'year',
headerName: 'Year',
type: 'number',
private_aggregable: false,
},
];

export default function AggregationColDefAggregable() {
cherniavskii marked this conversation as resolved.
Show resolved Hide resolved
const data = useMovieData();

return (
<DataGridPremium
// The 2 following props are here to avoid scroll in the demo while we don't have pinned rows
rows={data.rows.slice(0, 3)}
autoHeight
columns={COLUMNS}
initialState={{
private_aggregation: {
model: {
gross: 'sum',
year: 'sum',
},
},
}}
experimentalFeatures={{
private_aggregation: true,
}}
/>
);
}
63 changes: 63 additions & 0 deletions docs/data/data-grid/aggregation/AggregationColDefAggregable.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import * as React from 'react';
import { DataGridPremium, GridColDef } from '@mui/x-data-grid-premium';
import { useMovieData } from '@mui/x-data-grid-generator';

const currencyFormatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});

const COLUMNS: GridColDef[] = [
{
field: 'title',
headerName: 'Title',
width: 200,
groupable: false,
private_aggregable: false,
},
{
field: 'gross',
headerName: 'Gross',
type: 'number',
width: 150,
groupable: false,
valueFormatter: ({ value }) => {
if (!value) {
return value;
}
return currencyFormatter.format(value);
},
},
{
field: 'year',
headerName: 'Year',
type: 'number',
private_aggregable: false,
},
];

export default function AggregationColDefAggregable() {
const data = useMovieData();

return (
<DataGridPremium
// The 2 following props are here to avoid scroll in the demo while we don't have pinned rows
rows={data.rows.slice(0, 3)}
autoHeight
columns={COLUMNS}
initialState={{
private_aggregation: {
model: {
gross: 'sum',
year: 'sum',
},
},
}}
experimentalFeatures={{
private_aggregation: true,
}}
/>
);
}
49 changes: 49 additions & 0 deletions docs/data/data-grid/aggregation/AggregationControlled.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import * as React from 'react';
import { DataGridPremium } from '@mui/x-data-grid-premium';
import { useMovieData } from '@mui/x-data-grid-generator';

const currencyFormatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});

const COLUMNS = [
{ field: 'title', headerName: 'Title', width: 200, groupable: false },
{
field: 'gross',
headerName: 'Gross',
type: 'number',
width: 150,
groupable: false,
valueFormatter: ({ value }) => {
if (!value) {
return value;
}
return currencyFormatter.format(value);
},
},
];

export default function AggregationControlled() {
const data = useMovieData();

const [aggregationModel, setAggregationModel] = React.useState({
gross: 'sum',
});

return (
<DataGridPremium
// The 2 following props are here to avoid scroll in the demo while we don't have pinned rows
rows={data.rows.slice(0, 3)}
autoHeight
columns={COLUMNS}
private_aggregationModel={aggregationModel}
private_onAggregationModelChange={(newModel) => setAggregationModel(newModel)}
experimentalFeatures={{
private_aggregation: true,
}}
/>
);
}
54 changes: 54 additions & 0 deletions docs/data/data-grid/aggregation/AggregationControlled.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import * as React from 'react';
import {
DataGridPremium,
GridAggregationModel,
GridColDef,
} from '@mui/x-data-grid-premium';
import { useMovieData } from '@mui/x-data-grid-generator';

const currencyFormatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});

const COLUMNS: GridColDef[] = [
{ field: 'title', headerName: 'Title', width: 200, groupable: false },
{
field: 'gross',
headerName: 'Gross',
type: 'number',
width: 150,
groupable: false,
valueFormatter: ({ value }) => {
if (!value) {
return value;
}
return currencyFormatter.format(value);
},
},
];

export default function AggregationControlled() {
const data = useMovieData();

const [aggregationModel, setAggregationModel] =
React.useState<GridAggregationModel>({
gross: 'sum',
});

return (
<DataGridPremium
// The 2 following props are here to avoid scroll in the demo while we don't have pinned rows
rows={data.rows.slice(0, 3)}
autoHeight
columns={COLUMNS}
private_aggregationModel={aggregationModel}
private_onAggregationModelChange={(newModel) => setAggregationModel(newModel)}
experimentalFeatures={{
private_aggregation: true,
}}
/>
);
}
11 changes: 11 additions & 0 deletions docs/data/data-grid/aggregation/AggregationControlled.tsx.preview
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<DataGridPremium
// The 2 following props are here to avoid scroll in the demo while we don't have pinned rows
rows={data.rows.slice(0, 3)}
autoHeight
columns={COLUMNS}
private_aggregationModel={aggregationModel}
private_onAggregationModelChange={(newModel) => setAggregationModel(newModel)}
experimentalFeatures={{
private_aggregation: true,
}}
/>
97 changes: 97 additions & 0 deletions docs/data/data-grid/aggregation/AggregationCustomFunction.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
import * as React from 'react';
import {
DataGridPremium,
PRIVATE_GRID_AGGREGATION_FUNCTIONS,
} from '@mui/x-data-grid-premium';
import { useMovieData } from '@mui/x-data-grid-generator';

const currencyFormatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});

const COLUMNS = [
{
field: 'title',
headerName: 'Title',
width: 200,
groupable: false,
private_aggregable: false,
},
{
field: 'director',
headerName: 'Director',
width: 200,
},
{
field: 'gross',
headerName: 'Gross',
type: 'number',
width: 150,
groupable: false,
valueFormatter: ({ value }) => {
if (!value) {
return value;
}
return currencyFormatter.format(value);
},
},
];

const firstAlphabeticalAggregation = {
apply: (params) => {
if (params.values.length === 0) {
return null;
}

const sortedValue = params.values.sort((a = '', b = '') => a.localeCompare(b));

return sortedValue[0];
},
label: 'first alphabetical',
columnTypes: ['string'],
};

const lastAlphabeticalAggregation = {
apply: (params) => {
if (params.values.length === 0) {
return null;
}

const sortedValue = params.values.sort((a = '', b = '') => a.localeCompare(b));

return sortedValue[sortedValue.length - 1];
},
label: 'last alphabetical',
columnTypes: ['string'],
};

export default function AggregationCustomFunction() {
const data = useMovieData();

return (
<DataGridPremium
// The 2 following props are here to avoid scroll in the demo while we don't have pinned rows
rows={data.rows.slice(0, 3)}
autoHeight
columns={COLUMNS}
private_aggregationFunctions={{
...PRIVATE_GRID_AGGREGATION_FUNCTIONS,
firstAlphabetical: firstAlphabeticalAggregation,
lastAlphabetical: lastAlphabeticalAggregation,
}}
initialState={{
private_aggregation: {
model: {
director: 'firstAlphabetical',
},
},
}}
experimentalFeatures={{
private_aggregation: true,
}}
/>
);
}
Loading