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
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}
|
|
</>
|
|
);
|
|
}
|
|
|