@@ -8,67 +8,47 @@ import Map from "./Map/Map";
8
8
import DisplayTable from "./DisplayTable" ;
9
9
import TinyCharts from "./TinyCharts" ;
10
10
import 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" ;
51
15
52
16
class CovidApp extends Component {
53
17
constructor ( props ) {
54
18
super ( props ) ;
55
19
56
20
this . state = {
57
- completeData : [ ] ,
21
+ data : [ ] ,
58
22
isLoading : false ,
59
23
mapData : [ ] ,
60
24
tableData : [ ] ,
61
25
} ;
62
- this . getData = this . getData . bind ( this ) ;
63
- this . loadingStatus = this . loadingStatus . bind ( this ) ;
64
26
this . formatData = this . formatData . bind ( this ) ;
65
27
this . findId = this . findId . bind ( this ) ;
66
28
this . handleFormat = this . handleFormat . bind ( this ) ;
67
29
this . tableData = this . tableData . bind ( this ) ;
68
30
}
69
31
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 ) ;
72
52
const formatedData = newArr . flat ( ) . map ( ( region , i ) => {
73
53
return {
74
54
id : this . findId ( region . loc ) ,
@@ -79,12 +59,12 @@ class CovidApp extends Component {
79
59
return formatedData ;
80
60
}
81
61
82
- tableData ( completeData ) {
83
- const newArr = completeData
62
+ tableData ( data ) {
63
+ const newArr = data
84
64
. slice ( - 1 )
85
65
. map ( ( data ) => data . regional )
86
66
. flat ( ) ;
87
- const data = newArr . map ( ( region , i ) => {
67
+ const newData = newArr . map ( ( region , i ) => {
88
68
return {
89
69
id : region . loc ,
90
70
name : region . loc ,
@@ -94,7 +74,7 @@ class CovidApp extends Component {
94
74
active : region . totalConfirmed - ( region . discharged + region . deaths ) ,
95
75
} ;
96
76
} ) ;
97
- return data ;
77
+ return newData ;
98
78
}
99
79
100
80
findId ( location ) {
@@ -105,36 +85,36 @@ class CovidApp extends Component {
105
85
}
106
86
}
107
87
108
- getData ( data , isLoading ) {
109
- this . setState (
110
- {
111
- completeData : data ,
112
- isLoading : isLoading ,
113
- } ,
114
- this . handleFormat
115
- ) ;
116
- }
117
88
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 ) ;
121
91
this . setState ( { mapData : newdata , tableData : tableData } ) ;
122
92
}
123
93
124
- loadingStatus ( loadingStatus ) {
125
- this . setState ( { isLoading : loadingStatus } ) ;
126
- }
127
-
128
94
render ( ) {
129
95
const { classes, setDarkMode, isDarkMode } = this . props ;
130
- const { mapData, tableData } = this . state ;
96
+ const { mapData, tableData, isLoading } = this . state ;
131
97
98
+ if ( isLoading ) {
99
+ return (
100
+ < div className = { classes . loadingIcon } >
101
+ < FontAwesomeIcon icon = { faSyncAlt } className = { classes . refreshIcon } />
102
+ </ div >
103
+ ) ;
104
+ }
132
105
return (
133
106
< >
134
107
< div className = { classes . header } >
135
108
< h1 className = { classes . heading } >
136
109
< span > Covid-19</ span > India Trend
137
110
</ h1 >
111
+ < div className = { classes . btnBox } >
112
+ < FontAwesomeIcon
113
+ icon = { faSyncAlt }
114
+ className = { classes . button }
115
+ onClick = { this . fetchData }
116
+ />
117
+ </ div >
138
118
< div className = "darkModeButton" >
139
119
< label className = "switch" >
140
120
< input type = "checkbox" onChange = { setDarkMode } />
@@ -144,7 +124,7 @@ class CovidApp extends Component {
144
124
</ div >
145
125
< Overview
146
126
isDarkMode = { isDarkMode }
147
- getData = { this . getData }
127
+ data = { this . state . data }
148
128
loadingStatus = { this . loadingStatus }
149
129
/>
150
130
{ ! this . state . isLoading && (
@@ -163,7 +143,7 @@ class CovidApp extends Component {
163
143
style = { { background : "rgba(249, 52, 94,.1)" } }
164
144
>
165
145
< TinyCharts
166
- data = { this . state . completeData }
146
+ data = { this . state . data }
167
147
isLoading = { this . state . isLoading }
168
148
dataKey = "confirmed"
169
149
stroke = { colors . red }
@@ -177,7 +157,7 @@ class CovidApp extends Component {
177
157
style = { { background : "rgba(250, 100, 0,.1)" } }
178
158
>
179
159
< TinyCharts
180
- data = { this . state . completeData }
160
+ data = { this . state . data }
181
161
isLoading = { this . state . isLoading }
182
162
dataKey = "active"
183
163
stroke = { colors . orange }
@@ -191,7 +171,7 @@ class CovidApp extends Component {
191
171
style = { { background : "rgba(28, 177, 66,.1)" } }
192
172
>
193
173
< TinyCharts
194
- data = { this . state . completeData }
174
+ data = { this . state . data }
195
175
isLoading = { this . state . isLoading }
196
176
dataKey = "discharged"
197
177
stroke = { colors . green }
@@ -205,7 +185,7 @@ class CovidApp extends Component {
205
185
style = { { background : "rgba(98, 54, 255,.1)" } }
206
186
>
207
187
< TinyCharts
208
- data = { this . state . completeData }
188
+ data = { this . state . data }
209
189
isLoading = { this . state . isLoading }
210
190
dataKey = "deaths"
211
191
stroke = { colors . purple }
@@ -214,10 +194,7 @@ class CovidApp extends Component {
214
194
< h3 style = { { color : colors . purple } } > Deceased</ h3 >
215
195
</ div >
216
196
</ div >
217
- < Charts
218
- data = { this . state . completeData }
219
- isLoading = { this . state . isLoading }
220
- />
197
+ < Charts data = { this . state . data } isLoading = { this . state . isLoading } />
221
198
</ div >
222
199
< div className = { classes . tableContainer } >
223
200
< h2 className = { classes . tableHeading } >
@@ -227,9 +204,6 @@ class CovidApp extends Component {
227
204
</ div >
228
205
</ div >
229
206
) }
230
- { /* {!this.state.isLoading && (
231
-
232
- )} */ }
233
207
</ >
234
208
) ;
235
209
}
0 commit comments