mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 17:43:47 +00:00
feat: add admin traffic usage page with TanStack Table
Add AdminTrafficUsage page showing per-user traffic statistics by node with period filtering (1/3/7/14/30d), server-side sorting, search, pagination, and CSV export. Uses @tanstack/react-table with manual sorting and dynamic node columns.
This commit is contained in:
@@ -761,7 +761,8 @@
|
||||
"campaigns": "Campaigns",
|
||||
"promoOffers": "Promo Offers",
|
||||
"promocodes": "Promo Codes",
|
||||
"promoGroups": "Discount Groups"
|
||||
"promoGroups": "Discount Groups",
|
||||
"trafficUsage": "Traffic Usage"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Admin Panel",
|
||||
@@ -783,7 +784,26 @@
|
||||
"campaignsDesc": "Advertising campaigns",
|
||||
"promoOffersDesc": "Personal discounts",
|
||||
"promocodesDesc": "Manage promo codes",
|
||||
"promoGroupsDesc": "Discount groups for users"
|
||||
"promoGroupsDesc": "Discount groups for users",
|
||||
"trafficUsageDesc": "Per-user traffic by nodes"
|
||||
},
|
||||
"trafficUsage": {
|
||||
"title": "Traffic Usage",
|
||||
"subtitle": "Per-user traffic statistics by nodes",
|
||||
"period": "Period",
|
||||
"days": "d",
|
||||
"exportCsv": "Export CSV",
|
||||
"exportSuccess": "CSV sent to your Telegram",
|
||||
"exportError": "Failed to export",
|
||||
"user": "User",
|
||||
"tariff": "Tariff",
|
||||
"devices": "Devices",
|
||||
"trafficLimit": "Limit",
|
||||
"total": "Total",
|
||||
"noData": "No traffic data",
|
||||
"loading": "Loading traffic data...",
|
||||
"noTariff": "\u2014",
|
||||
"search": "Search by name or username"
|
||||
},
|
||||
"emailTemplates": {
|
||||
"title": "Email Templates",
|
||||
|
||||
@@ -642,7 +642,8 @@
|
||||
"promocodes": "کدهای تخفیف",
|
||||
"promoGroups": "گروههای تخفیف",
|
||||
"remnawave": "RemnaWave",
|
||||
"users": "کاربران"
|
||||
"users": "کاربران",
|
||||
"trafficUsage": "مصرف ترافیک"
|
||||
},
|
||||
"panel": {
|
||||
"title": "پنل مدیریت",
|
||||
@@ -664,7 +665,26 @@
|
||||
"promocodesDesc": "مدیریت کدهای تخفیف",
|
||||
"promoGroupsDesc": "گروههای تخفیف برای کاربران",
|
||||
"remnawaveDesc": "مدیریت پنل و آمار",
|
||||
"usersDesc": "مدیریت کاربران ربات"
|
||||
"usersDesc": "مدیریت کاربران ربات",
|
||||
"trafficUsageDesc": "ترافیک هر کاربر بر اساس نود"
|
||||
},
|
||||
"trafficUsage": {
|
||||
"title": "مصرف ترافیک",
|
||||
"subtitle": "آمار ترافیک کاربران بر اساس نودها",
|
||||
"period": "دوره",
|
||||
"days": "روز",
|
||||
"exportCsv": "خروجی CSV",
|
||||
"exportSuccess": "CSV به تلگرام شما ارسال شد",
|
||||
"exportError": "خطا در خروجی",
|
||||
"user": "کاربر",
|
||||
"tariff": "تعرفه",
|
||||
"devices": "دستگاهها",
|
||||
"trafficLimit": "محدودیت",
|
||||
"total": "کل",
|
||||
"noData": "داده ترافیکی موجود نیست",
|
||||
"loading": "در حال بارگذاری دادههای ترافیک...",
|
||||
"noTariff": "\u2014",
|
||||
"search": "جستجو بر اساس نام یا نام کاربری"
|
||||
},
|
||||
"emailTemplates": {
|
||||
"title": "قالبهای ایمیل",
|
||||
|
||||
@@ -782,7 +782,8 @@
|
||||
"campaigns": "Кампании",
|
||||
"promoOffers": "Промопредложения",
|
||||
"promocodes": "Промокоды",
|
||||
"promoGroups": "Группы скидок"
|
||||
"promoGroups": "Группы скидок",
|
||||
"trafficUsage": "Расход трафика"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Панель администратора",
|
||||
@@ -804,7 +805,26 @@
|
||||
"campaignsDesc": "Рекламные кампании",
|
||||
"promoOffersDesc": "Персональные скидки",
|
||||
"promocodesDesc": "Управление промокодами",
|
||||
"promoGroupsDesc": "Группы скидок для пользователей"
|
||||
"promoGroupsDesc": "Группы скидок для пользователей",
|
||||
"trafficUsageDesc": "Трафик пользователей по нодам"
|
||||
},
|
||||
"trafficUsage": {
|
||||
"title": "Расход трафика",
|
||||
"subtitle": "Статистика трафика по пользователям и нодам",
|
||||
"period": "Период",
|
||||
"days": "д",
|
||||
"exportCsv": "Экспорт CSV",
|
||||
"exportSuccess": "CSV отправлен в ваш Telegram",
|
||||
"exportError": "Ошибка экспорта",
|
||||
"user": "Пользователь",
|
||||
"tariff": "Тариф",
|
||||
"devices": "Устройства",
|
||||
"trafficLimit": "Лимит",
|
||||
"total": "Всего",
|
||||
"noData": "Нет данных о трафике",
|
||||
"loading": "Загрузка данных о трафике...",
|
||||
"noTariff": "\u2014",
|
||||
"search": "Поиск по имени или юзернейму"
|
||||
},
|
||||
"emailTemplates": {
|
||||
"title": "Email-шаблоны",
|
||||
|
||||
@@ -642,7 +642,8 @@
|
||||
"promocodes": "促销码",
|
||||
"promoGroups": "折扣组",
|
||||
"remnawave": "RemnaWave",
|
||||
"users": "用户"
|
||||
"users": "用户",
|
||||
"trafficUsage": "流量使用"
|
||||
},
|
||||
"panel": {
|
||||
"title": "管理面板",
|
||||
@@ -664,7 +665,26 @@
|
||||
"promocodesDesc": "管理促销码",
|
||||
"promoGroupsDesc": "用户折扣组",
|
||||
"remnawaveDesc": "面板管理和统计",
|
||||
"usersDesc": "管理机器人用户"
|
||||
"usersDesc": "管理机器人用户",
|
||||
"trafficUsageDesc": "按节点统计用户流量"
|
||||
},
|
||||
"trafficUsage": {
|
||||
"title": "流量使用",
|
||||
"subtitle": "按节点的用户流量统计",
|
||||
"period": "周期",
|
||||
"days": "天",
|
||||
"exportCsv": "导出CSV",
|
||||
"exportSuccess": "CSV已发送到您的Telegram",
|
||||
"exportError": "导出失败",
|
||||
"user": "用户",
|
||||
"tariff": "套餐",
|
||||
"devices": "设备",
|
||||
"trafficLimit": "限制",
|
||||
"total": "总计",
|
||||
"noData": "无流量数据",
|
||||
"loading": "正在加载流量数据...",
|
||||
"noTariff": "\u2014",
|
||||
"search": "按名称或用户名搜索"
|
||||
},
|
||||
"paymentMethods": {
|
||||
"title": "支付方法",
|
||||
|
||||
Reference in New Issue
Block a user