in src/data-table/column-datetime.tsx [498:621]
label: getWeekdayInLocale(day, props.locale),
id: w,
};
})}
/>
)}
{categoricalOperator[0].id === DATETIME_OPERATIONS.MONTH && (
<Checks
value={months}
setValue={setMonths}
options={MONTHS.map((m) => ({
label: getMonthInLocale(m, props.locale),
id: m,
}))}
/>
)}
{categoricalOperator[0].id === DATETIME_OPERATIONS.QUARTER && (
<Checks
value={quarters}
setValue={setQuarters}
options={QUARTERS.map((q) => ({
label: getQuarterInLocale(q, props.locale),
id: q,
}))}
/>
)}
{categoricalOperator[0].id === DATETIME_OPERATIONS.HALF && (
<Checks
value={halves}
setValue={setHalves}
options={[
{
label: locale.datatable.datetimeFilterCategoricalFirstHalf,
id: 0,
},
{
label: locale.datatable.datetimeFilterCategoricalSecondHalf,
id: 1,
},
]}
/>
)}
{categoricalOperator[0].id === DATETIME_OPERATIONS.YEAR && (
<Checks
value={years}
setValue={setYears}
options={presentYears.map((year) => ({
label: year,
id: year,
}))}
/>
)}
</div>
</div>
)}
</div>
</FilterShell>
);
}
// @ts-ignore
function DatetimeCell(props) {
const [css, theme] = useStyletron();
return (
<div
className={css({
...theme.typography.MonoParagraphXSmall,
display: 'flex',
justifyContent: 'flex-end',
width: '100%',
whiteSpace: 'nowrap',
})}
>
{format(props.value, props.formatString)}
</div>
);
}
const defaultOptions = {
title: '',
sortable: true,
filterable: true,
formatString: FORMAT_STRING,
};
function DatetimeColumn(options: Options): DatetimeColumn {
const normalizedOptions = {
...defaultOptions,
...options,
};
return Column({
kind: COLUMNS.DATETIME,
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) {