import React, { useState } from 'react'; import { useQuery } from '@tanstack/react-query'; import { supabase } from '../supabaseClient'; // Utility functions (mirroring india.js logic for now) const formatINR = (n) => { if (n === null || n === undefined || isNaN(n)) return '—'; return '₹' + parseFloat(n).toLocaleString('en-IN'); }; const getStatusColor = (status) => { const colors = { 'settled': 'success', 'completed': 'success', 'commission received': 'success', 'reconciled': 'success', 'loaded / in transit': 'primary', 'assigned': 'primary', 'assigned vehicle': 'primary', 'pending collection': 'warning', 'partially pending': 'warning', 'fully pending from shipper': 'warning', 'commission due': 'warning', 'cancelled': 'danger', 'partial': 'secondary', 'available vehicle': 'secondary', }; return colors[status] || 'secondary'; }; function LoadsList() { const [filterStatus, setFilterStatus] = useState(''); const [searchTerm, setSearchTerm] = useState(''); const { data: loads = [], isLoading, isError, refetch } = useQuery({ queryKey: ['loads', filterStatus, searchTerm], queryFn: async () => { let query = supabase .from('loads') .select(` id, date, from_city, to_city, freight_charged, commission, status, shipper:shippers(name), vehicle:vehicles(number) `) .order('date', { ascending: false }) .limit(100); if (filterStatus) query = query.eq('status', filterStatus); if (searchTerm) { query = query.or(`from_city.ilike.%${searchTerm}%,to_city.ilike.%${searchTerm}%`); } const { data, error } = await query; if (error) throw error; return data; }, staleTime: 5 * 60 * 1000, // 5 minutes }); if (isLoading) return
Loading loads...
; if (isError) return
Error loading loads
; return (

Loads Management

{/* Filters */}
setSearchTerm(e.target.value)} />
{/* Loads Table */} {loads.map((load) => ( ))}
Date Route Shipper Freight Commission Status
{new Date(load.date).toLocaleDateString('en-IN')} {load.from_city} → {load.to_city} {load.shipper?.name || '—'} {formatINR(load.freight_charged)} {formatINR(load.commission)} {load.status}
); } export default LoadsList;