diff --git a/backend/auth/driver/driver_details.php b/backend/auth/driver/driver_details.php index dd172238..356c345a 100644 --- a/backend/auth/driver/driver_details.php +++ b/backend/auth/driver/driver_details.php @@ -1,5 +1,5 @@ ); } + /// ุชุญูˆูŠู„ ุขู…ู† ู„ุฃูŠ ู‚ูŠู…ุฉ ุฑู‚ู…ูŠุฉ ู‚ุงุฏู…ุฉ ู…ู† ุงู„ู€ API. + /// + /// ุญู‚ูˆู„ MySQL ู…ู† ู†ูˆุน DECIMAL/SUM ุชุตู„ ู†ุตุงู‹ ููŠ JSON (ู…ุซู„ "0.00")ุŒ ุจูŠู†ู…ุง + /// ุญู‚ูˆู„ COUNT ุชุตู„ ุฃุนุฏุงุฏุงู‹ ุตุญูŠุญุฉ. ุงู„ูƒุชุงุจุฉ ุงู„ุณุงุจู‚ุฉ + /// `(data['x'] ?? 0).toDouble()` ูƒุงู†ุช ุชู†ู‡ุงุฑ ุจู€ + /// "Class 'String' has no instance method 'toDouble'" ููˆุฑ ูˆุตูˆู„ ุฃูˆู„ ุญู‚ู„ + /// ู†ุตู‘ูŠ โ€” ูˆู‡ูˆ ู…ุง ุญุฏุซ ุนู†ุฏู…ุง ู†ุฌุญ ุชุณุฌูŠู„ ุฏุฎูˆู„ ุงู„ู…ุญูุธุฉ ูˆุฃุฑุฌุน payments: "0.00". + double _num(dynamic v) { + if (v == null) return 0; + if (v is num) return v.toDouble(); + return double.tryParse(v.toString()) ?? 0; + } + Widget _buildChartsSection( dynamic data, DashboardController controller, ColorScheme cs) { - final completed = (data['completed_rides'] ?? 0).toDouble(); - final cancelled = (data['cancelled_rides'] ?? 0).toDouble(); + final completed = _num(data['completed_rides']); + final cancelled = _num(data['cancelled_rides']); final total = completed + cancelled; final completedPercent = total > 0 ? (completed / total * 100).toStringAsFixed(1) : '0.0'; - final comfort = (data['comfort'] ?? 0).toDouble(); - final speed = (data['speed'] ?? 0).toDouble(); - final lady = (data['lady'] ?? 0).toDouble(); + final comfort = _num(data['comfort']); + final speed = _num(data['speed']); + final lady = _num(data['lady']); final maxBar = [comfort, speed, lady].reduce((a, b) => a > b ? a : b); final barMaxY = maxBar > 0 ? (maxBar * 1.3).ceilToDouble() : 10.0; - final payments = (data['payments'] ?? 0).toDouble(); - final passengerCount = (data['countPassengers'] ?? 0).toDouble(); - final driverCount = (data['countDriver'] ?? 0).toDouble(); - final monthRides = (data['countRideThisMonth'] ?? 0).toDouble(); + final payments = _num(data['payments']); + final passengerCount = _num(data['countPassengers']); + final driverCount = _num(data['countDriver']); + final monthRides = _num(data['countRideThisMonth']); // ุชูˆุฒูŠุน ุงู„ุฑุญู„ุงุช ุนู„ู‰ ุฃูˆู‚ุงุช ุงู„ูŠูˆู… โ€” ุชุนูŠุฏู‡ dashbord.php ู…ู†ุฐ ุงู„ุจุฏุงูŠุฉ // (morning/evening/night_ride_count) ูˆู„ู… ูŠูƒู† ู…ุนุฑูˆุถุงู‹ ููŠ ุฃูŠ ุดุงุดุฉ. - final morningRides = (data['morning_ride_count'] ?? 0).toDouble(); - final eveningRides = (data['evening_ride_count'] ?? 0).toDouble(); - final nightRides = (data['night_ride_count'] ?? 0).toDouble(); + final morningRides = _num(data['morning_ride_count']); + final eveningRides = _num(data['evening_ride_count']); + final nightRides = _num(data['night_ride_count']); return Padding( padding: const EdgeInsets.symmetric(horizontal: 16), @@ -1660,7 +1673,6 @@ class _GlowOrb extends StatelessWidget { @override Widget build(BuildContext context) { - final cs = Theme.of(context).colorScheme; return Container( width: size, height: size, diff --git a/siro_admin/lib/views/admin/rides/ride_lookup_page.dart b/siro_admin/lib/views/admin/rides/ride_lookup_page.dart index 56fb674e..c6d23e38 100644 --- a/siro_admin/lib/views/admin/rides/ride_lookup_page.dart +++ b/siro_admin/lib/views/admin/rides/ride_lookup_page.dart @@ -246,7 +246,10 @@ class _RidesDashboardScreenState extends State SliverAppBar( pinned: true, floating: false, - expandedHeight: 268.0, + // 268 ูƒุงู† ุฃู‚ุตุฑ ุจู€ 7 ุจูƒุณู„ ู…ู† ู…ุญุชูˆู‰ ุงู„ุฑุฃุณ ููŠููŠุถ ุนู…ูˆุฏูŠุงู‹ + // (ุฑูุตุฏ ุนู„ู‰ macOS ุจุนุฑุถ 1512). ุงู„ู…ุญุชูˆู‰: ุงู„ุนู†ูˆุงู† 35 + ุงู„ุจุทุงู‚ุงุช + // 114 + ูุงุตู„ 14 + ุดุฑูŠุท ุงู„ุจุญุซ 50 + ู…ุณุงุญุฉ ุงู„ู€ TabBar 62 = 275. + expandedHeight: 275.0, backgroundColor: cs.surface, surfaceTintColor: Colors.transparent, elevation: 0, diff --git a/siro_admin/pubspec.lock b/siro_admin/pubspec.lock index dc0c512f..fa70eb66 100644 --- a/siro_admin/pubspec.lock +++ b/siro_admin/pubspec.lock @@ -892,10 +892,10 @@ packages: dependency: transitive description: name: matcher - sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 + sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6" url: "https://pub.dev" source: hosted - version: "0.12.19" + version: "0.12.18" material_color_utilities: dependency: transitive description: @@ -908,10 +908,10 @@ packages: dependency: transitive description: name: meta - sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.17.0" mgrs_dart: dependency: transitive description: @@ -1232,10 +1232,10 @@ packages: dependency: transitive description: name: test_api - sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" + sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636" url: "https://pub.dev" source: hosted - version: "0.7.11" + version: "0.7.9" typed_data: dependency: transitive description: @@ -1413,5 +1413,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.10.0-0 <4.0.0" + dart: ">=3.9.0-0 <4.0.0" flutter: ">=3.32.0"