@@ -8,67 +8,47 @@ import Map from "./Map/Map";
88import DisplayTable from "./DisplayTable" ;
99import TinyCharts from "./TinyCharts" ;
1010import styles from "../styles/CovidAppStyles" ;
11-
12- const stateCodes = {
13- "Andhra Pradesh" : "AP" ,
14- "Arunachal Pradesh" : "AR" ,
15- Assam : "AS" ,
16- Bihar : "BR" ,
17- Chhattisgarh : "CT" ,
18- Goa : "GA" ,
19- Gujarat : "GJ" ,
20- Haryana : "HR" ,
21- "Himachal Pradesh" : "HP" ,
22- Jharkhand : "JH" ,
23- Karnataka : "KA" ,
24- Kerala : "KL" ,
25- "Madhya Pradesh" : "MP" ,
26- Maharashtra : "MH" ,
27- Manipur : "MN" ,
28- Meghalaya : "ML" ,
29- Mizoram : "MZ" ,
30- Nagaland : "NL" ,
31- Odisha : "OR" ,
32- Punjab : "PB" ,
33- Rajasthan : "RJ" ,
34- Sikkim : "SK" ,
35- "Tamil Nadu" : "TN" ,
36- Telengana : "TG" ,
37- Tripura : "TR" ,
38- Uttarakhand : "UT" ,
39- "Uttar Pradesh" : "UP" ,
40- "West Bengal" : "WB" ,
41- "Andaman and Nicobar Islands" : "AN" ,
42- Chandigarh : "CH" ,
43- "Dadra and Nagar Haveli" : "DN" ,
44- "Daman and Diu" : "DD" ,
45- Delhi : "DL" ,
46- "Jammu and Kashmir" : "JK" ,
47- Ladakh : "LA" ,
48- Lakshadweep : "LD" ,
49- Puducherry : "PY" ,
50- } ;
11+ import axios from "axios" ;
12+ import stateCodes from "../constants/stateCodes" ;
13+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" ;
14+ import { faSyncAlt } from "@fortawesome/free-solid-svg-icons" ;
5115
5216class CovidApp extends Component {
5317 constructor ( props ) {
5418 super ( props ) ;
5519
5620 this . state = {
57- completeData : [ ] ,
21+ data : [ ] ,
5822 isLoading : false ,
5923 mapData : [ ] ,
6024 tableData : [ ] ,
6125 } ;
62- this . getData = this . getData . bind ( this ) ;
63- this . loadingStatus = this . loadingStatus . bind ( this ) ;
6426 this . formatData = this . formatData . bind ( this ) ;
6527 this . findId = this . findId . bind ( this ) ;
6628 this . handleFormat = this . handleFormat . bind ( this ) ;
6729 this . tableData = this . tableData . bind ( this ) ;
6830 }
6931
70- formatData ( completeData ) {
71- const newArr = completeData . slice ( - 1 ) . map ( ( data ) => data . regional ) ;
32+ componentDidMount ( ) {
33+ this . fetchData ( ) ;
34+ }
35+
36+ async fetchData ( ) {
37+ this . setState ( { isLoading : ! this . state . isLoading } ) ;
38+ const response = await axios . get (
39+ "https://api.rootnet.in/covid19-in/stats/history"
40+ ) ;
41+ this . setState (
42+ ( st ) => ( {
43+ data : response . data . data ,
44+ isLoading : ! st . isLoading ,
45+ } ) ,
46+ this . handleFormat
47+ ) ;
48+ }
49+
50+ formatData ( data ) {
51+ const newArr = data . slice ( - 1 ) . map ( ( data ) => data . regional ) ;
7252 const formatedData = newArr . flat ( ) . map ( ( region , i ) => {
7353 return {
7454 id : this . findId ( region . loc ) ,
@@ -79,12 +59,12 @@ class CovidApp extends Component {
7959 return formatedData ;
8060 }
8161
82- tableData ( completeData ) {
83- const newArr = completeData
62+ tableData ( data ) {
63+ const newArr = data
8464 . slice ( - 1 )
8565 . map ( ( data ) => data . regional )
8666 . flat ( ) ;
87- const data = newArr . map ( ( region , i ) => {
67+ const newData = newArr . map ( ( region , i ) => {
8868 return {
8969 id : region . loc ,
9070 name : region . loc ,
@@ -94,7 +74,7 @@ class CovidApp extends Component {
9474 active : region . totalConfirmed - ( region . discharged + region . deaths ) ,
9575 } ;
9676 } ) ;
97- return data ;
77+ return newData ;
9878 }
9979
10080 findId ( location ) {
@@ -105,36 +85,36 @@ class CovidApp extends Component {
10585 }
10686 }
10787
108- getData ( data , isLoading ) {
109- this . setState (
110- {
111- completeData : data ,
112- isLoading : isLoading ,
113- } ,
114- this . handleFormat
115- ) ;
116- }
11788 handleFormat ( ) {
118- const newdata = this . formatData ( this . state . completeData ) ;
119- const tableData = this . tableData ( this . state . completeData ) ;
120- // console.log(tableData);
89+ const newdata = this . formatData ( this . state . data ) ;
90+ const tableData = this . tableData ( this . state . data ) ;
12191 this . setState ( { mapData : newdata , tableData : tableData } ) ;
12292 }
12393
124- loadingStatus ( loadingStatus ) {
125- this . setState ( { isLoading : loadingStatus } ) ;
126- }
127-
12894 render ( ) {
12995 const { classes, setDarkMode, isDarkMode } = this . props ;
130- const { mapData, tableData } = this . state ;
96+ const { mapData, tableData, isLoading } = this . state ;
13197
98+ if ( isLoading ) {
99+ return (
100+ < div className = { classes . loadingIcon } >
101+ < FontAwesomeIcon icon = { faSyncAlt } className = { classes . refreshIcon } />
102+ </ div >
103+ ) ;
104+ }
132105 return (
133106 < >
134107 < div className = { classes . header } >
135108 < h1 className = { classes . heading } >
136109 < span > Covid-19</ span > India Trend
137110 </ h1 >
111+ < div className = { classes . btnBox } >
112+ < FontAwesomeIcon
113+ icon = { faSyncAlt }
114+ className = { classes . button }
115+ onClick = { this . fetchData }
116+ />
117+ </ div >
138118 < div className = "darkModeButton" >
139119 < label className = "switch" >
140120 < input type = "checkbox" onChange = { setDarkMode } />
@@ -144,7 +124,7 @@ class CovidApp extends Component {
144124 </ div >
145125 < Overview
146126 isDarkMode = { isDarkMode }
147- getData = { this . getData }
127+ data = { this . state . data }
148128 loadingStatus = { this . loadingStatus }
149129 />
150130 { ! this . state . isLoading && (
@@ -163,7 +143,7 @@ class CovidApp extends Component {
163143 style = { { background : "rgba(249, 52, 94,.1)" } }
164144 >
165145 < TinyCharts
166- data = { this . state . completeData }
146+ data = { this . state . data }
167147 isLoading = { this . state . isLoading }
168148 dataKey = "confirmed"
169149 stroke = { colors . red }
@@ -177,7 +157,7 @@ class CovidApp extends Component {
177157 style = { { background : "rgba(250, 100, 0,.1)" } }
178158 >
179159 < TinyCharts
180- data = { this . state . completeData }
160+ data = { this . state . data }
181161 isLoading = { this . state . isLoading }
182162 dataKey = "active"
183163 stroke = { colors . orange }
@@ -191,7 +171,7 @@ class CovidApp extends Component {
191171 style = { { background : "rgba(28, 177, 66,.1)" } }
192172 >
193173 < TinyCharts
194- data = { this . state . completeData }
174+ data = { this . state . data }
195175 isLoading = { this . state . isLoading }
196176 dataKey = "discharged"
197177 stroke = { colors . green }
@@ -205,7 +185,7 @@ class CovidApp extends Component {
205185 style = { { background : "rgba(98, 54, 255,.1)" } }
206186 >
207187 < TinyCharts
208- data = { this . state . completeData }
188+ data = { this . state . data }
209189 isLoading = { this . state . isLoading }
210190 dataKey = "deaths"
211191 stroke = { colors . purple }
@@ -214,10 +194,7 @@ class CovidApp extends Component {
214194 < h3 style = { { color : colors . purple } } > Deceased</ h3 >
215195 </ div >
216196 </ div >
217- < Charts
218- data = { this . state . completeData }
219- isLoading = { this . state . isLoading }
220- />
197+ < Charts data = { this . state . data } isLoading = { this . state . isLoading } />
221198 </ div >
222199 < div className = { classes . tableContainer } >
223200 < h2 className = { classes . tableHeading } >
@@ -227,9 +204,6 @@ class CovidApp extends Component {
227204 </ div >
228205 </ div >
229206 ) }
230- { /* {!this.state.isLoading && (
231-
232- )} */ }
233207 </ >
234208 ) ;
235209 }
0 commit comments