Update: 2026-08-02 22:51:18

This commit is contained in:
Hamza-Ayed
2026-08-02 22:51:18 +03:00
parent c9af364cbc
commit 2c962bf80a
39 changed files with 627 additions and 191 deletions
@@ -1,6 +1,7 @@
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:siro_admin/constant/theme.dart';
import 'package:siro_admin/controller/admin/analytics_v2_controller.dart';
class AdvancedAnalyticsPage extends StatelessWidget {
@@ -17,6 +18,9 @@ class AdvancedAnalyticsPage extends StatelessWidget {
_buildAppBar(context, cs),
Expanded(
child: GetBuilder<AnalyticsV2Controller>(
init: Get.isRegistered<AnalyticsV2Controller>()
? Get.find<AnalyticsV2Controller>()
: AnalyticsV2Controller(),
builder: (ctrl) {
if (ctrl.isLoading) {
return _buildLoadingState(cs);
@@ -178,7 +182,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
_buildSummaryCard(
'صافي الربح',
'${summary['total_profit_all'] ?? 0}',
const Color(0xFF10B981),
cs.success,
Icons.trending_up_rounded,
cs,
),
@@ -285,7 +289,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
children: [
_LegendDot(color: cs.tertiary, label: 'الإيرادات'),
const SizedBox(width: 16),
_LegendDot(color: const Color(0xFF10B981), label: 'الربح'),
_LegendDot(color: cs.success, label: 'الربح'),
],
),
const SizedBox(height: 16),
@@ -356,13 +360,13 @@ class AdvancedAnalyticsPage extends StatelessWidget {
LineChartBarData(
spots: profitSpots,
isCurved: true,
color: const Color(0xFF10B981),
color: cs.success,
barWidth: 3,
isStrokeCapRound: true,
dotData: const FlDotData(show: false),
belowBarData: BarAreaData(
show: true,
color: const Color(0xFF10B981).withValues(alpha: 0.08),
color: cs.success.withValues(alpha: 0.08),
),
),
],
@@ -418,7 +422,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
),
BarChartRodData(
toY: dCount,
color: const Color(0xFFF59E0B).withValues(alpha: 0.7),
color: cs.warning.withValues(alpha: 0.7),
width: 8,
borderRadius: BorderRadius.circular(4),
),
@@ -450,7 +454,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
_LegendDot(color: cs.tertiary, label: 'ركاب جدد'),
const SizedBox(width: 16),
_LegendDot(
color: const Color(0xFFF59E0B), label: 'سائقين جدد'),
color: cs.warning, label: 'سائقين جدد'),
],
),
const SizedBox(height: 16),
@@ -532,7 +536,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
final d = drivers[i];
final isTop3 = i < 3;
final rankColors = [
const Color(0xFFF59E0B),
cs.warning,
cs.onSurfaceVariant,
const Color(0xFFCD7F32),
];
@@ -624,7 +628,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
Text(
'${d['total_revenue']} ل.س',
style: TextStyle(
color: const Color(0xFF10B981),
color: cs.success,
fontSize: 11,
fontWeight: FontWeight.w600,
),
@@ -1,3 +1,4 @@
import 'package:siro_admin/constant/theme.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
@@ -62,7 +63,7 @@ class StaticDash extends StatelessWidget {
spots: c.chartDataDrivers,
compareSpots:
c.isComparing ? c.chartDataDriversCompare : null,
color: const Color(0xFFF59E0B),
color: cs.warning,
icon: Icons.drive_eta_rounded,
controller: c,
cs: cs,
@@ -146,7 +147,7 @@ class StaticDash extends StatelessWidget {
compareSpots: c.isComparing
? c.chartDataDriversMatchingNotesCompare
: null,
color: const Color(0xFF10B981),
color: cs.success,
icon: Icons.phone_in_talk_rounded,
controller: c,
cs: cs,
@@ -354,7 +355,7 @@ class _KpiRow extends StatelessWidget {
_KpiItem('الركاب', controller.totalMonthlyPassengers,
Icons.groups_rounded, cs.tertiary),
_KpiItem('السائقون', controller.totalMonthlyDrivers,
Icons.drive_eta_rounded, const Color(0xFFF59E0B)),
Icons.drive_eta_rounded, cs.warning),
_KpiItem(
'الرحلات', controller.totalMonthlyRides, Icons.map_rounded, cs.primary),
];
@@ -822,13 +823,13 @@ class _EmployeeLeaderboard extends StatelessWidget {
Container(
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
color: const Color(0xFFF59E0B).withValues(alpha: 0.12),
color: cs.warning.withValues(alpha: 0.12),
borderRadius: BorderRadius.circular(9),
border: Border.all(
color: const Color(0xFFF59E0B).withValues(alpha: 0.25)),
color: cs.warning.withValues(alpha: 0.25)),
),
child: const Icon(Icons.emoji_events_rounded,
color: Color(0xFFF59E0B), size: 16),
child: Icon(Icons.emoji_events_rounded,
color: cs.warning, size: 16),
),
const SizedBox(width: 10),
Column(
@@ -930,7 +931,7 @@ class _RankBadge extends StatelessWidget {
Widget build(BuildContext context) {
final isTop3 = rank <= 3;
final medalColors = [
const Color(0xFFF59E0B),
cs.warning,
cs.onSurfaceVariant,
const Color(0xFFCD7F32)
];