Connect with us

Vermont

Find out who made the Vermont high school coaches’ all-league boys hockey teams

Published

on

Find out who made the Vermont high school coaches’ all-league boys hockey teams


The Vermont Boys Hockey Coaches Association has announced its all-league teams for the 2025-26 high school season.

As reported to the Burlington Free Press sports department, the coaches’ selections are broken down by first, second, third teams and honorable mentions for Division I and II.

The association also named players and coaches of the year for each division.

Advertisement

File: Find out who made the coaches’ 2025 all-league boys hockey teams

The teams:

DIVISION I ALL-STARS

Player of the year: Christian Butler, South Burlington.

Coach of the year: J.P. Benoit, Champlain Valley.

Advertisement

FIRST TEAM

Forwards: Brady Jones, Champlain Valley; Jack Kelly, South Burlington; Colton Lefebvre, Colchester.

Defense: Chais Lyford, Rice; Ace McRitchie, Spaulding.

Goalie: Ethan Fortin, Spaulding.

SECOND TEAM

Forwards: Bayler Lamos, Rice; Vincent Lanzetta, Rice; Griffin Seitz, Rice.

Defense: Ryder Donati, Rice; Brodie Smith, Burr and Burton.

Advertisement

Goalie: Tommy Barnes, Champlain Valley.

THIRD TEAM

Forwards: Walter Morris, Rice; Brody Tatro, BFA-St. Albans; R.J. Volski, Burr and Burton.

Defense: Gavin Benoit, BFA-St. Albans; Josh Stewart, Essex.

Goalie: Hunter Slade, Burr and Burton.

Advertisement

HONORABLE MENTION

Forwards: Peyton Albertson, Rice; Luke Brownlee, BFA-St. Albans; Drew Laprade, Spaulding; Colby Magnan, BFA-St. Albans; Chris Morgan, Essex; Jack Tomlinson, Burlington; Cole Slade, Burr and Burton.

Defense: Wes Casavant, Rice; Kamden Eckhardt, Spaulding; Ryan Kramer, Burr and Burton; Parker Harrington, Spaulding; Sawyer Wellman, Champlain Valley; Ethan Whitcomb, Champlain Valley.

Goalies: Elliot Deslauriers, BFA-St. Albans, James Heyer, Essex; Zach Merchand, BFA-St. Albans; Connor Williams, Rice.

DIVISION II ALL-STARS

Player of the year: Eli Herrington, Harwood.

Advertisement

Coach of the year: Jordan Stearns, Middlebury.

FIRST TEAM

Forwards: Jonathan Giroux, North Country; Max King, Stowe/Peoples; Griffin Nelson, Harwood.

Defense: Owen Farr, Harwood; Ian Nolan, Stowe/Peoples.

Goalie: Ryan Philbrook, Milton.

SECOND TEAM

Forwards: Maddux Gagne, Missisquoi; Milo Lavit, Harwood; Brayden Welch, Milton.

Advertisement

Defense: Zachary Griffith, North Country; Charlie Pickel, U-32.

Goalie: Dom Palazzo, Woodstock.

THIRD TEAM

Forwards: Tripp Roberge, North Country; Jack Scribner, U-32; Aidan Soutiere, Mount Mansfield.

Defense: Kaden Kelly, Mount Mansfield; Colin Teague, Missisquoi.

Advertisement

Goalie: Kai Tuominen, North Country.

HONORABLE MENTION

Forwards: Cooper Browe, Harwood; Brock Bushey, Milton; Garret Carter, Mount Mansfield; Scanlan Forrest, Stowe/Peoples; Phin Huntington, St. Johnsbury; Reece King, Stowe/Peoples; Ryan Laroche, Missisquoi; Camden Leno, U-32; Cole Little, Woodstock; Ean Messier, Missisquoi; Ethan Nease, U-32; Gabriel Quesnel, Middlebury; Alexandre Romanko, Mount Mansfield; Ben West, North Country.

Defense: Gabe Alexander, Brattleboro; Holden Brigham, St. Johnsbury; Killian Choquette, Milton; Zakary Fortin, North Country; Griffin Goodhue, North Country; Chase Lafaille, U-32; Logan McNulty, Middlebury; Kaleb Vasseur, Harwood; Ryan Walsh, St. Johnsbury.

Goalie: TJ Baron, Middlebury; TJ Baron, Middlebury; Alex McCabe, Harwood; Grayson Nease, U-32.

Advertisement

Contact Alex Abrami at aabrami@freepressmedia.com. Follow him on X, formerly known as Twitter: @aabrami5.





Source link

Vermont

VT Islamic group facing deadline to fund new mosque move in Burlington

Published

on

VT Islamic group facing deadline to fund new mosque move in Burlington


One of Vermont’s few mosques is racing against the clock to purchase two new buildings its leaders say will better serve the growing Muslim community around Burlington.

The Islamic Community Center of Vermont, which currently operates out a cramped Winooski building, says it needs to raise $100,000 by April 28 to guarantee ownership of two much larger Burlington properties on Riverside Avenue.

For the approximately 300 Somali families who use the mosque’s services, the change in location would be like “moving from a one-bedroom apartment to a mansion,” center board member Mukhtar Abdullahi told the Burlington Free Press.

Advertisement

The mosque’s current space limits services. It can only run a few small Qur’an reading and recitation classes each day and weekend, resulting in waitlists for some classes.

“Unfortunately, we’ve had to turn people away simply because we don’t have the capacity to accommodate everyone,” Abdullahi said.

The mosque also lacks sufficient space for women and their children, who for instance must share the facility’s single bathroom with men, “which is far from ideal,” Abdullahi said.

Advertisement

The small size is also a safety concern.

“If something was to happen, there’s no quick exit,” he said.

The deadline is built into a purchasing agreement and financing terms from a bank, Abdullahi said. The center has paid an upfront deposit of $30,000, he said, and the remaining balance of the down payment and closings costs is due April 28.

A bigger space would allow the center to offer multiple classes for different demographics, including age and gender, giving families more flexibility. The organization would also be able to expand Qur’an instruction and provide followers with more activities.

Advertisement

Abdullahi especially dreams of one day cultivating a place just for local youth, which the mosque and the greater Burlington area as a whole lacks, he said.

“Regardless of religion, our youth are the future,” Abdullahi said. “We want to make sure we take care of them.”

How Islamic Community Center of Vermont came to be

The center is one of only two state-registered mosques in Vermont, according to Abdullahi. The other is the similarly named Islamic Society of Vermont, based in South Burlington.

The Islamic Society of Vermont formed in 1995. The Islamic Community Center of Vermont followed in 2011. Together, the two mosques serve the Green Mountain State’s 6,200-6,500 Muslim residents.

The main difference between the organizations is who each serves, Abdullahi said.

Advertisement

His center formed 15 years ago in response to a growing number Somali immigrants, many of whom do not speak English or have a car, to the greater Burlington area. The Islamic Society of Vermont’s services are offered primarily in English and its mosque is a long walk from where the majority of Somali families live, Abdullahi said.

Although the Islamic Society of Vermont has done its best to welcome and accommodate Somali attendees, “there was a need for a mosque where they could communicate easily, ask questions and feel fully understood by people who share their background,” Abdullahi said.

“This wasn’t about replacing that but about creating additional support and accessibility for our community,” he said.

The prospective location, which used to be a laundry mat and a car wash, is a 20-30 minute walk from the mosque’s current spot in Winooski.

Advertisement

Despite its small size, the mosque is “the heart of the community,” Abdullahi told the Free Press, adding that many Somali residents “would struggle to live our daily lives without it.”

The center performs marriages and funeral rites. It’s where people go to settle disagreements.

“We teach children how to be good citizens, how to stay away from trouble, how to read the Qur’an,” Abdullahi said. “It’s where we tell stories about back home.”

“It’s a small building that stands for and does more than what the eye sees,” Abdullahi said.

How fundraising is going

Should the religious nonprofit fail to raise enough money, it will forfeit thousands of dollars in already paid fees and must look for a different location, according to Abdullahi.

Advertisement

Despite the tight deadline, Abdullahi told the Free Press he feels confident the group will secure enough donations.

“We already have several committed donations and meetings lined up, and we’re continuing to connect with supporters,” he said. “Our community has always shown up in meaningful ways, and we’re hopeful that, as more people hear about this effort, they’ll contribute financially or support us in other ways as well.”

Donations will pay for the down payment and closing costs, which originally amounted to $300,000, according to Abdullahi. The center has raised $200,000, a significant amount of which came from Vermont’s non-Muslim population. It has a GoFundMe that as of April 14 had raised about $8,300.

“Regardless of where you come from, always, at the end of the day, community depends on each other,” Abdullahi said.

Real estate records show that the owners of the Riverside properties have been trying to sell them, or parts of them, for several years now.

Advertisement

When would the new mosque open to the public?

Should the center succeed in purchasing the two properties, the new mosque will open sometime between fall and the end of the year, Abdullahi said.

“The place needs a lot of renovations to make it a place of worship,” Abdullahi said, but “it’ll be doable.”

Just as before, people of all faiths, or people with no religious affiliation at all, are invited to visit the mosque.

“We don’t care what religion you are,” Abdullahi said. “It’s a place for the community. Anyone’s welcome.”

Advertisement

Megan Stewart is a government accountability reporter for the Burlington Free Press. Contact her at mstewartyounger@gannett.com.



Source link

Continue Reading

Vermont

Vermont argues that Trump administration provided no factual basis for voter data request – VTDigger

Published

on

Vermont argues that Trump administration provided no factual basis for voter data request – VTDigger


Voters fill out their ballots in Middlebury in Nov. 2024. File photo by Caleb Kenna/VTDigger

RUTLAND CITY — Vermont argued in federal court Tuesday that the Trump administration’s lawsuit demanding the state’s voter roll data should be dismissed because the administration has not provided a sufficient reason for its request.

The Trump administration sued Vermont’s secretary of state, among many other states, last year after she refused the department’s demand to turn over voter data, including voters’ addresses, drivers license numbers and the last four digits of their Social Security numbers. 

Following the hearing, Federal Judge Mary Kay Lanthier will issue a ruling to dismiss or move forward with the case. 

Secretary of State Sarah Copeland Hanzas said she had grounds to deny the request because Vermont Law barred the state and local government officials from sharing personally identifying voter data with federal agencies. 

Advertisement

Copeland Hanzas said in an interview before the hearing that the Trump administration’s requests for states’ unredacted voter rolls undermines public trust in elections and points to broader concerns with privacy rights. 

“We don’t want the federal government to have that level of information about individual Vermonters,” Copeland Hanzas said. 

The state of Vermont’s lawyer Samuel Stratton, representing Copeland Hanzas, argued the case should be dismissed because the Department of Justice did not provide a factual basis and purpose for the request and therefore does not comply with the Civil Rights Act. 

“We are proud to defend Secretary Copeland Hanzas in this case, and we will continue working to protect our elections from federal interference,” the Attorney General Charity Clark wrote in a Tuesday statement.

The Department of Justice attorney Brittany Bennett argued that the federal government has broad authority under the Civil Rights Act to seek voter data in order to determine whether the state of Vermont’s elections are in compliance with federal law. 

Advertisement

The hearing comes after judges recently dismissed similar cases in California, Michigan, Oregon and Massachusetts. A federal judge in Massachusetts dismissed the case last week, asserting that the department failed to comply with Title III of the Civil Rights Act of 1960 by not sharing in detail how the department will use voter information. 

The Department of Justice has brought similar lawsuits against 30 states for withholding voter rolls, while 12 states have complied or said they would comply with the Justice Department’s request, according to a tracker run by the Brennan Center for Justice. 

“​​We certainly hope and expect that the outcome of ours will be similar to what’s happened with the states that have gone before us,” Copeland Hanzas said. “But if the motion to dismiss isn’t approved, then we will continue to fight, and we will have our day in court.”

Disclosure: VTDigger reporter Greta Solsaa worked in summer 2022 as a paid canvasser for the Vermont Public Interest Research Group, which filed several motions in the case.





Source link

Advertisement
Continue Reading

Vermont

Hour-by-hour: When to expect showers & thunderstorms Tuesday in Vermont, New York

Published

on

Hour-by-hour: When to expect showers & thunderstorms Tuesday in Vermont, New York


The most widespread storm coverage will occur between 2-8 PM Tuesday, April 14

Advertisement

Timeline: When to expect showers & thunderstorms Tuesday in Vermont, New York

The most widespread storm coverage will occur between 2-8 PM Tuesday, April 14

Advertisement

NBC5 meteorologists expect strong to locally severe thunderstorms Tuesday afternoon into the evening for Vermont and northern New York.Watch the video to see when showers, downpours, and storms are most likely near your town.

NBC5 meteorologists expect strong to locally severe thunderstorms Tuesday afternoon into the evening for Vermont and northern New York.

Advertisement

Watch the video to see when showers, downpours, and storms are most likely near your town.

Advertisement

`;
}

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

Advertisement

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

Advertisement

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

Advertisement

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.mynbc5.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.mynbc5.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

Advertisement

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

updateWeatherBackground(weatherData.current.icon_name);
}
}

Advertisement

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

`;
}

Advertisement

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

Advertisement

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

Advertisement

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.mynbc5.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.mynbc5.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

Advertisement

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

Advertisement

updateWeatherBackground(weatherData.current.icon_name);
}
}

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

Advertisement

Loading more articles…



Source link

Continue Reading
Advertisement

Trending