You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

131 lines
5.0 KiB

import React from "react";
import AreaChart from "./AreaChart";
import Typography from "@mui/material/Typography";
import Grid from "@mui/material/Grid";
import { useGetAllDataQuery } from "../services/covidDataApi";
import { ChartData } from "../types";
import { DateRange } from "@mui/lab/DateRangePicker";
import DatePicker from "./DatePicker";
export default function Home() {
const { data, error, isLoading } = useGetAllDataQuery({});
const [dateRange, setDateRange] = React.useState<DateRange<Date>>([
null,
null,
]);
let allData: ChartData[] = [];
let newInfected: ChartData[] = [];
if (data) {
if (dateRange[0] == null && dateRange[1] == null) {
setDateRange([
new Date(data[0].created_at),
new Date(data[data.length - 1].created_at),
]);
}
allData = data
.map((d) => {
const date = new Date(d.created_at);
const currentInfected = d.infected - d.recovered - d.deceased;
return {
name:
date.getFullYear() +
"." +
("0" + (date.getMonth() + 1)).slice(-2) +
"." +
("0" + date.getDate()).slice(-2),
values: {
"Aktív fertőzöttek napi alakulása": currentInfected > 0 ? currentInfected : 0,
},
};
})
.filter((d) => {
const ddate = new Date(d.name);
if (dateRange[0] == null || dateRange[1] == null) return true;
let endDate = new Date(dateRange[1].getTime());
endDate.setDate(endDate.getDate() + 1);
return ddate >= dateRange[0] && ddate < endDate;
});
let newData = 0;
newInfected = data
.map((d) => {
const date = new Date(d.created_at);
const newActual = d.infected - newData;
newData = d.infected;
return {
name:
date.getFullYear() +
"." +
("0" + (date.getMonth() + 1)).slice(-2) +
"." +
("0" + date.getDate()).slice(-2),
values: {
"Új fertőzöttek napi alakulása": newActual > 0 ? newActual : 0,
},
};
})
.filter((d) => {
const ddate = new Date(d.name);
if (dateRange[0] == null || dateRange[1] == null) return true;
let endDate = new Date(dateRange[1].getTime());
endDate.setDate(endDate.getDate() + 1);
return ddate >= dateRange[0] && ddate < endDate;
});
}
return (
<>
<Typography paragraph>
Ez az oldal elsősorban a hivatalos, kormány által közölt
adatokat dolgozza fel, de nem tekinthető hivatalos
tájékoztatásnak, továbbá nem vállalunk felelősséget a kormány
által közölt adatok és információk valóságtartalmáért. Kérjük, a
hivatalos információkért látogasson el a kormány által
működtetett{" "}
<a href="https://koronavirus.gov.hu/" target="_blank">
koronavirus.gov.hu
</a>{" "}
oldalra, illetve olvassa a nagyobb hírportálok híreit.
</Typography>
{typeof data != "undefined" ? (
<Grid container spacing={2}>
<Grid
item
xs={12}
container
spacing={2}
justifyContent="center"
>
<Grid item>
<DatePicker
minDate={new Date(data[0].created_at)}
maxDate={
new Date(data[data.length - 1].created_at)
}
value={dateRange}
setValue={(n: DateRange<Date>) =>
setDateRange(n)
}
/>
</Grid>
</Grid>
<Grid item md={6} xs={12}>
<AreaChart
data={allData}
scale="sqrt"
/>
</Grid>
<Grid item md={6} xs={12}>
<AreaChart
data={newInfected}
scale="sqrt"
/>
</Grid>
</Grid>
) : null}
</>
);
}