Filter dashboard status hosts (#997)

This commit is contained in:
ZacharyZcR
2026-07-10 08:01:27 +08:00
committed by GitHub
parent f586b0c3b6
commit d8bfe5d2b4
+10 -3
View File
@@ -531,6 +531,10 @@ function HostStatusCard({
); );
} }
function isStatusCheckEnabled(host: Host): boolean {
return host.statsConfig?.statusCheckEnabled !== false;
}
function RecentActivityCard({ function RecentActivityCard({
activity, activity,
hosts, hosts,
@@ -1283,6 +1287,7 @@ export function DashboardTab({
Map<string, { cpu: number | null; ram: number | null; disk: number | null }> Map<string, { cpu: number | null; ram: number | null; disk: number | null }>
>(new Map()); >(new Map());
const viewerSessionsRef = useRef<Map<number, string>>(new Map()); const viewerSessionsRef = useRef<Map<number, string>>(new Map());
const statusCheckHosts = hosts.filter(isStatusCheckEnabled);
const fetchMetrics = useCallback(async (hostList: Host[]) => { const fetchMetrics = useCallback(async (hostList: Host[]) => {
let statuses: Record<number, { status?: string }> = {}; let statuses: Record<number, { status?: string }> = {};
@@ -1342,8 +1347,9 @@ export function DashboardTab({
const load = async () => { const load = async () => {
const raw = await getSSHHosts().catch(() => []); const raw = await getSSHHosts().catch(() => []);
const mapped = raw.map(sshHostToHost); const mapped = raw.map(sshHostToHost);
const statusHosts = mapped.filter(isStatusCheckEnabled);
if (mounted) setHosts(mapped); if (mounted) setHosts(mapped);
fetchMetrics(mapped).catch(() => {}); fetchMetrics(statusHosts).catch(() => {});
}; };
load(); load();
@@ -1396,8 +1402,9 @@ export function DashboardTab({
const metricsInterval = setInterval(async () => { const metricsInterval = setInterval(async () => {
const raw = await getSSHHosts().catch(() => []); const raw = await getSSHHosts().catch(() => []);
const mapped = raw.map(sshHostToHost); const mapped = raw.map(sshHostToHost);
const statusHosts = mapped.filter(isStatusCheckEnabled);
if (mounted) setHosts(mapped); if (mounted) setHosts(mapped);
fetchMetrics(mapped).catch(() => {}); fetchMetrics(statusHosts).catch(() => {});
}, 30000); }, 30000);
return () => { return () => {
@@ -1707,7 +1714,7 @@ export function DashboardTab({
)} )}
{slot.id === "host_status" && ( {slot.id === "host_status" && (
<HostStatusCard <HostStatusCard
hosts={hosts} hosts={statusCheckHosts}
hostMetrics={hostMetrics} hostMetrics={hostMetrics}
onOpenTab={onOpenTab} onOpenTab={onOpenTab}
isAdmin={isAdmin} isAdmin={isAdmin}