improve rain chart rounding
This commit is contained in:
@@ -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",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user