-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
110 lines (85 loc) · 3.01 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
const iconElement = document.querySelector(".weather-icon");
const locationIcon = document.querySelector(".location-icon");
const tempElement = document.querySelector(".temperature-value p");
const descElement = document.querySelector(".temperature-description p");
const locationElement = document.querySelector(".location p");
const notificationElement = document.querySelector(".notification");
var input = document.getElementById("search");
let city = "";
let latitude = 0.0;
let longitude = 0.0;
input.addEventListener("keyup", function (event) {
if (event.keyCode === 13) {
event.preventDefault();
city = input.value;
getSearchWeather(city);
console.log(city);
}
});
const weather = {};
weather.temperature = {
unit: "celsius",
};
const KELVIN = 273;
const key = "b3aaa0b3323c0baab93aff38f75b44cb";
if ("geolocation" in navigator) {
navigator.geolocation.getCurrentPosition(setPosition, showError);
} else {
notificationElement.style.display = "block";
notificationElement.innerHTML = "<p>Browser doesn't Support Geolocation</p>";
}
function setPosition(position) {
latitude = position.coords.latitude;
longitude = position.coords.longitude;
getWeather(latitude, longitude);
}
locationIcon.addEventListener("click", function (event) {
console.log("hi");
getWeather(latitude, longitude);
});
function showError(error) {
notificationElement.style.display = "block";
notificationElement.innerHTML = `<p> ${error.message} </p>`;
}
function getSearchWeather(city) {
let api = `http://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${key}`;
fetch(api)
.then(function (response) {
let data = response.json();
return data;
})
.then(function (data) {
weather.temperature.value = Math.floor(data.main.temp - KELVIN);
weather.description = data.weather[0].description;
weather.iconId = data.weather[0].icon;
weather.city = data.name;
weather.country = data.sys.country;
})
.then(function () {
displayWeather();
});
}
function getWeather(latitude, longitude) {
let api = `http://api.openweathermap.org/data/2.5/weather?lat=${latitude}&lon=${longitude}&appid=${key}`;
fetch(api)
.then(function (response) {
let data = response.json();
return data;
})
.then(function (data) {
weather.temperature.value = Math.floor(data.main.temp - KELVIN);
weather.description = data.weather[0].description;
weather.iconId = data.weather[0].icon;
weather.city = data.name;
weather.country = data.sys.country;
})
.then(function () {
displayWeather();
});
}
function displayWeather() {
iconElement.innerHTML = `<img src="icons/${weather.iconId}.png"/>`;
tempElement.innerHTML = `${weather.temperature.value}°<span>C</span>`;
descElement.innerHTML = weather.description;
locationElement.innerHTML = `${weather.city}, ${weather.country}`;
}