let chart = null; async function loadData() { try { const response = await fetch("../metrics.csv?t=" + Date.now()); const text = await response.text(); let rows = text.trim().split("\n"); if (rows.length <= 1) return; // Remove CSV header rows.shift(); const data = rows .map(row => row.split(",")) .filter(row => row.length >= 7); const history = document.getElementById("history"); history.innerHTML = ""; const now = new Date(); // ========================== // Uptime (24h) // ========================== const last24 = data.filter(row => { const t = new Date(row[0].replace(" ", "T")); return (now - t) <= (24 * 60 * 60 * 1000); }); const up = last24.filter(row => row[2] === "200").length; const uptime = last24.length === 0 ? 0 : ((up / last24.length) * 100).toFixed(2); document.getElementById("uptime").textContent = uptime + "%"; // ========================== // SSL Status // ========================== const latest = data[data.length - 1]; document.getElementById("ssl").textContent = latest[5] + " Days Remaining"; // ========================== // Chart // ========================== let labels = []; let values = []; data.forEach(row => { const latency = parseFloat(row[1]); // Ignore abnormal values if (latency <= 500) { labels.push(row[0].split(" ")[1]); values.push(latency); } }); drawChart(labels, values); // ========================== // Last 10 Checks // ========================== data.slice(-10).reverse().forEach(row => { const status = row[2] === "200"; history.innerHTML += `