-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.qmd
146 lines (114 loc) · 5.44 KB
/
index.qmd
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
---
title: "Application météo"
---
Prévisions météorologiques des 4 prochains jours :
```{=html}
<!DOCTYPE html>
<html>
<head>
<title>Prévisions de température et précipitations</title>
</head>
<body>
<table border="1">
<tr>
<th><strong>Jour</strong></th>
<th><strong>Température moyenne (°C)</strong></th>
<th><strong>Température maximale (°C)</strong></th>
<th><strong>Température minimale (°C)</strong></th>
<th><strong>Précipitations (mm)</strong></th>
<th><strong>Code météo</strong></th>
<th><strong>Vitesse du Vent (km/h)</strong></th>
</tr>
<!-- Les données seront remplies ici par JavaScript -->
</table>
<footer>
<p>© <strong>2023 Roméo BEX Tous droits réservés.</strong></p>
</footer>
<script>
const weatherDescriptions = {
0: "Ciel dégagé",
1: "Ciel peu nuageux",
2: "Ciel partiellement nuageux",
51: "Pluie légère",
53: "Pluie modérée",
61: "Averses de pluie"
};
function getDayName(day) {
const days = ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"];
return days[day];
}
function fetchCurrentTemperature() {
const currentTempApiUrl = "https://api.open-meteo.com/v1/meteofrance?latitude=43.6109&longitude=3.8763&hourly=temperature_2m";
fetch(currentTempApiUrl)
.then(response => response.json())
.then(data => {
const temperatureData = data.hourly.temperature_2m;
const table = document.querySelector("table");
const currentDate = new Date();
const currentDay = currentDate.getDay();
for (let i = 0; i < 4; i++) {
const row = table.insertRow(-1);
const dayCell = row.insertCell(0);
const tempCell = row.insertCell(1);
const dayIndex = (currentDay + i) % 7;
const dayName = getDayName(dayIndex);
dayCell.innerHTML = dayName;
tempCell.innerHTML = `${temperatureData[i]}°C`;
}
})
.catch(error => console.error("Erreur lors de la récupération des données de température actuelle : " + error));
}
function fetchMaxMinTemperatureAndPrecipitations() {
const maxMinTempApiUrl = "https://api.open-meteo.com/v1/meteofrance?latitude=43.6109&longitude=3.8763&daily=temperature_2m_max,temperature_2m_min&hourly=precipitation&timezone=Europe%2FBerlin";
fetch(maxMinTempApiUrl)
.then(response => response.json())
.then(data => {
const maxTempData = data.daily.temperature_2m_max.slice(0, 4);
const minTempData = data.daily.temperature_2m_min.slice(0, 4);
const precipitationData = data.hourly.precipitation.slice(0, 4);
const table = document.querySelector("table");
for (let i = 0; i < 4; i++) {
const row = table.rows[i + 1];
const maxTempCell = row.insertCell(2);
const minTempCell = row.insertCell(3);
const precipitationCell = row.insertCell(4);
maxTempCell.innerHTML = `${maxTempData[i]}°C`;
minTempCell.innerHTML = `${minTempData[i]}°C`;
precipitationCell.innerHTML = `${precipitationData[i]} mm`;
}
})
.catch(error => console.error("Erreur lors de la récupération des données de température maximale, minimale et précipitations : " + error));
}
function fetchWeatherCode() {
const weatherCodeApiUrl = "https://api.open-meteo.com/v1/meteofrance?latitude=43.6109&longitude=3.8763&hourly=weathercode,windspeed_10m&timezone=Europe%2FBerlin";
fetch(weatherCodeApiUrl)
.then(response => response.json())
.then(data => {
const weatherCodeData = data.hourly.weathercode.slice(0, 4);
const windSpeedData = data.hourly.windspeed_10m.slice(0, 4);
const table = document.querySelector("table");
for (let i = 0; i < 4; i++) {
const row = table.rows[i + 1];
const weatherCodeCell = row.insertCell(5);
const windSpeedCell = row.insertCell(6);
const code = weatherCodeData[i];
const description = weatherDescriptions[code] || "Inconnu";
weatherCodeCell.innerHTML = description;
windSpeedCell.innerHTML = `${Math.floor(windSpeedData[i] * 3.6)}`;
}
})
.catch(error => console.error("Erreur lors de la récupération des données de code météo et vitesse du vent : " + error));
}
// Actualise les données toutes les 15 minutes (en millisecondes)
setInterval(function() {
fetchCurrentTemperature();
fetchMaxMinTemperatureAndPrecipitations();
fetchWeatherCode();
}, 15 * 60 * 1000); // 15 minutes en millisecondes
fetchCurrentTemperature();
fetchMaxMinTemperatureAndPrecipitations();
fetchWeatherCode();
</script>
</body>
</html>
```