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

View File

@@ -66,6 +66,10 @@
<div class="label">Rain 1h %</div> <div class="label">Rain 1h %</div>
<div class="value" id="live-rain-prob">--</div> <div class="value" id="live-rain-prob">--</div>
</div> </div>
<div class="metric">
<div class="label">Rain hour mm</div>
<div class="value" id="live-rain-hour">--</div>
</div>
<div class="metric"> <div class="metric">
<div class="label">Wind m/s</div> <div class="label">Wind m/s</div>
<div class="value" id="live-wind">--</div> <div class="value" id="live-wind">--</div>