feat: publish data source legend

This commit is contained in:
ik
2026-09-07 17:03:54 +07:00
parent f2a97d2b80
commit ebdeaf3659
6 changed files with 29 additions and 2 deletions
+2
View File
@@ -1,6 +1,7 @@
---
import Layout from "../layouts/Layout.astro";
import SourceBadge from "../components/SourceBadge.astro";
import DataLegend from "../components/DataLegend.astro";
import { ago, api, plural, type SourceStatus } from "../lib/api";
let sources: SourceStatus[] = [], unavailable = false;
try { sources = await api<SourceStatus[]>("/api/v1/source-status"); } catch { unavailable = true; }
@@ -9,4 +10,5 @@ const labels = { healthy:"Актуален", stale:"Данные устарел
<Layout title="Состояние источников — RF4 Spotter" description="Текущее безопасное состояние источников данных RF4 Spotter.">
<section class="catalog-hero content-grid"><span class="overline">Прозрачность данных</span><h1>Статус источников</h1><p>Пауза или изменение страницы не удаляют уже опубликованные данные.</p></section>
{unavailable ? <div class="state content-grid"><h2>Статус временно недоступен</h2></div> : <section class="source-health-grid content-grid">{sources.map(source => <article data-status={source.status}><div><SourceBadge source={source.source_system}/><span class="health-state"><i></i>{labels[source.status]}</span></div><h2>{source.name}</h2><strong>{source.observations} {plural(source.observations,["наблюдение","наблюдения","наблюдений"])}</strong><p>{source.last_success_at ? `Последнее успешное обновление ${ago(source.last_success_at)}` : "Успешных запусков пока нет"}</p></article>)}</section>}
<DataLegend />
</Layout>