diff --git a/src/App.tsx b/src/App.tsx index 370bd9a..395ecd6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -407,6 +407,7 @@ export default function App() { // Derived data for dept section const allManagersList = useMemo(() => deptData.flatMap((d) => d.managers.map((m) => m.manager)).filter((v, i, a) => a.indexOf(v) === i).sort(), [deptData]); + const managersGroupedByDept = useMemo(() => deptData.map((d) => ({ department: d.department, managers: d.managers.map((m) => m.manager) })), [deptData]); const managerStats = useMemo(() => deptData .flatMap((d) => d.managers) .filter((m) => selectedManager === 'All' || m.manager === selectedManager) @@ -427,6 +428,15 @@ export default function App() { const uniqueCities = useMemo(() => Array.from(new Set(customerData.map((s) => s.city).filter(Boolean))), [customerData]); const uniqueCustomerNames = useMemo(() => Array.from(new Set(customerData.map((s) => s.customer).filter(Boolean))), [customerData]); const uniqueCustomerManagers = useMemo(() => Array.from(new Set(customerData.map((s) => s.manager).filter(Boolean))), [customerData]); + const customerManagersGroupedByDept = useMemo(() => { + const deptMap = new Map>(); + for (const s of customerData) { + if (!s.manager || !s.department) continue; + if (!deptMap.has(s.department)) deptMap.set(s.department, new Set()); + deptMap.get(s.department)!.add(s.manager); + } + return Array.from(deptMap.entries()).map(([dept, mgrs]) => ({ department: dept, managers: Array.from(mgrs) })); + }, [customerData]); const uniqueInventoryModels = useMemo(() => Array.from(new Set(inventoryData.map((s) => s.model).filter(Boolean))), [inventoryData]); const uniqueModalPlates = useMemo(() => Array.from(new Set(modalVehicles.map(v => v.plateNumber || v.vin).filter(Boolean))), [modalVehicles]); const uniqueModalModels = useMemo(() => Array.from(new Set(modalVehicles.map(v => v.model).filter(Boolean))), [modalVehicles]); @@ -1422,8 +1432,10 @@ export default function App() { className="w-full pl-9 pr-8 py-1.5 bg-white border border-gray-200 rounded-lg text-xs focus:outline-none focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 transition-all shadow-sm appearance-none cursor-pointer font-bold text-gray-700" > - {allManagersList.map(m => ( - + {managersGroupedByDept.map(g => ( + + {g.managers.map(m => )} + ))} @@ -2270,7 +2282,11 @@ export default function App() {