mirror of
https://github.com/netbymatt/ws4kp.git
synced 2026-04-14 07:39:29 -07:00
- Add module for expired period filtering - Switch from json() to safeJson() for centralized error handling - Improve nighttime period handling to focus on full days - Fix day/night temperature pairing logic - Add debug logging
31 lines
973 B
JavaScript
31 lines
973 B
JavaScript
// shared utility functions for forecast processing
|
|
|
|
/**
|
|
* Filter out expired periods from forecast data
|
|
* @param {Array} periods - Array of forecast periods
|
|
* @param {string} forecastUrl - URL used for logging (optional)
|
|
* @returns {Array} - Array of active (non-expired) periods
|
|
*/
|
|
const filterExpiredPeriods = (periods, forecastUrl = '') => {
|
|
const now = new Date();
|
|
|
|
const { activePeriods, removedPeriods } = periods.reduce((acc, period) => {
|
|
const endTime = new Date(period.endTime);
|
|
if (endTime > now) {
|
|
acc.activePeriods.push(period);
|
|
} else {
|
|
acc.removedPeriods.push(period);
|
|
}
|
|
return acc;
|
|
}, { activePeriods: [], removedPeriods: [] });
|
|
|
|
if (removedPeriods.length > 0) {
|
|
const source = forecastUrl ? ` from ${forecastUrl}` : '';
|
|
console.log(`🚮 Forecast: Removed expired periods${source}: ${removedPeriods.map((p) => `${p.name} (ended ${p.endTime})`).join(', ')}`);
|
|
}
|
|
|
|
return activePeriods;
|
|
};
|
|
|
|
export default filterExpiredPeriods;
|