Feature: User-Feedback, Regen-Uhrzeit im Wetter-Chip, Admin-Karten klickbar (SW by-v833)
- Feedback-Modal im Settings (Kategorie + Text → E-Mail an support@banyaro.app) - Wetter-Chip (Karte + Gassi-Score): zeigt nächste Regenstunde ab ≥20% Wahrscheinlichkeit - Gassi-Score-Chip: zweizeilige Wetter-Info, linksbündig, volle Chipbreite - Admin-Übersicht: Stat-Karten anklickbar → navigiert direkt zum jeweiligen Tab - ui.js: visualViewport-Listener hebt Modal über Tastatur (alle Modals) - api.js: Pydantic v2 Array-Detail korrekt als Fehlermeldung extrahiert - map.js: Wetter-Fallback über watchPosition wenn getCurrentPosition scheitert - Update-Loop-Fix: index.html ?v= synchron mit APP_VER halten (alle 4 Stellen)
This commit is contained in:
parent
d18c592ef0
commit
70af387147
12 changed files with 211 additions and 42 deletions
|
|
@ -11,6 +11,7 @@ window.Page_map = (() => {
|
|||
let _map = null;
|
||||
let _leafletLoaded = false;
|
||||
let _userPos = null;
|
||||
let _weatherLoaded = false;
|
||||
let _placingMarker = false;
|
||||
let _tempMarker = null;
|
||||
|
||||
|
|
@ -147,6 +148,7 @@ window.Page_map = (() => {
|
|||
_userPos = pos;
|
||||
if (_frankfurtTimer) { clearTimeout(_frankfurtTimer); _frankfurtTimer = null; }
|
||||
_map?.flyTo([pos.lat, pos.lon], 14, { duration: 1.2 });
|
||||
_weatherLoaded = true;
|
||||
_loadWeather(pos.lat, pos.lon);
|
||||
}).catch(() => {
|
||||
const btn = document.getElementById('map-locate-btn');
|
||||
|
|
@ -373,6 +375,7 @@ window.Page_map = (() => {
|
|||
pos => {
|
||||
const { latitude: lat, longitude: lon, accuracy: acc } = pos.coords;
|
||||
_userPos = { lat, lon };
|
||||
if (!_weatherLoaded) { _weatherLoaded = true; _loadWeather(lat, lon); }
|
||||
if (_locationMarker) {
|
||||
_locationMarker.setLatLng([lat, lon]);
|
||||
_locationAccuracy?.setLatLng([lat, lon]).setRadius(acc);
|
||||
|
|
@ -1628,7 +1631,9 @@ window.Page_map = (() => {
|
|||
const w = await API.weather.get(lat, lon);
|
||||
const temp = w.temp_c != null ? `${Math.round(w.temp_c)}°` : '–';
|
||||
const icon = `<svg class="ph-icon" aria-hidden="true" style="width:12px;height:12px;vertical-align:-2px"><use href="/icons/phosphor.svg#${w.icon}"></use></svg>`;
|
||||
const regen = w.precip_prob != null ? ` · 💧 ${w.precip_prob}%` : '';
|
||||
const regen = w.precip_prob != null
|
||||
? (w.next_rain_time ? ` · 💧 ${w.precip_prob}% ab ${w.next_rain_time}` : ` · 💧 ${w.precip_prob}%`)
|
||||
: '';
|
||||
let zecken = '';
|
||||
if (w.zecken_warnung) {
|
||||
const col = w.zecken_warnung === 'hoch' ? '#991B1B' : '#92400E';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue