Compare commits

...

3 commits

Author SHA1 Message Date
Francis Cao
d948e122ea fix resetAt logic
Some checks are pending
Create docker images (cloud) / Build, push, and deploy (push) Waiting to run
Node.js CI / build (postgresql, 18.18, 10) (push) Waiting to run
2025-10-07 09:44:59 -07:00
Francis Cao
36ae53654d Merge branch 'analytics' of https://github.com/umami-software/umami into analytics 2025-10-07 09:11:34 -07:00
Francis Cao
d440a44d96 clean-up useWebsite query params 2025-10-07 09:07:34 -07:00
4 changed files with 31 additions and 13 deletions

View file

@ -1,8 +1,8 @@
import { ReactQueryOptions } from '@/lib/types';
import { keepPreviousData } from '@tanstack/react-query'; import { keepPreviousData } from '@tanstack/react-query';
import { useApi } from '../useApi'; import { useApi } from '../useApi';
import { useFilterParameters } from '../useFilterParameters';
import { useDateParameters } from '../useDateParameters'; import { useDateParameters } from '../useDateParameters';
import { ReactQueryOptions } from '@/lib/types'; import { useFilterParameters } from '../useFilterParameters';
export type WebsiteMetricsData = { export type WebsiteMetricsData = {
x: string; x: string;
@ -15,7 +15,7 @@ export function useWebsiteMetricsQuery(
options?: ReactQueryOptions<WebsiteMetricsData>, options?: ReactQueryOptions<WebsiteMetricsData>,
) { ) {
const { get, useQuery } = useApi(); const { get, useQuery } = useApi();
const date = useDateParameters(); const { startAt, endAt, unit, timezone } = useDateParameters();
const filters = useFilterParameters(); const filters = useFilterParameters();
return useQuery<WebsiteMetricsData>({ return useQuery<WebsiteMetricsData>({
@ -23,14 +23,20 @@ export function useWebsiteMetricsQuery(
'websites:metrics', 'websites:metrics',
{ {
websiteId, websiteId,
...date, startAt,
endAt,
unit,
timezone,
...filters, ...filters,
...params, ...params,
}, },
], ],
queryFn: async () => queryFn: async () =>
get(`/websites/${websiteId}/metrics`, { get(`/websites/${websiteId}/metrics`, {
...date, startAt,
endAt,
unit,
timezone,
...filters, ...filters,
...params, ...params,
}), }),

View file

@ -13,12 +13,23 @@ export function useWebsitePageviewsQuery(
options?: ReactQueryOptions<WebsitePageviewsData>, options?: ReactQueryOptions<WebsitePageviewsData>,
) { ) {
const { get, useQuery } = useApi(); const { get, useQuery } = useApi();
const date = useDateParameters(); const { startAt, endAt, unit, timezone } = useDateParameters();
const queryParams = useFilterParameters(); const queryParams = useFilterParameters();
return useQuery<WebsitePageviewsData>({ return useQuery<WebsitePageviewsData>({
queryKey: ['websites:pageviews', { websiteId, compare, ...date, ...queryParams }], queryKey: [
queryFn: () => get(`/websites/${websiteId}/pageviews`, { compare, ...date, ...queryParams }), 'websites:pageviews',
{ websiteId, compare, startAt, endAt, unit, timezone, ...queryParams },
],
queryFn: () =>
get(`/websites/${websiteId}/pageviews`, {
compare,
startAt,
endAt,
unit,
timezone,
...queryParams,
}),
enabled: !!websiteId, enabled: !!websiteId,
...options, ...options,
}); });

View file

@ -23,12 +23,13 @@ export function useWebsiteStatsQuery(
options?: UseQueryOptions<WebsiteStatsData, Error, WebsiteStatsData>, options?: UseQueryOptions<WebsiteStatsData, Error, WebsiteStatsData>,
) { ) {
const { get, useQuery } = useApi(); const { get, useQuery } = useApi();
const date = useDateParameters(); const { startAt, endAt, unit, timezone } = useDateParameters();
const filters = useFilterParameters(); const filters = useFilterParameters();
return useQuery<WebsiteStatsData>({ return useQuery<WebsiteStatsData>({
queryKey: ['websites:stats', { websiteId, ...date, ...filters }], queryKey: ['websites:stats', { websiteId, startAt, endAt, unit, timezone, ...filters }],
queryFn: () => get(`/websites/${websiteId}/stats`, { ...date, ...filters }), queryFn: () =>
get(`/websites/${websiteId}/stats`, { startAt, endAt, unit, timezone, ...filters }),
enabled: !!websiteId, enabled: !!websiteId,
...options, ...options,
}); });

View file

@ -1,6 +1,6 @@
import { checkAuth } from '@/lib/auth'; import { checkAuth } from '@/lib/auth';
import { DEFAULT_PAGE_SIZE, FILTER_COLUMNS } from '@/lib/constants'; import { DEFAULT_PAGE_SIZE, FILTER_COLUMNS } from '@/lib/constants';
import { getAllowedUnits, getMinimumUnit, parseDateRange } from '@/lib/date'; import { getAllowedUnits, getMinimumUnit, maxDate, parseDateRange } from '@/lib/date';
import { fetchWebsite } from '@/lib/load'; import { fetchWebsite } from '@/lib/load';
import { filtersArrayToObject } from '@/lib/params'; import { filtersArrayToObject } from '@/lib/params';
import { badRequest, unauthorized } from '@/lib/response'; import { badRequest, unauthorized } from '@/lib/response';
@ -84,7 +84,7 @@ export async function setWebsiteDate(websiteId: string, data: Record<string, any
const website = await fetchWebsite(websiteId); const website = await fetchWebsite(websiteId);
if (website?.resetAt) { if (website?.resetAt) {
data.startDate = new Date(website.resetAt); data.startDate = maxDate(data.startDate, new Date(website?.resetAt));
} }
return data; return data;