-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscripts.js
More file actions
100 lines (93 loc) · 3.13 KB
/
scripts.js
File metadata and controls
100 lines (93 loc) · 3.13 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/* Unités possibles */
const unites = {
"humidity" : "% d'humidité",
"temp" : "°",
"temp_min" : "° Min.",
"feels_like" : "° Ressenti",
"temp_max" : "° Max.",
"wind_speed" : " km/h",
"description" : "",
"wind_deg" : "",
"sunset" : "",
"sunrise" : "",
}
/* Formate une date timestamp en heure & minutes */
function timeToHour(timestamp) {
const date = new Date(timestamp * 1000)
const hours = date.getUTCHours() + 1
const minutes = date.getUTCMinutes()
return hours + ':' + minutes
}
/* Convertit les degrés Pascal en Celcius */
function pascalToCelcius(kelvin) {
return (kelvin - 273.15).toFixed(1)
}
/* Convertit les m/s en km/h */
function msToKmh(mps) {
return (mps * 3.6).toFixed(0)
}
/* Ajouter l'élement HTML en dessous du parent et avec son unité */
function createElement(element, data, parent, unite) {
var element = document.createElement(element)
element.textContent = data + unites[unite]
var container = document.querySelector(parent)
return container.appendChild(element)
}
/* Convertit la direction du vente en point cardinaux */
function degreeToCardinal(deg) {
var degrees = parseFloat(deg)
const cardinalDirections = [
"Nord",
"Nord Nord Est",
"Nord Est",
"Est Nord Est",
"Est",
"Est Sud Est",
"Sud Est",
"Sud Sud Est",
"Sud",
"Sud Sud Ouest",
"Sud Ouest",
"Ouest Sud Ouest",
"Ouest",
"Ouest Nord Ouest",
"Nord Ouest",
"Nord Nord Ouest"
]
const degreesPerDirection = 360 / cardinalDirections.length
const index = Math.floor((degrees % 360) / degreesPerDirection)
return cardinalDirections[index]
}
server = 'server-sample.php'
if ( window.location.hostname === 'carassin.lintermediaire.be' ) {
var server = 'server.php'
}
async function runAPI(server) {
fetch(server)
.then(response => response.json())
.then(data => {
[data].forEach(function(item) {
createElement('span', item.weather[0].description, "#description", "description")
createElement('span', pascalToCelcius ( item.main.feels_like ), "#feels_like", "feels_like")
createElement('span', pascalToCelcius ( item.main.temp ), "#temp", "temp")
createElement('span', pascalToCelcius ( item.main.temp_max ), "#temp_max", "temp_max")
createElement('span', pascalToCelcius ( item.main.temp_min ), "#temp_min", "temp_min")
createElement('span', msToKmh ( item.wind.speed ), "#wind_speed", "wind_speed")
createElement('span', degreeToCardinal ( item.wind.deg ), "#wind_deg", "wind_deg")
createElement('span', item.main.humidity, "#humidity", "humidity")
createElement('span', timeToHour ( item.sys.sunrise ), "#sunrise", "sunrise")
createElement('span', timeToHour ( item.sys.sunset ), "#sunset", "sunset")
var icon = "https://openweathermap.org/img/wn/"+ item.weather[0].icon +"@2x.png"
var image = document.querySelector("#icon")
image.src = icon
})
})
.catch(error => { //console.log(error)
createElement('span', "Aie !", "#description", "description")
const elements = document.querySelectorAll('.wrap');
elements.forEach(element => {
element.remove()
})
})
}
runAPI(server)