/*

Explications
fetch, permet d’appeler des APIs REST de façon moderne et asynchrone, sans jQuery ni librairie tierce. ligne 28

On utilise d’abord l’API Nominatim pour convertir le nom de la ville en coordonnées GPS. ligne 36

Ensuite, on interroge Open-Meteo avec ces coordonnées pour obtenir la température actuelle. ligne 39

Le code gère les erreurs (ville inconnue, API injoignable) et affiche un message adapté...
*/

document.getElementById('searchBtn').addEventListener('click', () => {
    const city = document.getElementById('city').value.trim();
    if (!city) {
        document.getElementById('result').textContent = "Veuillez entrer une ville.";
        return;
    }
    afficherMeteo(city);
});

function afficherMeteo(nomVille) {

    // 1. On cherche la latitude/longitude avec l'API Nominatim (OpenStreetMap)
    fetch(`https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(nomVille)}`)
        .then(response => {
            if (!response.ok) throw new Error("Erreur de géocodage");
            return response.json();
        })
        .then(data => {
            if (!data.length) throw new Error("Ville non trouvée");

            const { lat, lon, display_name } = data[0];

            // 2. On récupère la météo avec Open-Meteo
            return fetch(`https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${lon}&current_weather=true`)
                .then(response => {
                    if (!response.ok) throw new Error("Erreur météo");
                    return response.json();
                })
                .then(meteo => {
                    const temp = meteo.current_weather.temperature;
                    const desc = meteo.current_weather.weathercode; // code météo, voir doc Open-Meteo pour traduction
                    document.getElementById('result').innerHTML =
                        `<strong>${display_name}</strong> : ${temp}°C<br>(Code météo : ${desc})`;
                });
        })
        .catch(error => {
            document.getElementById('result').textContent = "Erreur : " + error.message;
        });
}
