Improve the dahboard 4

This commit is contained in:
Urtzi Alfaro
2025-08-18 20:50:41 +02:00
parent 523fc663e8
commit 18355cd8be
10 changed files with 1133 additions and 152 deletions

View File

@@ -6,12 +6,13 @@
import { useState, useCallback } from 'react';
import { externalService } from '../services/external.service';
import type { WeatherData, TrafficData, WeatherForecast } from '../services/external.service';
import type { WeatherData, TrafficData, WeatherForecast, HourlyForecast } from '../services/external.service';
export const useExternal = () => {
const [weatherData, setWeatherData] = useState<WeatherData | null>(null);
const [trafficData, setTrafficData] = useState<TrafficData | null>(null);
const [weatherForecast, setWeatherForecast] = useState<WeatherForecast[]>([]);
const [hourlyForecast, setHourlyForecast] = useState<HourlyForecast[]>([]);
const [trafficForecast, setTrafficForecast] = useState<TrafficData[]>([]);
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
@@ -67,6 +68,32 @@ export const useExternal = () => {
}
}, []);
/**
* Get Hourly Weather Forecast
*/
const getHourlyWeatherForecast = useCallback(async (
tenantId: string,
lat: number,
lon: number,
hours: number = 48
): Promise<HourlyForecast[]> => {
try {
setIsLoading(true);
setError(null);
const forecast = await externalService.getHourlyWeatherForecast(tenantId, lat, lon, hours);
setHourlyForecast(forecast);
return forecast;
} catch (error) {
const message = error instanceof Error ? error.message : 'Failed to get hourly weather forecast';
setError(message);
throw error;
} finally {
setIsLoading(false);
}
}, []);
/**
* Get Historical Weather Data
*/
@@ -194,11 +221,13 @@ export const useExternal = () => {
weatherData,
trafficData,
weatherForecast,
hourlyForecast,
trafficForecast,
isLoading,
error,
getCurrentWeather,
getWeatherForecast,
getHourlyWeatherForecast,
getHistoricalWeather,
getCurrentTraffic,
getTrafficForecast,