fix extended forecast day names close #190

This commit is contained in:
Matt Walsh
2026-03-26 14:44:13 -05:00
parent 933a289d03
commit 15b68eba2f

View File

@@ -97,11 +97,9 @@ const parse = (fullForecast, forecastUrl) => {
// Skip the first period if it's nighttime (like "Tonight") since extended forecast // Skip the first period if it's nighttime (like "Tonight") since extended forecast
// should focus on upcoming full days, not the end of the current day // should focus on upcoming full days, not the end of the current day
let startIndex = 0; let startIndex = 0;
let dateOffset = 0; // offset for date labels when we skip periods
if (activePeriods.length > 0 && !activePeriods[0].isDaytime) { if (activePeriods.length > 0 && !activePeriods[0].isDaytime) {
startIndex = 1; startIndex = 1;
dateOffset = 1; // start date labels from tomorrow since we're skipping tonight
if (debugFlag('extendedforecast')) { if (debugFlag('extendedforecast')) {
console.log(`ExtendedForecast: Skipping first period "${activePeriods[0].name}" because it's nighttime`); console.log(`ExtendedForecast: Skipping first period "${activePeriods[0].name}" because it's nighttime`);
} }
@@ -111,25 +109,14 @@ const parse = (fullForecast, forecastUrl) => {
} }
} }
// create a list of days starting with the appropriate day
const Days = [0, 1, 2, 3, 4, 5, 6];
const dates = Days.map((shift) => {
const date = DateTime.local().startOf('day').plus({ days: shift + dateOffset });
return date.toLocaleString({ weekday: 'short' });
});
if (debugFlag('extendedforecast')) {
console.log(`ExtendedForecast: Generated date labels: [${dates.join(', ')}]`);
}
// track the destination forecast index // track the destination forecast index
let destIndex = 0; let destIndex = 0;
const forecast = []; const forecast = [];
// if the first period is nighttime it is skipped above via startIndex
for (let i = startIndex; i < activePeriods.length; i += 1) { for (let i = startIndex; i < activePeriods.length; i += 1) {
const period = activePeriods[i]; const period = activePeriods[i];
// create the destination object if necessary
if (!forecast[destIndex]) { if (!forecast[destIndex]) {
forecast.push({ forecast.push({
dayName: '', low: undefined, high: undefined, text: undefined, icon: undefined, dayName: '', low: undefined, high: undefined, text: undefined, icon: undefined,
@@ -143,7 +130,7 @@ const parse = (fullForecast, forecastUrl) => {
fDay.high = period.temperature; fDay.high = period.temperature;
fDay.icon = getLargeIcon(period.icon); fDay.icon = getLargeIcon(period.icon);
fDay.text = shortenExtendedForecastText(period.shortForecast); fDay.text = shortenExtendedForecastText(period.shortForecast);
fDay.dayName = dates[destIndex]; fDay.dayName = DateTime.fromISO(period.startTime).startOf('day').toLocaleString({ weekday: 'short' });
// preload the icon // preload the icon
preloadImg(fDay.icon); preloadImg(fDay.icon);
// Wait for the corresponding night period to increment // Wait for the corresponding night period to increment