From 00baa1ba8a5fd802cc3fa7b876dc62958b6cc4a5 Mon Sep 17 00:00:00 2001 From: "jetbrains-junie[bot]" <201638009+jetbrains-junie[bot]@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:09:18 +0000 Subject: [PATCH] feat: refactor report page to use Open-Meteo API The report page was successfully refactored to retrieve weather data directly from the Open-Meteo API via client-side JavaScript, removing the dependency on backend data. The ReportController now only passes city, latitude, and longitude to the frontend, with no server-side weather data fetching. All changes were compiled without errors. --- .../weatherapp/web/ReportController.java | 32 +--- src/main/resources/templates/report.html | 138 ++++++++++++------ 2 files changed, 96 insertions(+), 74 deletions(-) diff --git a/src/main/java/com/example/weatherapp/web/ReportController.java b/src/main/java/com/example/weatherapp/web/ReportController.java index 006b9e1..85a9ff1 100644 --- a/src/main/java/com/example/weatherapp/web/ReportController.java +++ b/src/main/java/com/example/weatherapp/web/ReportController.java @@ -1,9 +1,5 @@ package com.example.weatherapp.web; -import com.example.weatherapp.weather.WeatherService; -import com.example.weatherapp.weather.WeatherService.WeatherReport; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -12,40 +8,24 @@ @Controller public class ReportController { - private final WeatherService weatherService; - private final ObjectMapper objectMapper; - - public ReportController(WeatherService weatherService) { - this.weatherService = weatherService; - this.objectMapper = new ObjectMapper(); + public ReportController() { } @GetMapping("/report") public String report(@RequestParam("lat") double lat, @RequestParam("lon") double lon, @RequestParam(value = "city", required = false) String city, - Model model) throws JsonProcessingException { + Model model) { // Basic validation of ranges if (lat < -90 || lat > 90 || lon < -180 || lon > 180) { model.addAttribute("error", "Invalid coordinates."); return "report"; } - try { - WeatherReport report = weatherService.fetchHourlyReport(lat, lon); - String reportJson = objectMapper.writeValueAsString(report); - - model.addAttribute("city", city); - model.addAttribute("lat", lat); - model.addAttribute("lon", lon); - model.addAttribute("timezone", report.getTimezone()); - model.addAttribute("reportJson", reportJson); - } catch (Exception ex) { - model.addAttribute("city", city); - model.addAttribute("lat", lat); - model.addAttribute("lon", lon); - model.addAttribute("error", "Failed to fetch weather data. Please try again later."); - } + // Pass only basic info. Weather data will be fetched on the client side. + model.addAttribute("city", city); + model.addAttribute("lat", lat); + model.addAttribute("lon", lon); return "report"; } } diff --git a/src/main/resources/templates/report.html b/src/main/resources/templates/report.html index c218800..4640045 100644 --- a/src/main/resources/templates/report.html +++ b/src/main/resources/templates/report.html @@ -93,76 +93,118 @@
Timezone: auto
+Timezone: auto
-