Skip to content

Commit

Permalink
Updated "Last X" date logic. Closes #2672.
Browse files Browse the repository at this point in the history
  • Loading branch information
mikecao committed Apr 16, 2024
1 parent 0ea97eb commit 7c2bb95
Showing 1 changed file with 14 additions and 20 deletions.
34 changes: 14 additions & 20 deletions src/lib/date.ts
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ export function parseDateRange(value: string | object, locale = 'en-US'): DateRa
switch (unit) {
case 'hour':
return {
startDate: subHours(startOfHour(now), num),
startDate: num ? subHours(startOfHour(now), num - 1) : startOfHour(now),
endDate: endOfHour(now),
offset: 0,
num: num || 1,
Expand All @@ -163,35 +163,37 @@ export function parseDateRange(value: string | object, locale = 'en-US'): DateRa
};
case 'day':
return {
startDate: subDays(startOfDay(now), num),
endDate: subDays(endOfDay(now), num ? 1 : 0),
startDate: num ? subDays(startOfDay(now), num - 1) : startOfDay(now),
endDate: endOfDay(now),
unit: num ? 'day' : 'hour',
offset: 0,
num: num || 1,
value,
};
case 'week':
return {
startDate: subWeeks(startOfWeek(now, { locale: dateLocale }), num),
endDate: subWeeks(endOfWeek(now, { locale: dateLocale }), num),
startDate: num
? subWeeks(startOfWeek(now, { locale: dateLocale }), num - 1)
: startOfWeek(now, { locale: dateLocale }),
endDate: endOfWeek(now, { locale: dateLocale }),
unit: 'day',
offset: 0,
num: num || 1,
value,
};
case 'month':
return {
startDate: subMonths(startOfMonth(now), num),
endDate: subMonths(endOfMonth(now), num ? 1 : 0),
startDate: num ? subMonths(startOfMonth(now), num - 1) : startOfMonth(now),
endDate: endOfMonth(now),
unit: num ? 'month' : 'day',
offset: 0,
num: num || 1,
value,
};
case 'year':
return {
startDate: subYears(startOfYear(now), num),
endDate: subYears(endOfYear(now), num),
startDate: num ? subYears(startOfYear(now), num - 1) : startOfYear(now),
endDate: endOfYear(now),
unit: 'month',
offset: 0,
num: num || 1,
Expand Down Expand Up @@ -286,19 +288,11 @@ export function getDateFromString(str: string) {
export function getDateArray(data: any[], startDate: Date, endDate: Date, unit: string) {
const arr = [];
const { diff, add, start } = DATE_FUNCTIONS[unit];
const n = diff(endDate, startDate) + 1;
const n = diff(endDate, startDate);

function findData(date: Date) {
const d = data.find(({ x }) => {
return start(getDateFromString(x)).getTime() === date.getTime();
});

return d?.y || 0;
}

for (let i = 0; i < n; i++) {
for (let i = 0; i <= n; i++) {
const t = start(add(startDate, i));
const y = findData(t);
const y = data.find(({ x }) => start(getDateFromString(x)).getTime() === t.getTime())?.y || 0;

arr.push({ x: t, y });
}
Expand Down

0 comments on commit 7c2bb95

Please sign in to comment.