Added daytime property

This commit is contained in:
2026-06-24 16:12:05 -04:00
parent 4c36062b73
commit 50ba52a6d3

View File

@@ -10,7 +10,7 @@ import {spec} from './spec.mjs';
import {existsSync} from 'fs'; import {existsSync} from 'fs';
import {getAirTraffic, getAirTrafficHistory, getShapes} from './airtraffic.mjs'; import {getAirTraffic, getAirTrafficHistory, getShapes} from './airtraffic.mjs';
import {getWeatherCondition} from './openweather.mjs'; import {getWeatherCondition} from './openweather.mjs';
import {ensureForecast, lastForecast, refreshForecast} from './forecast.mjs'; import {lastForecast, refreshForecast} from './forecast.mjs';
import {dailyWeather, hourlyWeather} from './openmeteo.mjs'; import {dailyWeather, hourlyWeather} from './openmeteo.mjs';
const app = express(); const app = express();
@@ -73,7 +73,6 @@ app.get('/api/hourly', async (req, res) => {
const end = req.query.end ? new Date(req.query.end) : plus24 const end = req.query.end ? new Date(req.query.end) : plus24
const coords = await getCoords() const coords = await getCoords()
const { slots } = await ensureForecast()
// Past → now: InfluxDB // Past → now: InfluxDB
const historyEnd = new Date(Math.min(now, end)) const historyEnd = new Date(Math.min(now, end))
@@ -86,7 +85,7 @@ app.get('/api/hourly', async (req, res) => {
// Now → +24h: cached physics forecast // Now → +24h: cached physics forecast
const physics = end > now const physics = end > now
? slots.filter(s => { const t = new Date(s.time); return t >= now && t <= new Date(Math.min(end, plus24)) }) ? lastForecast.slots.filter(s => { const t = new Date(s.time); return t >= now && t <= new Date(Math.min(end, plus24)) })
: [] : []
// +24h → beyond: Open-Meteo // +24h → beyond: Open-Meteo
@@ -114,8 +113,7 @@ app.get('/api/daily', async (req, res) => {
// Does the requested window overlap with today (the 24h forecast window)? // Does the requested window overlap with today (the 24h forecast window)?
const todayStr = now const todayStr = now
const { summary } = await ensureForecast() const usePhysics = lastForecast.summary && start <= next && end >= now
const usePhysics = summary && start <= next && end >= now
// Past influx history (days before today) // Past influx history (days before today)
const [sensorResult] = await Promise.allSettled([ const [sensorResult] = await Promise.allSettled([
@@ -131,7 +129,7 @@ app.get('/api/daily', async (req, res) => {
const meteo = meteoResult.status === 'fulfilled' ? meteoResult.value : [] const meteo = meteoResult.status === 'fulfilled' ? meteoResult.value : []
// Splice in physics summary for today, skip any meteo row that duplicates it // Splice in physics summary for today, skip any meteo row that duplicates it
const todaySlot = usePhysics ? [summary] : [] const todaySlot = usePhysics ? [lastForecast.summary] : []
const meteoClean = meteo.filter(r => r.time !== todayStr) const meteoClean = meteo.filter(r => r.time !== todayStr)
const daily = getCelestialForecast( const daily = getCelestialForecast(