import {UptimeRecord} from "../nws-api/types"; import React, {useState} from "react"; import '../App.css'; import "./UptimeCard.css" import Modal from "react-modal"; function getUptimeClass(uptime: number) { if(uptime === 100) { return "stat-perfect"; } if(uptime >= 95) { return "stat-middle"; } return "stat-bad"; } function getResponseTimeClass(respTime: number) { // https://www.littledata.io/average/server-response-time if(respTime < 205) { return "stat-perfect"; } if(respTime < 495) { return "stat-middle"; } return "stat-bad"; } export default function UptimeComparisonCard(props: {uptime: UptimeRecord, isService: boolean}) { const [isModalOpen, setModalOpen] = useState(false); return(
Uptime (Last Month)
{props.uptime.uptimeMonth}%
Uptime ({new Date().getFullYear()} YTD)
{props.uptime.uptimeYtd}%
Avg Response Time (24hr)
{props.uptime.averageResponseTime}ms
Current Status
{props.uptime.isUp ? 'Up' : (props.uptime.undergoingMaintenance ? 'Maintenance' : 'Down')}
Monitoring since {props.uptime.monitorStart}
{new Date().getFullYear()} Uptime (YTD): {props.uptime.uptimeYtd}%
Last Month Uptime: {props.uptime.uptimeMonth}%
All-Time Uptime: {props.uptime.uptimeAllTime}%
Average Response Time: {props.uptime.averageResponseTime}ms