/* global React */ // ──────────────────────────────────────────────────────────── // HOME — «Научный приборный» // Топ: статус-приборная панель + большой «последний толчок» + лента // ──────────────────────────────────────────────────────────── window.HomeScreenA = ({ T, dark, onOpenEvent, onOpenSettings }) => { const data = window.DATA.useDataState(); const events = data.events; const filterMag = data.userMagFilter; if (!events.length) { return (
События ещё не загружены или пусты.
); } const last = events[0]; const ru24 = events.filter(e => e.isRu && e.minutesAgo < 24*60).length; const world24 = events.filter(e => e.minutesAgo < 24*60).length; const recent24 = events.filter(e => e.minutesAgo < 24*60); const maxMag = recent24.length > 0 ? Math.max(...recent24.map(e => e.mag)) : 0; return (
{/* Status bar */}
СИСТЕМА АКТИВНА · USGS · EMSC обн. {window.formatAgo(last.minutesAgo)}
{/* Filter pill — shows the user's active magnitude threshold and lets them jump straight to Settings to change it. Explains why some smaller events aren't shown in the feed. */} {typeof filterMag === "number" && (
ФИЛЬТР: M ≥ {filterMag.toFixed(1)} настройки →
)} {/* Hero — последнее событие */}
ПОСЛЕДНЕЕ СОБЫТИЕ · {window.formatAgo(last.minutesAgo).toUpperCase()}
onOpenEvent(last)} style={{ background: T.surface, border: `1px solid ${T.border}`, borderRadius: 10, padding: 16, cursor: "pointer", position: "relative", overflow: "hidden", }}>
{window.magLabel(last.mag).toUpperCase()}
{last.place}
{last.lat.toFixed(2)}°N, {last.lon.toFixed(2)}°E · h={last.depth.toFixed(1)} км
{last.timeMsk} МСК {last.timeUtc.slice(11,16)} UTC {last.timeLocal} (местное)
{last.confirmed && (
✓ ПОДТВ. 2 ИСТ.
)}
{/* Счётчики 24ч */}
{/* Лента событий */}
ХРОНОЛОГИЯ · {events.length} СОБЫТИЙ
{events.slice(1).map((e, i, arr) => ( onOpenEvent(e)} last={i === arr.length - 1}/> ))}
); }; const Stat = ({ T, label, value, hint, highlight }) => (
{label}
{value}
{hint}
); const EventRow = ({ ev, T, onClick, last }) => (
{ev.place}
{ev.flag} {ev.timeMsk} МСК · h={ev.depth.toFixed(1)} км {ev.confirmed && }
); window.EventRow = EventRow; window.Stat = Stat;