import type { Metadata } from "next"; import Link from "next/link"; import { Karte } from "@/components/karte"; import { Status } from "@/components/status"; import { ART_TEXT, STATUS_ANZEIGE } from "@/lib/auftrag-text"; import { bytes, zeitpunkt } from "@/lib/formate"; import { seiteSchuetzen } from "@/server/auth/zugang"; import { auftraegeSuchen } from "@/server/services/auftraege"; import { serverListe } from "@/server/services/server"; import { ServerStatus } from "./server/server-status"; export const metadata: Metadata = { title: "Übersicht" }; /** Server mit Status und freien Ressourcen (aus dem letzten Verbindungstest), letzte Aufträge. */ export default async function Uebersicht() { const benutzer = await seiteSchuetzen("lesen", "/"); const [server, { eintraege }] = await Promise.all([serverListe(), auftraegeSuchen({ seite: 1 })]); const letzte = eintraege.slice(0, 8); return (
Willkommen, {benutzer.anzeigename}
{online.length} von {knoten.length} {knoten.length === 1 ? "Node" : "Nodes"} online {online.length > 0 ? ` · ${cpus} CPUs · ${bytes(frei)} RAM frei` : ""} {eintrag.letzterTest?.cluster ? ` · Cluster ${eintrag.letzterTest.cluster.name}` : ""}
) : null}