No Description

App.js 9.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. import { StatusBar } from 'expo-status-bar';
  2. import React, {useState, useEffect} from 'react';
  3. import { View, Image, StyleSheet, Text, Button, ScrollView, Pressable, Alert} from 'react-native';
  4. import data from './transfer.json'
  5. import DropDownPicker from 'react-native-dropdown-picker';
  6. //where data will be put
  7. var organizedData
  8. //where data will be stored
  9. var information = "data goes here"
  10. //organize data make it pretty
  11. function organize(){
  12. }
  13. //fix
  14. DropDownPicker.setListMode("SCROLLVIEW")
  15. //data query variables (global)
  16. const queryBase = "https://api.census.gov/data/2020/acs/acs5/profile?get=group"
  17. const queryEnd = "&in=state:72"
  18. var table = ""
  19. var pueblo = ""
  20. function updateTable(value){
  21. table = value
  22. }
  23. function updatePueblo(value){
  24. pueblo = value
  25. }
  26. //calls data query
  27. function loadDoc(query) {
  28. var xhttp = new XMLHttpRequest();
  29. xhttp.onreadystatechange = function() {
  30. if (this.readyState == 4 && this.status == 200) {
  31. information = this.responseText;
  32. //organize()
  33. }
  34. };
  35. xhttp.open("GET", query, true);
  36. xhttp.send();
  37. }
  38. //query to copy paste later
  39. //"https://api.census.gov/data/2020/acs/acs5/profile?get=group(DP02PR)&for=county:127&in=state:72"
  40. //function to create query to fetch data
  41. function fetchData() {
  42. console.log("fetching data")
  43. var query = queryBase + "(" + table + ")&for=county:" + pueblo + queryEnd
  44. console.log(query)
  45. if(pueblo && table)
  46. {loadDoc(query)}
  47. else
  48. {Alert.alert("Please fill every parameter before calling!")}
  49. }
  50. //change this to an external css file later
  51. const styles = StyleSheet.create({
  52. buttons: {
  53. flexDirection: 'row',
  54. justifyContent: 'center',
  55. marginTop: 40,
  56. marginBottom: 30,
  57. margin: 30,
  58. borderColor: "grey",
  59. },
  60. container: {
  61. flexDirection: 'column',
  62. justifyContent: 'center',
  63. backgroundColor: 'black',
  64. alignItems: 'center',
  65. justifyContent: 'center',
  66. marginTop: 20,
  67. },
  68. containerbackground:{
  69. backgroundColor: '#063970',
  70. marginTop: 20
  71. },
  72. intro: {
  73. fontWeight: "bold",
  74. color:"#beb2c8",
  75. fontSize: 30,
  76. },
  77. sub: {
  78. color:"#D7D6D6",
  79. fontSize: 20
  80. },
  81. scrollView:{
  82. marginHorizontal: 20
  83. },
  84. listItem:{
  85. fontSize: 30,
  86. color: "white",
  87. textDecorationLines: "underline"
  88. },
  89. listButtons:{
  90. fontSize: 15,
  91. color: "white",
  92. textDecorationLines: "underline"
  93. },
  94. buttonsVer: {
  95. flexDirection: 'column',
  96. justifyContent: 'center',
  97. marginTop: 40,
  98. marginBottom: 30,
  99. margin: 30,
  100. borderColor: "grey",
  101. }
  102. });
  103. //default button press
  104. const handlePress = () => false
  105. //return INFO
  106. function getInfo(){
  107. console.log(information[6])
  108. return information
  109. }
  110. //button to press to call data
  111. //again it only loads the data on the second button press. if anyone knows how to fix this please checked
  112. //please
  113. //please
  114. class DataButton extends React.Component{
  115. state = {
  116. click: false
  117. }
  118. pullData = () => {fetchData(); this.setState({click: true})}
  119. render() {
  120. return(
  121. <View>
  122. <Button
  123. onPress = {this.pullData}
  124. title = "Fetch Data"
  125. color = "black"
  126. />
  127. <Text style={styles.sub}>{getInfo()}</Text>
  128. </View>
  129. );}
  130. }
  131. //Parameter Picker
  132. function Picker() {
  133. //table to pick from
  134. const [openTable, setOpenTable] = useState(false);
  135. const [valueTable, setValueTable] = useState(null);
  136. const [table, setTable] = useState([
  137. {label:'DP02PR', value: 'DP02PR'},
  138. {label:'DP03', value: 'DP03'},
  139. {label:'DP04', value: 'DP04'},
  140. {label:'DP05', value: 'DP05'},
  141. ]);
  142. //cambiar pueblo
  143. //pueblo
  144. const [openPueblo, setOpenPueblo] = useState(false);
  145. const [valuePueblo, setValuePueblo] = useState(null);
  146. const [pueblo, setPueblo] = useState([
  147. {label: 'Adjuntas', value: '001'},
  148. {label: 'Aguada', value: '003'},
  149. {label: 'Aguadillas', value: '005'},
  150. {label: 'Aguas Buenas', value: '007'},
  151. {label: 'Aibonito', value: '009'},
  152. {label: 'Añasco', value: '011'},
  153. {label: 'Arecibo', value: '013'},
  154. {label: 'Arroyo', value: '015'},
  155. {label: 'Barceloneta', value: '017'},
  156. {label: 'Barranquitas', value: '019'},
  157. {label: 'Bayamón', value: '021'},
  158. {label: 'Cabo Rojo', value: '023'},
  159. {label: 'Caguas', value: '025'},
  160. {label: 'Camuy', value: '027'},
  161. {label: 'Canóvanas', value: '029'},
  162. {label: 'Carolina', value: '031'},
  163. {label: 'Cataño', value: '033'},
  164. {label: 'Cayey', value: '035'},
  165. {label: 'Ceiba', value: '037'},
  166. {label: 'Ciales', value: '039'},
  167. {label: 'Cidra', value: '041'},
  168. {label: 'Coamo', value: '043'},
  169. {label: 'Comerío', value: '045'},
  170. {label: 'Corozal', value: '047'},
  171. {label: 'Culebra', value: '049'},
  172. {label: 'Dorado', value: '051'},
  173. {label: 'Fajardo', value: '053'},
  174. {label: 'Florida', value: '054'},
  175. {label: 'Guánica', value: '055'},
  176. {label: 'Guayama', value: '057'},
  177. {label: 'Guayanilla', value: '059'},
  178. {label: 'Guaynabo', value: '061'},
  179. {label: 'Gurabo', value: '063'},
  180. {label: 'Hatillo', value: '065'},
  181. {label: 'Hormigueros', value: '067'},
  182. {label: 'Humacao', value: '069'},
  183. {label: 'Isabela', value: '071'},
  184. {label: 'Jayuya', value: '073'},
  185. {label: 'Juana Díaz', value: '075'},
  186. {label: 'Juncos', value: '077'},
  187. {label: 'Lajas', value: '079'},
  188. {label: 'Lares', value: '081'},
  189. {label: 'Las Marías', value: '083'},
  190. {label: 'Las Piedras', value: '085'},
  191. {label: 'Loíza', value: '087'},
  192. {label: 'Luquillo', value: '089'},
  193. {label: 'Manatí', value: '091'},
  194. {label: 'Maricao', value: '093'},
  195. {label: 'Maunabo', value: '095'},
  196. {label: 'Mayagüez', value: '097'},
  197. {label: 'Moca', value: '099'},
  198. {label: 'Morovis', value: '101'},
  199. {label: 'Naguabo', value: '103'},
  200. {label: 'Naranjito', value: '105'},
  201. {label: 'Orocovis', value: '107'},
  202. {label: 'Patillas', value: '109'},
  203. {label: 'Peñuelas', value: '111'},
  204. {label: 'Ponce', value: '113'},
  205. {label: 'Quebradillas', value: '115'},
  206. {label: 'Rincón', value: '117'},
  207. {label: 'Río Grande', value: '119'},
  208. {label: 'Sabana Grande', value: '121'},
  209. {label: 'Salinas', value: '123'},
  210. {label: 'San Germán', value: '125'},
  211. {label: 'San Juan', value: '127'},
  212. {label: 'San Lorenzo', value: '129'},
  213. {label: 'San Sebastián', value: '131'},
  214. {label: 'Santa Isabel', value: '133'},
  215. {label: 'Toa Alta', value: '135'},
  216. {label: 'Toa Baja', value: '137'},
  217. {label: 'Trujillo Alto', value: '139'},
  218. {label: 'Utuado', value: '141'},
  219. {label: 'Vega Alta', value: '143'},
  220. {label: 'Vega Baja', value: '145'},
  221. {label: 'Vieques', value: '147'},
  222. {label: 'Villalba', value: '149'},
  223. {label: 'Yabucoa', value: '151'},
  224. {label: 'Yauco', value: '153'}
  225. ]);
  226. return (
  227. <View>
  228. <DropDownPicker
  229. open={openTable}
  230. value={valueTable}
  231. items={table}
  232. setOpen={setOpenTable}
  233. setValue={setValueTable}
  234. setItems={setTable}
  235. onChangeValue = {(valueTable) => {
  236. updateTable(valueTable);
  237. }}
  238. onOpen = {() => {setOpenPueblo(false)}}
  239. zIndex={3000}
  240. zIndexInverse={1000}
  241. placeholder="Tabla de Datos"
  242. />
  243. <DropDownPicker
  244. searchable={true}
  245. open={openPueblo}
  246. value={valuePueblo}
  247. items={pueblo}
  248. setOpen={setOpenPueblo}
  249. setValue={setValuePueblo}
  250. setItems={setPueblo}
  251. onChangeValue = {(valuePueblo) => {
  252. updatePueblo(valuePueblo);
  253. }}
  254. onOpen = {() => {setOpenTable(false)}}
  255. zIndex={1000}
  256. zIndexInverse={3000}
  257. placeholder="Pueblo"
  258. searchPlaceholder="Busqueda..."
  259. />
  260. </View>
  261. );
  262. }
  263. //actual application
  264. //change different page states to separate components later?
  265. class App extends React.Component {
  266. vars = {
  267. welcome:
  268. <View style = {styles.containerbackground}>
  269. <ScrollView style={styles.scrollView}>
  270. <View style = {styles.container}>
  271. <Text style={styles.intro}>BIENVENIDO!!!!</Text>
  272. <Text style={styles.sub}>Aqui podra mantenerse al tanto con las
  273. ultimas noticias relacionadas al censo</Text>
  274. <Image source={require('./testimg.gif')} />
  275. </View>
  276. </ScrollView>
  277. </View>,
  278. newsView:
  279. <View style = {styles.containerbackground}>
  280. <ScrollView style={styles.scrollView}>
  281. <View style = {styles.container}>
  282. <Text style={styles.intro}>Noticias</Text>
  283. <Image source={require('./testimg.gif')} />
  284. </View>
  285. </ScrollView></View>,
  286. dataOp:
  287. <View style = {styles.containerbackground}>
  288. <ScrollView nestedScrollEnabled = {true} style={styles.scrollView}>
  289. <View style = {styles.container}>
  290. <Text style={styles.intro}>DATA VIEWING PROJECT</Text>
  291. <Picker />
  292. <Image source={require('./testimg.gif')} />
  293. <DataButton />
  294. </View>
  295. </ScrollView></View>
  296. }
  297. //current state
  298. state = {current: this.vars.welcome}
  299. //state changing functions
  300. setHome = () => this.setState({ current: this.vars.welcome })
  301. setData = () => this.setState({current: this.vars.dataOp})
  302. setNews = () => this.setState({ current: this.vars.newsView })
  303. //render app
  304. render() {
  305. return (
  306. <View>
  307. <View style = {styles.containerbackground}>
  308. <View style = {styles.container}>
  309. <Text style={styles.sub}> Navegador</Text>
  310. <View style = {styles.buttons}>
  311. <Button
  312. onPress = {this.setNews}
  313. title = "Noticias"
  314. color = "blue"
  315. />
  316. <Button
  317. onPress = {this.setData}
  318. title = "Datos"
  319. color = "black"
  320. />
  321. </View>
  322. {this.state.current}
  323. </View>
  324. </View>
  325. </View>
  326. );
  327. }
  328. }
  329. export default App