No Description

Datos.js 9.1KB

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