improve rain chart rounding

This commit is contained in:
2026-02-05 10:02:48 +11:00
parent 1afe9c605b
commit 730811b76e
2 changed files with 20 additions and 2 deletions

View File

@@ -101,6 +101,7 @@ function computeRainIncrements(points) {
if (prev !== null) {
delta = p.rain_mm - prev;
if (delta < 0) delta = 0;
if (delta < 0.1) delta = 0;
}
prev = p.rain_mm;
out.push({ x: t, y: delta });
@@ -118,7 +119,17 @@ function computeHourlySums(points, tz) {
}
return Array.from(buckets.entries())
.sort((a, b) => a[0] - b[0])
.map(([x, y]) => ({ x, y }));
.map(([x, y]) => ({ x, y: y < 0.1 ? 0 : y }));
}
function clampRainSeries(points, key) {
return points.map((p) => {
const v = p[key];
if (v == null) {
return { ...p };
}
return { ...p, [key]: v < 0.1 ? 0 : v };
});
}
function startOfDay(date, tz) {
@@ -754,11 +765,14 @@ function renderDashboard(data) {
const rainIncs = computeRainIncrements(obsFiltered);
const rainHourly = computeHourlySums(rainIncs, state.tz);
const latestRainHour = rainHourly.length ? rainHourly[rainHourly.length - 1].y : null;
updateText("live-rain-hour", latestRainHour == null ? "--" : `${formatNumber(latestRainHour, 2)} mm`);
const rainTitle = document.getElementById("chart-rain-title");
if (rainTitle) {
rainTitle.textContent = "Rain (obs hourly sum vs forecast)";
}
const forecastRain = clampRainSeries(forecastLine, "precip_mm");
const rainChart = {
data: {
datasets: [
@@ -772,7 +786,7 @@ function renderDashboard(data) {
{
type: "bar",
label: "forecast precip (mm)",
data: series(forecast, "precip_mm"),
data: series(forecastRain, "precip_mm"),
backgroundColor: colors.forecast,
yAxisID: "y",
},