From e96cb2716df2e4a86babcae95b64d9852bcd05fb Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Tue, 15 Aug 2023 12:26:05 +0200 Subject: [PATCH] Moved airfields database to public/database folder --- client/demo.js | 2 +- .../databases/airbases}/caucasus.json | 0 .../databases/airbases}/marianas.json | 930 +++--- .../databases/airbases}/nevada.json | 1114 +++---- .../databases/airbases}/persiangulf.json | 0 .../databases/airbases}/syria.json | 2730 ++++++++--------- .../{ => units}/aircraftdatabase.json | 0 .../{ => units}/groundunitdatabase.json | 0 .../{ => units}/helicopterdatabase.json | 0 .../iran-iraq_fictional/aircraftdatabase.json | 0 .../groundunitdatabase.json | 0 .../helicopterdatabase.json | 0 .../iran-iraq_fictional/navyunitdatabase.json | 0 .../{ => units}/navyunitdatabase.json | 0 client/public/stylesheets/olympus.css | 4 - .../public/stylesheets/other/contextmenus.css | 47 +- client/routes/api/airbases.js | 27 +- client/src/@types/unit.d.ts | 6 +- client/src/mission/airbase.ts | 51 +- client/src/mission/missionhandler.ts | 52 +- client/src/unit/aircraftdatabase.ts | 2 +- client/src/unit/groundunitdatabase.ts | 2 +- client/src/unit/helicopterdatabase.ts | 2 +- client/src/unit/navyunitdatabase.ts | 2 +- 24 files changed, 2462 insertions(+), 2509 deletions(-) rename client/{src/airfields => public/databases/airbases}/caucasus.json (100%) rename client/{src/airfields => public/databases/airbases}/marianas.json (95%) rename client/{src/airfields => public/databases/airbases}/nevada.json (95%) rename client/{src/airfields => public/databases/airbases}/persiangulf.json (100%) rename client/{src/airfields => public/databases/airbases}/syria.json (95%) rename client/public/databases/{ => units}/aircraftdatabase.json (100%) rename client/public/databases/{ => units}/groundunitdatabase.json (100%) rename client/public/databases/{ => units}/helicopterdatabase.json (100%) rename client/public/databases/{ => units}/iran-iraq_fictional/aircraftdatabase.json (100%) rename client/public/databases/{ => units}/iran-iraq_fictional/groundunitdatabase.json (100%) rename client/public/databases/{ => units}/iran-iraq_fictional/helicopterdatabase.json (100%) rename client/public/databases/{ => units}/iran-iraq_fictional/navyunitdatabase.json (100%) rename client/public/databases/{ => units}/navyunitdatabase.json (100%) diff --git a/client/demo.js b/client/demo.js index 2a3360b0..332c4e34 100644 --- a/client/demo.js +++ b/client/demo.js @@ -344,7 +344,7 @@ class DemoDataGenerator { airbases(req, res){ var ret = {airbases: { ["0"]: { - callsign: "Neutral", + callsign: "Nellis", latitude: 37.3, longitude: -115.8, coalition: "neutral" diff --git a/client/src/airfields/caucasus.json b/client/public/databases/airbases/caucasus.json similarity index 100% rename from client/src/airfields/caucasus.json rename to client/public/databases/airbases/caucasus.json diff --git a/client/src/airfields/marianas.json b/client/public/databases/airbases/marianas.json similarity index 95% rename from client/src/airfields/marianas.json rename to client/public/databases/airbases/marianas.json index 580c6f89..5b27dcdc 100644 --- a/client/src/airfields/marianas.json +++ b/client/public/databases/airbases/marianas.json @@ -1,466 +1,466 @@ -{ - "airfields": { - "Anapa-Vityazevo": { - "ICAO": "URKA", - "elevation": "141", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "22": { - "magHeading": "214", - "ILS": "" - }, - "04": { - "magHeading": "034", - "ILS": "" - } - } - ], - "length": "9000" - } - ] - }, - "Batumi": { - "ICAO": "UGSB", - "elevation": "33", - "TACAN": "16X", - "runways": [ - { - "headings": [ - { - "13": { - "magHeading": "119", - "ILS": "" - }, - "31": { - "magHeading": "299", - "ILS": "" - } - } - ], - "length": "7500" - } - ] - }, - "Beslan": { - "ICAO": "URMO", - "elevation": "1722", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "10": { - "magHeading": "086", - "ILS": "110.50" - }, - "28": { - "magHeading": "266", - "ILS": "" - } - } - ], - "length": "9600" - } - ] - }, - "Gelendzhik": { - "ICAO": "URKG", - "elevation": "72", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "19": { - "magHeading": "212", - "ILS": "" - }, - "01": { - "magHeading": "032", - "ILS": "" - } - } - ], - "length": "5400" - } - ] - }, - "Gudauta": { - "ICAO": "UG23", - "elevation": "69", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "15": { - "magHeading": "144", - "ILS": "" - }, - "33": { - "magHeading": "324", - "ILS": "" - } - } - ], - "length": "7700" - } - ] - }, - "Kobuleti": { - "ICAO": "UG5X", - "elevation": "69", - "TACAN": "67X", - "runways": [ - { - "headings": [ - { - "25": { - "magHeading": "243", - "ILS": "" - }, - "07": { - "magHeading": "063", - "ILS": "111.50" - } - } - ], - "length": "7400" - } - ] - }, - "Krasnodar-Center": { - "ICAO": "URKL", - "elevation": "98", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "259", - "ILS": "" - }, - "09": { - "magHeading": "079", - "ILS": "" - } - } - ], - "length": "7700" - } - ] - }, - "Krasnodar-Pashkovsky": { - "ICAO": "URKK", - "elevation": "112", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "23": { - "magHeading": "219", - "ILS": "" - }, - "05": { - "magHeading": "039", - "ILS": "" - } - } - ], - "length": "9600" - } - ] - }, - "Krymsk": { - "ICAO": "URKW", - "elevation": "66", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "22": { - "magHeading": "212", - "ILS": "" - }, - "04": { - "magHeading": "032", - "ILS": "" - } - } - ], - "length": "8000" - } - ] - }, - "Kutaisi": { - "ICAO": "UGKO", - "elevation": "148", - "TACAN": "44X", - "runways": [ - { - "headings": [ - { - "25": { - "magHeading": "247", - "ILS": "" - }, - "07": { - "magHeading": "067'", - "ILS": "109.75" - } - } - ], - "length": "7700" - } - ] - }, - "Maykop-Khanskaya": { - "ICAO": "URKH", - "elevation": "591", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "22": { - "magHeading": "211", - "ILS": "" - }, - "04": { - "magHeading": "031", - "ILS": "" - } - } - ], - "length": "10100" - } - ] - }, - "Mineralnye Vody": { - "ICAO": "URMM", - "elevation": "1050", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "12": { - "magHeading": "108", - "ILS": "111.70" - }, - "30": { - "magHeading": "288", - "ILS": "109.30" - } - } - ], - "length": "12700" - } - ] - }, - "Mozdok": { - "ICAO": "XRMF", - "elevation": "507", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "26": { - "magHeading": "255", - "ILS": "" - }, - "08": { - "magHeading": "075", - "ILS": "" - } - } - ], - "length": "9400" - } - ] - }, - "Nalchik": { - "ICAO": "URMN", - "elevation": "1411", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "24": { - "magHeading": "228", - "ILS": "110.50" - }, - "06": { - "magHeading": "048'", - "ILS": "" - } - } - ], - "length": "7000" - } - ] - }, - "Novorossiysk": { - "ICAO": "URKN", - "elevation": "131", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "22": { - "magHeading": "214", - "ILS": "" - }, - "04": { - "magHeading": "034", - "ILS": "" - } - } - ], - "length": "5400" - } - ] - }, - "Senaki-Kolkhi": { - "ICAO": "UGKS", - "elevation": "43", - "TACAN": "31X", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "268", - "ILS": "" - }, - "09": { - "magHeading": "088'", - "ILS": "108.90" - } - } - ], - "length": "7400" - } - ] - }, - "Sochi-Adler": { - "ICAO": "URSS", - "elevation": "98", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "235", - "ILS": "" - }, - "06": { - "magHeading": "055", - "ILS": "111.10" - } - } - ], - "length": "9700" - } - ] - }, - "Tbilisi-Lochini": { - "ICAO": "UGTB", - "elevation": "1574", - "TACAN": "25X", - "runways": [ - { - "headings": [ - { - "13": { - "magHeading": "121", - "ILS": "110.30" - }, - "31": { - "magHeading": "301", - "ILS": "108.90" - } - } - ], - "length": "9300" - } - ] - }, - "Soganlug": { - "ICAO": "UG24", - "elevation": "1500", - "TACAN": "25X", - "runways": [ - { - "headings": [ - { - "14": { - "magHeading": "125", - "ILS": "" - }, - "32": { - "magHeading": "305", - "ILS": "" - } - } - ], - "length": "6500" - } - ] - }, - "Sukhumi-Babushara": { - "ICAO": "UGSS", - "elevation": "43", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "12": { - "magHeading": "109", - "ILS": "" - }, - "30": { - "magHeading": "289", - "ILS": "" - } - } - ], - "length": "11400" - } - ] - }, - "Vaziani": { - "ICAO": "UG27", - "elevation": "1524", - "TACAN": "22X", - "runways": [ - { - "headings": [ - { - "13": { - "magHeading": "129", - "ILS": "108.75" - }, - "31": { - "magHeading": "309", - "ILS": "108.75" - } - } - ], - "length": "7700" - } - ] - } - } +{ + "airfields": { + "Anapa-Vityazevo": { + "ICAO": "URKA", + "elevation": "141", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "22": { + "magHeading": "214", + "ILS": "" + }, + "04": { + "magHeading": "034", + "ILS": "" + } + } + ], + "length": "9000" + } + ] + }, + "Batumi": { + "ICAO": "UGSB", + "elevation": "33", + "TACAN": "16X", + "runways": [ + { + "headings": [ + { + "13": { + "magHeading": "119", + "ILS": "" + }, + "31": { + "magHeading": "299", + "ILS": "" + } + } + ], + "length": "7500" + } + ] + }, + "Beslan": { + "ICAO": "URMO", + "elevation": "1722", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "10": { + "magHeading": "086", + "ILS": "110.50" + }, + "28": { + "magHeading": "266", + "ILS": "" + } + } + ], + "length": "9600" + } + ] + }, + "Gelendzhik": { + "ICAO": "URKG", + "elevation": "72", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "19": { + "magHeading": "212", + "ILS": "" + }, + "01": { + "magHeading": "032", + "ILS": "" + } + } + ], + "length": "5400" + } + ] + }, + "Gudauta": { + "ICAO": "UG23", + "elevation": "69", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "15": { + "magHeading": "144", + "ILS": "" + }, + "33": { + "magHeading": "324", + "ILS": "" + } + } + ], + "length": "7700" + } + ] + }, + "Kobuleti": { + "ICAO": "UG5X", + "elevation": "69", + "TACAN": "67X", + "runways": [ + { + "headings": [ + { + "25": { + "magHeading": "243", + "ILS": "" + }, + "07": { + "magHeading": "063", + "ILS": "111.50" + } + } + ], + "length": "7400" + } + ] + }, + "Krasnodar-Center": { + "ICAO": "URKL", + "elevation": "98", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "259", + "ILS": "" + }, + "09": { + "magHeading": "079", + "ILS": "" + } + } + ], + "length": "7700" + } + ] + }, + "Krasnodar-Pashkovsky": { + "ICAO": "URKK", + "elevation": "112", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "23": { + "magHeading": "219", + "ILS": "" + }, + "05": { + "magHeading": "039", + "ILS": "" + } + } + ], + "length": "9600" + } + ] + }, + "Krymsk": { + "ICAO": "URKW", + "elevation": "66", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "22": { + "magHeading": "212", + "ILS": "" + }, + "04": { + "magHeading": "032", + "ILS": "" + } + } + ], + "length": "8000" + } + ] + }, + "Kutaisi": { + "ICAO": "UGKO", + "elevation": "148", + "TACAN": "44X", + "runways": [ + { + "headings": [ + { + "25": { + "magHeading": "247", + "ILS": "" + }, + "07": { + "magHeading": "067'", + "ILS": "109.75" + } + } + ], + "length": "7700" + } + ] + }, + "Maykop-Khanskaya": { + "ICAO": "URKH", + "elevation": "591", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "22": { + "magHeading": "211", + "ILS": "" + }, + "04": { + "magHeading": "031", + "ILS": "" + } + } + ], + "length": "10100" + } + ] + }, + "Mineralnye Vody": { + "ICAO": "URMM", + "elevation": "1050", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "12": { + "magHeading": "108", + "ILS": "111.70" + }, + "30": { + "magHeading": "288", + "ILS": "109.30" + } + } + ], + "length": "12700" + } + ] + }, + "Mozdok": { + "ICAO": "XRMF", + "elevation": "507", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "26": { + "magHeading": "255", + "ILS": "" + }, + "08": { + "magHeading": "075", + "ILS": "" + } + } + ], + "length": "9400" + } + ] + }, + "Nalchik": { + "ICAO": "URMN", + "elevation": "1411", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "24": { + "magHeading": "228", + "ILS": "110.50" + }, + "06": { + "magHeading": "048'", + "ILS": "" + } + } + ], + "length": "7000" + } + ] + }, + "Novorossiysk": { + "ICAO": "URKN", + "elevation": "131", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "22": { + "magHeading": "214", + "ILS": "" + }, + "04": { + "magHeading": "034", + "ILS": "" + } + } + ], + "length": "5400" + } + ] + }, + "Senaki-Kolkhi": { + "ICAO": "UGKS", + "elevation": "43", + "TACAN": "31X", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "268", + "ILS": "" + }, + "09": { + "magHeading": "088'", + "ILS": "108.90" + } + } + ], + "length": "7400" + } + ] + }, + "Sochi-Adler": { + "ICAO": "URSS", + "elevation": "98", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "235", + "ILS": "" + }, + "06": { + "magHeading": "055", + "ILS": "111.10" + } + } + ], + "length": "9700" + } + ] + }, + "Tbilisi-Lochini": { + "ICAO": "UGTB", + "elevation": "1574", + "TACAN": "25X", + "runways": [ + { + "headings": [ + { + "13": { + "magHeading": "121", + "ILS": "110.30" + }, + "31": { + "magHeading": "301", + "ILS": "108.90" + } + } + ], + "length": "9300" + } + ] + }, + "Soganlug": { + "ICAO": "UG24", + "elevation": "1500", + "TACAN": "25X", + "runways": [ + { + "headings": [ + { + "14": { + "magHeading": "125", + "ILS": "" + }, + "32": { + "magHeading": "305", + "ILS": "" + } + } + ], + "length": "6500" + } + ] + }, + "Sukhumi-Babushara": { + "ICAO": "UGSS", + "elevation": "43", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "12": { + "magHeading": "109", + "ILS": "" + }, + "30": { + "magHeading": "289", + "ILS": "" + } + } + ], + "length": "11400" + } + ] + }, + "Vaziani": { + "ICAO": "UG27", + "elevation": "1524", + "TACAN": "22X", + "runways": [ + { + "headings": [ + { + "13": { + "magHeading": "129", + "ILS": "108.75" + }, + "31": { + "magHeading": "309", + "ILS": "108.75" + } + } + ], + "length": "7700" + } + ] + } + } } \ No newline at end of file diff --git a/client/src/airfields/nevada.json b/client/public/databases/airbases/nevada.json similarity index 95% rename from client/src/airfields/nevada.json rename to client/public/databases/airbases/nevada.json index 48159c97..2eaf04df 100644 --- a/client/src/airfields/nevada.json +++ b/client/public/databases/airbases/nevada.json @@ -1,558 +1,558 @@ -{ - "airfields": { - "Beatty": { - "ICAO": "KBTY", - "elevation": "3173", - "TACAN": "94X", - "runways": [ - { - "headings": [ - { - "16": { - "magHeading": "168", - "ILS": "" - }, - "34": { - "magHeading": "348", - "ILS": "" - } - } - ], - "length": "5500" - } - ] - }, - "Boulder City": { - "ICAO": "KBVU", - "elevation": "2205", - "TACAN": "114X", - "runways": [ - { - "headings": [ - { - "15": { - "magHeading": "153", - "ILS": "" - }, - "33": { - "magHeading": "333", - "ILS": "" - } - } - ], - "length": "3700" - }, - { - "headings": [ - { - "27": { - "magHeading": "267", - "ILS": "" - }, - "09": { - "magHeading": "087", - "ILS": "" - } - } - ], - "length": "4400" - } - ] - }, - "Creech": { - "ICAO": "KINS", - "elevation": "3126", - "TACAN": "87X", - "runways": [ - { - "headings": [ - { - "13": { - "magHeading": "134", - "ILS": "" - }, - "31": { - "magHeading": "314", - "ILS": "" - } - } - ], - "length": "4700" - }, - { - "headings": [ - { - "26": { - "magHeading": "260", - "ILS": "" - }, - "08": { - "magHeading": "080", - "ILS": "108.70" - } - } - ], - "length": "8700" - } - ] - }, - "Echo Bay": { - "ICAO": "0L9", - "elevation": "1549", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "24": { - "magHeading": "246", - "ILS": "" - }, - "06": { - "magHeading": "066", - "ILS": "" - } - } - ], - "length": "3300" - } - ] - }, - "Groom Lake": { - "ICAO": "KXTA", - "elevation": "4495", - "TACAN": "18X", - "runways": [ - { - "headings": [ - { - "14L": { - "magHeading": "145", - "ILS": "" - }, - "32R": { - "magHeading": "325", - "ILS": "109.30" - } - } - ], - "length": "11700" - }, - { - "headings": [ - { - "14R (CLOSED)": { - "magHeading": "145", - "ILS": "" - }, - "32L (CLOSED)": { - "magHeading": "325", - "ILS": "" - } - } - ], - "length": "17800" - } - ] - }, - "Henderson Executive": { - "ICAO": "KHND", - "elevation": "2493", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "17L": { - "magHeading": "168", - "ILS": "" - }, - "35R": { - "magHeading": "348", - "ILS": "" - } - } - ], - "length": "4600" - }, - { - "headings": [ - { - "17R": { - "magHeading": "168", - "ILS": "" - }, - "35L": { - "magHeading": "348", - "ILS": "" - } - } - ], - "length": "6100" - } - ] - }, - "Jean": { - "ICAO": "", - "elevation": "2825", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "02L": { - "magHeading": "020", - "ILS": "" - }, - "20R": { - "magHeading": "200", - "ILS": "" - } - } - ], - "length": "4500" - }, - { - "headings": [ - { - "02R": { - "magHeading": "020", - "ILS": "" - }, - "20L": { - "magHeading": "200", - "ILS": "" - } - } - ], - "length": "3600" - } - ] - }, - "McCarran International": { - "ICAO": "KLAS", - "elevation": "2178", - "TACAN": "116X", - "runways": [ - { - "headings": [ - { - "01L": { - "magHeading": "013", - "ILS": "" - }, - "19R": { - "magHeading": "193", - "ILS": "" - } - } - ], - "length": "8000" - }, - { - "headings": [ - { - "01R": { - "magHeading": "013", - "ILS": "" - }, - "19L": { - "magHeading": "193", - "ILS": "" - } - } - ], - "length": "8000" - }, - { - "headings": [ - { - "07L": { - "magHeading": "078", - "ILS": "" - }, - "25R": { - "magHeading": "258", - "ILS": "110.30" - } - } - ], - "length": "10600" - }, - { - "headings": [ - { - "07R": { - "magHeading": "078", - "ILS": "" - }, - "25L": { - "magHeading": "258", - "ILS": "" - } - } - ], - "length": "10100" - } - ] - }, - "Laughlin": { - "ICAO": "KIFP", - "elevation": "673", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "16": { - "magHeading": "164", - "ILS": "" - }, - "34": { - "magHeading": "344", - "ILS": "" - } - } - ], - "length": "7100" - } - ] - }, - "Lincoln County": { - "ICAO": "", - "elevation": "4816", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "17": { - "magHeading": "170", - "ILS": "" - }, - "35": { - "magHeading": "350", - "ILS": "" - } - } - ], - "length": "4500" - } - ] - }, - "Mesquite": { - "ICAO": "67L", - "elevation": "1859", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "19": { - "magHeading": "197", - "ILS": "" - }, - "01": { - "magHeading": "017", - "ILS": "" - } - } - ], - "length": "5000" - } - ] - }, - "Mina": { - "ICAO": "", - "elevation": "4560", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "13": { - "magHeading": "140", - "ILS": "" - }, - "31": { - "magHeading": "320", - "ILS": "" - } - } - ], - "length": "4100" - } - ] - }, - "Nellis": { - "ICAO": "KLSV", - "elevation": "1849", - "TACAN": "12X", - "runways": [ - { - "headings": [ - { - "03L": { - "magHeading": "029", - "ILS": "" - }, - "21R": { - "magHeading": "209", - "ILS": "" - } - } - ], - "length": "9800" - }, - { - "headings": [ - { - "03R": { - "magHeading": "029", - "ILS": "" - }, - "21L": { - "magHeading": "209", - "ILS": "109.10" - } - } - ], - "length": "9800" - } - ] - }, - "North Las Vegas": { - "ICAO": "KVGT", - "elevation": "2228", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "25": { - "magHeading": "256", - "ILS": "" - }, - "07": { - "magHeading": "076", - "ILS": "" - } - } - ], - "length": "4900" - }, - { - "headings": [ - { - "12L": { - "magHeading": "122", - "ILS": "110.70" - }, - "30R": { - "magHeading": "302", - "ILS": "109.10" - } - } - ], - "length": "3800" - }, - { - "headings": [ - { - "12R": { - "magHeading": "122", - "ILS": "" - }, - "30L": { - "magHeading": "302", - "ILS": "" - } - } - ], - "length": "4600" - } - ] - }, - "Pahute Mesa": { - "ICAO": "", - "elevation": "5059", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "18": { - "magHeading": "182", - "ILS": "" - }, - "36": { - "magHeading": "002", - "ILS": "" - } - } - ], - "length": "5500" - } - ] - }, - "Tonopah": { - "ICAO": "KTPH", - "elevation": "5390", - "TACAN": "119X", - "runways": [ - { - "headings": [ - { - "11": { - "magHeading": "113", - "ILS": "" - }, - "29": { - "magHeading": "293", - "ILS": "" - } - } - ], - "length": "5600" - }, - { - "headings": [ - { - "15": { - "magHeading": "153", - "ILS": "" - }, - "33": { - "magHeading": "333", - "ILS": "" - } - } - ], - "length": "6800" - } - ] - }, - "Tonopah Test Range": { - "ICAO": "KTNX", - "elevation": "5535", - "TACAN": "77X", - "runways": [ - { - "headings": [ - { - "14": { - "magHeading": "145", - "ILS": "108.30" - }, - "32": { - "magHeading": "325", - "ILS": "111.70" - } - } - ], - "length": "11700" - } - ] - } - } +{ + "airfields": { + "Beatty": { + "ICAO": "KBTY", + "elevation": "3173", + "TACAN": "94X", + "runways": [ + { + "headings": [ + { + "16": { + "magHeading": "168", + "ILS": "" + }, + "34": { + "magHeading": "348", + "ILS": "" + } + } + ], + "length": "5500" + } + ] + }, + "Boulder City": { + "ICAO": "KBVU", + "elevation": "2205", + "TACAN": "114X", + "runways": [ + { + "headings": [ + { + "15": { + "magHeading": "153", + "ILS": "" + }, + "33": { + "magHeading": "333", + "ILS": "" + } + } + ], + "length": "3700" + }, + { + "headings": [ + { + "27": { + "magHeading": "267", + "ILS": "" + }, + "09": { + "magHeading": "087", + "ILS": "" + } + } + ], + "length": "4400" + } + ] + }, + "Creech": { + "ICAO": "KINS", + "elevation": "3126", + "TACAN": "87X", + "runways": [ + { + "headings": [ + { + "13": { + "magHeading": "134", + "ILS": "" + }, + "31": { + "magHeading": "314", + "ILS": "" + } + } + ], + "length": "4700" + }, + { + "headings": [ + { + "26": { + "magHeading": "260", + "ILS": "" + }, + "08": { + "magHeading": "080", + "ILS": "108.70" + } + } + ], + "length": "8700" + } + ] + }, + "Echo Bay": { + "ICAO": "0L9", + "elevation": "1549", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "24": { + "magHeading": "246", + "ILS": "" + }, + "06": { + "magHeading": "066", + "ILS": "" + } + } + ], + "length": "3300" + } + ] + }, + "Groom Lake": { + "ICAO": "KXTA", + "elevation": "4495", + "TACAN": "18X", + "runways": [ + { + "headings": [ + { + "14L": { + "magHeading": "145", + "ILS": "" + }, + "32R": { + "magHeading": "325", + "ILS": "109.30" + } + } + ], + "length": "11700" + }, + { + "headings": [ + { + "14R (CLOSED)": { + "magHeading": "145", + "ILS": "" + }, + "32L (CLOSED)": { + "magHeading": "325", + "ILS": "" + } + } + ], + "length": "17800" + } + ] + }, + "Henderson Executive": { + "ICAO": "KHND", + "elevation": "2493", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "17L": { + "magHeading": "168", + "ILS": "" + }, + "35R": { + "magHeading": "348", + "ILS": "" + } + } + ], + "length": "4600" + }, + { + "headings": [ + { + "17R": { + "magHeading": "168", + "ILS": "" + }, + "35L": { + "magHeading": "348", + "ILS": "" + } + } + ], + "length": "6100" + } + ] + }, + "Jean": { + "ICAO": "", + "elevation": "2825", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "02L": { + "magHeading": "020", + "ILS": "" + }, + "20R": { + "magHeading": "200", + "ILS": "" + } + } + ], + "length": "4500" + }, + { + "headings": [ + { + "02R": { + "magHeading": "020", + "ILS": "" + }, + "20L": { + "magHeading": "200", + "ILS": "" + } + } + ], + "length": "3600" + } + ] + }, + "McCarran International": { + "ICAO": "KLAS", + "elevation": "2178", + "TACAN": "116X", + "runways": [ + { + "headings": [ + { + "01L": { + "magHeading": "013", + "ILS": "" + }, + "19R": { + "magHeading": "193", + "ILS": "" + } + } + ], + "length": "8000" + }, + { + "headings": [ + { + "01R": { + "magHeading": "013", + "ILS": "" + }, + "19L": { + "magHeading": "193", + "ILS": "" + } + } + ], + "length": "8000" + }, + { + "headings": [ + { + "07L": { + "magHeading": "078", + "ILS": "" + }, + "25R": { + "magHeading": "258", + "ILS": "110.30" + } + } + ], + "length": "10600" + }, + { + "headings": [ + { + "07R": { + "magHeading": "078", + "ILS": "" + }, + "25L": { + "magHeading": "258", + "ILS": "" + } + } + ], + "length": "10100" + } + ] + }, + "Laughlin": { + "ICAO": "KIFP", + "elevation": "673", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "16": { + "magHeading": "164", + "ILS": "" + }, + "34": { + "magHeading": "344", + "ILS": "" + } + } + ], + "length": "7100" + } + ] + }, + "Lincoln County": { + "ICAO": "", + "elevation": "4816", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "17": { + "magHeading": "170", + "ILS": "" + }, + "35": { + "magHeading": "350", + "ILS": "" + } + } + ], + "length": "4500" + } + ] + }, + "Mesquite": { + "ICAO": "67L", + "elevation": "1859", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "19": { + "magHeading": "197", + "ILS": "" + }, + "01": { + "magHeading": "017", + "ILS": "" + } + } + ], + "length": "5000" + } + ] + }, + "Mina": { + "ICAO": "", + "elevation": "4560", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "13": { + "magHeading": "140", + "ILS": "" + }, + "31": { + "magHeading": "320", + "ILS": "" + } + } + ], + "length": "4100" + } + ] + }, + "Nellis": { + "ICAO": "KLSV", + "elevation": "1849", + "TACAN": "12X", + "runways": [ + { + "headings": [ + { + "03L": { + "magHeading": "029", + "ILS": "" + }, + "21R": { + "magHeading": "209", + "ILS": "" + } + } + ], + "length": "9800" + }, + { + "headings": [ + { + "03R": { + "magHeading": "029", + "ILS": "" + }, + "21L": { + "magHeading": "209", + "ILS": "109.10" + } + } + ], + "length": "9800" + } + ] + }, + "North Las Vegas": { + "ICAO": "KVGT", + "elevation": "2228", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "25": { + "magHeading": "256", + "ILS": "" + }, + "07": { + "magHeading": "076", + "ILS": "" + } + } + ], + "length": "4900" + }, + { + "headings": [ + { + "12L": { + "magHeading": "122", + "ILS": "110.70" + }, + "30R": { + "magHeading": "302", + "ILS": "109.10" + } + } + ], + "length": "3800" + }, + { + "headings": [ + { + "12R": { + "magHeading": "122", + "ILS": "" + }, + "30L": { + "magHeading": "302", + "ILS": "" + } + } + ], + "length": "4600" + } + ] + }, + "Pahute Mesa": { + "ICAO": "", + "elevation": "5059", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "18": { + "magHeading": "182", + "ILS": "" + }, + "36": { + "magHeading": "002", + "ILS": "" + } + } + ], + "length": "5500" + } + ] + }, + "Tonopah": { + "ICAO": "KTPH", + "elevation": "5390", + "TACAN": "119X", + "runways": [ + { + "headings": [ + { + "11": { + "magHeading": "113", + "ILS": "" + }, + "29": { + "magHeading": "293", + "ILS": "" + } + } + ], + "length": "5600" + }, + { + "headings": [ + { + "15": { + "magHeading": "153", + "ILS": "" + }, + "33": { + "magHeading": "333", + "ILS": "" + } + } + ], + "length": "6800" + } + ] + }, + "Tonopah Test Range": { + "ICAO": "KTNX", + "elevation": "5535", + "TACAN": "77X", + "runways": [ + { + "headings": [ + { + "14": { + "magHeading": "145", + "ILS": "108.30" + }, + "32": { + "magHeading": "325", + "ILS": "111.70" + } + } + ], + "length": "11700" + } + ] + } + } } \ No newline at end of file diff --git a/client/src/airfields/persiangulf.json b/client/public/databases/airbases/persiangulf.json similarity index 100% rename from client/src/airfields/persiangulf.json rename to client/public/databases/airbases/persiangulf.json diff --git a/client/src/airfields/syria.json b/client/public/databases/airbases/syria.json similarity index 95% rename from client/src/airfields/syria.json rename to client/public/databases/airbases/syria.json index 4d670cf7..e0ee84e6 100644 --- a/client/src/airfields/syria.json +++ b/client/public/databases/airbases/syria.json @@ -1,1366 +1,1366 @@ -{ - "airfields": { - "Abu al-Duhur": { - "ICAO": "OS57", - "elevation": "820", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "268", - "ILS": "" - }, - "09": { - "magHeading": "088", - "ILS": "" - } - } - ], - "length": "9200" - } - ] - }, - "Adana Sakirpasa": { - "ICAO": "LTAF", - "elevation": "56", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "23": { - "magHeading": "230", - "ILS": "" - }, - "05": { - "magHeading": "050", - "ILS": "108.70" - } - } - ], - "length": "8800" - } - ] - }, - "Akrotiri": { - "ICAO": "LCRA", - "elevation": "69", - "TACAN": "107X", - "runways": [ - { - "headings": [ - { - "10": { - "magHeading": "106", - "ILS": "" - }, - "28": { - "magHeading": "286", - "ILS": "109.70" - } - } - ], - "length": "8800" - } - ] - }, - "Al Qusayr": { - "ICAO": "OS70", - "elevation": "1729", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "10": { - "magHeading": "096", - "ILS": "" - }, - "28": { - "magHeading": "276", - "ILS": "" - } - } - ], - "length": "9500" - } - ] - }, - "Al-Dumayr": { - "ICAO": "OS61", - "elevation": "2067", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "24": { - "magHeading": "240", - "ILS": "" - }, - "06": { - "magHeading": "060", - "ILS": "" - } - } - ], - "length": "9500" - } - ] - }, - "Aleppo": { - "ICAO": "OSAP", - "elevation": "1254", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "272", - "ILS": "" - }, - "09": { - "magHeading": "092", - "ILS": "" - } - } - ], - "length": "9200" - } - ] - }, - "An Nasiriyah": { - "ICAO": "OSAP", - "elevation": "1254", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "272", - "ILS": "" - }, - "09": { - "magHeading": "092", - "ILS": "" - } - } - ], - "length": "9200" - } - ] - }, - "At Tanf": { - "ICAO": "", - "elevation": "2329", - "TACAN": "", - "runways": [] - }, - "Bassel Al-Assad": { - "ICAO": "OSLK", - "elevation": "92", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "17L": { - "magHeading": "173", - "ILS": "" - }, - "35R": { - "magHeading": "353", - "ILS": "" - } - } - ], - "length": "7900" - }, - { - "headings": [ - { - "17R": { - "magHeading": "173", - "ILS": "109.10" - }, - "35L": { - "magHeading": "353", - "ILS": "" - } - } - ], - "length": "8900" - } - ] - }, - "Beirut-Rafic Hariri": { - "ICAO": "OLBA", - "elevation": "39", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "16": { - "magHeading": "164", - "ILS": "110.10" - }, - "34": { - "magHeading": "344", - "ILS": "" - } - } - ], - "length": "10300" - }, - { - "headings": [ - { - "17": { - "magHeading": "174", - "ILS": "109.50" - }, - "35": { - "magHeading": "354", - "ILS": "" - } - } - ], - "length": "7600" - }, - { - "headings": [ - { - "21": { - "magHeading": "210", - "ILS": "" - }, - "03": { - "magHeading": "030", - "ILS": "110.70" - } - } - ], - "length": "7000" - } - ] - }, - "Damascus": { - "ICAO": "OSDI", - "elevation": "2008", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "05L": { - "magHeading": "045", - "ILS": "" - }, - "23R": { - "magHeading": "225", - "ILS": "109.90" - } - } - ], - "length": "11600" - }, - { - "headings": [ - { - "05R": { - "magHeading": "045", - "ILS": "111.10" - }, - "23L": { - "magHeading": "225", - "ILS": "" - } - } - ], - "length": "11600" - } - ] - }, - "Deir ez-Zor": { - "ICAO": "OSDZ", - "elevation": "713", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "10": { - "magHeading": "104", - "ILS": "" - }, - "28": { - "magHeading": "284", - "ILS": "" - } - } - ], - "length": "9500" - } - ] - }, - "Ercan": { - "ICAO": "LCEN", - "elevation": "312", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "11": { - "magHeading": "110", - "ILS": "" - }, - "29": { - "magHeading": "290", - "ILS": "108.30" - } - } - ], - "length": "8700" - } - ] - }, - "Eyn Shemer": { - "ICAO": "LLES", - "elevation": "110", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "2750", - "ILS": "" - }, - "09": { - "magHeading": "095", - "ILS": "" - } - } - ], - "length": "4000" - } - ] - }, - "Gaziantep": { - "ICAO": "LTAJ", - "elevation": "2290", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "10": { - "magHeading": "100", - "ILS": "" - }, - "28": { - "magHeading": "280", - "ILS": "109.10" - } - } - ], - "length": "9100" - } - ] - }, - "Gazipasa": { - "ICAO": "LTFG", - "elevation": "130", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "26": { - "magHeading": "260", - "ILS": "" - }, - "08": { - "magHeading": "080", - "ILS": "108.50" - } - } - ], - "length": "7500" - } - ] - }, - "Gecitkale": { - "ICAO": "LCGK", - "elevation": "148", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "268", - "ILS": "" - }, - "09": { - "magHeading": "088", - "ILS": "108.50" - } - } - ], - "length": "9100" - } - ] - }, - "H3": { - "ICAO": "", - "elevation": "2583", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "11": { - "magHeading": "107", - "ILS": "" - }, - "29": { - "magHeading": "287", - "ILS": "" - } - } - ], - "length": "9500" - }, - { - "headings": [ - { - "24": { - "magHeading": "239", - "ILS": "" - }, - "06": { - "magHeading": "059", - "ILS": "" - } - } - ], - "length": "9800" - } - ] - }, - "H3 Northwest": { - "ICAO": "", - "elevation": "2582", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "12": { - "magHeading": "117", - "ILS": "" - }, - "30": { - "magHeading": "297", - "ILS": "" - } - } - ], - "length": "8000" - } - ] - }, - "H3 Southwest": { - "ICAO": "", - "elevation": "2671", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "12": { - "magHeading": "116", - "ILS": "" - }, - "30": { - "magHeading": "296", - "ILS": "" - } - } - ], - "length": "8000" - } - ] - }, - "H4": { - "ICAO": "OJHR", - "elevation": "2257", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "10": { - "magHeading": "098", - "ILS": "" - }, - "28": { - "magHeading": "278", - "ILS": "" - } - } - ], - "length": "8000" - } - ] - }, - "Haifa": { - "ICAO": "LLHA", - "elevation": "20", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "16": { - "magHeading": "157", - "ILS": "" - }, - "34": { - "magHeading": "337", - "ILS": "" - } - } - ], - "length": "3300" - } - ] - }, - "Hama": { - "ICAO": "OS58", - "elevation": "984", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "275", - "ILS": "" - }, - "09": { - "magHeading": "095", - "ILS": "" - } - } - ], - "length": "8600" - } - ] - }, - "Hatay": { - "ICAO": "LTDA", - "elevation": "253", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "22": { - "magHeading": "219", - "ILS": "" - }, - "04": { - "magHeading": "039", - "ILS": "108.90" - } - } - ], - "length": "9600" - } - ] - }, - "Incirlik": { - "ICAO": "LTAG", - "elevation": "230", - "TACAN": "21X", - "runways": [ - { - "headings": [ - { - "23": { - "magHeading": "229", - "ILS": "111.70" - }, - "05": { - "magHeading": "049", - "ILS": "109.30" - } - } - ], - "length": "9500" - } - ] - }, - "Jirah": { - "ICAO": "OS62", - "elevation": "1173", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "10": { - "magHeading": "095", - "ILS": "" - }, - "28": { - "magHeading": "275", - "ILS": "" - } - } - ], - "length": "9600" - } - ] - }, - "Khalkhalah": { - "ICAO": "OS69", - "elevation": "2418", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "15": { - "magHeading": "146", - "ILS": "" - }, - "33": { - "magHeading": "326", - "ILS": "" - } - } - ], - "length": "8300" - }, - { - "headings": [ - { - "25": { - "magHeading": "251", - "ILS": "" - }, - "07": { - "magHeading": "071", - "ILS": "" - } - } - ], - "length": "9500" - } - ] - }, - "Kharab Ishk": { - "ICAO": "", - "elevation": "1416", - "TACAN": "", - "runways": [] - }, - "King Hussein Air College": { - "ICAO": "OJMF", - "elevation": "2205", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "13": { - "magHeading": "127", - "ILS": "" - }, - "31": { - "magHeading": "307", - "ILS": "" - } - } - ], - "length": "9500" - } - ] - }, - "Kingsfield": { - "ICAO": "LCRE", - "elevation": "276", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "24": { - "magHeading": "238", - "ILS": "" - }, - "06": { - "magHeading": "058", - "ILS": "" - } - } - ], - "length": "3300" - } - ] - }, - "Kiryat Shmona": { - "ICAO": "LLKS", - "elevation": "360", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "21": { - "magHeading": "213", - "ILS": "" - }, - "03": { - "magHeading": "033", - "ILS": "" - } - } - ], - "length": "3500" - } - ] - }, - "Kuweires": { - "ICAO": "OS66", - "elevation": "1201", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "10": { - "magHeading": "095", - "ILS": "" - }, - "28": { - "magHeading": "275", - "ILS": "" - } - } - ], - "length": "7700" - } - ] - }, - "Lakatamia": { - "ICAO": "", - "elevation": "758", - "TACAN": "", - "runways": [] - }, - "Larnaca": { - "ICAO": "LCRE", - "elevation": "16", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "22": { - "magHeading": "223", - "ILS": "110.30" - }, - "04": { - "magHeading": "043", - "ILS": "" - } - } - ], - "length": "8800" - } - ] - }, - "London": { - "ICAO": "", - "elevation": "", - "TACAN": "", - "runways": [] - }, - "Marj as Sultan North": { - "ICAO": "", - "elevation": "2008", - "TACAN": "", - "runways": [] - }, - "Marj as Sultan South": { - "ICAO": "", - "elevation": "2008", - "TACAN": "", - "runways": [] - }, - "Marj Ruhayyil": { - "ICAO": "OS63", - "elevation": "2161", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "06L": { - "magHeading": "059", - "ILS": "" - }, - "24R": { - "magHeading": "239", - "ILS": "" - } - } - ], - "length": "9400" - }, - { - "headings": [ - { - "06R": { - "magHeading": "059", - "ILS": "" - }, - "24L": { - "magHeading": "239", - "ILS": "" - } - } - ], - "length": "8400" - } - ] - }, - "Megiddo": { - "ICAO": "LLMG", - "elevation": "180", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "268", - "ILS": "" - }, - "09": { - "magHeading": "088", - "ILS": "" - } - } - ], - "length": "6200" - } - ] - }, - "Mezzeh": { - "ICAO": "OS67", - "elevation": "2387", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "24": { - "magHeading": "236", - "ILS": "" - }, - "06": { - "magHeading": "056", - "ILS": "" - } - } - ], - "length": "8800" - } - ] - }, - "Minakh": { - "ICAO": "OS71", - "elevation": "1614", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "10": { - "magHeading": "096", - "ILS": "" - }, - "28": { - "magHeading": "276", - "ILS": "" - } - } - ], - "length": "4500" - } - ] - }, - "Naqoura": { - "ICAO": "", - "elevation": "381", - "TACAN": "", - "runways": [] - }, - "Nicosia": { - "ICAO": "", - "elevation": "722", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "09": { - "magHeading": "092", - "ILS": "" - }, - "27": { - "magHeading": "272", - "ILS": "" - } - } - ], - "length": "5791" - }, - { - "headings": [ - { - "14": { - "magHeading": "148", - "ILS": "" - }, - "27": { - "magHeading": "228", - "ILS": "" - } - } - ], - "length": "8385" - } - ] - }, - "Palmyra": { - "ICAO": "OSPR", - "elevation": "1325", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "26": { - "magHeading": "259", - "ILS": "" - }, - "08": { - "magHeading": "079", - "ILS": "" - } - } - ], - "length": "9200" - } - ] - }, - "Paphos": { - "ICAO": "LCPH", - "elevation": "40", - "TACAN": "79X", - "runways": [ - { - "headings": [ - { - "11": { - "magHeading": "109", - "ILS": "" - }, - "29": { - "magHeading": "289", - "ILS": "108.90" - } - } - ], - "length": "8600" - } - ] - }, - "Pinarbashi": { - "ICAO": "", - "elevation": "771", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "16": { - "magHeading": "167", - "ILS": "" - }, - "34": { - "magHeading": "347", - "ILS": "" - } - } - ], - "length": "3577" - } - ] - }, - "Qabr as Sitt": { - "ICAO": "", - "elevation": "2135", - "TACAN": "", - "runways": [] - }, - "Ramat David": { - "ICAO": "LLRD", - "elevation": "146", - "TACAN": "84X", - "runways": [ - { - "headings": [ - { - "11": { - "magHeading": "105", - "ILS": "" - }, - "29": { - "magHeading": "285", - "ILS": "" - } - } - ], - "length": "7700" - }, - { - "headings": [ - { - "15": { - "magHeading": "141", - "ILS": "" - }, - "33": { - "magHeading": "321", - "ILS": "111.10" - } - } - ], - "length": "7700" - }, - { - "headings": [ - { - "27": { - "magHeading": "264", - "ILS": "" - }, - "09": { - "magHeading": "084", - "ILS": "" - } - } - ], - "length": "7600" - } - ] - }, - "Rayak": { - "ICAO": "OLRA", - "elevation": "3035", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "22": { - "magHeading": "222", - "ILS": "" - }, - "04": { - "magHeading": "042", - "ILS": "" - } - } - ], - "length": "9400" - } - ] - }, - "Rene Mouawad": { - "ICAO": "OLKA", - "elevation": "23", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "24": { - "magHeading": "238", - "ILS": "" - }, - "06": { - "magHeading": "058", - "ILS": "" - } - } - ], - "length": "9000" - } - ] - }, - "Rosh Pina": { - "ICAO": "LLIB", - "elevation": "914", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "15": { - "magHeading": "147", - "ILS": "" - }, - "33": { - "magHeading": "327", - "ILS": "" - } - } - ], - "length": "2900" - }, - { - "headings": [ - { - "23": { - "magHeading": "229", - "ILS": "" - }, - "05": { - "magHeading": "049", - "ILS": "" - } - } - ], - "length": "3200" - } - ] - }, - "Ruwayshid": { - "ICAO": "", - "elevation": "2980", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "271", - "ILS": "" - }, - "09": { - "magHeading": "091", - "ILS": "" - } - } - ], - "length": "7000" - } - ] - }, - "Sanliurfa": { - "ICAO": "LTCS", - "elevation": "2703", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "22": { - "magHeading": "216", - "ILS": "" - }, - "04": { - "magHeading": "036", - "ILS": "" - } - } - ], - "length": "12900" - } - ] - }, - "Sayqal": { - "ICAO": "OS68", - "elevation": "2274", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "23": { - "magHeading": "235", - "ILS": "" - }, - "05": { - "magHeading": "055", - "ILS": "" - } - } - ], - "length": "7600" - }, - { - "headings": [ - { - "26": { - "magHeading": "265", - "ILS": "" - }, - "08": { - "magHeading": "085", - "ILS": "" - } - } - ], - "length": "9500" - } - ] - }, - "Shayrat": { - "ICAO": "OS65", - "elevation": "2638", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "11": { - "magHeading": "107", - "ILS": "" - }, - "29": { - "magHeading": "287", - "ILS": "" - } - } - ], - "length": "9300" - } - ] - }, - "Tabqa": { - "ICAO": "OS59", - "elevation": "1099", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "268", - "ILS": "" - }, - "09": { - "magHeading": "088", - "ILS": "" - } - } - ], - "length": "9300" - } - ] - }, - "Taftanaz": { - "ICAO": "", - "elevation": "", - "TACAN": "", - "runways": [] - }, - "Tal Siman": { - "ICAO": "", - "elevation": "", - "TACAN": "", - "runways": [] - }, - "Tha'lah": { - "ICAO": "OS60", - "elevation": "2414", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "23": { - "magHeading": "233", - "ILS": "" - }, - "05": { - "magHeading": "053", - "ILS": "" - } - } - ], - "length": "9500" - } - ] - }, - "Tiyas": { - "ICAO": "OS72", - "elevation": "1798", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "27": { - "magHeading": "265", - "ILS": "" - }, - "09": { - "magHeading": "085", - "ILS": "" - } - } - ], - "length": "9500" - } - ] - }, - "Wujah Al Hajar": { - "ICAO": "Z190", - "elevation": "641", - "TACAN": "", - "runways": [ - { - "headings": [ - { - "20": { - "magHeading": "204", - "ILS": "" - }, - "02": { - "magHeading": "024", - "ILS": "" - } - } - ], - "length": "4800" - } - ] - } - } +{ + "airfields": { + "Abu al-Duhur": { + "ICAO": "OS57", + "elevation": "820", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "268", + "ILS": "" + }, + "09": { + "magHeading": "088", + "ILS": "" + } + } + ], + "length": "9200" + } + ] + }, + "Adana Sakirpasa": { + "ICAO": "LTAF", + "elevation": "56", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "23": { + "magHeading": "230", + "ILS": "" + }, + "05": { + "magHeading": "050", + "ILS": "108.70" + } + } + ], + "length": "8800" + } + ] + }, + "Akrotiri": { + "ICAO": "LCRA", + "elevation": "69", + "TACAN": "107X", + "runways": [ + { + "headings": [ + { + "10": { + "magHeading": "106", + "ILS": "" + }, + "28": { + "magHeading": "286", + "ILS": "109.70" + } + } + ], + "length": "8800" + } + ] + }, + "Al Qusayr": { + "ICAO": "OS70", + "elevation": "1729", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "10": { + "magHeading": "096", + "ILS": "" + }, + "28": { + "magHeading": "276", + "ILS": "" + } + } + ], + "length": "9500" + } + ] + }, + "Al-Dumayr": { + "ICAO": "OS61", + "elevation": "2067", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "24": { + "magHeading": "240", + "ILS": "" + }, + "06": { + "magHeading": "060", + "ILS": "" + } + } + ], + "length": "9500" + } + ] + }, + "Aleppo": { + "ICAO": "OSAP", + "elevation": "1254", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "272", + "ILS": "" + }, + "09": { + "magHeading": "092", + "ILS": "" + } + } + ], + "length": "9200" + } + ] + }, + "An Nasiriyah": { + "ICAO": "OSAP", + "elevation": "1254", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "272", + "ILS": "" + }, + "09": { + "magHeading": "092", + "ILS": "" + } + } + ], + "length": "9200" + } + ] + }, + "At Tanf": { + "ICAO": "", + "elevation": "2329", + "TACAN": "", + "runways": [] + }, + "Bassel Al-Assad": { + "ICAO": "OSLK", + "elevation": "92", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "17L": { + "magHeading": "173", + "ILS": "" + }, + "35R": { + "magHeading": "353", + "ILS": "" + } + } + ], + "length": "7900" + }, + { + "headings": [ + { + "17R": { + "magHeading": "173", + "ILS": "109.10" + }, + "35L": { + "magHeading": "353", + "ILS": "" + } + } + ], + "length": "8900" + } + ] + }, + "Beirut-Rafic Hariri": { + "ICAO": "OLBA", + "elevation": "39", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "16": { + "magHeading": "164", + "ILS": "110.10" + }, + "34": { + "magHeading": "344", + "ILS": "" + } + } + ], + "length": "10300" + }, + { + "headings": [ + { + "17": { + "magHeading": "174", + "ILS": "109.50" + }, + "35": { + "magHeading": "354", + "ILS": "" + } + } + ], + "length": "7600" + }, + { + "headings": [ + { + "21": { + "magHeading": "210", + "ILS": "" + }, + "03": { + "magHeading": "030", + "ILS": "110.70" + } + } + ], + "length": "7000" + } + ] + }, + "Damascus": { + "ICAO": "OSDI", + "elevation": "2008", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "05L": { + "magHeading": "045", + "ILS": "" + }, + "23R": { + "magHeading": "225", + "ILS": "109.90" + } + } + ], + "length": "11600" + }, + { + "headings": [ + { + "05R": { + "magHeading": "045", + "ILS": "111.10" + }, + "23L": { + "magHeading": "225", + "ILS": "" + } + } + ], + "length": "11600" + } + ] + }, + "Deir ez-Zor": { + "ICAO": "OSDZ", + "elevation": "713", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "10": { + "magHeading": "104", + "ILS": "" + }, + "28": { + "magHeading": "284", + "ILS": "" + } + } + ], + "length": "9500" + } + ] + }, + "Ercan": { + "ICAO": "LCEN", + "elevation": "312", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "11": { + "magHeading": "110", + "ILS": "" + }, + "29": { + "magHeading": "290", + "ILS": "108.30" + } + } + ], + "length": "8700" + } + ] + }, + "Eyn Shemer": { + "ICAO": "LLES", + "elevation": "110", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "2750", + "ILS": "" + }, + "09": { + "magHeading": "095", + "ILS": "" + } + } + ], + "length": "4000" + } + ] + }, + "Gaziantep": { + "ICAO": "LTAJ", + "elevation": "2290", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "10": { + "magHeading": "100", + "ILS": "" + }, + "28": { + "magHeading": "280", + "ILS": "109.10" + } + } + ], + "length": "9100" + } + ] + }, + "Gazipasa": { + "ICAO": "LTFG", + "elevation": "130", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "26": { + "magHeading": "260", + "ILS": "" + }, + "08": { + "magHeading": "080", + "ILS": "108.50" + } + } + ], + "length": "7500" + } + ] + }, + "Gecitkale": { + "ICAO": "LCGK", + "elevation": "148", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "268", + "ILS": "" + }, + "09": { + "magHeading": "088", + "ILS": "108.50" + } + } + ], + "length": "9100" + } + ] + }, + "H3": { + "ICAO": "", + "elevation": "2583", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "11": { + "magHeading": "107", + "ILS": "" + }, + "29": { + "magHeading": "287", + "ILS": "" + } + } + ], + "length": "9500" + }, + { + "headings": [ + { + "24": { + "magHeading": "239", + "ILS": "" + }, + "06": { + "magHeading": "059", + "ILS": "" + } + } + ], + "length": "9800" + } + ] + }, + "H3 Northwest": { + "ICAO": "", + "elevation": "2582", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "12": { + "magHeading": "117", + "ILS": "" + }, + "30": { + "magHeading": "297", + "ILS": "" + } + } + ], + "length": "8000" + } + ] + }, + "H3 Southwest": { + "ICAO": "", + "elevation": "2671", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "12": { + "magHeading": "116", + "ILS": "" + }, + "30": { + "magHeading": "296", + "ILS": "" + } + } + ], + "length": "8000" + } + ] + }, + "H4": { + "ICAO": "OJHR", + "elevation": "2257", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "10": { + "magHeading": "098", + "ILS": "" + }, + "28": { + "magHeading": "278", + "ILS": "" + } + } + ], + "length": "8000" + } + ] + }, + "Haifa": { + "ICAO": "LLHA", + "elevation": "20", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "16": { + "magHeading": "157", + "ILS": "" + }, + "34": { + "magHeading": "337", + "ILS": "" + } + } + ], + "length": "3300" + } + ] + }, + "Hama": { + "ICAO": "OS58", + "elevation": "984", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "275", + "ILS": "" + }, + "09": { + "magHeading": "095", + "ILS": "" + } + } + ], + "length": "8600" + } + ] + }, + "Hatay": { + "ICAO": "LTDA", + "elevation": "253", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "22": { + "magHeading": "219", + "ILS": "" + }, + "04": { + "magHeading": "039", + "ILS": "108.90" + } + } + ], + "length": "9600" + } + ] + }, + "Incirlik": { + "ICAO": "LTAG", + "elevation": "230", + "TACAN": "21X", + "runways": [ + { + "headings": [ + { + "23": { + "magHeading": "229", + "ILS": "111.70" + }, + "05": { + "magHeading": "049", + "ILS": "109.30" + } + } + ], + "length": "9500" + } + ] + }, + "Jirah": { + "ICAO": "OS62", + "elevation": "1173", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "10": { + "magHeading": "095", + "ILS": "" + }, + "28": { + "magHeading": "275", + "ILS": "" + } + } + ], + "length": "9600" + } + ] + }, + "Khalkhalah": { + "ICAO": "OS69", + "elevation": "2418", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "15": { + "magHeading": "146", + "ILS": "" + }, + "33": { + "magHeading": "326", + "ILS": "" + } + } + ], + "length": "8300" + }, + { + "headings": [ + { + "25": { + "magHeading": "251", + "ILS": "" + }, + "07": { + "magHeading": "071", + "ILS": "" + } + } + ], + "length": "9500" + } + ] + }, + "Kharab Ishk": { + "ICAO": "", + "elevation": "1416", + "TACAN": "", + "runways": [] + }, + "King Hussein Air College": { + "ICAO": "OJMF", + "elevation": "2205", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "13": { + "magHeading": "127", + "ILS": "" + }, + "31": { + "magHeading": "307", + "ILS": "" + } + } + ], + "length": "9500" + } + ] + }, + "Kingsfield": { + "ICAO": "LCRE", + "elevation": "276", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "24": { + "magHeading": "238", + "ILS": "" + }, + "06": { + "magHeading": "058", + "ILS": "" + } + } + ], + "length": "3300" + } + ] + }, + "Kiryat Shmona": { + "ICAO": "LLKS", + "elevation": "360", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "21": { + "magHeading": "213", + "ILS": "" + }, + "03": { + "magHeading": "033", + "ILS": "" + } + } + ], + "length": "3500" + } + ] + }, + "Kuweires": { + "ICAO": "OS66", + "elevation": "1201", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "10": { + "magHeading": "095", + "ILS": "" + }, + "28": { + "magHeading": "275", + "ILS": "" + } + } + ], + "length": "7700" + } + ] + }, + "Lakatamia": { + "ICAO": "", + "elevation": "758", + "TACAN": "", + "runways": [] + }, + "Larnaca": { + "ICAO": "LCRE", + "elevation": "16", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "22": { + "magHeading": "223", + "ILS": "110.30" + }, + "04": { + "magHeading": "043", + "ILS": "" + } + } + ], + "length": "8800" + } + ] + }, + "London": { + "ICAO": "", + "elevation": "", + "TACAN": "", + "runways": [] + }, + "Marj as Sultan North": { + "ICAO": "", + "elevation": "2008", + "TACAN": "", + "runways": [] + }, + "Marj as Sultan South": { + "ICAO": "", + "elevation": "2008", + "TACAN": "", + "runways": [] + }, + "Marj Ruhayyil": { + "ICAO": "OS63", + "elevation": "2161", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "06L": { + "magHeading": "059", + "ILS": "" + }, + "24R": { + "magHeading": "239", + "ILS": "" + } + } + ], + "length": "9400" + }, + { + "headings": [ + { + "06R": { + "magHeading": "059", + "ILS": "" + }, + "24L": { + "magHeading": "239", + "ILS": "" + } + } + ], + "length": "8400" + } + ] + }, + "Megiddo": { + "ICAO": "LLMG", + "elevation": "180", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "268", + "ILS": "" + }, + "09": { + "magHeading": "088", + "ILS": "" + } + } + ], + "length": "6200" + } + ] + }, + "Mezzeh": { + "ICAO": "OS67", + "elevation": "2387", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "24": { + "magHeading": "236", + "ILS": "" + }, + "06": { + "magHeading": "056", + "ILS": "" + } + } + ], + "length": "8800" + } + ] + }, + "Minakh": { + "ICAO": "OS71", + "elevation": "1614", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "10": { + "magHeading": "096", + "ILS": "" + }, + "28": { + "magHeading": "276", + "ILS": "" + } + } + ], + "length": "4500" + } + ] + }, + "Naqoura": { + "ICAO": "", + "elevation": "381", + "TACAN": "", + "runways": [] + }, + "Nicosia": { + "ICAO": "", + "elevation": "722", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "09": { + "magHeading": "092", + "ILS": "" + }, + "27": { + "magHeading": "272", + "ILS": "" + } + } + ], + "length": "5791" + }, + { + "headings": [ + { + "14": { + "magHeading": "148", + "ILS": "" + }, + "27": { + "magHeading": "228", + "ILS": "" + } + } + ], + "length": "8385" + } + ] + }, + "Palmyra": { + "ICAO": "OSPR", + "elevation": "1325", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "26": { + "magHeading": "259", + "ILS": "" + }, + "08": { + "magHeading": "079", + "ILS": "" + } + } + ], + "length": "9200" + } + ] + }, + "Paphos": { + "ICAO": "LCPH", + "elevation": "40", + "TACAN": "79X", + "runways": [ + { + "headings": [ + { + "11": { + "magHeading": "109", + "ILS": "" + }, + "29": { + "magHeading": "289", + "ILS": "108.90" + } + } + ], + "length": "8600" + } + ] + }, + "Pinarbashi": { + "ICAO": "", + "elevation": "771", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "16": { + "magHeading": "167", + "ILS": "" + }, + "34": { + "magHeading": "347", + "ILS": "" + } + } + ], + "length": "3577" + } + ] + }, + "Qabr as Sitt": { + "ICAO": "", + "elevation": "2135", + "TACAN": "", + "runways": [] + }, + "Ramat David": { + "ICAO": "LLRD", + "elevation": "146", + "TACAN": "84X", + "runways": [ + { + "headings": [ + { + "11": { + "magHeading": "105", + "ILS": "" + }, + "29": { + "magHeading": "285", + "ILS": "" + } + } + ], + "length": "7700" + }, + { + "headings": [ + { + "15": { + "magHeading": "141", + "ILS": "" + }, + "33": { + "magHeading": "321", + "ILS": "111.10" + } + } + ], + "length": "7700" + }, + { + "headings": [ + { + "27": { + "magHeading": "264", + "ILS": "" + }, + "09": { + "magHeading": "084", + "ILS": "" + } + } + ], + "length": "7600" + } + ] + }, + "Rayak": { + "ICAO": "OLRA", + "elevation": "3035", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "22": { + "magHeading": "222", + "ILS": "" + }, + "04": { + "magHeading": "042", + "ILS": "" + } + } + ], + "length": "9400" + } + ] + }, + "Rene Mouawad": { + "ICAO": "OLKA", + "elevation": "23", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "24": { + "magHeading": "238", + "ILS": "" + }, + "06": { + "magHeading": "058", + "ILS": "" + } + } + ], + "length": "9000" + } + ] + }, + "Rosh Pina": { + "ICAO": "LLIB", + "elevation": "914", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "15": { + "magHeading": "147", + "ILS": "" + }, + "33": { + "magHeading": "327", + "ILS": "" + } + } + ], + "length": "2900" + }, + { + "headings": [ + { + "23": { + "magHeading": "229", + "ILS": "" + }, + "05": { + "magHeading": "049", + "ILS": "" + } + } + ], + "length": "3200" + } + ] + }, + "Ruwayshid": { + "ICAO": "", + "elevation": "2980", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "271", + "ILS": "" + }, + "09": { + "magHeading": "091", + "ILS": "" + } + } + ], + "length": "7000" + } + ] + }, + "Sanliurfa": { + "ICAO": "LTCS", + "elevation": "2703", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "22": { + "magHeading": "216", + "ILS": "" + }, + "04": { + "magHeading": "036", + "ILS": "" + } + } + ], + "length": "12900" + } + ] + }, + "Sayqal": { + "ICAO": "OS68", + "elevation": "2274", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "23": { + "magHeading": "235", + "ILS": "" + }, + "05": { + "magHeading": "055", + "ILS": "" + } + } + ], + "length": "7600" + }, + { + "headings": [ + { + "26": { + "magHeading": "265", + "ILS": "" + }, + "08": { + "magHeading": "085", + "ILS": "" + } + } + ], + "length": "9500" + } + ] + }, + "Shayrat": { + "ICAO": "OS65", + "elevation": "2638", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "11": { + "magHeading": "107", + "ILS": "" + }, + "29": { + "magHeading": "287", + "ILS": "" + } + } + ], + "length": "9300" + } + ] + }, + "Tabqa": { + "ICAO": "OS59", + "elevation": "1099", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "268", + "ILS": "" + }, + "09": { + "magHeading": "088", + "ILS": "" + } + } + ], + "length": "9300" + } + ] + }, + "Taftanaz": { + "ICAO": "", + "elevation": "", + "TACAN": "", + "runways": [] + }, + "Tal Siman": { + "ICAO": "", + "elevation": "", + "TACAN": "", + "runways": [] + }, + "Tha'lah": { + "ICAO": "OS60", + "elevation": "2414", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "23": { + "magHeading": "233", + "ILS": "" + }, + "05": { + "magHeading": "053", + "ILS": "" + } + } + ], + "length": "9500" + } + ] + }, + "Tiyas": { + "ICAO": "OS72", + "elevation": "1798", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "27": { + "magHeading": "265", + "ILS": "" + }, + "09": { + "magHeading": "085", + "ILS": "" + } + } + ], + "length": "9500" + } + ] + }, + "Wujah Al Hajar": { + "ICAO": "Z190", + "elevation": "641", + "TACAN": "", + "runways": [ + { + "headings": [ + { + "20": { + "magHeading": "204", + "ILS": "" + }, + "02": { + "magHeading": "024", + "ILS": "" + } + } + ], + "length": "4800" + } + ] + } + } } \ No newline at end of file diff --git a/client/public/databases/aircraftdatabase.json b/client/public/databases/units/aircraftdatabase.json similarity index 100% rename from client/public/databases/aircraftdatabase.json rename to client/public/databases/units/aircraftdatabase.json diff --git a/client/public/databases/groundunitdatabase.json b/client/public/databases/units/groundunitdatabase.json similarity index 100% rename from client/public/databases/groundunitdatabase.json rename to client/public/databases/units/groundunitdatabase.json diff --git a/client/public/databases/helicopterdatabase.json b/client/public/databases/units/helicopterdatabase.json similarity index 100% rename from client/public/databases/helicopterdatabase.json rename to client/public/databases/units/helicopterdatabase.json diff --git a/client/public/databases/iran-iraq_fictional/aircraftdatabase.json b/client/public/databases/units/iran-iraq_fictional/aircraftdatabase.json similarity index 100% rename from client/public/databases/iran-iraq_fictional/aircraftdatabase.json rename to client/public/databases/units/iran-iraq_fictional/aircraftdatabase.json diff --git a/client/public/databases/iran-iraq_fictional/groundunitdatabase.json b/client/public/databases/units/iran-iraq_fictional/groundunitdatabase.json similarity index 100% rename from client/public/databases/iran-iraq_fictional/groundunitdatabase.json rename to client/public/databases/units/iran-iraq_fictional/groundunitdatabase.json diff --git a/client/public/databases/iran-iraq_fictional/helicopterdatabase.json b/client/public/databases/units/iran-iraq_fictional/helicopterdatabase.json similarity index 100% rename from client/public/databases/iran-iraq_fictional/helicopterdatabase.json rename to client/public/databases/units/iran-iraq_fictional/helicopterdatabase.json diff --git a/client/public/databases/iran-iraq_fictional/navyunitdatabase.json b/client/public/databases/units/iran-iraq_fictional/navyunitdatabase.json similarity index 100% rename from client/public/databases/iran-iraq_fictional/navyunitdatabase.json rename to client/public/databases/units/iran-iraq_fictional/navyunitdatabase.json diff --git a/client/public/databases/navyunitdatabase.json b/client/public/databases/units/navyunitdatabase.json similarity index 100% rename from client/public/databases/navyunitdatabase.json rename to client/public/databases/units/navyunitdatabase.json diff --git a/client/public/stylesheets/olympus.css b/client/public/stylesheets/olympus.css index 25b77890..fabc3105 100644 --- a/client/public/stylesheets/olympus.css +++ b/client/public/stylesheets/olympus.css @@ -1074,10 +1074,6 @@ dl.ol-data-grid { row-gap: 4px; } -dl.ol-data-grid dd { - width: 60%; -} - dl.ol-data-grid dt.icon { text-indent: 10px; } diff --git a/client/public/stylesheets/other/contextmenus.css b/client/public/stylesheets/other/contextmenus.css index 8ba2c64d..e292bf95 100644 --- a/client/public/stylesheets/other/contextmenus.css +++ b/client/public/stylesheets/other/contextmenus.css @@ -148,7 +148,7 @@ } #aircaft-loadout-list, -#helicopter-loadout-list { +#helicopter-loadout-list { align-content: center; display: flex; flex-direction: column; @@ -156,7 +156,7 @@ } #aircraft-unit-image, -#helicopter-unit-image { +#helicopter-unit-image { filter: invert(100%); height: 100px; margin-bottom: 10px; @@ -210,10 +210,10 @@ } .ol-context-menu .ol-slider-value { - color: var(--accent-light-blue); - cursor: pointer; - font-size: 14px; - font-weight: bold; + color: var(--accent-light-blue); + cursor: pointer; + font-size: 14px; + font-weight: bold; } .ol-context-menu .ol-slider-container { @@ -449,36 +449,41 @@ } /* Airbase context menu */ -#airbase-contextmenu #airbase-runways { - display:flex; - flex-direction: column; - row-gap:4px; +#airbase-chart-data dd { + width: 60%; + font-weight: bold; } -#airbase-contextmenu #airbase-runways > .runway { - border:1px solid #ccc; - display:flex; +#airbase-runways { + display: flex; + flex-direction: column; + row-gap: 4px; +} + +#airbase-runways>.runway { + border: 1px solid #ccc; + display: flex; flex-direction: row; justify-content: space-between; } -#airbase-contextmenu #airbase-runways > .runway abbr { - cursor:help; +#airbase-runways>.runway abbr { + cursor: help; text-decoration: none; } -#airbase-contextmenu #airbase-runways > .runway > .heading { +#airbase-runways>.runway>.heading { align-items: center; column-gap: 4px; - display:flex; + display: flex; flex-direction: row; } -#airbase-contextmenu #airbase-runways > .runway > .heading > abbr { - font-weight: var( --font-weight-bolder ); - padding:4px; +#airbase-runways>.runway>.heading>abbr { + font-weight: var(--font-weight-bolder); + padding: 4px; } -#airbase-contextmenu #airbase-runways > .runway > .heading:last-of-type { +#airbase-runways>.runway>.heading:last-of-type { flex-direction: row-reverse; } \ No newline at end of file diff --git a/client/routes/api/airbases.js b/client/routes/api/airbases.js index e283040f..1c12bae8 100644 --- a/client/routes/api/airbases.js +++ b/client/routes/api/airbases.js @@ -15,68 +15,46 @@ const allowedTheatres = [ "syria" ]; - function getAirbasesData( theatreName ) { - if ( !isValidTheatre( theatreName ) ) { return false; } - return JSON.parse( fs.readFileSync( `src/airfields/${theatreName}.json` ) ).airfields - + return JSON.parse( fs.readFileSync( `public/databases/airbases/${theatreName}.json` ) ).airfields } - function isValidTheatre( theatre ) { - return ( allowedTheatres.indexOf( theatre ) > -1 ) - } - function sendInvalidTheatre( res ) { - res.status( 400 ).send( "Missing/invalid theatre name; must be one of:\n\t" + allowedTheatres.join( "\n\t" ) ); - } - /**************************************************************************************************************/ // Endpoints /**************************************************************************************************************/ - - - app.get( "/", ( req, res ) => { - sendInvalidTheatre( res ); - }); - app.get( "/:theatreName/:airbaseName", ( req, res ) => { - const airbases = getAirbasesData( req.params.theatreName ); - if ( !airbases ) { sendInvalidTheatre( res ); return; } const airbaseName = req.params.airbaseName; - if ( !airbases.hasOwnProperty( airbaseName ) ) { res.status( 404 ).send( `Unknown airbase name "${airbaseName}". Available options are:\n\t` + Object.keys( airbases ).join( "\n\t" ) ); } else { res.status( 200 ).json( airbases[ airbaseName ] ); } - - }); app.get( "/:theatreName", ( req, res ) => { - const theatreName = req.params.theatreName.toLowerCase().replace( /\s*/g, "" ); const airbases = getAirbasesData( theatreName ); @@ -86,9 +64,6 @@ app.get( "/:theatreName", ( req, res ) => { } res.status( 200 ).json( airbases ); - }); - - module.exports = app; \ No newline at end of file diff --git a/client/src/@types/unit.d.ts b/client/src/@types/unit.d.ts index 94bb0e7d..aced0a44 100644 --- a/client/src/@types/unit.d.ts +++ b/client/src/@types/unit.d.ts @@ -9,7 +9,7 @@ interface ObjectIconOptions { showFuel: boolean, showAmmo: boolean, showSummary: boolean, - showCallsign: boolean, + showCallsign: boolean, rotateToHeading: boolean } @@ -48,7 +48,7 @@ interface Contact { } interface Offset { - x: number, - y: number, + x: number, + y: number, z: number } \ No newline at end of file diff --git a/client/src/mission/airbase.ts b/client/src/mission/airbase.ts index 35fbdc98..e1477acd 100644 --- a/client/src/mission/airbase.ts +++ b/client/src/mission/airbase.ts @@ -2,8 +2,7 @@ import { DivIcon } from 'leaflet'; import { CustomMarker } from '../map/custommarker'; import { SVGInjector } from '@tanem/svg-injector'; -export interface AirbaseOptions -{ +export interface AirbaseOptions { name: string, position: L.LatLng } @@ -28,8 +27,7 @@ export interface AirbaseChartRunwayHeadingData { } } -export class Airbase extends CustomMarker -{ +export class Airbase extends CustomMarker { #name: string = ""; #chartData: AirbaseChartData = { elevation: "", @@ -38,12 +36,11 @@ export class Airbase extends CustomMarker runways: [] }; #coalition: string = ""; - #hasChartDataBeenSet:boolean = false; + #hasChartDataBeenSet: boolean = false; #properties: string[] = []; #parkings: string[] = []; - constructor(options: AirbaseOptions) - { + constructor(options: AirbaseOptions) { super(options.position, { riseOnHover: true }); this.#name = options.name; @@ -54,12 +51,12 @@ export class Airbase extends CustomMarker } createIcon() { - var icon = new DivIcon({ + var icon = new DivIcon({ className: 'leaflet-airbase-marker', iconSize: [40, 40], iconAnchor: [20, 20] - }); // Set the marker, className must be set to avoid white square - this.setIcon(icon); + }); // Set the marker, className must be set to avoid white square + this.setIcon(icon); var el = document.createElement("div"); el.classList.add("airbase-icon"); @@ -72,55 +69,45 @@ export class Airbase extends CustomMarker el.dataset.coalition = this.#coalition; } - setCoalition(coalition: string) - { + setCoalition(coalition: string) { this.#coalition = coalition; - ( this.getElement()?.querySelector(".airbase-icon")).dataset.coalition = this.#coalition; + (this.getElement()?.querySelector(".airbase-icon")).dataset.coalition = this.#coalition; } - getChartData() - { + getChartData() { return this.#chartData; } - getCoalition() - { + getCoalition() { return this.#coalition; } - setName(name: string) - { + setName(name: string) { this.#name = name; } - getName() - { + getName() { return this.#name; } - setChartData( chartData:AirbaseChartData ) - { + setChartData(chartData: AirbaseChartData) { this.#hasChartDataBeenSet = true; - this.#chartData = chartData; + this.#chartData = chartData; } - setProperties(properties: string[]) - { + setProperties(properties: string[]) { this.#properties = properties; } - getProperties() - { + getProperties() { return this.#properties; } - setParkings(parkings: string[]) - { + setParkings(parkings: string[]) { this.#parkings = parkings; } - getParkings() - { + getParkings() { return this.#parkings; } } \ No newline at end of file diff --git a/client/src/mission/missionhandler.ts b/client/src/mission/missionhandler.ts index ebadaa82..301f312a 100644 --- a/client/src/mission/missionhandler.ts +++ b/client/src/mission/missionhandler.ts @@ -49,17 +49,18 @@ export class MissionHandler { updateAirbases(data: AirbasesData) { for (let idx in data.airbases) { var airbase = data.airbases[idx] - if (this.#airbases[idx] === undefined && airbase.callsign != '') { - this.#airbases[idx] = new Airbase({ + if (this.#airbases[airbase.callsign] === undefined && airbase.callsign != '') { + this.#airbases[airbase.callsign] = new Airbase({ position: new LatLng(airbase.latitude, airbase.longitude), name: airbase.callsign }).addTo(getMap()); - this.#airbases[idx].on('contextmenu', (e) => this.#onAirbaseClick(e)); + this.#airbases[airbase.callsign].on('contextmenu', (e) => this.#onAirbaseClick(e)); + this.#loadAirbaseChartData(airbase.callsign); } - if (this.#airbases[idx] != undefined && airbase.latitude && airbase.longitude && airbase.coalition) { - this.#airbases[idx].setLatLng(new LatLng(airbase.latitude, airbase.longitude)); - this.#airbases[idx].setCoalition(airbase.coalition); + if (this.#airbases[airbase.callsign] != undefined && airbase.latitude && airbase.longitude && airbase.coalition) { + this.#airbases[airbase.callsign].setLatLng(new LatLng(airbase.latitude, airbase.longitude)); + this.#airbases[airbase.callsign].setCoalition(airbase.coalition); } } } @@ -72,8 +73,6 @@ export class MissionHandler { this.#theatre = data.mission.theatre; getMap().setTheatre(this.#theatre); getInfoPopup().setText("Map set to " + this.#theatre); - - this.#loadAirbaseChartData(); } /* Set the date and time data */ @@ -235,32 +234,23 @@ export class MissionHandler { getMap().showAirbaseContextMenu(e.originalEvent.x, e.originalEvent.y, e.latlng, e.sourceTarget); } - #loadAirbaseChartData() { + #loadAirbaseChartData(callsign: string) { if ( !this.#theatre ) { return; } - - fetch( '/api/airbases/' + this.#theatre , { - method: 'GET', - headers: { - 'Accept': '*/*', - 'Content-Type': 'application/json' + + var xhr = new XMLHttpRequest(); + xhr.open('GET', `api/airbases/${this.#theatre.toLowerCase()}/${callsign}`, true); + xhr.responseType = 'json'; + xhr.onload = () => { + var status = xhr.status; + if (status === 200) { + const data = xhr.response; + this.getAirbases()[callsign].setChartData(data); + } else { + console.error(`Error retrieving data for ${callsign} airbase`) } - }) - .then( response => response.json() ) - .then( data => { - - for ( const [ id, airbase ] of Object.entries( this.#airbases ) ) { - - let airbaseName = airbase.getName(); - - if ( data.hasOwnProperty( airbaseName ) ) { - airbase.setChartData( data[ airbaseName ] ); - } else { - console.error( `Airbase "${airbaseName}" not found in chart data.` ); - } - } - - }); + }; + xhr.send(); } } \ No newline at end of file diff --git a/client/src/unit/aircraftdatabase.ts b/client/src/unit/aircraftdatabase.ts index f7781ef3..d3f4e5cb 100644 --- a/client/src/unit/aircraftdatabase.ts +++ b/client/src/unit/aircraftdatabase.ts @@ -4,7 +4,7 @@ import { UnitDatabase } from "./unitdatabase" export class AircraftDatabase extends UnitDatabase { constructor() { - super('databases/aircraftdatabase.json'); + super('databases/units/aircraftdatabase.json'); } getCategory() { diff --git a/client/src/unit/groundunitdatabase.ts b/client/src/unit/groundunitdatabase.ts index ea17316d..2a8d7c5f 100644 --- a/client/src/unit/groundunitdatabase.ts +++ b/client/src/unit/groundunitdatabase.ts @@ -4,7 +4,7 @@ import { UnitDatabase } from "./unitdatabase" export class GroundUnitDatabase extends UnitDatabase { constructor() { - super('databases/groundunitdatabase.json'); + super('databases/units/groundunitdatabase.json'); } getSpawnPointsByName(name: string) { diff --git a/client/src/unit/helicopterdatabase.ts b/client/src/unit/helicopterdatabase.ts index 362de71b..031e9ad8 100644 --- a/client/src/unit/helicopterdatabase.ts +++ b/client/src/unit/helicopterdatabase.ts @@ -4,7 +4,7 @@ import { UnitDatabase } from "./unitdatabase" export class HelicopterDatabase extends UnitDatabase { constructor() { - super('databases/helicopterdatabase.json'); + super('databases/units/helicopterdatabase.json'); } getSpawnPointsByName(name: string) { diff --git a/client/src/unit/navyunitdatabase.ts b/client/src/unit/navyunitdatabase.ts index 5e5f7cde..5f113943 100644 --- a/client/src/unit/navyunitdatabase.ts +++ b/client/src/unit/navyunitdatabase.ts @@ -4,7 +4,7 @@ import { UnitDatabase } from "./unitdatabase" export class NavyUnitDatabase extends UnitDatabase { constructor() { - super('databases/navyunitdatabase.json'); + super('databases/units/navyunitdatabase.json'); } getSpawnPointsByName(name: string) {