import { useState, useEffect } from 'react'; import { IconTrophy, IconMapPin, IconCloud, IconHash, IconChartBar } from '@tabler/icons-react'; /** * Компонент для отображения Top-N статистики */ function TopNStats({ data, loading }) { const [topCountries, setTopCountries] = useState([]); const [topProviders, setTopProviders] = useState([]); const [_topCommunities, _setTopCommunities] = useState([]); useEffect(() => { if (!data || !Array.isArray(data.servers)) return; // Подсчет по странам const countriesMap = new Map(); data.servers.forEach(s => { const country = s.country || 'Unknown'; countriesMap.set(country, (countriesMap.get(country) || 0) + 1); }); const topC = Array.from(countriesMap.entries()) .map(([name, count]) => ({ name, count })) .sort((a, b) => b.count - a.count) .slice(0, 5); setTopCountries(topC); // Подсчет по провайдерам const providersMap = new Map(); data.servers.forEach(s => { const provider = s.provider || 'Unknown'; providersMap.set(provider, (providersMap.get(provider) || 0) + 1); }); const topP = Array.from(providersMap.entries()) .map(([name, count]) => ({ name, count })) .sort((a, b) => b.count - a.count) .slice(0, 5); setTopProviders(topP); }, [data]); if (loading) { return (