diff --git a/src/api/hooks/useAppUsage.ts b/src/api/hooks/useAppUsage.ts index a9c6b7af..ae412b38 100644 --- a/src/api/hooks/useAppUsage.ts +++ b/src/api/hooks/useAppUsage.ts @@ -21,8 +21,11 @@ export const useAppUsage = ({ rangeMode, date }: { rangeMode: 'day' | 'week' | ' start = DateTime.fromJSDate(date).startOf('day') end = DateTime.fromJSDate(date).endOf('day') } else if (rangeMode === 'week') { - start = DateTime.fromJSDate(date).minus({ days: 6 }).startOf('day') - end = DateTime.fromJSDate(date).endOf('day') + // Get Monday-Sunday of the week containing the selected date + const currentDate = DateTime.fromJSDate(date) + const monday = currentDate.minus({ days: currentDate.weekday - 1 }) + start = monday.startOf('day') + end = monday.plus({ days: 6 }).endOf('day') // Sunday } else { // Month view - show current week and previous 4 weeks const currentDate = DateTime.fromJSDate(date) @@ -73,8 +76,11 @@ export const useGetChartData = ({ rangeMode, date }: { rangeMode: 'day' | 'week' start = DateTime.fromJSDate(date).startOf('day') end = DateTime.fromJSDate(date).endOf('day') } else if (rangeMode === 'week') { - start = DateTime.fromJSDate(date).minus({ days: 6 }).startOf('day') - end = DateTime.fromJSDate(date).endOf('day') + // Get Monday-Sunday of the week containing the selected date + const currentDate = DateTime.fromJSDate(date) + const monday = currentDate.minus({ days: currentDate.weekday - 1 }) + start = monday.startOf('day') + end = monday.plus({ days: 6 }).endOf('day') // Sunday } else { // Month view - show current week and previous 4 weeks const currentDate = DateTime.fromJSDate(date) diff --git a/src/api/monitorApi/monitorApi.ts b/src/api/monitorApi/monitorApi.ts index c4786c81..a0f902d3 100644 --- a/src/api/monitorApi/monitorApi.ts +++ b/src/api/monitorApi/monitorApi.ts @@ -202,11 +202,22 @@ function aggregateTimeBlocks( } return Object.entries(buckets) + .sort(([keyA], [keyB]) => { + // Sort by date to ensure correct chronological order + return keyA.localeCompare(keyB) + }) .filter(([key]) => { - if (unit !== 'week') return true - // Only include weeks that have started and are not in the future - const dt = DateTime.fromFormat(key, 'kkkk-WW') - return dt <= DateTime.local().endOf('day') + if (unit === 'day' && start && end) { + // Only include days within the start-end range + const dt = DateTime.fromISO(key) + return dt >= start.startOf('day') && dt <= end.startOf('day') + } + if (unit === 'week') { + // Only include weeks that have started and are not in the future + const dt = DateTime.fromFormat(key, 'kkkk-WW') + return dt <= DateTime.local().endOf('day') + } + return true }) .map(([key, vals]) => { let dt: DateTime diff --git a/src/lib/stores/usageSummaryStore.ts b/src/lib/stores/usageSummaryStore.ts index c6b69da1..f8a03d60 100644 --- a/src/lib/stores/usageSummaryStore.ts +++ b/src/lib/stores/usageSummaryStore.ts @@ -11,7 +11,7 @@ interface UsageSummaryStore { export const useUsageSummaryStore = create((set) => ({ date: new Date(), - rangeMode: 'day', + rangeMode: 'week', setDate: (date) => set({ date }), setRangeMode: (rangeMode) => set({ rangeMode }), })) diff --git a/src/lib/utils/environment.util.ts b/src/lib/utils/environment.util.ts index b11f7157..3e8b0d50 100644 --- a/src/lib/utils/environment.util.ts +++ b/src/lib/utils/environment.util.ts @@ -15,5 +15,5 @@ export const isEarlyAccessUser = (email?: string, licenseType?: LicenseType) => } export const isTideGoalsFeatureEnabled = (email?: string, licenseType?: LicenseType) => { - return isEarlyAccessUser(email, licenseType) + return isDev() || isEarlyAccessUser(email, licenseType) } diff --git a/src/pages/useUsageSummary.ts b/src/pages/useUsageSummary.ts index 2d74d852..c3caf808 100644 --- a/src/pages/useUsageSummary.ts +++ b/src/pages/useUsageSummary.ts @@ -59,8 +59,12 @@ export function useUsageSummary() { const getPreviousPeriod = () => { let prevStart, prevEnd if (rangeMode === 'week') { - prevStart = DateTime.fromJSDate(date).minus({ days: 13 }).startOf('day') - prevEnd = DateTime.fromJSDate(date).minus({ days: 7 }).endOf('day') + // Get Monday of the previous week + const currentDate = DateTime.fromJSDate(date) + const thisMonday = currentDate.minus({ days: currentDate.weekday - 1 }) + const prevMonday = thisMonday.minus({ weeks: 1 }) + prevStart = prevMonday.startOf('day') + prevEnd = prevMonday.plus({ days: 6 }).endOf('day') // Sunday } else { // Month view - previous 4 weeks before current 4 weeks const currentDate = DateTime.fromJSDate(date) @@ -80,8 +84,11 @@ export function useUsageSummary() { start = DateTime.fromJSDate(date).startOf('day') end = DateTime.fromJSDate(date).endOf('day') } else if (rangeMode === 'week') { - start = DateTime.fromJSDate(date).minus({ days: 6 }).startOf('day') - end = DateTime.fromJSDate(date).endOf('day') + // Get Monday-Sunday of the week containing the selected date + const currentDate = DateTime.fromJSDate(date) + const monday = currentDate.minus({ days: currentDate.weekday - 1 }) + start = monday.startOf('day') + end = monday.plus({ days: 6 }).endOf('day') // Sunday } else { // Month view - show current week and previous 4 weeks const currentDate = DateTime.fromJSDate(date)