import React, { useState, useEffect } from "react"; import { LineChart, Line, CartesianGrid, XAxis, YAxis } from "recharts"; import { format, addDays } from "date-fns"; import { formatDate, minDate, ForecastDatePicker, } from "@/components/ui/DatePicker"; const fetchWeekForecastData = async function (dateTime, cb) { const formattedDate = formatDate(dateTime); const forecastRequests = Array.from({ length: 7 }).map((_, index) => { const date = addDays(dateTime, index); const formattedDate = format(date, "yyyy-MM-d"); const url = `http://api.weatherapi.com/v1/future.json?key=bfca7632f8dc4253859120435242301&q=Vienna&dt=${formattedDate}`; const dataPromise = fetch(url).then((x) => x.json()); return dataPromise; }); const data = await Promise.all(forecastRequests); const chartData = data.map((forecastData) => { const dayData = forecastData.forecast.forecastday[0]; const date = dayData.date; const { avgtemp_c, mintemp_c, maxtemp_c } = dayData.day; return { name: date, avgtemp_c, mintemp_c, maxtemp_c, }; }); cb(chartData); }; const WeatherChart = function ({ data }) { return ( ); }; export const Dashboard = function ({ state, updateState }) { const [dateTime, setDateTime] = useState( minDate(state?.options?.startDate || new Date()), ); useEffect(() => { fetchWeekForecastData(dateTime, (data) => updateState({ dataCache: data })); }, [dateTime]); return (

Forecast

{state.dataCache ? : "Loading..."}
); };