feat: use aggregated dashboard endpoint

This commit is contained in:
Usman Baig
2026-01-18 12:59:38 +01:00
parent 3b6decf7a4
commit 8c4fe4348f
2 changed files with 45 additions and 49 deletions

View File

@@ -1,4 +1,5 @@
import apiRequest from './client'
import { Site } from './sites'
export interface Stats {
pageviews: number
@@ -170,3 +171,29 @@ export async function getScreenResolutions(siteId: string, startDate?: string, e
params.append('limit', limit.toString())
return apiRequest<{ screen_resolutions: ScreenResolutionStat[] }>(`/sites/${siteId}/screen-resolutions?${params.toString()}`).then(r => r?.screen_resolutions || [])
}
export interface DashboardData {
site: Site
stats: Stats
realtime_visitors: number
daily_stats: DailyStat[]
top_pages: TopPage[]
entry_pages: TopPage[]
exit_pages: TopPage[]
top_referrers: TopReferrer[]
countries: CountryStat[]
cities: CityStat[]
regions: RegionStat[]
browsers: BrowserStat[]
os: OSStat[]
devices: DeviceStat[]
screen_resolutions: ScreenResolutionStat[]
}
export async function getDashboard(siteId: string, startDate?: string, endDate?: string, limit = 10): Promise<DashboardData> {
const params = new URLSearchParams()
if (startDate) params.append('start_date', startDate)
if (endDate) params.append('end_date', endDate)
params.append('limit', limit.toString())
return apiRequest<DashboardData>(`/sites/${siteId}/dashboard?${params.toString()}`)
}