feat: implement advanced chart dashboard with trends and comparisons

This commit is contained in:
Usman Baig
2026-01-18 13:25:01 +01:00
parent 3112a5dbd9
commit 7d3c0d49f9
3 changed files with 316 additions and 58 deletions

View File

@@ -142,12 +142,14 @@ export async function getDevices(siteId: string, startDate?: string, endDate?: s
return apiRequest<{ devices: DeviceStat[] }>(`/sites/${siteId}/devices?${params.toString()}`).then(r => r?.devices || [])
}
export async function getDailyStats(siteId: string, startDate?: string, endDate?: string): Promise<DailyStat[]> {
export async function getDailyStats(siteId: string, startDate?: string, endDate?: string, interval?: string): Promise<DailyStat[]> {
const params = new URLSearchParams()
if (startDate) params.append('start_date', startDate)
if (endDate) params.append('end_date', endDate)
if (interval) params.append('interval', interval)
return apiRequest<{ stats: DailyStat[] }>(`/sites/${siteId}/daily?${params.toString()}`).then(r => r?.stats || [])
}
export async function getEntryPages(siteId: string, startDate?: string, endDate?: string, limit = 10): Promise<TopPage[]> {
const params = new URLSearchParams()
if (startDate) params.append('start_date', startDate)
@@ -190,10 +192,11 @@ export interface DashboardData {
screen_resolutions: ScreenResolutionStat[]
}
export async function getDashboard(siteId: string, startDate?: string, endDate?: string, limit = 10): Promise<DashboardData> {
export async function getDashboard(siteId: string, startDate?: string, endDate?: string, limit = 10, interval?: string): Promise<DashboardData> {
const params = new URLSearchParams()
if (startDate) params.append('start_date', startDate)
if (endDate) params.append('end_date', endDate)
if (interval) params.append('interval', interval)
params.append('limit', limit.toString())
return apiRequest<DashboardData>(`/sites/${siteId}/dashboard?${params.toString()}`)
}