"use client"; import { DeviceAnalytics as DeviceAnalyticsType } from '../../api/types'; interface DeviceAnalyticsProps { data: DeviceAnalyticsType; } function StatCard({ title, items }: { title: string; items: { name: string; count: number; percentage: number }[] }) { // 安全地格式化数字 const formatNumber = (value: number | string | undefined | null): string => { if (value === undefined || value === null) return '0'; return typeof value === 'number' ? value.toLocaleString() : String(value); }; // 安全地格式化百分比 const formatPercent = (value: number | undefined | null): string => { if (value === undefined || value === null) return '0'; return value.toFixed(1); }; return (

{title}

{items.map((item, index) => (
{item.name || 'Unknown'} {formatNumber(item.count)} ({formatPercent(item.percentage)}%)
))}
); } export default function DeviceAnalytics({ data }: DeviceAnalyticsProps) { return (
({ name: item.type ? (item.type.charAt(0).toUpperCase() + item.type.slice(1)) : 'Unknown', count: item.count, percentage: item.percentage }))} />
); }