{storm.areaName}
- - {days === 0 ? 'Today' : `${days}d ago`} - +{dateLabel}
@@ -889,6 +913,7 @@ const StormIntelPage = () => { const [severityFilter, setSeverityFilter] = useState('all'); const [sortBy, setSortBy] = useState('date'); const [selectedStorm, setSelectedStorm] = useState(null); + const [pinnedIds, setPinnedIds] = useState(new Set()); const [drawerOpen, setDrawerOpen] = useState(false); const [flyCount, setFlyCount] = useState(0); const [showFilters, setShowFilters] = useState(false); @@ -903,6 +928,20 @@ const StormIntelPage = () => { const { events: allEvents } = useStormEvents({ dateRange: '36m' }); const { forecast, loading: forecastLoading, alertDay, hasStormAlert } = useStormForecast(); + const handleTogglePin = useCallback((id) => { + setPinnedIds(prev => { + const next = new Set(prev); + if (next.has(id)) next.delete(id); else next.add(id); + return next; + }); + }, []); + + // Map shows only selected + pinned events; if nothing active, show all + const mapEvents = useMemo(() => { + if (!selectedStorm && pinnedIds.size === 0) return events; + return events.filter(e => pinnedIds.has(e.id) || e.id === selectedStorm?.id); + }, [events, selectedStorm, pinnedIds]); + const handleSelect = useCallback((storm) => { setSelectedStorm(storm); setDrawerOpen(true); @@ -1168,8 +1207,9 @@ const StormIntelPage = () => { ) : ({events.length} Event{events.length !== 1 ? 's' : ''} + {pinnedIds.size > 0 && ( + · {pinnedIds.size} pinned + )}
- {selectedStorm && ( - - )} +