import { Airport } from "@/js/airport"; import { getAirports, setAirport } from "@/js/state"; import { Metar, getMetars } from "@/js/weather" import Link from "next/link" import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faArrowsSpin, faLocationArrow } from '@fortawesome/free-solid-svg-icons' import dynamic from "next/dynamic"; export default async function Metar() { const Map = dynamic(() => import("@/components/MetarMap"), { loading: () =>

Loading...

, ssr: false }); async function update() { const airports: Airport[] = getAirports(); const metars = await getMetars(airports); for (let i = 0; i < metars.length; i++) { airports[i].metar = metars[i]; airports[i].latitude = metars[i].latitude; airports[i].longitude = metars[i].longitude; setAirport(airports[i].icao, airports[i]); } return getAirports(); } await update(); return <> } export function MetarGrid() { const airports: Airport[] = getAirports(); return <>
{airports.map((airport) => ( ))}
} function MetarCard({ airport}: { airport: Airport}) { function metarBGColor(metar: Metar | undefined) { if (metar?.flight_category == 'VFR') { return 'bg-emerald-600' } else if (metar?.flight_category == 'MVFR') { return 'bg-blue-600' } else if (metar?.flight_category == 'IFR') { return 'bg-orange-600' } else if (metar?.flight_category == 'LIFR') { return 'bg-red-600' } else { return 'bg-black' } } function windColor(metar: Metar | undefined) { if (Number(metar?.wind_speed_kt) <= 9) { return 'bg-green-300'; } else if (Number(metar?.wind_speed_kt) > 9) { return 'bg-orange-300'; } else if (Number(metar?.wind_speed_kt) > 12) { return 'bg-red-300'; } } return (
); }