'use client' import { useState } from "react"; import SriLankaMap from "./SriLankaMap"; import DistrictInfoPanel from "./DistrictInfoPanel"; import { Card } from "../ui/card"; import { MapPin, Activity } from "lucide-react"; import { useRogerData } from "../../hooks/use-roger-data"; import { Badge } from "../ui/badge"; const MapView = () => { const [selectedDistrict, setSelectedDistrict] = useState(null); const { events, isConnected } = useRogerData(); // Province to districts mapping const provinceToDistricts: Record = { "western province": ["Colombo", "Gampaha", "Kalutara"], "western": ["Colombo", "Gampaha", "Kalutara"], "central province": ["Kandy", "Matale", "Nuwara Eliya"], "central": ["Kandy", "Matale", "Nuwara Eliya"], "southern province": ["Galle", "Matara", "Hambantota"], "southern provinces": ["Galle", "Matara", "Hambantota"], "southern": ["Galle", "Matara", "Hambantota"], "south": ["Galle", "Matara", "Hambantota"], "northern province": ["Jaffna", "Kilinochchi", "Mannar", "Vavuniya", "Mullaitivu"], "northern": ["Jaffna", "Kilinochchi", "Mannar", "Vavuniya", "Mullaitivu"], "north": ["Jaffna", "Kilinochchi", "Mannar", "Vavuniya", "Mullaitivu"], "eastern province": ["Batticaloa", "Ampara", "Trincomalee"], "eastern": ["Batticaloa", "Ampara", "Trincomalee"], "east": ["Batticaloa", "Ampara", "Trincomalee"], "north western province": ["Kurunegala", "Puttalam"], "north western": ["Kurunegala", "Puttalam"], "north central province": ["Anuradhapura", "Polonnaruwa"], "north central": ["Anuradhapura", "Polonnaruwa"], "uva province": ["Badulla", "Moneragala"], "uva": ["Badulla", "Moneragala"], "sabaragamuwa province": ["Ratnapura", "Kegalle"], "sabaragamuwa": ["Ratnapura", "Kegalle"], }; const allDistricts = [ 'Colombo', 'Gampaha', 'Kandy', 'Jaffna', 'Galle', 'Matara', 'Hambantota', 'Anuradhapura', 'Polonnaruwa', 'Batticaloa', 'Ampara', 'Trincomalee', 'Kurunegala', 'Puttalam', 'Kalutara', 'Ratnapura', 'Kegalle', 'Nuwara Eliya', 'Badulla', 'Moneragala', 'Kilinochchi', 'Mannar', 'Vavuniya', 'Mullaitivu', 'Matale' ]; // Count alerts per district with province awareness const districtAlertCounts: Record = {}; (events ?? []).forEach(event => { const summary = (event.summary ?? '').toLowerCase(); const matchedDistricts = new Set(); // Check for direct district mentions allDistricts.forEach(district => { if (summary.includes(district.toLowerCase())) { matchedDistricts.add(district); } }); // Check for province mentions and add their districts for (const [province, districts] of Object.entries(provinceToDistricts)) { if (summary.includes(province)) { districts.forEach(d => matchedDistricts.add(d)); } } // Count for each matched district matchedDistricts.forEach(district => { districtAlertCounts[district] = (districtAlertCounts[district] || 0) + 1; }); }); // Count critical events const criticalEvents = events.filter(e => e.severity === 'critical' || e.severity === 'high'); return (

TERRITORY MAP

{isConnected ? ( Live ) : ( Reconnecting... )} {criticalEvents.length} Critical Click any district for detailed intelligence
); }; export default MapView;