This commit is contained in:
natib21
2026-07-03 23:30:05 +00:00
parent 18926c32cb
commit f153f2936b

View File

@@ -27,6 +27,7 @@ import {
} from "lucide-react"; } from "lucide-react";
import { driversService } from "@/services/drivers.service"; import { driversService } from "@/services/drivers.service";
import { vehiclesService } from "@/services/vehicles.service";
import { fleetHistoryService, type FleetHistoryEvent } from "@/services/fleet-history.service"; import { fleetHistoryService, type FleetHistoryEvent } from "@/services/fleet-history.service";
const fmtDate = (iso?: string | null) => { const fmtDate = (iso?: string | null) => {
@@ -160,11 +161,31 @@ const useDriverHistory = (driverId: string) =>
queryFn: () => fleetHistoryService.driver(driverId), queryFn: () => fleetHistoryService.driver(driverId),
}); });
/** id → "code · plate" map so events without a stored plate still show a name. */
const useVehicleMap = () => {
const { data } = useQuery({
queryKey: ["vehicles-all"],
queryFn: () => vehiclesService.getAll({}).then((r) => r.data),
});
return useMemo(() => {
const m = new Map<string, string>();
for (const v of data ?? []) {
m.set(v.id, [v.code, v.plateNumber].filter(Boolean).join(" · ") || v.id);
}
return m;
}, [data]);
};
const VehiclesTab = ({ driverId }: { driverId: string }) => { const VehiclesTab = ({ driverId }: { driverId: string }) => {
const { data = [], isLoading } = useDriverHistory(driverId); const { data = [], isLoading } = useDriverHistory(driverId);
const vmap = useVehicleMap();
const rows = data const rows = data
.filter((e) => e.eventType === "DRIVER_ASSIGNED") .filter((e) => e.eventType === "DRIVER_ASSIGNED")
.map((e) => ({ id: e.id, plate: meta(e, "vehiclePlate") || e.vehicleId || "Vehicle", at: e.createdAt })); .map((e) => ({
id: e.id,
plate: meta(e, "vehiclePlate") || (e.vehicleId ? vmap.get(e.vehicleId) : null) || "Vehicle",
at: e.createdAt,
}));
if (isLoading) return <Loading />; if (isLoading) return <Loading />;
return ( return (
<Stack gap={4}> <Stack gap={4}>
@@ -214,6 +235,7 @@ const HistoryTab = ({ driverId }: { driverId: string }) => {
const TripsTab = ({ driverId }: { driverId: string }) => { const TripsTab = ({ driverId }: { driverId: string }) => {
const { data = [], isLoading } = useDriverHistory(driverId); const { data = [], isLoading } = useDriverHistory(driverId);
const vmap = useVehicleMap();
const trips = useMemo( const trips = useMemo(
() => () =>
data data
@@ -222,11 +244,11 @@ const TripsTab = ({ driverId }: { driverId: string }) => {
id: e.id, id: e.id,
mile: meta(e, "mile") === "LAST" ? "Last-mile" : "First-mile", mile: meta(e, "mile") === "LAST" ? "Last-mile" : "First-mile",
booking: meta(e, "bookingRef") ?? "—", booking: meta(e, "bookingRef") ?? "—",
vehicle: meta(e, "vehiclePlate") ?? "—", vehicle: meta(e, "vehiclePlate") || (e.vehicleId ? vmap.get(e.vehicleId) : null) || "—",
status: e.label ?? "—", status: e.label ?? "—",
at: e.createdAt, at: e.createdAt,
})), })),
[data], [data, vmap],
); );
if (isLoading) return <Loading />; if (isLoading) return <Loading />;
return ( return (