--- import Layout from "../layouts/Layout.astro"; import SourceBadge from "../components/SourceBadge.astro"; import DataLegend from "../components/DataLegend.astro"; import PageHero from "../components/PageHero.astro"; import StatePanel from "../components/StatePanel.astro"; import { ago, api, plural, sourceStatusLabel, type SourceStatus } from "../lib/api"; let sources: SourceStatus[] = [], unavailable = false; try { sources = await api("/api/v1/source-status"); } catch { unavailable = true; Astro.response.status = 503; Astro.response.headers.set("Retry-After", "60"); Astro.response.headers.set("Cache-Control", "no-store"); } --- {unavailable ? :
{sources.map(source =>
{sourceStatusLabel(source.status)}

{source.name}

{source.observations} {plural(source.observations,["наблюдение","наблюдения","наблюдений"])}

{source.status === "temporarily_limited" ? "Источник ограничен; опубликованные данные сохранены." : source.last_success_at ? `Последнее успешное обновление ${ago(source.last_success_at)}` : "Успешных запусков пока нет"}

)}
}