From 4499313baaf633831ba8af58abfa808ceb6c1dbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20X=2E=20F=C3=BCrst?= Date: Fri, 8 May 2026 17:31:34 +0200 Subject: [PATCH] V 1.5.6 fix: Min/Max-Statistik nutzt echte Tages-Min/Max statt Durchschnitt Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/components/WeatherDashboard.jsx | 34 +++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/frontend/src/components/WeatherDashboard.jsx b/frontend/src/components/WeatherDashboard.jsx index 473a9ce..a0c3cdc 100644 --- a/frontend/src/components/WeatherDashboard.jsx +++ b/frontend/src/components/WeatherDashboard.jsx @@ -821,39 +821,49 @@ const WeatherDashboard = ({ data, currentData = [], rainData = [], timeRange = ' return format(new Date(raw), timeFormat, { locale: de }) } + // Bei aggregierten Daten (7d+) liegen echte Tages-Min/Max in eigenen Feldern; + // bei 24h-Rohdaten sind diese Felder nicht vorhanden → Fallback auf den Messwert selbst. + const hasAggregated = periodData[0]?.min_temperature != null + // Temperatur + const minTempField = hasAggregated ? 'min_temperature' : 'temperature' + const maxTempField = hasAggregated ? 'max_temperature' : 'temperature' const minTempItem = periodData.reduce((min, item) => - item.temperature != null && (min === null || item.temperature < min.temperature) ? item : min, null) + item[minTempField] != null && (min === null || item[minTempField] < min[minTempField]) ? item : min, null) const maxTempItem = periodData.reduce((max, item) => - item.temperature != null && (max === null || item.temperature > max.temperature) ? item : max, null) + item[maxTempField] != null && (max === null || item[maxTempField] > max[maxTempField]) ? item : max, null) // Luftfeuchtigkeit + const minHumidityField = hasAggregated ? 'min_humidity' : 'humidity' + const maxHumidityField = hasAggregated ? 'max_humidity' : 'humidity' const minHumidityItem = periodData.reduce((min, item) => - item.humidity != null && (min === null || item.humidity < min.humidity) ? item : min, null) + item[minHumidityField] != null && (min === null || item[minHumidityField] < min[minHumidityField]) ? item : min, null) const maxHumidityItem = periodData.reduce((max, item) => - item.humidity != null && (max === null || item.humidity > max.humidity) ? item : max, null) + item[maxHumidityField] != null && (max === null || item[maxHumidityField] > max[maxHumidityField]) ? item : max, null) // Luftdruck + const minPressureField = hasAggregated ? 'min_pressure' : 'pressure' + const maxPressureField = hasAggregated ? 'max_pressure' : 'pressure' const minPressureItem = periodData.reduce((min, item) => - item.pressure != null && (min === null || item.pressure < min.pressure) ? item : min, null) + item[minPressureField] != null && (min === null || item[minPressureField] < min[minPressureField]) ? item : min, null) const maxPressureItem = periodData.reduce((max, item) => - item.pressure != null && (max === null || item.pressure > max.pressure) ? item : max, null) + item[maxPressureField] != null && (max === null || item[maxPressureField] > max[maxPressureField]) ? item : max, null) // Wind const maxWindGustItem = periodData.reduce((max, item) => item.wind_gust != null && (max === null || item.wind_gust > max.wind_gust) ? item : max, null) return { - minTemp: minTempItem?.temperature ?? null, - maxTemp: maxTempItem?.temperature ?? null, + minTemp: minTempItem?.[minTempField] ?? null, + maxTemp: maxTempItem?.[maxTempField] ?? null, minTempTime: itemTime(minTempItem, 'min_temperature_time'), maxTempTime: itemTime(maxTempItem, 'max_temperature_time'), - minHumidity: minHumidityItem?.humidity ?? null, - maxHumidity: maxHumidityItem?.humidity ?? null, + minHumidity: minHumidityItem?.[minHumidityField] ?? null, + maxHumidity: maxHumidityItem?.[maxHumidityField] ?? null, minHumidityTime: itemTime(minHumidityItem, 'min_humidity_time'), maxHumidityTime: itemTime(maxHumidityItem, 'max_humidity_time'), - minPressure: minPressureItem?.pressure ?? null, - maxPressure: maxPressureItem?.pressure ?? null, + minPressure: minPressureItem?.[minPressureField] ?? null, + maxPressure: maxPressureItem?.[maxPressureField] ?? null, minPressureTime: itemTime(minPressureItem, 'min_pressure_time'), maxPressureTime: itemTime(maxPressureItem, 'max_pressure_time'), maxWindGust: maxWindGustItem?.wind_gust ?? null,