diff --git a/frontend/src/BillingManager.jsx b/frontend/src/BillingManager.jsx index 2c030c0..1e2e1e4 100644 --- a/frontend/src/BillingManager.jsx +++ b/frontend/src/BillingManager.jsx @@ -314,6 +314,66 @@ function BillingManager() { return purposeMap[purpose] || purpose || 'Не указано'; } + // Флаги стран (эмодзи) по коду/названию + function countryCodeToFlag(isoCode) { + if (!isoCode || isoCode.length !== 2) return ''; + const codePoints = isoCode + .toUpperCase() + .split('') + .map(char => 127397 + char.charCodeAt(0)); + return String.fromCodePoint(...codePoints); + } + + function getCountryFlag(countryRaw) { + if (!countryRaw) return ''; + const value = String(countryRaw).trim(); + if (!value) return ''; + const upper = value.toUpperCase(); + // Если уже ISO-2 + if (/^[A-Z]{2}$/.test(upper)) { + return countryCodeToFlag(upper); + } + // Маппинг распространённых названий -> ISO-2 + const mapNameToCode = { + // RU + 'RUSSIA': 'RU', 'RUSSIAN FEDERATION': 'RU', 'РОССИЯ': 'RU', + // US + 'USA': 'US', 'UNITED STATES': 'US', 'США': 'US', 'СОЕДИНЕННЫЕ ШТАТЫ': 'US', + // DE + 'GERMANY': 'DE', 'DEUTSCHLAND': 'DE', 'ГЕРМАНИЯ': 'DE', + // NL + 'NETHERLANDS': 'NL', 'NEDERLAND': 'NL', 'НИДЕРЛАНДЫ': 'NL', + // FR + 'FRANCE': 'FR', 'ФРАНЦИЯ': 'FR', + // GB + 'UNITED KINGDOM': 'GB', 'UK': 'GB', 'ВЕЛИКОБРИТАНИЯ': 'GB', + // SG + 'SINGAPORE': 'SG', 'СИНГАПУР': 'SG', + // PL + 'POLAND': 'PL', 'ПОЛЬША': 'PL', + // ES + 'SPAIN': 'ES', 'ИСПАНИЯ': 'ES', + // IT + 'ITALY': 'IT', 'ИТАЛИЯ': 'IT', + // TR + 'TURKEY': 'TR', 'ТУРЦИЯ': 'TR', + // KZ + 'KAZAKHSTAN': 'KZ', 'КАЗАХСТАН': 'KZ', + // LT, LV, EE, CZ, UA, BY, SE, FI, CA + 'LITHUANIA': 'LT', 'ЛИТВА': 'LT', + 'LATVIA': 'LV', 'ЛАТВИЯ': 'LV', + 'ESTONIA': 'EE', 'ЭСТОНИЯ': 'EE', + 'CZECHIA': 'CZ', 'CZECH REPUBLIC': 'CZ', 'ЧЕХИЯ': 'CZ', + 'UKRAINE': 'UA', 'УКРАИНА': 'UA', + 'BELARUS': 'BY', 'БЕЛАРУСЬ': 'BY', + 'SWEDEN': 'SE', 'ШВЕЦИЯ': 'SE', + 'FINLAND': 'FI', 'ФИНЛЯНДИЯ': 'FI', + 'CANADA': 'CA', 'КАНАДА': 'CA', + }; + const code = mapNameToCode[upper]; + return code ? countryCodeToFlag(code) : ''; + } + // Экспорт данных const exportData = () => { const csvContent = [ @@ -542,7 +602,7 @@ function BillingManager() {

Оплачиваемые ноды

@@ -786,8 +847,8 @@ function BillingManager() { История платежей
-