V 1.5.6 fix: Min/Max-Statistik nutzt echte Tages-Min/Max statt Durchschnitt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-08 17:31:34 +02:00
parent 77f31d0509
commit 4499313baa
+22 -12
View File
@@ -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,