Simplified date logic.
This commit is contained in:
parent
0cb28e9fde
commit
f4a9336f9d
|
@ -32,18 +32,14 @@ export function DateFilter({
|
||||||
const { locale } = useLocale();
|
const { locale } = useLocale();
|
||||||
|
|
||||||
const options = [
|
const options = [
|
||||||
{ label: formatMessage(labels.today), value: '1day' },
|
{ label: formatMessage(labels.today), value: '0day' },
|
||||||
{
|
{
|
||||||
label: formatMessage(labels.lastHours, { x: 24 }),
|
label: formatMessage(labels.lastHours, { x: 24 }),
|
||||||
value: '24hour',
|
value: '24hour',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: formatMessage(labels.yesterday),
|
|
||||||
value: '-1day',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: formatMessage(labels.thisWeek),
|
label: formatMessage(labels.thisWeek),
|
||||||
value: '1week',
|
value: '0week',
|
||||||
divider: true,
|
divider: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -52,7 +48,7 @@ export function DateFilter({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: formatMessage(labels.thisMonth),
|
label: formatMessage(labels.thisMonth),
|
||||||
value: '1month',
|
value: '0month',
|
||||||
divider: true,
|
divider: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -63,7 +59,7 @@ export function DateFilter({
|
||||||
label: formatMessage(labels.lastDays, { x: 90 }),
|
label: formatMessage(labels.lastDays, { x: 90 }),
|
||||||
value: '90day',
|
value: '90day',
|
||||||
},
|
},
|
||||||
{ label: formatMessage(labels.thisYear), value: '1year' },
|
{ label: formatMessage(labels.thisYear), value: '0year' },
|
||||||
showAllTime && {
|
showAllTime && {
|
||||||
label: formatMessage(labels.allTime),
|
label: formatMessage(labels.allTime),
|
||||||
value: 'all',
|
value: 'all',
|
||||||
|
|
127
src/lib/date.ts
127
src/lib/date.ts
|
@ -151,105 +151,50 @@ export function parseDateRange(value: string | object, locale = 'en-US'): DateRa
|
||||||
const dateLocale = getDateLocale(locale);
|
const dateLocale = getDateLocale(locale);
|
||||||
const { num, unit } = parseDateValue(value);
|
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) {
|
switch (unit) {
|
||||||
case 'day':
|
case 'hour':
|
||||||
return {
|
return {
|
||||||
startDate: subDays(startOfDay(now), +num - 1),
|
startDate: subHours(startOfHour(now), num),
|
||||||
endDate: endOfDay(now),
|
endDate: endOfHour(now),
|
||||||
num: +num,
|
|
||||||
offset: 0,
|
offset: 0,
|
||||||
|
num: num || 1,
|
||||||
unit,
|
unit,
|
||||||
value,
|
value,
|
||||||
};
|
};
|
||||||
case 'hour':
|
case 'day':
|
||||||
return {
|
return {
|
||||||
startDate: subHours(startOfHour(now), +num - 1),
|
startDate: subDays(startOfDay(now), num),
|
||||||
endDate: endOfHour(now),
|
endDate: endOfDay(now),
|
||||||
num: +num,
|
unit: num ? 'day' : 'hour',
|
||||||
offset: 0,
|
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,
|
value,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue