/* 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 }) => (
);
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;