Feature: Stündliche Niederschlagswahrscheinlichkeit auf Wetter-Seite (SW by-v690)

- Backend: Open-Meteo Forecast-Request um hourly precipitation_probability,
  precipitation und weathercode erweitert; stündliche Daten werden pro Tag
  gruppiert und im API-Response unter "hourly" je Tag ausgeliefert
- Frontend: Neue _renderRainTimeline()-Funktion rendert horizontale
  Balken-Zeitskala für alle 24 Stunden des gewählten Tages; bei "Heute"
  wird automatisch zur aktuellen Stunde gescrollt und "jetzt" hervorgehoben;
  Farb-Gradient von hellgrau (<10%) bis dunkelblau (≥75%)
- SW/APP_VER/CSS auf 690 gebumpt
This commit is contained in:
rene 2026-05-04 20:06:30 +02:00
parent 84e6bfdd82
commit 759979ffce
5 changed files with 169 additions and 9 deletions

View file

@ -9,7 +9,6 @@
<link rel="canonical" href="https://banyaro.app/">
<!-- Preconnect: externe Hosts frühzeitig verbinden -->
<link rel="preconnect" href="https://umami.motocamp.de">
<link rel="preconnect" href="https://tile.openstreetmap.org" crossorigin>
<link rel="dns-prefetch" href="https://tile.openstreetmap.org">
@ -76,6 +75,7 @@
<!-- PWA -->
<link rel="manifest" href="/manifest.json">
<link rel="apple-touch-icon" sizes="180x180" href="/icons/icon-180.png">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="Ban Yaro">
@ -93,9 +93,9 @@
</script>
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
<link rel="stylesheet" href="/css/design-system.css?v=664">
<link rel="stylesheet" href="/css/layout.css?v=664">
<link rel="stylesheet" href="/css/components.css?v=664">
<link rel="stylesheet" href="/css/design-system.css?v=690">
<link rel="stylesheet" href="/css/layout.css?v=690">
<link rel="stylesheet" href="/css/components.css?v=690">
</head>
<body>
@ -562,12 +562,12 @@
<script src="/js/api.js?v=94"></script>
<script src="/js/ui.js?v=94"></script>
<script src="/js/app.js?v=94"></script>
<script src="/js/worlds.js?v=664"></script>
<script src="/js/worlds.js?v=690"></script>
<!-- Feature-Seiten werden lazy geladen -->
<!-- Umami Analytics (self-hosted, cookiefrei, DSGVO-konform) -->
<script defer src="https://umami.motocamp.de/script.js" data-website-id="d1b5fe13-0e6f-4461-a176-c5439cbbc27f"></script>
<script defer src="/stats/script.js" data-website-id="d1b5fe13-0e6f-4461-a176-c5439cbbc27f" data-api-host="/stats"></script>
<!-- Offline-Banner Logik -->