190 lines
4.0 KiB
JavaScript
190 lines
4.0 KiB
JavaScript
import { GridFilterInputValue } from '../components/panel/filterPanel/GridFilterInputValue';
|
|
import { GridFilterInputMultipleValue } from '../components/panel/filterPanel/GridFilterInputMultipleValue';
|
|
import { wrapWithWarningOnCall } from '../utils/warning';
|
|
|
|
const parseNumericValue = value => {
|
|
if (value == null) {
|
|
return null;
|
|
}
|
|
|
|
return Number(value);
|
|
};
|
|
|
|
export const getGridNumericQuickFilterFn = value => {
|
|
if (value == null || Number.isNaN(value) || value === '') {
|
|
return null;
|
|
}
|
|
|
|
return ({
|
|
value: columnValue
|
|
}) => {
|
|
return parseNumericValue(columnValue) === parseNumericValue(value);
|
|
};
|
|
};
|
|
export const getGridNumericOperators = () => [{
|
|
label: '=',
|
|
value: '=',
|
|
getApplyFilterFn: filterItem => {
|
|
if (filterItem.value == null || Number.isNaN(filterItem.value)) {
|
|
return null;
|
|
}
|
|
|
|
return ({
|
|
value
|
|
}) => {
|
|
return parseNumericValue(value) === filterItem.value;
|
|
};
|
|
},
|
|
InputComponent: GridFilterInputValue,
|
|
InputComponentProps: {
|
|
type: 'number'
|
|
}
|
|
}, {
|
|
label: '!=',
|
|
value: '!=',
|
|
getApplyFilterFn: filterItem => {
|
|
if (filterItem.value == null || Number.isNaN(filterItem.value)) {
|
|
return null;
|
|
}
|
|
|
|
return ({
|
|
value
|
|
}) => {
|
|
return parseNumericValue(value) !== filterItem.value;
|
|
};
|
|
},
|
|
InputComponent: GridFilterInputValue,
|
|
InputComponentProps: {
|
|
type: 'number'
|
|
}
|
|
}, {
|
|
label: '>',
|
|
value: '>',
|
|
getApplyFilterFn: filterItem => {
|
|
if (filterItem.value == null || Number.isNaN(filterItem.value)) {
|
|
return null;
|
|
}
|
|
|
|
return ({
|
|
value
|
|
}) => {
|
|
if (value == null) {
|
|
return false;
|
|
}
|
|
|
|
return parseNumericValue(value) > filterItem.value;
|
|
};
|
|
},
|
|
InputComponent: GridFilterInputValue,
|
|
InputComponentProps: {
|
|
type: 'number'
|
|
}
|
|
}, {
|
|
label: '>=',
|
|
value: '>=',
|
|
getApplyFilterFn: filterItem => {
|
|
if (filterItem.value == null || Number.isNaN(filterItem.value)) {
|
|
return null;
|
|
}
|
|
|
|
return ({
|
|
value
|
|
}) => {
|
|
if (value == null) {
|
|
return false;
|
|
}
|
|
|
|
return parseNumericValue(value) >= filterItem.value;
|
|
};
|
|
},
|
|
InputComponent: GridFilterInputValue,
|
|
InputComponentProps: {
|
|
type: 'number'
|
|
}
|
|
}, {
|
|
label: '<',
|
|
value: '<',
|
|
getApplyFilterFn: filterItem => {
|
|
if (filterItem.value == null || Number.isNaN(filterItem.value)) {
|
|
return null;
|
|
}
|
|
|
|
return ({
|
|
value
|
|
}) => {
|
|
if (value == null) {
|
|
return false;
|
|
}
|
|
|
|
return parseNumericValue(value) < filterItem.value;
|
|
};
|
|
},
|
|
InputComponent: GridFilterInputValue,
|
|
InputComponentProps: {
|
|
type: 'number'
|
|
}
|
|
}, {
|
|
label: '<=',
|
|
value: '<=',
|
|
getApplyFilterFn: filterItem => {
|
|
if (filterItem.value == null || Number.isNaN(filterItem.value)) {
|
|
return null;
|
|
}
|
|
|
|
return ({
|
|
value
|
|
}) => {
|
|
if (value == null) {
|
|
return false;
|
|
}
|
|
|
|
return parseNumericValue(value) <= filterItem.value;
|
|
};
|
|
},
|
|
InputComponent: GridFilterInputValue,
|
|
InputComponentProps: {
|
|
type: 'number'
|
|
}
|
|
}, {
|
|
value: 'isEmpty',
|
|
getApplyFilterFn: () => {
|
|
return ({
|
|
value
|
|
}) => {
|
|
return value == null;
|
|
};
|
|
},
|
|
requiresFilterValue: false
|
|
}, {
|
|
value: 'isNotEmpty',
|
|
getApplyFilterFn: () => {
|
|
return ({
|
|
value
|
|
}) => {
|
|
return value != null;
|
|
};
|
|
},
|
|
requiresFilterValue: false
|
|
}, {
|
|
value: 'isAnyOf',
|
|
getApplyFilterFn: filterItem => {
|
|
if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) {
|
|
return null;
|
|
}
|
|
|
|
return ({
|
|
value
|
|
}) => {
|
|
return value != null && filterItem.value.includes(Number(value));
|
|
};
|
|
},
|
|
InputComponent: GridFilterInputMultipleValue,
|
|
InputComponentProps: {
|
|
type: 'number'
|
|
}
|
|
}];
|
|
/**
|
|
* @deprecated Use `getGridNumericOperators` instead.
|
|
*/
|
|
|
|
export const getGridNumericColumnOperators = wrapWithWarningOnCall(getGridNumericOperators, ['MUI: The method getGridNumericColumnOperators is deprecated and will be removed in the next major version.', 'Use getGridNumericOperators instead.']); |