-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
86 lines (74 loc) · 2.59 KB
/
app.js
File metadata and controls
86 lines (74 loc) · 2.59 KB
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
const notificationElement=document.querySelector(".notification");
const iconElement=document.querySelector(".weather-icon");
const tempElement=document.querySelector(".temp-value p");
const descElement=document.querySelector(".temp-description p");
const locationElement=document.querySelector(".location p");
const weather={}
weather.temperature={
unit:"celcius",
value:undefined,
original:undefined
}
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}`;
}
function celciustofahrenheit(celsius) {
return (celsius * 9/5) + 32;
}
function calculatetocelcius(fahrenheit){
return Math.floor((fahrenheit - 32) * 5 / 9);
}
tempElement.addEventListener("click",function(){
if(weather.temperature.value===undefined) return;
if(weather.temperature.unit==="celcius")
{
let fahrenheit=celciustofahrenheit(weather.temperature.value);
fahrenheit=Math.floor(fahrenheit);
tempElement.innerHTML=`${fahrenheit}°<span>F</span>`;
weather.temperature.unit="fahrenheit";
}
else{
tempElement.innerHTML = `${weather.temperature.original}°<span>C</span>`;
weather.temperature.unit = "celcius";
}
});
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){
let latitude=position.coords.latitude;
let longitude=position.coords.longitude;
getWeather(latitude,longitude);
}
function showError(error){
notificationElement.style.display="block";
notificationElement.innerHTML=`<p>${error.message}</p>`;
}
const kelvin=273;
const key = "82005d27a116c2880c8f0fcb866998a0";
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.temperature.original = weather.temperature.value;
weather.description=data.weather[0].description;
weather.iconId=data.weather[0].icon;
weather.city=data.name;
weather.country=data.sys.country;
})
.then(function(){
displayWeather();
});
}