From 9370b71b25b07b6a8bceabe306e219100658911c Mon Sep 17 00:00:00 2001 From: sazzadulalambd Date: Sun, 17 May 2026 20:32:54 +0600 Subject: [PATCH] feat: integrate battery selection and sync battery level from mock data in fleet management form --- src/app/admin/fleet/page.tsx | 60 ++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/src/app/admin/fleet/page.tsx b/src/app/admin/fleet/page.tsx index c25b772..6664574 100644 --- a/src/app/admin/fleet/page.tsx +++ b/src/app/admin/fleet/page.tsx @@ -17,6 +17,7 @@ interface Bike { plateNumber: string; status: 'available' | 'rented' | 'maintenance' | 'retired'; batteryLevel: number; + batteryId?: string; location?: string; // deprecated - use hubId/hubName hubId?: string; hubName?: string; @@ -56,6 +57,15 @@ const hubs = [ { id: 'HUB-004', name: 'Mirpur Hub' }, ]; +const mockBatteries = [ + { id: 'BAT-001', brand: 'Lithium', model: '60V/30Ah', serialNumber: 'LTH-2024-001', chargeLevel: 95 }, + { id: 'BAT-002', brand: 'Lithium', model: '60V/30Ah', serialNumber: 'LTH-2024-002', chargeLevel: 75 }, + { id: 'BAT-003', brand: 'Lithium', model: '60V/40Ah', serialNumber: 'LTH-2024-003', chargeLevel: 45 }, + { id: 'BAT-004', brand: 'Lithium', model: '60V/30Ah', serialNumber: 'LTH-2024-004', chargeLevel: 88 }, + { id: 'BAT-005', brand: 'Lithium', model: '48V/25Ah', serialNumber: 'LTH-2024-005', chargeLevel: 62 }, + { id: 'BAT-006', brand: 'Lithium', model: '60V/30Ah', serialNumber: 'LTH-2024-006', chargeLevel: 100 }, +]; + const statusColors: Record = { available: 'bg-green-100 text-green-700', rented: 'bg-blue-100 text-blue-700', @@ -159,9 +169,9 @@ export default function FleetPage() {

{selectedMapBike.model}

{selectedMapBike.brand} • {selectedMapBike.id}

{selectedMapBike.status} @@ -182,7 +192,7 @@ export default function FleetPage() {
Battery 50 ? 'text-green-600' : - selectedMapBike.batteryLevel > 20 ? 'text-amber-600' : 'text-red-600' + selectedMapBike.batteryLevel > 20 ? 'text-amber-600' : 'text-red-600' }`}>{selectedMapBike.batteryLevel}%
@@ -488,6 +498,7 @@ function BikeForm({ bike, onSave, onCancel }: { bike: Bike | null; onSave: (bike plateNumber: '', status: 'available', batteryLevel: 100, + batteryId: '', location: '', // deprecated hubId: '', hubName: '', @@ -563,14 +574,27 @@ function BikeForm({ bike, onSave, onCancel }: { bike: Bike | null; onSave: (bike
- - handleChange('batteryLevel', parseInt(e.target.value))} + +
+
handleChange('batteryLevel', parseInt(e.target.value))} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-accent" + /> +