/** @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");