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 3b24fa0..0000000 Binary files a/vds-app/App/assets/check.png and /dev/null differ diff --git a/vds-app/App/assets/close.png b/vds-app/App/assets/close.png deleted file mode 100644 index b98c2af..0000000 Binary files a/vds-app/App/assets/close.png and /dev/null differ 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 ( + + + + + +