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

@ -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,
};
}