import { ArrowDown, ArrowUp, BarChart3, ServerCog, SlidersHorizontal, } from "lucide-react"; import type { Preferences, PreferencesPatch, WidgetChartType, } from "../../shared/contracts"; interface Props { preferences: Preferences; onChange: (patch: PreferencesPatch, message: string) => void; } const statMetrics = [ { label: "CPU cores", display: "CPU-kernen", description: "Logische CPU-capaciteit die de Docker-host meldt.", }, { label: "Memory capacity", display: "Geheugencapaciteit", description: "Totaal geheugen uit de alleen-lezen inventarisservice.", }, { label: "Stopped containers", display: "Gestopte containers", description: "Aanwezige containers die momenteel niet actief zijn.", }, { label: "Array state", display: "Arraystatus", description: "Overzicht van de Unraid-array- en pariteitsstatus.", }, { label: "Storage used", display: "Opslag gebruikt", description: "Gebruikte capaciteit van de gemelde array en pools.", }, { label: "Hottest temperature", display: "Hoogste temperatuur", description: "Hoogste beschikbare temperatuur van host- of opslagsensoren.", }, { label: "UPS battery", display: "UPS-batterij", description: "UPS-status en resterende batterij indien ingesteld in Unraid.", }, ]; const chartMetrics: Array<[string, string]> = [ ["Running containers", "Actieve containers"], ["Stopped containers", "Gestopte containers"], ["Images", "Images"], ["Memory capacity", "Geheugencapaciteit"], ["Storage used", "Opslag gebruikt"], ["Hottest temperature", "Hoogste temperatuur"], ["Parity errors", "Pariteitsfouten"], ["UPS battery", "UPS-batterij"], ]; export function ServerWidgetAdvancedConfigurator({ preferences, onChange, }: Props) { const labels = statMetrics.map((metric) => metric.label); const ordered = [ ...preferences.serverWidgetMetricOrder.filter((label) => labels.includes(label), ), ...labels.filter( (label) => !preferences.serverWidgetMetricOrder.includes(label), ), ].filter((label) => !preferences.serverWidgetHiddenMetrics.includes(label)); const move = (index: number, direction: -1 | 1) => { const target = index + direction; if (!ordered[target]) return; const next = [...ordered]; [next[index], next[target]] = [next[target]!, next[index]!]; onChange( { serverWidgetMetricOrder: next }, "Volgorde van Unraid-metingen bijgewerkt", ); }; return (
Volledige Unraid-paneelconfiguratie
Servertrendgrafiek Toon geschiedenis van Docker-inventaris, opslag, temperatuur, pariteit of UPS.
Serverstatistieken Kies welke eigen Unraid- en Docker-hostsignalen de kaart mag tonen.
{statMetrics.map((metric) => { const visible = !preferences.serverWidgetHiddenMetrics.includes( metric.label, ); return ( ); })}
{ordered.length > 1 && (
{ordered.map((metric, index) => ( {statMetrics.find((item) => item.label === metric)?.display ?? metric} ))}
)}
); }