Use cache

This commit is contained in:
Florian Schroedl
2024-01-23 16:56:24 +01:00
parent 7b42d17ff8
commit a177aaedea
3 changed files with 5 additions and 8 deletions

View File

@@ -50,7 +50,7 @@ const Navigation = function ({ router }) {
const id = route.id; const id = route.id;
const className = id === activeRouteId ? "font-bold" : ""; const className = id === activeRouteId ? "font-bold" : "";
return ( return (
<li className={className}> <li className={className} key={id}>
<button onClick={() => onUpdateRoute(route.path)}>{id}</button> <button onClick={() => onUpdateRoute(route.path)}>{id}</button>
</li> </li>
); );

View File

@@ -3,7 +3,7 @@ import { modifyPath, mergeDeepRight } from "ramda";
const STORAGE_KEY = "ecoplanet"; const STORAGE_KEY = "ecoplanet";
const defaultState = { const defaultState = {
dateCache: undefined, dataCache: undefined,
options: { options: {
lineWidth: undefined, lineWidth: undefined,
defaultDate: undefined, defaultDate: undefined,

View File

@@ -21,8 +21,6 @@ const fetchWeekForecastData = async function (dateTime, cb) {
const data = await Promise.all(forecastRequests); const data = await Promise.all(forecastRequests);
console.log(data);
const chartData = data.map((forecastData) => { const chartData = data.map((forecastData) => {
const dayData = forecastData.forecast.forecastday[0]; const dayData = forecastData.forecast.forecastday[0];
const date = dayData.date; const date = dayData.date;
@@ -52,14 +50,13 @@ const WeatherChart = function ({ data }) {
); );
}; };
export const Dashboard = function ({ state, updateCache }) { export const Dashboard = function ({ state, updateState }) {
const [dateTime, setDateTime] = useState( const [dateTime, setDateTime] = useState(
minDate(state?.options?.startDate || new Date()), minDate(state?.options?.startDate || new Date()),
); );
const [data, setData] = useState(null);
useEffect(() => { useEffect(() => {
fetchWeekForecastData(dateTime, setData); fetchWeekForecastData(dateTime, (data) => updateState({ dataCache: data }));
}, [dateTime]); }, [dateTime]);
return ( return (
@@ -68,7 +65,7 @@ export const Dashboard = function ({ state, updateCache }) {
<h1 className="text-lg font-medium mb-2">Forecast</h1> <h1 className="text-lg font-medium mb-2">Forecast</h1>
<ForecastDatePicker dateTime={dateTime} onChange={setDateTime} /> <ForecastDatePicker dateTime={dateTime} onChange={setDateTime} />
</div> </div>
{data ? <WeatherChart data={data} /> : "Loading..."} {state.dataCache ? <WeatherChart data={state.dataCache} /> : "Loading..."}
</div> </div>
); );
}; };