-
Notifications
You must be signed in to change notification settings - Fork 0
/
Chart.jsx
65 lines (57 loc) 路 1.86 KB
/
Chart.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import React, {useState, useEffect} from 'react';
import { fetchDailyData } from '../../api';
import { Line, Bar } from 'react-chartjs-2';
import styles from './Chart.module.css';
const Chart = ({data: {confirmed, recovered, deaths}, country}) => {
const [dailyData, setDailyData] = useState([]);
useEffect(() => {
const fetchApi = async () => {
setDailyData(await fetchDailyData());
}
fetchApi();
},[]);
const lineChart = (
dailyData.length
? (
<Line data={{
labels: dailyData.map(({date}) => date),
datasets: [{
data: dailyData.map(({ confirmed }) => confirmed),
label: 'Infected',
borderColor: '#3333ff',
fill: true,
},{
data: dailyData.map(({ deaths }) => deaths),
label: 'Deaths',
borderColor: 'red',
backgroundColor: 'rgba(255, 0, 0, 0.5)',
fill: true,
}]
}} />) : null
);
const barChart = (
confirmed
? (
<Bar
data= {{
labels: ['Infected', 'Recovered', 'Deaths'],
datasets: [{
label: 'People',
backgroundColor: ['rgba(0, 0, 255, 0.5)','rgba(0, 255, 0, 0.5)','rgba(255, 0, 0, 0.5)'],
data: [confirmed.value, recovered.value, deaths.value]
}]
}}
options={{
legend: {display: false},
title: {display: true, text: `Current state in ${country}`}
}}
/>
) : null
);
return(
<div className={ styles.container }>
{country ? barChart : lineChart}
</div>
)
}
export default Chart;