1
1
import { FAASource , NavigraphRasterSource , NavigraphTheme , NavigraphTileLayer } from "@navigraph/leaflet"
2
- import { geoJSON , Map , GeoJSON } from "leaflet"
2
+ import { geoJSON , GeoJSON , Map } from "leaflet"
3
3
import { amdb , auth } from "./navigraph"
4
4
import "leaflet/dist/leaflet.css"
5
5
import "./style.css"
@@ -32,79 +32,81 @@ document.querySelectorAll<HTMLButtonElement>(".themes > button").forEach(el => {
32
32
} )
33
33
} )
34
34
35
- let airport : AmdbSearchResult | null = null ;
35
+ let airport : AmdbSearchResult | null = null
36
36
37
- const visibleAmdbLayers : AmdbLayerName [ ] = [ ] ;
37
+ const visibleAmdbLayers : AmdbLayerName [ ] = [ ]
38
38
39
- let currentAmdbLayer : GeoJSON | null = null ;
39
+ let currentAmdbLayer : GeoJSON | null = null
40
40
41
41
async function updateAmdb ( ) {
42
- ( document . querySelectorAll ( ' .amdb-layer' ) as NodeListOf < HTMLButtonElement > ) . forEach ( ( element ) => {
43
- element . style . backgroundColor = visibleAmdbLayers . includes ( element . id as AmdbLayerName ) ? ' green' : ''
42
+ ; ( document . querySelectorAll ( " .amdb-layer" ) as NodeListOf < HTMLButtonElement > ) . forEach ( element => {
43
+ element . style . backgroundColor = visibleAmdbLayers . includes ( element . id as AmdbLayerName ) ? " green" : ""
44
44
} )
45
45
46
- if ( currentAmdbLayer && map . hasLayer ( currentAmdbLayer ) ) {
46
+ if ( currentAmdbLayer && map . hasLayer ( currentAmdbLayer ) ) {
47
47
map . removeLayer ( currentAmdbLayer )
48
48
}
49
49
50
- if ( ! airport ) return ;
50
+ if ( ! airport ) return
51
51
52
- const data = await getAmdbLayers ( { icao : airport ?. idarpt , include : visibleAmdbLayers } ) ;
52
+ const data = await getAmdbLayers ( { icao : airport ?. idarpt , include : visibleAmdbLayers } )
53
53
54
- if ( ! data ) return ;
54
+ if ( ! data ) return
55
55
56
- currentAmdbLayer = geoJSON ( Object . values ( data ) , { onEachFeature : ( feature , layer ) => {
57
- layer . on ( 'click' , ( e ) => {
58
- currentAmdbLayer ?. resetStyle ( ) ;
56
+ currentAmdbLayer = geoJSON ( Object . values ( data ) , {
57
+ onEachFeature : ( feature , layer ) => {
58
+ layer . on ( "click" , e => {
59
+ currentAmdbLayer ?. resetStyle ( )
59
60
60
- e . target . setStyle ( { color : 'red' } )
61
- } ) ;
62
- layer . bindPopup ( `<p>${ JSON . stringify ( feature . properties , null , 4 ) } </p>` )
63
- } } ) . addTo ( map ) ;
61
+ e . target . setStyle ( { color : "red" } )
62
+ } )
63
+ layer . bindPopup ( `<p>${ JSON . stringify ( feature . properties , null , 4 ) } </p>` )
64
+ } ,
65
+ } ) . addTo ( map )
64
66
}
65
67
66
- const amdbContainer = document . querySelector < HTMLDivElement > ( ".amdb-layers" ) ! ;
68
+ const amdbContainer = document . querySelector < HTMLDivElement > ( ".amdb-layers" ) !
67
69
68
- allLayers . forEach ( ( layer ) => {
69
- const button = document . createElement ( ' button' )
70
+ allLayers . forEach ( layer => {
71
+ const button = document . createElement ( " button" )
70
72
71
73
button . innerHTML = layer
72
74
73
- button . id = layer ;
74
- button . className = ' amdb-layer'
75
+ button . id = layer
76
+ button . className = " amdb-layer"
75
77
76
- button . addEventListener ( ' click' , ( ) => {
77
- if ( visibleAmdbLayers . includes ( layer ) ) {
78
- visibleAmdbLayers . splice ( visibleAmdbLayers . indexOf ( layer ) , 1 ) ;
78
+ button . addEventListener ( " click" , ( ) => {
79
+ if ( visibleAmdbLayers . includes ( layer ) ) {
80
+ visibleAmdbLayers . splice ( visibleAmdbLayers . indexOf ( layer ) , 1 )
79
81
} else {
80
82
visibleAmdbLayers . push ( layer )
81
83
}
82
84
83
- updateAmdb ( ) ;
84
- } ) ;
85
+ updateAmdb ( )
86
+ } )
85
87
86
88
amdbContainer . appendChild ( button )
87
89
} )
88
90
89
- const icaoInput = document . querySelector < HTMLInputElement > ( ' #icao-input' )
91
+ const icaoInput = document . querySelector < HTMLInputElement > ( " #icao-input" )
90
92
91
- icaoInput ?. addEventListener ( ' change' , async ( ) => {
92
- const value = icaoInput . value ;
93
+ icaoInput ?. addEventListener ( " change" , async ( ) => {
94
+ const value = icaoInput . value
93
95
94
- if ( value . length === 4 && / ^ [ A - Z ] { 4 } $ / . test ( value ) ) {
96
+ if ( value . length === 4 && / ^ [ A - Z ] { 4 } $ / . test ( value ) ) {
95
97
airport = ( await amdb . searchAmdb ( value ) ) ?. [ 0 ] ?? null
96
98
97
- if ( airport ) {
98
- icaoInput . style . backgroundColor = ' green'
99
- amdbContainer . style . visibility = ' visible'
99
+ if ( airport ) {
100
+ icaoInput . style . backgroundColor = " green"
101
+ amdbContainer . style . visibility = " visible"
100
102
} else {
101
- icaoInput . style . backgroundColor = ' red'
102
- amdbContainer . style . visibility = ' hidden'
103
+ icaoInput . style . backgroundColor = " red"
104
+ amdbContainer . style . visibility = " hidden"
103
105
}
104
106
105
- updateAmdb ( ) ;
107
+ updateAmdb ( )
106
108
} else {
107
- icaoInput . style . backgroundColor = ''
109
+ icaoInput . style . backgroundColor = ""
108
110
}
109
111
} )
110
112
@@ -120,4 +122,3 @@ auth.onAuthStateChanged(user => {
120
122
console . log ( "User changed" , user )
121
123
signinBtn . innerHTML = user ? `Signed in as ${ user . preferred_username } ` : "Sign in"
122
124
} )
123
-
0 commit comments