@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
140 lines • 2.89 kB
JavaScript
import { isNumber } from '@mui/x-data-grid-pro/internals';
const sumAgg = {
apply: ({
values
}) => {
let sum = 0;
for (let i = 0; i < values.length; i += 1) {
const value = values[i];
if (typeof value === 'number' && !Number.isNaN(value)) {
sum += value;
}
}
return sum;
},
columnTypes: ['number']
};
const avgAgg = {
apply: ({
values
}) => {
if (values.length === 0) {
return null;
}
let sum = 0;
let valuesCount = 0;
for (let i = 0; i < values.length; i += 1) {
const value = values[i];
if (typeof value === 'number' && !Number.isNaN(value)) {
valuesCount += 1;
sum += value;
}
}
if (sum === 0) {
return null;
}
return sum / valuesCount;
},
columnTypes: ['number']
};
const minAgg = {
apply: ({
values
}) => {
if (values.length === 0) {
return null;
}
let hasValidValue = false;
let min = +Infinity;
for (let i = 0; i < values.length; i += 1) {
const value = values[i];
if (value != null && value < min) {
min = value;
hasValidValue = true;
}
}
if (!hasValidValue) {
return null;
}
return min;
},
columnTypes: ['number', 'date', 'dateTime']
};
const maxAgg = {
apply: ({
values
}) => {
if (values.length === 0) {
return null;
}
let hasValidValue = false;
let max = -Infinity;
for (let i = 0; i < values.length; i += 1) {
const value = values[i];
if (value != null && value > max) {
max = value;
hasValidValue = true;
}
}
if (!hasValidValue) {
return null;
}
return max;
},
columnTypes: ['number', 'date', 'dateTime']
};
const sizeAgg = {
apply: ({
values
}) => {
return values.filter(value => typeof value !== 'undefined').length;
},
valueFormatter: value => {
if (value == null || !isNumber(value)) {
return value;
}
return value.toLocaleString();
},
hasCellUnit: false
};
const sizeTrueAgg = {
apply: ({
values
}) => {
return values.filter(value => value === true).length;
},
columnTypes: ['boolean'],
label: 'size(true)',
valueFormatter: value => {
if (value == null || !isNumber(value)) {
return value;
}
return value.toLocaleString();
},
hasCellUnit: false
};
const sizeFalseAgg = {
apply: ({
values
}) => {
return values.filter(value => value === false).length;
},
columnTypes: ['boolean'],
label: 'size(false)',
valueFormatter: value => {
if (value == null || !isNumber(value)) {
return value;
}
return value.toLocaleString();
},
hasCellUnit: false
};
export const GRID_AGGREGATION_FUNCTIONS = {
sum: sumAgg,
avg: avgAgg,
min: minAgg,
max: maxAgg,
size: sizeAgg,
sizeTrue: sizeTrueAgg,
sizeFalse: sizeFalseAgg
};