From e61b319580251bd8eaeaec0d27123e1eae3307cd Mon Sep 17 00:00:00 2001 From: Dslak Date: Fri, 29 Nov 2019 12:52:41 +0100 Subject: [PATCH] add dictionary --- .../App/assets/{passed.jpg => bg_green.jpg} | Bin vds-app/App/assets/{error.jpg => bg_red.jpg} | Bin .../App/assets/{unsafe.jpg => bg_yellow.jpg} | Bin vds-app/App/assets/check.png | Bin 1207 -> 0 bytes vds-app/App/assets/close.png | Bin 1121 -> 0 bytes vds-app/App/components/Button.js | 25 +- vds-app/App/components/Variables.js | 11 +- vds-app/App/data/dictionary.js | 932 ++++++++++++++++++ vds-app/App/index.js | 11 +- vds-app/App/screens/Dictionary.js | 238 +++++ vds-app/App/screens/Info.js | 10 +- vds-app/App/screens/Splash.js | 15 +- 12 files changed, 1223 insertions(+), 19 deletions(-) rename vds-app/App/assets/{passed.jpg => bg_green.jpg} (100%) rename vds-app/App/assets/{error.jpg => bg_red.jpg} (100%) rename vds-app/App/assets/{unsafe.jpg => bg_yellow.jpg} (100%) delete mode 100644 vds-app/App/assets/check.png delete mode 100644 vds-app/App/assets/close.png create mode 100644 vds-app/App/data/dictionary.js create mode 100644 vds-app/App/screens/Dictionary.js diff --git a/vds-app/App/assets/passed.jpg b/vds-app/App/assets/bg_green.jpg similarity index 100% rename from vds-app/App/assets/passed.jpg rename to vds-app/App/assets/bg_green.jpg diff --git a/vds-app/App/assets/error.jpg b/vds-app/App/assets/bg_red.jpg similarity index 100% rename from vds-app/App/assets/error.jpg rename to vds-app/App/assets/bg_red.jpg diff --git a/vds-app/App/assets/unsafe.jpg b/vds-app/App/assets/bg_yellow.jpg similarity index 100% rename from vds-app/App/assets/unsafe.jpg rename to vds-app/App/assets/bg_yellow.jpg diff --git a/vds-app/App/assets/check.png b/vds-app/App/assets/check.png deleted file mode 100644 index 3b24fa062834cb08796c2127f14b9e42ab69fa9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1207 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Skqtd zQ1`i6;(euahv1=gx?0}M%sxWyH!|jge+gbMJ=dRIF?vI!bBt;{|DF!HXR!w-OD&y! z=*c6>3y|jf(|A$yo)CZ=6OzL+JHs86x=AUKH82ZPmZOdcU zChIk!hwVSH>I>MElqnv_y$@72;qt5t^Q$+1yZP{T&2es)wMI3n+?It3ZacqTs-7mi z$Kk_~EYEr0dCiX}*Uh?hZq`TFmfA!1%Q;p&*u1cG8q;Ft>$QjWFUe@#Ft@*L-nx=M zZvE2htn3~hDv63W`Mc-B!{86TiObGR=+Iu-cir+J^Oa??FV!aZ_F5ihZu70PXK4(6 zF)gs~!{JTKuRgf(^2qrq>x1=UXZ=i;uw)E)RB+)NzkWwBk9yIR-^!8|jSng&MD^~J zf4)NH``J6mdtIx2CuntUtoPaYg3JDx;xpC%|MscMl^x_h9dIs?f66C6%O8vNn&)3I z{E^gofA^;kX-B6|xqBsgOJ$zaBD0DHT`s+fquhr+To>ctFqPl#A***9`y-hR23yW< znY!xfzME>_Gx=Q3C~g#a9JY#EpCj37B?q4u&$|r;2l?KM{JH9x5!YrYrQ+uObBUzB z#L-7`5{m;B1wXAUj{tI8^19P1MJDOJILN)uadoPDixuaBIqRdE=3fx|StgS>pCxD+ z?|vV{151`v-%H(jHueK+)5jyt%$FEv=DW`Qadmc4^I3sV@jVY*v*!8U+V!9&E*@t&z3oBjv6oZjUg&Oq6V{cvXqN4pB{O`VFz$~~I8=R4D5+(Ib@6}3f|%0= z*Pbt41?)FK#IZ0z|d0H&`{UFFvQT@%EZXZ&|KTVz{LOo8 z6b-rgDVb@NxHUZa|8*}=gCxj?;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1ST NJYD@<);T3K0RT*X4TAsx diff --git a/vds-app/App/assets/close.png b/vds-app/App/assets/close.png deleted file mode 100644 index b98c2af130a91a3763aa5b43ea480c3a40ae14e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1121 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Skk}L(a=bpl zNv0v7(Q1}MVd8}jqnE2TD@k3Pp<#H;V#Wu-aHWY7PRxcE@4B!G-{tI?#r0xA;1qu5 zC7jFwKQA%LR>{WAug#6W|Mx|%WqQ`{{m=i`KfiOY`2OD17q=4674&fUUJ3M7{V+S$ z?8iZ+`IV=4mARy5r_OlK(OIv2O7r%Wt6w&0EdBP2$u{JsqWux&ZCg*o-cM=>NPO}% zCjD&3ov-unJZ{je6*gv_xZBS4NXx#ty4qiu4(eSm3I2aWYUgX^DXTAq8)VImQ>ZxX zX!`5pq6^$Ck3&vO{=X^%sBFd>fp6LKt;Lz%6kUAD+O+!T3*|RcTn^~>{R+Q-ZqwpN z!F9$D%TB&vZ913pOF&vxbi#sbzI&3tuMCb|z9vF9_Fn&0E?)CvEY)Jg8=l_P|Kjy9 zoFPL^&vo4;KW1}Lxs}$s4%=>5{+GY0Fi~K+V(XhJTrw|OlTo>#=`>2cZFWg(9) zUr7YloyC!kP1ECYLuHE=e43kAR$$M0vm>;1#b$=YNnV@H{1&%A;P7tTucv*~N2sma z>%s$_6Q3ua*LT=&WDzfRX5PJzb`qBxetT-P#C>40%i=xZyFK%h?0m;+k20|{^WzjE z8hzh7{uAX@>@n)9pbngi^)RkQ04XPVq+ zE}lO3ft=#!=N}d*RPE0%Rr%sLyYN%4$>Pre`8WEeGuMZncA8|cBF`g5_qfX;adw%h zOxLFb&57(tYxVuJfZ0})^QlG8o z-Eu7Vm^g3xX04MGV(`dWy#J&6_I&G#U#+dlxnk>c%9_&a?6S9PF*#~f#u*hB_F-%6q6yj7$DM3UbdIV0 z-Kl&0%&He@aosh2dRlKMEMMEIn5H`Whf2Jp&-ft{|oj+HVts-Bg0CSUSiEBhjN@7W>RdP`(kYX@0FtpS)G}JXP3^6pfGBLC= zGSW6Mure@Mq;$^>MMG|WN@iLmZVi{~(?EG$5@bVgep*R+Vo@qXd3m{BW?pu2a$-TM XUVc&f>~}U&Kt&9mu6{1-oD!M<%LdvE diff --git a/vds-app/App/components/Button.js b/vds-app/App/components/Button.js index 6422a01..c78e45d 100644 --- a/vds-app/App/components/Button.js +++ b/vds-app/App/components/Button.js @@ -9,7 +9,7 @@ const styles = StyleSheet.create({ borderColor: 'transparent', borderRadius: 10, paddingHorizontal: 10, - paddingVertical: 10, + paddingVertical: 13, alignItems: "center", justifyContent: "center", width: "100%", @@ -29,15 +29,19 @@ const styles = StyleSheet.create({ flexDirection: "row", flexWrap: "wrap", marginTop: 20, - justifyContent: "space-between" + justifyContent: "space-between", + overflow: "hidden", + borderRadius: 10 } }) -export const Button = ({ text, subtitle = null, isBig = false, colorize = false, color = false, onPress = () => {} }) => { +export const Button = ({ text, subtitle = null, isBig = false, colorize = false, color = false, noPadding = false, noBorder = false, onPress = () => {} }) => { const buttonBig = isBig ? {fontSize: 25} : {} const isClicked = colorize.clicked == colorize.id let buttonColor = {backgroundColor: colors.white_alpha} + let planeButton = noPadding ? { borderRadius: 0, marginTop: 0, borderWidth: 0, borderBottomWidth: 1, borderColor: colors.white_alpha} : {} + let noBorderButton = noBorder ? { borderWidth: 0, borderBottomWidth: 0} : {} if(colorize && colorize.answered) { @@ -56,14 +60,14 @@ export const Button = ({ text, subtitle = null, isBig = false, colorize = false, if(subtitle) { return ( - + {text} {subtitle} ) } else { return ( - + {text} ) @@ -71,6 +75,11 @@ export const Button = ({ text, subtitle = null, isBig = false, colorize = false, } -export const ButtonContainer = ({ children }) => ( - {children} -) +export const ButtonContainer = ({ children, isBoxed = false}) => { + + let boxedStyle = isBoxed ? {borderWidth: 3, borderColor: colors.white_alpha2} : {} + + return ( + {children} + ) +} diff --git a/vds-app/App/components/Variables.js b/vds-app/App/components/Variables.js index e59fbc9..92704f8 100644 --- a/vds-app/App/components/Variables.js +++ b/vds-app/App/components/Variables.js @@ -1,6 +1,7 @@ export const colors = { white: "#fff", white_alpha: "rgba(255, 255, 255, 0.3)", + white_alpha2: "rgba(255, 255, 255, 0.5)", black: "#000", black_alpha: "rgba(0, 0, 0, 0.1)", purple: "#8c0072", @@ -15,7 +16,8 @@ export const colors = { green_light: "#6cc155", yellow: "#e1ff3c", yellow_alpha: "rgba(225, 255, 60, 0.9)", - orange: "#dd732d" + orange: "#dd732d", + transparent: "transparent" } export const texts = { @@ -43,7 +45,12 @@ export const texts = { restart: "Ricomincia!", recap: "Visualizza errori", recapTitle: "Riepilogo domande sbagliate", - infoTitle: "Informazioni", + infoTitle: "Informazioni App", + dictionaryTitle: "Terminologia", + dictionarySubtitle: "Dizionario ICAO e abbreviazioni", + alphabethTitle: "Alfabeto ICAO", + abbreviationsTitle: "Abbreviazioni", + numbersTitle: "Numeri ICAO", version: "Versione", author: "Autore", exit: "Esci", diff --git a/vds-app/App/data/dictionary.js b/vds-app/App/data/dictionary.js new file mode 100644 index 0000000..fbd56a4 --- /dev/null +++ b/vds-app/App/data/dictionary.js @@ -0,0 +1,932 @@ +export const abbreviations = [ + { + "k": "ACC", + "v": "Area Control Centre. Area di controllo" + }, + { + "k": "ADR", + "v": "Advisory Route Rotta a servizio consultivo" + }, + { + "k": "AFS", + "v": "Aeronautical Fixed Service. Servizio di informazioni volo fisso" + }, + { + "k": "AIP", + "v": "Aeronautical Information Pubblications Pubblicazioni aeronautiche di informazione" + }, + { + "k": "AIRMET", + "v": "AIRman's METeorological Information / Informazione Meteorologica per il personale navigante degli aeromobili" + }, + { + "k": "ALERFA", + "v": "Alerting phase. Fase di allerta" + }, + { + "k": "ALS", + "v": "Appopoach lightning system. Sentiero luminoso di avvicinamento." + }, + { + "k": "ALT", + "v": "Altitude Altitudine" + }, + { + "k": "ALTN", + "v": "Alternate aerodrome Aerporto alternato" + }, + { + "k": "AMSL", + "v": "Above mean sea level. Al di sopra del livello medio del mare" + }, + { + "k": "AOC", + "v": "Aerodrome obstruction chart. Carta degli ostacoli aeroportuali" + }, + { + "k": "APP", + "v": "Approach controlo office. Ufficio di controllo di avvicinamento o allontanamento da una zona controllata" + }, + { + "k": "APRON", + "v": "A defined area intended to accomodate aircraft. Area predisposta per il parcheggio aeromobili" + }, + { + "k": "ARO", + "v": "Air traffic services reporting office. Ufficio informazioni dei servizi del T.A." + }, + { + "k": "ARR", + "v": "Arrive o arrival. Arrivo" + }, + { + "k": "ASMI", + "v": "Aerodrome surface movement. Indicatore dei movimenti a terra degli aeromobili" + }, + { + "k": "ATA", + "v": "Actual time of arrival. Orario effettivo di arrivo" + }, + { + "k": "ATC", + "v": "Air traffic control in general. Controllo del traffico aereo" + }, + { + "k": "ATD", + "v": "Actual time of departure. Orario effettivo di partenza" + }, + { + "k": "ATIS", + "v": "Automatic terminal infornation service. Servizio automatico informaz. terminali:di aeroporto o zona" + }, + { + "k": "ATS", + "v": "Air Traffic Service Servizio di" + }, + { + "k": "ATZ", + "v": "Air Traffic Zone Zona di traffico di aerodromo" + }, + { + "k": "AWY", + "v": "Airway. Aerovia" + }, + { + "k": "BA", + "v": "Braking action. Azione frenante" + }, + { + "k": "BASE", + "v": "Cloud base. Base delle nubi" + }, + { + "k": "BDRY", + "v": "Boundry Confine - delimitazione" + }, + { + "k": "CA", + "v": "Control Area. Area di controllo" + }, + { + "k": "CFM", + "v": "Confirm. Confermate" + }, + { + "k": "CHG", + "v": "Modification message. Messaggio di modifica" + }, + { + "k": "CNL", + "v": "Cancel message. Messaggio di cancellazione" + }, + { + "k": "CTA", + "v": "Control arca. Area di controllo" + }, + { + "k": "CTR", + "v": "Control Zone. Zona controllata con limiti ben specifici" + }, + { + "k": "CPL", + "v": "Current flight plan. Piano di volo in vigore" + }, + { + "k": "CTN", + "v": "Caution Precauzione" + }, + { + "k": "CWY", + "v": "Clearway. Area libera da ostacoli" + }, + { + "k": "D", + "v": "Danger area. Area Pericolosa" + }, + { + "k": "DA/DH", + "v": "Decion altutude/height. Altitudine/altezza di decisione" + }, + { + "k": "DCA", + "v": "Jurisditional aerodrome authority. Direzione circoscrizionale aeroportuale" + }, + { + "k": "DCT", + "v": "Direct in relation to flight plan clearance. Diretto relativo ad autorizzazioni ATC and type of approach. ed a tipo di avvicinamento" + }, + { + "k": "DEP", + "v": "Departure message. Messaggio di partenza" + }, + { + "k": "DEST", + "v": "Destination. Destinazione" + }, + { + "k": "DETRESFA", + "v": "Distress fase. Fase di pericolo" + }, + { + "k": "DEP", + "v": "Departure message. Messaggio di partenza" + }, + { + "k": "DLA", + "v": "Delay message. Messaggio di ritardo" + }, + { + "k": "DME", + "v": "Distance measuring equipment. Apparato misuratore di distanza" + }, + { + "k": "DR", + "v": "Dead reckoning. Navigazione stimata" + }, + { + "k": "DVOR", + "v": "Doppler VOR. VOR doppler terminale" + }, + { + "k": "EAT", + "v": "Expect approach time. Orario previsto di avvicinamento" + }, + { + "k": "EET", + "v": "Estimated elapsed time. Durata stimata del volo" + }, + { + "k": "EFAS", + "v": "Electronic flashing approach system. Lampeggiatore elettronico di avvicinamento." + }, + { + "k": "ELBA", + "v": "Emergency location beacon-aircraft. Radiofaro di bordo per localizzazione di un aeromobile in emergenza" + }, + { + "k": "ELT", + "v": "Emergency locator transmitter. Trasmettitore di bordo per la localizzazione di emergenza" + }, + { + "k": "ELV", + "v": "Elevation. Altitudine o elevazione" + }, + { + "k": "END", + "v": "End of runway. Fine pista" + }, + { + "k": "EOBT", + "v": "Estimated Off Block Time. Tempo stimato di movimento di un aeromobile" + }, + { + "k": "EQPT", + "v": "Equipment. Equipaggiamento o dotazione" + }, + { + "k": "EST", + "v": "Estimate time over significant point. Ora stimata su un punto significativo" + }, + { + "k": "ETA", + "v": "Estimated time of arrival. Orario stimato di arrivo" + }, + { + "k": "ETD", + "v": "Estimated time of departure. Orario stimato di partenza" + }, + { + "k": "FAF", + "v": "Final approach fix. Fix lungo l'avvicinamento finale" + }, + { + "k": "FAP", + "v": "Final approach point. Punto di avvicinamento finale" + }, + { + "k": "FCST", + "v": "Forecast. Previsione" + }, + { + "k": "FIC", + "v": "Flight Information centre. Centro informazioni volo" + }, + { + "k": "FIR", + "v": "Flight Information Region Regione di informazione voli" + }, + { + "k": "FIS", + "v": "Flight information service. Servizio informazioni volo" + }, + { + "k": "FL", + "v": "Flight Level. Livello di volo" + }, + { + "k": "FLP", + "v": "Filed flight plan. Piano di volo compilato" + }, + { + "k": "FREQ", + "v": "Frequency. Frequenza" + }, + { + "k": "G/A/G", + "v": "Ground-to-air- and air-to ground. Terra-aria-terra T/B/T-Terra/bordo/terra" + }, + { + "k": "GND", + "v": "Ground. Suolo o terreno" + }, + { + "k": "GP", + "v": "Glide path. Sentiero di discesa" + }, + { + "k": "GRASS", + "v": "Grass landing aerea. Zona erbosa di atterraggio" + }, + { + "k": "GS", + "v": "Ground speed. Velocit" + }, + { + "k": "H 24", + "v": "Continuous day and night service. Servizio continuativo di giorno e di notte" + }, + { + "k": "HBN", + "v": "Azard beacon. Faro di pericolo" + }, + { + "k": "HDF", + "v": "Hight frequency direction-finding.station. Stazione radiogoniometrica ad alta freq." + }, + { + "k": "HDG", + "v": "Heading Prua" + }, + { + "k": "HF", + "v": "High frequency. Alta frequenza" + }, + { + "k": "HGT", + "v": "Height or height above. Altezza" + }, + { + "k": "HJ", + "v": "Sunrise to sunset. Dall'alba al tramonto" + }, + { + "k": "HJ ", + "v": "From half an hour before sunrise Da mezz'ora prima del sorgere del sole to half an hour after sunset a mezz'ora dopo il tramonto" + }, + { + "k": "HN", + "v": "From half an hour after sunset Da mezz'ora dopo il tramonto to half an hour before sunrise a mezz'ora prima del sorgere del sole" + }, + { + "k": "HOSP", + "v": "Hospital aireraft. Aereoambulanza" + }, + { + "k": "HP", + "v": "Holding Point Punto di attesa9" + }, + { + "k": "HPA", + "v": "Hectopascal" + }, + { + "k": "HR", + "v": "Hours of service. Orario di servizio" + }, + { + "k": "HX", + "v": "No specific working hours. Orario di servizio non specificato" + }, + { + "k": "IAF", + "v": "Initial approach fix. F" + }, + { + "k": "IAL", + "v": "Instrument approach and landing chart. Carta di avvicinamento strument/atterrag." + }, + { + "k": "IAS", + "v": "Indicated air speed. Velocit" + }, + { + "k": "IBN", + "v": "Identification beacon. Faro di identificazione" + }, + { + "k": "IF", + "v": "Intermediate approach fix. Fix di avvicinamento intermedio" + }, + { + "k": "IFR", + "v": "Instrument Flight Rules Regole del volo strumentale" + }, + { + "k": "ILS", + "v": "Instrument landing system. Sistema di atterraggio strumentale" + }, + { + "k": "IMC", + "v": "Instrument Metereological Conditions. Condizioni metereologiche strumentali" + }, + { + "k": "INCERFA", + "v": "Uncertainly fase. Fase di incertezza" + }, + { + "k": "INFO", + "v": "Informations. Informazione o per conoscenza" + }, + { + "k": "INOP", + "v": "Inoperative. Non operativo" + }, + { + "k": "INS", + "v": "Inches. Pollici unit" + }, + { + "k": "INS", + "v": "Inertial navigation system. Sistema di navigazione inerziale" + }, + { + "k": "KHZ", + "v": "Kiloherts." + }, + { + "k": "KMH", + "v": "Kilometres per hours. Chilometri per ora" + }, + { + "k": "KT", + "v": "Knots. Nodi, velocit" + }, + { + "k": "L", + "v": "Locator. Radiofaro locatore" + }, + { + "k": "LAT", + "v": "Latitude. Latitudine" + }, + { + "k": "MA", + "v": "Missed approch. Mancato avvicinamento" + }, + { + "k": "MA", + "v": "Movement Area Area di movimento" + }, + { + "k": "MSA", + "v": "Minimum safe altitude. Altitudine minima di sicurezza" + }, + { + "k": "MSG", + "v": "Message. Messaggio" + }, + { + "k": "MSI", + "v": "Mean sea level. Livello medio del mare" + }, + { + "k": "MAINT", + "v": "Maintenance. Manutenzione" + }, + { + "k": "MAP", + "v": "Aeronautical maps and chart. Carte e mappe aeronautiche" + }, + { + "k": "MAPT", + "v": "Missed approach point time. Puntoorario di mancato avvicinamento" + }, + { + "k": "MCA", + "v": "Minimum crossing altitude. Altitudine minima di attraversamento" + }, + { + "k": "MCL", + "v": "Minimum crossing level. Livello minimo di attraversamento" + }, + { + "k": "MDA", + "v": "Minimum descent altitude. Altitudine minima di discesa" + }, + { + "k": "MDH", + "v": "Minimum descent height. Altezza minima di discesa" + }, + { + "k": "METAR", + "v": "METeorological Air Report" + }, + { + "k": "MEA", + "v": "Minimum enroute altitude. Altitudine minima di rotta" + }, + { + "k": "MEL", + "v": "Minimum enroute level. Livello minimo di rotta" + }, + { + "k": "MET", + "v": "Meteorogical or meteorology. Meteorologico o meteorologia" + }, + { + "k": "MF", + "v": "Medium frequency. Frequenza media da 300 a 3000 Khz" + }, + { + "k": "MLS", + "v": "Microwawe landing system. Sistema di atterraggio strum. a microonde" + }, + { + "k": "MM", + "v": "Middle marker. Marker intermedio" + }, + { + "k": "MOC", + "v": "Minimum obstacle clearance. Separazione minima dagli ostacoli" + }, + { + "k": "MPH", + "v": "Statute miles per hour. Miglia statutaria per ora" + }, + { + "k": "MPS", + "v": "Metres per seconds. Metri al secondo " + }, + { + "k": "MRA", + "v": "Minimum reception altitude. Minima altitudine di ricezione radioass." + }, + { + "k": "NDB", + "v": "Not directional beacon. Radiofaro adirezionale non direzionale" + }, + { + "k": "NGT", + "v": "Night. Notte" + }, + { + "k": "NM", + "v": "Nautical miles. Miglia nautiche" + }, + { + "k": "NOF", + "v": "International Notam office. Ufficio Notam internazionale" + }, + { + "k": "NOSIGN", + "v": "no significante change. Nessuna variazione significativa" + }, + { + "k": "NOTAM", + "v": "A notice distributed by means of telecomunications Notizie riguardanti i volo, condizioni degli aeroporti..." + }, + { + "k": "OCA", + "v": "Obstacle clearance altitude. Altitudine di separazione dagli ostacoli" + }, + { + "k": "OCH", + "v": "Ostacle clearance height. Altezza di separazione dagli ostacoli" + }, + { + "k": "OCL", + "v": "Obstacle clearance limit. Limite di separazione dagli ostacoli" + }, + { + "k": "OM", + "v": "Outer marker. Marker esterno" + }, + { + "k": "OPS", + "v": "Operations." + }, + { + "k": "O/R", + "v": "On request. Operazioni a richiesta" + }, + { + "k": "P", + "v": "Proibited area. Area Proibita" + }, + { + "k": "PANS", + "v": "Procedure for air navigation service. Procedure per i servizi della navig. aerea" + }, + { + "k": "PAPI", + "v": "Precision approach path indicator. Indicatore planata per avvicin. di precisione" + }, + { + "k": "PERM", + "v": "Permanent." + }, + { + "k": "POB", + "v": "Persons on board. Persone a bordo es: POB 2" + }, + { + "k": "PSN", + "v": "Position." + }, + { + "k": "PRKG", + "v": "Parking." + }, + { + "k": "PROC", + "v": "Procedure." + }, + { + "k": "QDM", + "v": "Magnetie approach route. Procedura Rotta magnetica di avvicinamento" + }, + { + "k": "QDR", + "v": "Magnetic bearing. Rilevamento magnetico" + }, + { + "k": "QFE", + "v": "Atmosferic pressure at aerodrome elevation. Pressione atmosferica all'altitudine dell'aeroporto" + }, + { + "k": "QFU", + "v": "Magnetic orientation of runway. Orientamento magnetico della pista" + }, + { + "k": "QNH", + "v": "Altinieter setting based on the atmosferic pressure at mean sea level. Regolaggio altimetrico basato sulla pressione al livello medio del mare" + }, + { + "k": "QTE", + "v": "True bearing. Rilevamento vero" + }, + { + "k": "RCC", + "v": "Rescue coordination centre. Centro di coordinamento e soccorso" + }, + { + "k": "RCL", + "v": "Runway centre-line. Asse pista" + }, + { + "k": "RDH", + "v": "Reference datum hight for ILS. Altezza del dato di riferimento per ILS" + }, + { + "k": "RDI", + "v": "Radial. Radiale" + }, + { + "k": "REF", + "v": "Reference to... Riferimento a..." + }, + { + "k": "REQ", + "v": "Request." + }, + { + "k": "RNAV", + "v": "Area navigation. Navigazione d'area" + }, + { + "k": "RP", + "v": "Reporting Point Punto di riporto" + }, + { + "k": "RPI", + "v": "Repetitive flight plan. Piano di volo ripetitivo" + }, + { + "k": "RQS", + "v": "Request supplementary FPL rnessage. Messaggio richiesta di FPL supplementari" + }, + { + "k": "RPLC", + "v": "Replace or replaced. Sostituire o sostituito" + }, + { + "k": "RVR", + "v": "Runway visual range. Portata visuale di pista" + }, + { + "k": "RWY", + "v": "Runway. Pista di volo" + }, + { + "k": "SAR", + "v": "Search and rescue. Ricerca e soccorso" + }, + { + "k": "SFC", + "v": "Surface. Superficie suolo" + }, + { + "k": "SIGMET", + "v": "SIGnificant METeorological Information / Informazioni Meteorologica Significative" + }, + { + "k": "SID", + "v": "Standard instrument departure. Rotta di partenza strumentale standard" + }, + { + "k": "STAR", + "v": "Standard arrival route. Rotta di arrivo strumentale standard" + }, + { + "k": "SMC", + "v": "Surface movement control. Controllo movimenti al suolo" + }, + { + "k": "SWLL", + "v": "SIGNIFICANT WEATHER LOW LEVEL" + }, + { + "k": "SMR", + "v": "Surface movement radar Radar. Sorveglianza movimenti al suolo" + }, + { + "k": "SRA", + "v": "Surveillance radar approach. Avvicinamento condotto con il solo radar di sorveglianza" + }, + { + "k": "SRE", + "v": "Surveillance radar element. Elemento radar di sorveglianza del sistema radar per avvicinamento di precisione" + }, + { + "k": "SSR", + "v": "Secondary surveillance radar. Radar secondario di sorveglianza" + }, + { + "k": "STA", + "v": "Straight -in- approach. Avvicinamento diretto" + }, + { + "k": "STOL", + "v": "Short take-off and landing. Decollo ed atterraggio corto" + }, + { + "k": "S/VFR", + "v": "Special VFR. VFR Speciale vedi VFR" + }, + { + "k": "SVC", + "v": "Service message. Messaggio di servizio" + }, + { + "k": "SWY", + "v": "Stop-way. Zona di arresto" + }, + { + "k": "TA", + "v": "Transitional altitude. Altitudine di transizione" + }, + { + "k": "TACAN", + "v": "UHF Tactical air navigation aid. Radioassistenze UHF per la navigazione tattica" + }, + { + "k": "TAS", + "v": "True air speed. Velocit" + }, + { + "k": "THR", + "v": "Threshold. Soglia pista" + }, + { + "k": "TMA", + "v": "Terminal Area. Area terminale per la confluenza di una o pi" + }, + { + "k": "UFN", + "v": "Until further notice. Fino a nuovo avviso" + }, + { + "k": "UNL", + "v": "Unlimited. Illimitato" + }, + { + "k": "VAL", + "v": "Visual approach landing chart. Carta di avvicinamento/atterraggio visuale" + }, + { + "k": "VFR", + "v": "Visual Flight Rules. Regole de volo a vista" + }, + { + "k": "VASIS", + "v": "Visual approach slope indicator system. Sistema luminoso dell'angolo di avvicinamento" + }, + { + "k": "WIP", + "v": "Works in progress. Lavori in corso" + }, + { + "k": "ZULU", + "v": "Orario internazionale secondo il meridiano di riferimento: Greenwich" + } +] + +export const alphabeth = [ + { + "k": "A", + "v": "alpha" + }, + { + "k": "B", + "v": "bravo" + }, + { + "k": "C", + "v": "charlie" + }, + { + "k": "D", + "v": "delta" + }, + { + "k": "E", + "v": "echo" + }, + { + "k": "F", + "v": "foxtrot" + }, + { + "k": "G", + "v": "golf" + }, + { + "k": "H", + "v": "hotel" + }, + { + "k": "I", + "v": "india" + }, + { + "k": "J", + "v": "juliet" + }, + { + "k": "K", + "v": "kilo" + }, + { + "k": "L", + "v": "lima" + }, + { + "k": "M", + "v": "mike" + }, + { + "k": "N", + "v": "november" + }, + { + "k": "O", + "v": "oscar" + }, + { + "k": "P", + "v": "papa" + }, + { + "k": "Q", + "v": "quebec" + }, + { + "k": "R", + "v": "romeo" + }, + { + "k": "S", + "v": "sierra" + }, + { + "k": "T", + "v": "tango" + }, + { + "k": "U", + "v": "uniform" + }, + { + "k": "V", + "v": "victor" + }, + { + "k": "W", + "v": "whiskey" + }, + { + "k": "X", + "v": "x-ray" + }, + { + "k": "Y", + "v": "yankee" + }, + { + "k": "Z", + "v": "zulu" + } +] + +export const numbers = [ + { + "k": "1", + "v": "one" + }, + { + "k": "2", + "v": "two" + }, + { + "k": "3", + "v": "three" + }, + { + "k": "4", + "v": "four-er" + }, + { + "k": "5", + "v": "five" + }, + { + "k": "6", + "v": "six" + }, + { + "k": "7", + "v": "seven" + }, + { + "k": "8", + "v": "eight" + }, + { + "k": "9", + "v": "nin-er" + }, + { + "k": "0", + "v": "zero" + } +] diff --git a/vds-app/App/index.js b/vds-app/App/index.js index 457f8d1..4b7a832 100644 --- a/vds-app/App/index.js +++ b/vds-app/App/index.js @@ -8,6 +8,7 @@ import Exam from "./screens/Exam" import Results from "./screens/Results" import Recap from "./screens/Recap" import Info from "./screens/Info" +import Dictionary from "./screens/Dictionary" import { colors, texts} from "./components/Variables" const MainStack = createStackNavigator({ @@ -45,10 +46,12 @@ const MainStack = createStackNavigator({ screen: Info, navigationOptions: ({ navigation }) => ({ header: null, - backgroundColor: colors.yellow, - headerStyle: { - backgroundColor: colors.yellow - } + }) + }, + Dictionary: { + screen: Dictionary, + navigationOptions: ({ navigation }) => ({ + header: null, }) }, Banner: { diff --git a/vds-app/App/screens/Dictionary.js b/vds-app/App/screens/Dictionary.js new file mode 100644 index 0000000..eca4b81 --- /dev/null +++ b/vds-app/App/screens/Dictionary.js @@ -0,0 +1,238 @@ +import React from "react" +import { View, ScrollView, StyleSheet, StatusBar, Text, SafeAreaView, Dimensions, Image, BackHandler, Linking} from "react-native" +import { AdMobBanner } from "expo-ads-admob" + +import { Button, ButtonContainer } from "../components/Button" +import { colors, texts, credentials} from "../components/Variables" +import { abbreviations, alphabeth, numbers} from "../data/dictionary" + +const screen = Dimensions.get("window") + +const styles = StyleSheet.create({ + container: { + backgroundColor: colors.dark_blue, + flex: 1 + }, + safearea: { + flex: 1, + marginTop: 30, + marginBottom: 30, + justifyContent: "space-between", + paddingHorizontal: 20 + }, + bannerContainer: { + flex: 1, + alignItems: "center", + justifyContent: "center" + }, + banner: { + width: 320, + height: 60, + marginVertical: 10 + }, + box: { + width: screen.width-40, + paddingHorizontal: 20, + backgroundColor: colors.white, + borderRadius: 10, + overflow: "hidden" + }, + + scrollView: { + margin: 0, + height: screen.height-350 + }, + + buttonContainer: { + marginHorizontal: 0, + marginBottom: 20 + }, + + text: { + color: colors.black, + fontSize: 16, + textAlign: "left", + fontWeight: "400", + lineHeight: 20, + textShadowColor: 'rgba(0, 0, 0, 0.75)', + textShadowOffset: {width: -1, height: 1}, + textShadowRadius: 10 + }, + title: { + paddingTop: 30, + color: colors.black, + fontSize: 18, + textTransform: "uppercase", + textAlign: "left", + fontWeight: "400", + lineHeight: 20, + textShadowColor: 'rgba(0, 0, 0, 0.75)', + textShadowOffset: {width: -1, height: 1}, + textShadowRadius: 10 + }, + textBig: { + color: colors.white, + fontSize: 24, + textAlign: "center", + fontWeight: "400", + paddingBottom: 10, + textShadowColor: 'rgba(0, 0, 0, 0.75)', + textShadowOffset: {width: -1, height: 1}, + textShadowRadius: 10 + }, + textSmall: { + lineHeight: 23, + marginTop: 15, + borderRadius: 5, + borderWidth: 0, + borderColor: colors.white_alpha, + fontSize: 16, + color: colors.white, + fontWeight: "400", + textAlign: "center", + paddingVertical: 20 + }, + textItems: { + fontSize: 16, + fontWeight: "400", + lineHeight: 23, + color: colors.black, + textAlign: "left", + paddingBottom: 10, + marginBottom: 10, + borderBottomColor: colors.black_alpha, + borderBottomWidth: 1 + }, + noBorder: { + borderBottomWidth: 0 + }, + item: { + width: "100%" + }, + noPadding: { + paddingVertical: 0, + }, + textLabel: { + paddingHorizontal: 20, + paddingVertical: 20 + }, + bold: { + lineHeight: 30, + fontSize: 26, + fontWeight: "600" + } +}) + +const B = (props) => {props.children} + +class Dictionary extends React.Component { + + state = { + title: texts.alphabethTitle, + items: alphabeth,//numbers + } + + componentDidMount() { + BackHandler.addEventListener('hardwareBackPress', this.handleBackButton) + } + + componentWillUnmount() { + BackHandler.removeEventListener('hardwareBackPress', this.handleBackButton) + } + + handleBackButton = () => { + this.props.navigation.navigate("Splash") + return true + } + + switchData = (section) => { + + let newState = {} + + switch(section) { + case 'abbreviations': + newState = { + title: texts.abbreviationsTitle, + items: abbreviations + } + break; + case 'alphabeth': + newState = { + title: texts.alphabethTitle, + items: alphabeth + } + break; + case 'numbers': + newState = { + title: texts.numbersTitle, + items: numbers + } + break; + } + + this.setState( (state) => { + return newState + }) + } + + render() { + + return ( + + + + + +