Simplified date logic.

This commit is contained in:
Mike Cao 2024-03-20 15:29:59 -07:00
parent 0cb28e9fde
commit f4a9336f9d
2 changed files with 40 additions and 99 deletions

View File

@ -32,18 +32,14 @@ export function DateFilter({
const { locale } = useLocale();
const options = [
{ label: formatMessage(labels.today), value: '1day' },
{ label: formatMessage(labels.today), value: '0day' },
{
label: formatMessage(labels.lastHours, { x: 24 }),
value: '24hour',
},
{
label: formatMessage(labels.yesterday),
value: '-1day',
},
{
label: formatMessage(labels.thisWeek),
value: '1week',
value: '0week',
divider: true,
},
{
@ -52,7 +48,7 @@ export function DateFilter({
},
{
label: formatMessage(labels.thisMonth),
value: '1month',
value: '0month',
divider: true,
},
{
@ -63,7 +59,7 @@ export function DateFilter({
label: formatMessage(labels.lastDays, { x: 90 }),
value: '90day',
},
{ label: formatMessage(labels.thisYear), value: '1year' },
{ label: formatMessage(labels.thisYear), value: '0year' },
showAllTime && {
label: formatMessage(labels.allTime),
value: 'all',

View File

@ -151,105 +151,50 @@ export function parseDateRange(value: string | object, locale = 'en-US'): DateRa
const dateLocale = getDateLocale(locale);
const { num, unit } = parseDateValue(value);
if (num === 1) {
switch (unit) {
case 'day':
return {
startDate: startOfDay(now),
endDate: endOfDay(now),
unit: 'hour',
num: +num,
offset: 0,
value,
};
case 'week':
return {
startDate: startOfWeek(now, { locale: dateLocale }),
endDate: endOfWeek(now, { locale: dateLocale }),
unit: 'day',
num: +num,
offset: 0,
value,
};
case 'month':
return {
startDate: startOfMonth(now),
endDate: endOfMonth(now),
unit: 'day',
num: +num,
offset: 0,
value,
};
case 'year':
return {
startDate: startOfYear(now),
endDate: endOfYear(now),
unit: 'month',
num: +num,
offset: 0,
value,
};
}
}
if (num === -1) {
switch (unit) {
case 'day':
return {
startDate: subDays(startOfDay(now), 1),
endDate: subDays(endOfDay(now), 1),
unit: 'hour',
num: +num,
offset: 0,
value,
};
case 'week':
return {
startDate: subDays(startOfWeek(now, { locale: dateLocale }), 7),
endDate: subDays(endOfWeek(now, { locale: dateLocale }), 1),
unit: 'day',
num: +num,
offset: 0,
value,
};
case 'month':
return {
startDate: subMonths(startOfMonth(now), 1),
endDate: subMonths(endOfMonth(now), 1),
unit: 'day',
num: +num,
offset: 0,
value,
};
case 'year':
return {
startDate: subYears(startOfYear(now), 1),
endDate: subYears(endOfYear(now), 1),
unit: 'month',
num: +num,
offset: 0,
value,
};
}
}
switch (unit) {
case 'day':
case 'hour':
return {
startDate: subDays(startOfDay(now), +num - 1),
endDate: endOfDay(now),
num: +num,
startDate: subHours(startOfHour(now), num),
endDate: endOfHour(now),
offset: 0,
num: num || 1,
unit,
value,
};
case 'hour':
case 'day':
return {
startDate: subHours(startOfHour(now), +num - 1),
endDate: endOfHour(now),
num: +num,
startDate: subDays(startOfDay(now), num),
endDate: endOfDay(now),
unit: num ? 'day' : 'hour',
offset: 0,
unit,
num: num || 1,
value,
};
case 'week':
return {
startDate: subWeeks(startOfWeek(now, { locale: dateLocale }), num),
endDate: subWeeks(endOfWeek(now, { locale: dateLocale }), num),
unit: 'day',
offset: 0,
num: num || 1,
value,
};
case 'month':
return {
startDate: subMonths(startOfMonth(now), 1),
endDate: subMonths(endOfMonth(now), 1),
unit: 'day',
offset: 0,
num: num || 1,
value,
};
case 'year':
return {
startDate: subYears(startOfYear(now), 1),
endDate: subYears(endOfYear(now), 1),
unit: 'month',
offset: 0,
num: num || 1,
value,
};
}