in src/data-table/column-datetime.tsx [595:640]
buildFilter: function (params) {
return function (data) {
let included = true;
if (params.operation === DATETIME_OPERATIONS.YEAR) {
included = params.selection.includes(getYear(data));
} else if (params.operation === DATETIME_OPERATIONS.HALF) {
const month = getMonth(data);
const half = month < 6 ? 0 : 1;
included = params.selection.includes(half);
} else if (params.operation === DATETIME_OPERATIONS.QUARTER) {
// date-fns quarters are 1 indexed
const quarter = getQuarter(data) - 1;
included = params.selection.includes(quarter);
} else if (params.operation === DATETIME_OPERATIONS.MONTH) {
included = params.selection.includes(getMonth(data));
} else if (params.operation === DATETIME_OPERATIONS.WEEKDAY) {
included = params.selection.includes(getDay(data));
}
if (
params.operation === DATETIME_OPERATIONS.RANGE_DATE ||
params.operation === DATETIME_OPERATIONS.RANGE_TIME ||
params.operation === DATETIME_OPERATIONS.RANGE_DATETIME
) {
let [left, right] = params.range;
if (params.operation === DATETIME_OPERATIONS.RANGE_DATE) {
left = set(left, { hours: 0, minutes: 0, seconds: 0 });
right = set(right, { hours: 0, minutes: 0, seconds: 0 });
data = set(data, { hours: 0, minutes: 0, seconds: 0 });
}
if (params.operation === DATETIME_OPERATIONS.RANGE_TIME) {
left = set(left, { year: 2000, month: 1, date: 1 });
right = set(right, { year: 2000, month: 1, date: 1 });
data = set(data, { year: 2000, month: 1, date: 1 });
}
const after = isAfter(data, left) || isEqual(data, left);
const before = isBefore(data, right) || isEqual(data, right);
included = after && before;
}
return params.exclude ? !included : included;
};
},