"use client" import { Alert, AlertDescription, AlertTitle } from "@/components/reui/alert" import { Button } from "@/components/ui/button" import { DASHBOARD_SOURCES, type DashboardSource, type DashboardSources } from "@/lib/dashboard-source-state" export function DashboardDataStatus({ sources, refreshing, onRefresh }: { sources: DashboardSources refreshing: boolean onRefresh: () => void }) { const failed = Object.values(sources).filter(source => source.error) const summary = failed.length ? `Не обновлены источники: ${failed.length}` : "Состояние источников" return
{failed.length > 0 && {summary} Последние полученные данные сохранены. Если источник ещё не загрузился, его показатели неизвестны. }
0 || undefined}> Источники и время получения
    {(Object.keys(DASHBOARD_SOURCES) as DashboardSource[]).map(key => { const source = sources[key] return
  • {DASHBOARD_SOURCES[key]}: {source?.error ? `ошибка обновления — ${source.error}. ` : ""} {source?.receivedAt != null ? <>Получено {source.error ? " · данные могут быть устаревшими" : ""} : "Успешных загрузок ещё нет"} {source?.sampledAt && Number.isFinite(Date.parse(source.sampledAt)) && <> · замер }
  • })}
{refreshing ? "Обновление данных…" : "Обновление завершено"}
}