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 @@

Weather report for - (lat, lon) + (lat, lon)

-

Timezone: auto

+

Timezone: auto

-
An error occurred
+
An error occurred
+ -
+
Loading weather data…
+ + - -