diff --git a/Back-end/src/main/java/com/example/starter/MainVerticle.java b/Back-end/src/main/java/com/example/starter/MainVerticle.java
index 66b020c..839e041 100644
--- a/Back-end/src/main/java/com/example/starter/MainVerticle.java
+++ b/Back-end/src/main/java/com/example/starter/MainVerticle.java
@@ -69,6 +69,8 @@ public class MainVerticle extends AbstractVerticle {
router.post("/changePassword").handler(setUser::changeUserPassword);
router.post("/publicUser").handler(queryUsers::getPublicUser);
router.get("/getCategories").handler(queryObjects::getCategories);
+ router.get("/getLocations").handler(queryObjects::getLocations);
+ router.post("/getMeteoHome").handler(queryWeather::getMeteoInfosHomePage);
router.post("/addCategories").handler(setObjects::newCategorie);
router.post("/deleteCategories").handler(setObjects::deleteCategories);
router.post("/requestDeleteObject").handler(RequestDeleteObject::deleteObject);
diff --git a/Back-end/src/main/java/com/example/starter/QueryObjects.java b/Back-end/src/main/java/com/example/starter/QueryObjects.java
index 61d60dc..e30f2a2 100644
--- a/Back-end/src/main/java/com/example/starter/QueryObjects.java
+++ b/Back-end/src/main/java/com/example/starter/QueryObjects.java
@@ -40,6 +40,33 @@ public class QueryObjects {
});
}
+ public void getLocations(RoutingContext context) {
+ databaseService.pool
+ .query("SELECT DISTINCT location FROM weather_objects;")
+ .execute()
+ .onFailure(e -> {
+ System.err.println("Erreur de récupération de la BDD :" + e.getMessage());
+ context.response()
+ .setStatusCode(500)
+ .end(new JsonObject().put("error", "Erreur de récupération de la BDD").encode());
+ })
+ .onSuccess(rows -> {
+ if (!rows.iterator().hasNext()) {
+ context.response()
+ .setStatusCode(404)
+ .end(new JsonObject().put("error", "Aucun lieu trouvé dans la base de données").encode());
+ return;
+ }
+
+ JsonArray types = new JsonArray();
+ rows.forEach(row -> types.add(row.getString("location")));
+
+ context.response()
+ .putHeader("content-type", "application/json; charset=UTF-8")
+ .end(types.encode());
+ });
+ }
+
public void getCategories(RoutingContext context) {
databaseService.pool
.query("SELECT name FROM categories;")
diff --git a/Back-end/src/main/java/com/example/starter/QueryWeatherData.java b/Back-end/src/main/java/com/example/starter/QueryWeatherData.java
index 4a0dbb6..ee07190 100644
--- a/Back-end/src/main/java/com/example/starter/QueryWeatherData.java
+++ b/Back-end/src/main/java/com/example/starter/QueryWeatherData.java
@@ -48,6 +48,42 @@ public class QueryWeatherData {
.end((convertRowsToJson(rows)).encode());
});
}
+
+ public void getMeteoInfosHomePage(RoutingContext context) {
+ JsonObject body = context.body().asJsonObject();
+ String location = body.getString("location");
+ if (location == null) {
+ context.response()
+ .setStatusCode(400)
+ .end(new JsonObject().put("error", "Paramètre 'location' manquant").encode());
+ return;
+ }
+ System.out.println("Paramètre passé à la requête : '" + location + "'");
+ databaseService.pool
+ .query("SELECT wd.wind_speed, wd.temperature, wd.humidity, wd.pressure FROM weather_data wd " +
+ "JOIN weather_objects s ON wd.station_id = s.id WHERE s.location = '" + location +
+ "' ORDER BY wd.timestamp DESC LIMIT 1;")
+ .execute()
+ .onFailure(e -> {
+ System.err.println("Erreur de récupération de la BDD : " + e.getMessage());
+ context.response()
+ .setStatusCode(500)
+ .end(new JsonObject().put("error", "Erreur de récupération de la BDD").encode());
+ })
+ .onSuccess(rows -> {
+ if (rows.size() == 0) {
+ context.response()
+ .setStatusCode(404)
+ .end(new JsonObject().put("error", "Aucune donnée trouvée pour cette location").encode());
+ return;
+ }
+
+ context.response()
+ .putHeader("content-type", "application/json; charset=UTF-8")
+ .end(convertRowsToJson(rows).encode());
+ });
+ }
+
public void getMeteoInfos(RoutingContext context) {
String id = context.request().getParam("id");
if (id == null) {
@@ -78,35 +114,37 @@ public class QueryWeatherData {
.end((convertRowsToJson(rows)).encode());
});
}
- public void getRangeData(RoutingContext context){
- String id= context.request().getParam("id");
- if(id==null){
+
+ public void getRangeData(RoutingContext context) {
+ String id = context.request().getParam("id");
+ if (id == null) {
context.response()
- .setStatusCode(400)
- .end(new JsonObject().put("error","Paramètre 'id' manquant").encode());
+ .setStatusCode(400)
+ .end(new JsonObject().put("error", "Paramètre 'id' manquant").encode());
return;
}
databaseService.pool
- .preparedQuery("SELECT temperature_min,temperature_max,pressure_min,pressure_max,humidity_min,humidity_max FROM range_data WHERE station_id=?")
- .execute(Tuple.of(Integer.parseInt(id)))
- .onFailure(e->{
- System.err.println("Erreur de récupération de la BDD: "+e.getMessage());
- context.response()
- .setStatusCode(500)
- .end(new JsonObject().put("error","Erreur de récupération de la BDD").encode());
- return;
- })
- .onSuccess(rows->{
- if(rows.size() == 0){
- context.response()
- .setStatusCode(404)
- .end(new JsonObject().put("error","Objet non trouvé").encode());
- return;
- }
- context.response()
- .putHeader("content-type","application/json:charset=UTF-8")
- .end((convertRowsToJson(rows)).encode());
- });
+ .preparedQuery(
+ "SELECT temperature_min,temperature_max,pressure_min,pressure_max,humidity_min,humidity_max FROM range_data WHERE station_id=?")
+ .execute(Tuple.of(Integer.parseInt(id)))
+ .onFailure(e -> {
+ System.err.println("Erreur de récupération de la BDD: " + e.getMessage());
+ context.response()
+ .setStatusCode(500)
+ .end(new JsonObject().put("error", "Erreur de récupération de la BDD").encode());
+ return;
+ })
+ .onSuccess(rows -> {
+ if (rows.size() == 0) {
+ context.response()
+ .setStatusCode(404)
+ .end(new JsonObject().put("error", "Objet non trouvé").encode());
+ return;
+ }
+ context.response()
+ .putHeader("content-type", "application/json:charset=UTF-8")
+ .end((convertRowsToJson(rows)).encode());
+ });
}
private JsonArray convertRowsToJson(RowSet
- 21°C
+ {infoMeteo.temperature}°C
- 23°C
+ {infoMeteo.temperature-2}°C
@@ -292,7 +349,7 @@ function EnhancedWeatherHome() {
isDayTime ? "text-gray-900" : "text-white"
}`}
>
- 68%
+ {infoMeteo.humidity}%
@@ -320,7 +377,7 @@ function EnhancedWeatherHome() {
isDayTime ? "text-gray-900" : "text-white"
}`}
>
- 12 km/h
+ {infoMeteo.wind_speed} km/h
@@ -721,8 +778,7 @@ function EnhancedWeatherHome() {
: "text-indigo-400 hover:text-indigo-300"
}`}
>
- Ajouter un objet{" "}
-
+ {filteredLocations.length > 0 ? (
+ filteredLocations.map((loc, idx) => (
+
+ )}
@@ -204,7 +261,7 @@ function EnhancedWeatherHome() {
isDayTime ? "text-gray-700" : "text-gray-200"
}`}
>
- Paris, France
+ {ville}