Cleanup, refactored, various changes

This commit is contained in:
2023-12-01 16:47:44 -05:00
parent c3b9f0d649
commit 1feb713a47
13 changed files with 60 additions and 69 deletions

View File

@@ -46,7 +46,6 @@ export interface Airport {
category: AirportCategory;
full_name: string;
elevation_ft: number;
continent: string;
iso_country: string;
iso_region: string;
municipality: string;
@@ -58,7 +57,7 @@ export interface Airport {
y: number;
srid: number;
};
metar?: Metar;
latest_metar?: Metar;
}
export interface GetAirportResponse {

View File

@@ -5,30 +5,39 @@ export interface SkyCondition {
export interface QualityControlFlags {
auto: boolean;
auto_station: boolean;
auto_station_without_precipitation: boolean;
auto_station_with_precipication: boolean;
maintenance_indicator_on: boolean;
corrected: boolean;
}
export interface RunwayVisualRange {
runway: string;
visibility_ft: string;
variable_visibility_high_ft: string;
variable_visibility_low_ft: string;
}
export interface Metar {
raw_text: string;
station_id: string;
observation_time: string;
latitude: number;
longitude: number;
temp_c: number;
dewpoint_c: number;
wind_dir_degrees: string;
wind_speed_kt: number;
wind_gust_kt: number;
variable_wind_dir_degrees: string;
visibility_statute_mi: string;
runway_visual_range: RunwayVisualRange[];
altim_in_hg: number;
sea_level_pressure_mb: number;
quality_control_flags: QualityControlFlags;
wx_string: string;
weather_phenomena: string[];
sky_condition: SkyCondition[];
flight_category: 'VFR' | 'MVFR' | 'LIFR' | 'IFR' | 'UNKN';
three_hr_pressure_tendency_mb: number;
metar_type: string;
maxT_c: number;
minT_c: number;
precip_in: number;
elevation_m: number;
}

View File

@@ -39,7 +39,6 @@ export default function AirportTablePanel({ setAirport }: { setAirport: (airport
<Table.Td>{airport.icao}</Table.Td>
<Table.Td>{airport.full_name}</Table.Td>
<Table.Td>{airportCategoryToText(airport.category)}</Table.Td>
<Table.Td>{airport.continent}</Table.Td>
<Table.Td>{airport.iso_country}</Table.Td>
<Table.Td>{airport.iso_region}</Table.Td>
<Table.Td>{airport.municipality}</Table.Td>
@@ -64,7 +63,6 @@ export default function AirportTablePanel({ setAirport }: { setAirport: (airport
<Table.Th>ICAO</Table.Th>
<Table.Th>Full Name</Table.Th>
<Table.Th>Category</Table.Th>
<Table.Th>Continent</Table.Th>
<Table.Th>ISO Country</Table.Th>
<Table.Th>ISO Region</Table.Th>
<Table.Th>Municipality</Table.Th>

View File

@@ -2,7 +2,6 @@ import { createAirport } from "@/api/airport";
import { Airport, AirportCategory } from "@/api/airport.types";
import { Card, TextInput, Select, Group, Flex, Space, Button } from "@mantine/core";
import { useForm } from "@mantine/form";
import { useEffect } from "react";
export default function CreateAirportPanel() {
const form = useForm<Airport>({
@@ -11,7 +10,6 @@ export default function CreateAirportPanel() {
category: AirportCategory.SMALL,
full_name: '',
elevation_ft: 0,
continent: '',
iso_country: '',
iso_region: '',
municipality: '',
@@ -64,12 +62,6 @@ export default function CreateAirportPanel() {
{...form.getInputProps('elevation_ft')}
/>
<Group>
<TextInput
required
label='Continent'
placeholder='NA'
{...form.getInputProps('continent')}
/>
<TextInput
required
label='ISO Country'
@@ -82,13 +74,13 @@ export default function CreateAirportPanel() {
placeholder='US-VA'
{...form.getInputProps('iso_region')}
/>
<TextInput
required
label='Municipality'
placeholder='Manassas'
{...form.getInputProps('municipality')}
/>
</Group>
<TextInput
required
label='Municipality'
placeholder='Manassas'
{...form.getInputProps('municipality')}
/>
<Group>
<TextInput
required

View File

@@ -11,7 +11,6 @@ export default function UpdateAirportModal({ airport, setAirport }: { airport: A
category: airport?.category || AirportCategory.SMALL,
full_name: airport?.full_name || '',
elevation_ft: airport?.elevation_ft || 0,
continent: airport?.continent || '',
iso_country: airport?.iso_country || '',
iso_region: airport?.iso_region || '',
municipality: airport?.municipality || '',
@@ -73,12 +72,6 @@ export default function UpdateAirportModal({ airport, setAirport }: { airport: A
{...form.getInputProps('elevation_ft')}
/>
<Group>
<TextInput
required
label='Continent'
placeholder='NA'
{...form.getInputProps('continent')}
/>
<TextInput
required
label='ISO Country'

View File

@@ -62,7 +62,7 @@ export default function MapTiles() {
metars.forEach((metar) => {
airportData.forEach((airport) => {
if (metar.station_id == airport.icao) {
airport.metar = metar;
airport.latest_metar = metar;
}
});
});
@@ -82,16 +82,18 @@ export default function MapTiles() {
className: 'metar-marker-icon'
});
}
if (airport.metar?.flight_category == 'VFR') {
if (airport.latest_metar?.flight_category == 'VFR') {
return innerIcon({ tag: 'V', color: 'green' });
} else if (airport.metar?.flight_category == 'MVFR') {
} else if (airport.latest_metar?.flight_category == 'MVFR') {
return innerIcon({ tag: 'M', color: 'blue' });
} else if (airport.metar?.flight_category == 'IFR') {
} else if (airport.latest_metar?.flight_category == 'IFR') {
return innerIcon({ tag: 'I', color: 'red' });
} else if (airport.metar?.flight_category == 'LIFR') {
} else if (airport.latest_metar?.flight_category == 'LIFR') {
return innerIcon({ tag: 'L', color: 'purple' });
} else {
} else if (airport.latest_metar?.flight_category == 'UNKN') {
return innerIcon({ tag: 'U', color: 'black', size: 'xs' });
} else {
return innerIcon({tag: ' ', color: 'black', size: 'xs' });
}
}

View File

@@ -61,7 +61,7 @@ export default function MetarModal({ airport, isOpen, onClose }: MetarModalProps
</span>
<div className='min-w-0 flex-1'>
<Divider style={{ paddingTop: '0.1em' }} />
{airport.metar && <MetarInfo metar={airport.metar} />}
{airport.latest_metar && <MetarInfo metar={airport.latest_metar} />}
</div>
</Modal>
);
@@ -164,8 +164,8 @@ function MetarInfo({ metar }: { metar: Metar }) {
</Grid.Col>
<Grid.Col className='gutter-row' span={12}>
<Grid style={{ paddingTop: '1em', paddingBottom: '1em' }} gutter={48}>
{metar.wx_string &&
metar.wx_string.split(' ').map((wx) => (
{metar.weather_phenomena &&
metar.weather_phenomena.map((wx) => (
<Grid.Col span={1}>
<MetarIcon wx={wx} />
</Grid.Col>