'use client'; import { Airport } from '@/js/airport'; import { Metar } from '@/js/weather'; import { faArrowsSpin, faLocationArrow, faLocationPin } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { DivIcon } from 'leaflet'; import Link from 'next/link'; import { useEffect, useState } from 'react'; import ReactDOMServer from 'react-dom/server'; import { MapContainer, Marker, Popup, TileLayer, Tooltip, useMapEvents } from 'react-leaflet'; export default function Map({ airportString }: { airportString: string }) { const [airports, setAirports] = useState(JSON.parse(airportString)); useEffect(() => { }, []); return ( ); } function MapTiles({ airports }: {airports: Airport[] }) { const [zoomLevel, setZoomLevel] = useState(8); // const [dragging, setDragging] = useState(false); // const [center, setCenter] = useState([50, 10.5]); const mapEvents = useMapEvents({ zoomend: () => { setZoomLevel(mapEvents.getZoom()); }, // mouseup: () => { // setCenter([mapEvents.getCenter().lat, mapEvents.getCenter().lng]); // } }); 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 metarTextColor(metar: Metar | undefined) { if (metar?.flight_category == 'VFR') { return 'text-emerald-700' } else if (metar?.flight_category == 'MVFR') { return 'text-blue-700' } else if (metar?.flight_category == 'IFR') { return 'text-orange-700' } else if (metar?.flight_category == 'LIFR') { return 'text-red-700' } else { return 'text-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'; } } function iconSize() { if (zoomLevel <= 4) { return 'text-xs' } else if (zoomLevel <= 5) { return 'text-sm'; } else if (zoomLevel <= 6) { return 'text-base'; } else if (zoomLevel <= 7) { return 'text-lg'; } else if (zoomLevel <= 9) { return 'text-2xl'; } else if (zoomLevel <= 11) { return 'text-3xl'; } else if (zoomLevel >= 12) { return 'text-4xl'; } } function icon(airport: Airport) { return new DivIcon({ html: ReactDOMServer.renderToString(), className: 'metar-marker-icon' }); } return <> {airports.map((airport) => ( <> {airport.icao}

{airport.icao} {airport.name}


{airport.metar?.raw_text}

{airport.metar?.flight_category? airport.metar?.flight_category : 'UNKN'}
{airport.metar && airport.metar.wind_dir_degrees && Number(airport.metar.wind_dir_degrees) > 0? : <> } {airport.metar && airport.metar.wind_dir_degrees && airport.metar.wind_dir_degrees == 'VRB'? : <> } {airport.metar?.wind_speed_kt != undefined && airport.metar?.wind_speed_kt > 0? `${airport.metar?.wind_speed_kt} KT` : 'CALM'}
))} ; }