document.getElementById('search-button').addEventListener('click', function() { let city = document.getElementById('city-input').value; fetchWeatherData(city); }); document.getElementById('location-button').addEventListener('click', function() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(position => { let lat = position.coords.latitude; let lon = position.coords.longitude; fetchWeatherDataByLocation(lat, lon); }); } else { alert('Geolocation is not supported by this browser.'); } }); function fetchWeatherData(city) { fetch(`/weather?city=${city}`) .then(response => response.json()) .then(data => { if (data.error) { alert(data.error); } else { displayWeatherData(data); } }) .catch(error => console.error('Error:', error)); } function fetchWeatherDataByLocation(lat, lon) { fetch(`/weatherlocation?lat=${lat}&lon=${lon}`) .then(response => response.json()) .then(data => { if (data.error) { alert(data.error); } else { displayWeatherData(data); } }) .catch(error => console.error('Error:', error)); } function displayWeatherData(data) { let currentWeather = document.getElementById('current-weather'); currentWeather.innerHTML = `

${data.location.name} (${data.current.last_updated})

Temperature: ${data.current.temp_c}°C

Wind: ${data.current.wind_kph} KPH

Humidity: ${data.current.humidity}%

${data.current.condition.text}

${data.current.condition.text}

`; let forecast = document.getElementById('forecast'); forecast.innerHTML = ''; let lastFourDays = data.forecast.forecastday.slice(-4); lastFourDays.forEach(day => { forecast.innerHTML += `

${day.date}

${day.day.condition.text}

Temp: ${day.day.avgtemp_c}°C

Wind: ${day.day.maxwind_kph} KPH

Humidity: ${day.day.avghumidity}%

`; }); } document.getElementById('subscribe-form').addEventListener('submit', function(event) { event.preventDefault(); let email = document.getElementById('email-input').value; fetch('/subscribe', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email: email }) }) .then(response => response.json()) .then(data => { if (data.error) { alert(data.error); } else { alert(data.message); } }) .catch(error => console.error('Error:', error)); });