@@ -77,6 +86,13 @@ export function SalesTab({ params }: SalesTabProps) {
chartId="sales-daily"
valueLabel={t('admin.salesStats.summary.revenue')}
/>
+
+
);
}
diff --git a/src/components/sales-stats/TrialsTab.tsx b/src/components/sales-stats/TrialsTab.tsx
index f81066b..dcc0197 100644
--- a/src/components/sales-stats/TrialsTab.tsx
+++ b/src/components/sales-stats/TrialsTab.tsx
@@ -7,7 +7,7 @@ import { SALES_STATS } from '../../constants/salesStats';
import { StatCard } from '../stats';
import { DonutChart } from './DonutChart';
-import { SimpleAreaChart } from './SimpleAreaChart';
+import { DualAreaChart } from './DualAreaChart';
interface TrialsTabProps {
params: SalesStatsParams;
@@ -51,14 +51,19 @@ export function TrialsTab({ params }: TrialsTabProps) {
color: SALES_STATS.PROVIDER_COLORS[item.provider as keyof typeof SALES_STATS.PROVIDER_COLORS],
}));
- const areaData = data.daily.map((item) => ({
+ const dualData = data.daily.map((item) => ({
date: item.date,
- value: item.count,
+ series1: item.registrations,
+ series2: item.trials,
}));
return (
-
diff --git a/src/components/sales-stats/index.ts b/src/components/sales-stats/index.ts
index ddb40ad..f9eba7d 100644
--- a/src/components/sales-stats/index.ts
+++ b/src/components/sales-stats/index.ts
@@ -1,6 +1,8 @@
export { AddonsTab } from './AddonsTab';
export { DepositsTab } from './DepositsTab';
export { DonutChart } from './DonutChart';
+export { DualAreaChart } from './DualAreaChart';
+export { MultiSeriesAreaChart } from './MultiSeriesAreaChart';
export { PeriodSelector } from './PeriodSelector';
export { RenewalsTab } from './RenewalsTab';
export { SalesTab } from './SalesTab';
diff --git a/src/locales/en.json b/src/locales/en.json
index f31fffc..ded563e 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1106,10 +1106,12 @@
},
"trials": {
"total": "Total Trials",
+ "totalRegistrations": "Registrations",
+ "trialsIssued": "Trials Issued",
"conversion": "Conversion Rate",
"avgDuration": "Avg Duration",
"byProvider": "By Registration Source",
- "dailyChart": "Daily Registrations",
+ "dailyChart": "Daily Registrations & Trials",
"registrations": "Registrations"
},
"sales": {
@@ -1118,7 +1120,9 @@
"topTariff": "Top Tariff",
"byTariff": "Sales by Tariff",
"byPeriod": "By Subscription Period",
- "dailyChart": "Daily Sales"
+ "dailyChart": "Daily Sales",
+ "dailyByTariff": "Sales by Tariff per Day",
+ "subscriptions": "Subscriptions"
},
"renewals": {
"total": "Total Renewals",
@@ -1134,6 +1138,8 @@
"totalPurchases": "Total Purchases",
"totalGb": "Total Traffic",
"revenue": "Revenue",
+ "devicePurchases": "Device Purchases",
+ "deviceRevenue": "Device Revenue",
"byPackage": "By Package Size",
"dailyChart": "Daily Purchases",
"purchases": "Purchases"
diff --git a/src/locales/fa.json b/src/locales/fa.json
index 362ca7a..8788a67 100644
--- a/src/locales/fa.json
+++ b/src/locales/fa.json
@@ -929,10 +929,12 @@
},
"trials": {
"total": "کل آزمایشی",
+ "totalRegistrations": "ثبتنامها",
+ "trialsIssued": "آزمایشی صادرشده",
"conversion": "نرخ تبدیل",
"avgDuration": "میانگین مدت",
"byProvider": "بر اساس منبع",
- "dailyChart": "ثبتنام روزانه",
+ "dailyChart": "ثبتنام و آزمایشی روزانه",
"registrations": "ثبتنام"
},
"sales": {
@@ -941,7 +943,9 @@
"topTariff": "تعرفه برتر",
"byTariff": "بر اساس تعرفه",
"byPeriod": "بر اساس دوره",
- "dailyChart": "فروش روزانه"
+ "dailyChart": "فروش روزانه",
+ "dailyByTariff": "فروش روزانه بر اساس تعرفه",
+ "subscriptions": "اشتراکها"
},
"renewals": {
"total": "کل تمدیدها",
@@ -957,6 +961,8 @@
"totalPurchases": "کل خرید",
"totalGb": "کل ترافیک",
"revenue": "درآمد",
+ "devicePurchases": "خرید دستگاه",
+ "deviceRevenue": "درآمد دستگاه",
"byPackage": "بر اساس بسته",
"dailyChart": "خرید روزانه",
"purchases": "خرید"
diff --git a/src/locales/ru.json b/src/locales/ru.json
index cb5cd27..c34a181 100644
--- a/src/locales/ru.json
+++ b/src/locales/ru.json
@@ -1127,10 +1127,12 @@
},
"trials": {
"total": "Всего триалов",
+ "totalRegistrations": "Регистрации",
+ "trialsIssued": "Выданные триалы",
"conversion": "Конверсия",
"avgDuration": "Средняя длит.",
"byProvider": "По источнику регистрации",
- "dailyChart": "Регистрации по дням",
+ "dailyChart": "Регистрации и триалы по дням",
"registrations": "Регистрации"
},
"sales": {
@@ -1139,7 +1141,9 @@
"topTariff": "Топ тариф",
"byTariff": "Продажи по тарифам",
"byPeriod": "По периоду подписки",
- "dailyChart": "Продажи по дням"
+ "dailyChart": "Продажи по дням",
+ "dailyByTariff": "Продажи по тарифам по дням",
+ "subscriptions": "Подписки"
},
"renewals": {
"total": "Всего продлений",
@@ -1155,6 +1159,8 @@
"totalPurchases": "Всего покупок",
"totalGb": "Всего трафика",
"revenue": "Доход",
+ "devicePurchases": "Покупки устройств",
+ "deviceRevenue": "Доход от устройств",
"byPackage": "По размеру пакета",
"dailyChart": "Покупки по дням",
"purchases": "Покупки"
diff --git a/src/locales/zh.json b/src/locales/zh.json
index aebde75..6b3b19d 100644
--- a/src/locales/zh.json
+++ b/src/locales/zh.json
@@ -929,10 +929,12 @@
},
"trials": {
"total": "试用总数",
+ "totalRegistrations": "注册数",
+ "trialsIssued": "已发放试用",
"conversion": "转化率",
"avgDuration": "平均时长",
"byProvider": "按注册来源",
- "dailyChart": "每日注册",
+ "dailyChart": "每日注册与试用",
"registrations": "注册"
},
"sales": {
@@ -941,7 +943,9 @@
"topTariff": "热门套餐",
"byTariff": "按套餐",
"byPeriod": "按订阅周期",
- "dailyChart": "每日销售"
+ "dailyChart": "每日销售",
+ "dailyByTariff": "每日按套餐销售",
+ "subscriptions": "订阅"
},
"renewals": {
"total": "续订总数",
@@ -957,6 +961,8 @@
"totalPurchases": "购买总数",
"totalGb": "总流量",
"revenue": "收入",
+ "devicePurchases": "设备购买",
+ "deviceRevenue": "设备收入",
"byPackage": "按套餐大小",
"dailyChart": "每日购买",
"purchases": "购买"