Fix time ranges

This commit is contained in:
2024-12-21 10:16:18 -05:00
parent 7c1f7e84ba
commit d63f5261e9
4 changed files with 113 additions and 630 deletions

View File

@@ -310,71 +310,80 @@ export class TimeManager {
end: this.getDayEnd(twoDaysAgo)
};
}
case 'last7days': {
// If current period is days 0-6 (e.g., 12/11 1am - 12/17 12:59am)
// Previous should be days 7-13 (e.g., 12/4 1am - 12/11 12:59am)
case 'last7days':
case 'previous7days': {
const dayStart = this.getDayStart(now);
const currentStart = dayStart.minus({ days: 6 }); // Start of current period
const prevStart = currentStart.minus({ days: 7 }); // Start 7 days before current start
const currentStart = dayStart.minus({ days: 6 });
const prevEnd = currentStart.minus({ milliseconds: 1 });
const prevStart = prevEnd.minus({ days: 6 });
return {
start: prevStart,
end: this.getDayEnd(currentStart.minus({ days: 1 })) // End right before current start
end: prevEnd
};
}
case 'last30days': {
// If current period is days 0-29, previous should be days 30-59
case 'last30days':
case 'previous30days': {
const dayStart = this.getDayStart(now);
const currentStart = dayStart.minus({ days: 29 }); // Start of current period
const prevStart = currentStart.minus({ days: 30 }); // Start 30 days before current start
const currentStart = dayStart.minus({ days: 29 });
const prevEnd = currentStart.minus({ milliseconds: 1 });
const prevStart = prevEnd.minus({ days: 29 });
return {
start: prevStart,
end: this.getDayEnd(currentStart.minus({ days: 1 })) // End right before current start
end: prevEnd
};
}
case 'last90days': {
// If current period is days 0-89, previous should be days 90-179
case 'last90days':
case 'previous90days': {
const dayStart = this.getDayStart(now);
const currentStart = dayStart.minus({ days: 89 }); // Start of current period
const prevStart = currentStart.minus({ days: 90 }); // Start 90 days before current start
const currentStart = dayStart.minus({ days: 89 });
const prevEnd = currentStart.minus({ milliseconds: 1 });
const prevStart = prevEnd.minus({ days: 89 });
return {
start: prevStart,
end: this.getDayEnd(currentStart.minus({ days: 1 })) // End right before current start
end: prevEnd
};
}
case 'thisWeek': {
const lastWeek = now.minus({ weeks: 1 });
const weekStart = this.getWeekStart(lastWeek);
const weekEnd = weekStart.plus({ days: 6 });
const weekStart = this.getWeekStart(now);
const prevEnd = weekStart.minus({ milliseconds: 1 });
const prevStart = this.getWeekStart(prevEnd);
return {
start: weekStart,
end: this.getDayEnd(weekEnd)
start: prevStart,
end: prevEnd
};
}
case 'lastWeek': {
const twoWeeksAgo = now.minus({ weeks: 2 });
const weekStart = this.getWeekStart(twoWeeksAgo);
const weekEnd = weekStart.plus({ days: 6 });
const lastWeekStart = this.getWeekStart(now.minus({ weeks: 1 }));
const prevEnd = lastWeekStart.minus({ milliseconds: 1 });
const prevStart = this.getWeekStart(prevEnd);
return {
start: weekStart,
end: this.getDayEnd(weekEnd)
start: prevStart,
end: prevEnd
};
}
case 'thisMonth': {
const lastMonth = now.minus({ months: 1 });
const monthStart = lastMonth.startOf('month').set({ hour: this.dayStartHour });
const monthEnd = monthStart.plus({ months: 1 }).minus({ days: 1 });
const monthStart = now.startOf('month').set({ hour: this.dayStartHour });
const prevEnd = monthStart.minus({ milliseconds: 1 });
const prevStart = prevEnd.startOf('month').set({ hour: this.dayStartHour });
return {
start: monthStart,
end: this.getDayEnd(monthEnd)
start: prevStart,
end: prevEnd
};
}
case 'lastMonth': {
const twoMonthsAgo = now.minus({ months: 2 });
const monthStart = twoMonthsAgo.startOf('month').set({ hour: this.dayStartHour });
const monthEnd = monthStart.plus({ months: 1 }).minus({ days: 1 });
const lastMonthStart = now.minus({ months: 1 }).startOf('month').set({ hour: this.dayStartHour });
const prevEnd = lastMonthStart.minus({ milliseconds: 1 });
const prevStart = prevEnd.startOf('month').set({ hour: this.dayStartHour });
return {
start: monthStart,
end: this.getDayEnd(monthEnd)
start: prevStart,
end: prevEnd
};
}
case 'twoDaysAgo': {
const twoDaysAgo = now.minus({ days: 2 });
return {
start: this.getDayStart(twoDaysAgo),
end: this.getDayEnd(twoDaysAgo)
};
}
default: