--- import type { ApiMonitorStatus } from '@worker/types'; import UptimeBars from './UptimeBars.astro'; interface Props { monitor: ApiMonitorStatus; } const { monitor } = Astro.props; const uptimeFormatted = monitor.uptimePercent.toFixed(2); function formatLastChecked(timestamp: number | undefined): string { if (timestamp == null) return 'Never'; const now = Math.floor(Date.now() / 1000); const diffSeconds = now - timestamp; if (diffSeconds < 60) return ''; if (diffSeconds < 3600) { const minutes = Math.floor(diffSeconds / 60); return `${minutes}m ago`; } if (diffSeconds < 86400) { const hours = Math.floor(diffSeconds / 3600); return `${hours}h ago`; } const days = Math.floor(diffSeconds / 86400); return `${days}d ago`; } const lastCheckedText = formatLastChecked(monitor.lastChecked); const chartData = JSON.stringify({ timestamps: monitor.recentChecks.map(c => c.timestamp), responseTimes: monitor.recentChecks.map(c => c.responseTimeMs), statuses: monitor.recentChecks.map(c => c.status), }); ---

{monitor.name}

{uptimeFormatted}% {lastCheckedText}