/** @format */ function formatDate(timestamp) { let date = new Date(timestamp); let hours = date.getHours(); hours = hours % 12 || 12; let minutes = date.getMinutes(); if (minutes < 10) { minutes = `0${minutes}`; } let days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ]; let day = days[date.getDay()]; return `${day} ${hours}:${minutes}`; } function formatDay(timestamp){ let date = new Date(timestamp * 1000); let day = date.getDay(); let days = ["Sun", "Mon", "Tue", "Wen", "Thu", "Fri", "Sat"]; return days[day]; } function displayForecast(response){ let forecast = response.data.daily; let forecastElement = document.querySelector("#forecast"); //console.log(response.data.daily); let forecastHTML = `
`; forecast.forEach(function(forecastDay, index) { if (index < 6){ forecastHTML = forecastHTML + `
${formatDay (forecastDay.dt)}
${Math.round(forecastDay.temp.max)}° ${Math.round(forecastDay.temp.min)}°
`; } }); forecastHTML = forecastHTML + `
`; forecastElement.innerHTML = forecastHTML; //console.log(forecastHTML); } function getForecast(coordinates){ let apiKey = "46b3f3743cd9adf9227d965d6bd2265c"; let apiUrl = `https://api.openweathermap.org/data/2.5/onecall?lat=${coordinates.lat}&lon=${coordinates.lon}&appid=${apiKey}&units=metric`; //console.log(apiUrl); axios.get(apiUrl).then(displayForecast); } function displayTemperature(response) { //console.log(response.data); let descriptionElement = document.querySelector("#description"); let cityElement = document.querySelector("#city"); let temperatureElement = document.querySelector("#temperature"); let humidityElement = document.querySelector("#humidity"); let windElement = document.querySelector("#wind"); let dateElement = document.querySelector("#date"); let iconElement = document.querySelector("#icon"); celsiusTemperature = response.data.main.temp; descriptionElement.innerHTML = response.data.weather[0].description; cityElement.innerHTML = response.data.name; temperatureElement.innerHTML = Math.round(celsiusTemperature); humidityElement.innerHTML = Math.round(response.data.main.humidity); windElement.innerHTML = Math.round(response.data.wind.speed); dateElement.innerHTML = formatDate(response.data.dt * 1000); iconElement.setAttribute( "src", `https://openweathermap.org/img/wn/${response.data.weather[0].icon}@2x.png` ); iconElement.setAttribute("alt", response.data.weather[0].description); getForecast(response.data.coord); } function search(city) { let apiKey = "46b3f3743cd9adf9227d965d6bd2265c"; let apiUrl = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`; axios.get(apiUrl).then(displayTemperature); //console.log(apiUrl); } function handleSubmit(event) { event.preventDefault(); let cityInputElement = document.querySelector("#city-input"); search(cityInputElement.value); } function displayFarenheitTemperature(event) { event.preventDefault(); let temperatureElement = document.querySelector("#temperature"); farenheitLink.classList.add("active"); celsiusLink.classList.remove("active"); let farenheitTemperature = (celsiusTemperature * 9) / 5 + 32; temperatureElement.innerHTML = Math.round(farenheitTemperature); } function displayCelsiusTemperature(event) { event.preventDefault(); celsiusLink.classList.add("active"); farenheitLink.classList.remove("active"); let temperatureElement = document.querySelector("#temperature"); temperatureElement.innerHTML = Math.round(celsiusTemperature); } let celsiusTemperature = null; let form = document.querySelector("#search-form"); form.addEventListener("submit", handleSubmit); let farenheitLink = document.querySelector("#farenheit-link"); farenheitLink.addEventListener("click", displayFarenheitTemperature); let celsiusLink = document.querySelector("#celsius-link"); celsiusLink.addEventListener("click", displayCelsiusTemperature); search("New York");