Openstatus www.openstatus.dev
1import type { ChartConfig } from "@/components/ui/chart"; 2 3export const chartData = Array.from({ length: 45 }, (_, i) => { 4 const date = new Date(); 5 date.setDate(date.getDate() - i); 6 7 // Simulate realistic daily status distribution that sums to 1440 minutes 8 let error = 0; 9 let degraded = 0; 10 let success = 1440; // Start with all minutes as ok 11 let info = 0; 12 13 // Simulate some incidents on certain days 14 if (i === 3) { 15 // Day 3: Major incident for 2 hours (120 minutes) 16 error = 120; 17 success -= error; 18 } else if (i === 16) { 19 // Day 16: Degraded performance for 4 hours (240 minutes) 20 degraded = 240; 21 success -= degraded; 22 } else if (i === 8) { 23 // Day 8: Brief outage (30 minutes) + some degraded performance (60 minutes) 24 error = 30; 25 degraded = 60; 26 success -= error + degraded; 27 } else if (i === 13) { 28 info = 120; 29 success -= info; 30 } else if (i === 22) { 31 // Day 22: Extended degraded performance (6 hours = 360 minutes) 32 degraded = 360; 33 success -= degraded; 34 } else if (Math.random() > 0.85) { 35 // Random minor issues on some days (5-15 minutes of degraded performance) 36 degraded = Math.floor(Math.random() * 10) + 5; 37 success -= degraded; 38 } 39 40 return { 41 timestamp: date.getTime(), 42 info, 43 degraded, 44 error, 45 success, 46 }; 47}).reverse(); 48 49export const chartConfig = { 50 success: { 51 label: "success", 52 color: "var(--success)", 53 }, 54 degraded: { 55 label: "degraded", 56 color: "var(--warning)", 57 }, 58 error: { 59 label: "error", 60 color: "var(--destructive)", 61 }, 62 info: { 63 label: "info", 64 color: "var(--info)", 65 }, 66} satisfies ChartConfig;