diff --git a/src/App.tsx b/src/App.tsx index f5960d9..53c41b1 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -236,6 +236,18 @@ export default function App() { return () => clearInterval(interval); }, [loadData]); + // Re-fetch region data when filters change + useEffect(() => { + const hasFilter = regionFilters.customer || regionFilters.city || regionFilters.region; + if (hasFilter) { + fetchRegionStats({ customer: regionFilters.customer || undefined, city: regionFilters.city || undefined, region: regionFilters.region || undefined }) + .then(setRegionData).catch(() => {}); + } else { + // No filters: use data from the main loadData cycle + fetchRegionStats().then(setRegionData).catch(() => {}); + } + }, [regionFilters]); + // Fetch region chart data when view changes useEffect(() => { fetchRegionChart(regionChartView, regionChartView === 'city' ? 5 : 8).then(setRegionChartData).catch(() => setRegionChartData([])); @@ -477,7 +489,7 @@ export default function App() { const uniqueModalLocations = useMemo(() => Array.from(new Set(modalVehicles.map(v => v.location).filter(Boolean))), [modalVehicles]); // Derived data for region section - const filteredRegionData = useMemo(() => regionData.filter((r) => !regionFilters.region || r.region === regionFilters.region), [regionData, regionFilters.region]); + // regionData is already filtered by backend based on regionFilters // Filtered modal vehicles based on modal filters const filteredModalVehicles = useMemo(() => modalVehicles.filter((v) => { @@ -2063,7 +2075,7 @@ export default function App() {
- {regionData.filter(r => !regionFilters.region || r.region === regionFilters.region).map((r) => { + {regionData.map((r) => { const isExpanded = expandedRegions.has(r.region); return (