// Analytics metrics view model // Represents metrics data for analytics export class AnalyticsMetricsViewModel { pageViews: number; uniqueVisitors: number; averageSessionDuration: number; bounceRate: number; constructor(data: { pageViews: number; uniqueVisitors: number; averageSessionDuration: number; bounceRate: number }) { Object.assign(this, data); } /** UI-specific: Formatted page views */ get formattedPageViews(): string { return this.pageViews.toLocaleString(); } /** UI-specific: Formatted unique visitors */ get formattedUniqueVisitors(): string { return this.uniqueVisitors.toLocaleString(); } /** UI-specific: Formatted session duration */ get formattedSessionDuration(): string { const minutes = Math.floor(this.averageSessionDuration / 60); const seconds = Math.floor(this.averageSessionDuration % 60); return `${minutes}:${seconds.toString().padStart(2, '0')}`; } /** UI-specific: Formatted bounce rate */ get formattedBounceRate(): string { return `${this.bounceRate.toFixed(1)}%`; } }