Connect with us

Vermont

Vermont’s men’s soccer national title was unprecendented. Dalen Cuff rose to the occasion on the call. – The Boston Globe

Published

on

Vermont’s men’s soccer national title was unprecendented. Dalen Cuff rose to the occasion on the call. – The Boston Globe


“They were not just happy to be there,” said Dalen Cuff, who called Vermont’s 2-1 overtime victory over Marshall on ESPN2 last Monday night. “They felt like a team on a mission and they were. Their mind-set was, ‘We will be forgotten if we don’t win the whole thing.’ I think they were just very salient in the fact that if we win the whole thing, then we hit legendary status. And they were right.”

So when the Catamounts achieved what might have been a stunning outcome to just about everyone outside of their own locker room, prevailing on Max Kissel’s golden goal in the 95th minute, Cuff’s exceptional call included acknowledging the Catamounts’ own we’ve-got-this, no-glass-slipper-necessary mentality.

“Oh my gosh! They do it!” exclaimed Cuff as Kissel’s goal rolled toward the net. “Don’t call them Cinderella! You can call them national champs!”

Vermont’s victory and how it occurred made the Catamounts an instant social media sensation, and the buzz carried through much of the week. On Tuesday, the match drove conversation on such shows as ESPN’s “Around The Horn,” where host Tony Reali declared it the best sporting event of the year.

Advertisement

I told Cuff – whom locals may remember from his time at Comcast SportsNet New England nearly a decade ago — that watching the end of the championship match reminded me of what it felt like when Doug Flutie’s Hail Mary found Gerard Phelan to lift Boston College over Miami in November 1984.

“It’s funny you mention the Flutie thing,” said Cuff, who has called four NCAA men’s soccer finals for ESPN. “When I grew up, I had the VHS tape, ‘Great Sports Moments of the ‘80s.’ One of them was the Flutie play, with the radio call: ‘He did it! He did it! Flutie did it’!

“I never thought I’d be the voice of any type of unforgettable moment, especially since I started my career as an analyst.

“I’ve heard people like Al Michaels or Mike Tirico or Joe Buck talk about when you’re calling something that has a chance to be an incredible moment, or when you’re calling a championship, ‘Do you think about it in advance? Do you rehearse?’ The weird thing is, I don’t think you can in soccer, where one moment that can define the game can happen at any time.”

Cuff said he just instinctively went with what was already on his mind.

Advertisement

“And what was on my mind was that they found it practically offensive to be called Cinderella,” he said. “Their point of view was, ‘We’ve won more games than anybody in this tournament the last few years. We know we’re a small school from America East, but we’re not Cinderella.’

“So we mentioned that during the broadcast a couple of times, and so in the moment I communicated that they’ll never be considered Cinderella again. Just call them champs.”

Cuff acknowledged that he didn’t quite grasp how much the championship match and Vermont’s team was resonating with sports fans until the next day.

“I walked out of there in kind of a stupor,” he said. “Not that they won, but more like, ‘I can’t believe that happened.’ The way it went down. I was kind of dumbfounded for a couple of hours, and I don’t think I understood the response and how many people watched and appreciated what they’d seen. I realized Tuesday with all of the talk about the game and people texting me how much people gravitated toward this.”

The championship aired on ESPN2 in the spot in which the “ManningCast” would normally be on as the alternate broadcast of “Monday Night Football.” But there was no show last Monday.

Advertisement

“Shout out to the Manning brothers for taking the week off,” said Cuff with a laugh. “Thank you for that. I’m sure some people tuned in thinking the ‘ManningCast’ was on, stuck around, and got this unbelievable game.

“I do think where it’s on television matters. It was on ESPN2 for the first time since I’ve been calling it. I think random people stumbled across the game. I recognized that part instantly. When you walk into a bar, ESPN is likely on TV. ESPNU is not likely to be on. So the platform made a difference.”

Jim Donaldson, an important member of an outstanding Providence Journal sports section for nearly four decades, died Thursday morning at age 73. Donaldson never smoothed the edges of his opinions as a writer, particularly when it came to the Patriots, and was a friendly companion in the press box. I enjoyed his wry sense of humor as a frequent weekend host on WEEI back in the late ‘90s and early 2000s. Even after his retirement in 2016, he remained an engaging — and opinionated, of course — presence on social media. I’ll miss hearing from him . . . Expect the Red Sox to announce their broadcast booths for both NESN and WEEI at Fenway Fest — an even kinder, gentler version of Winter Weekend, apparently on Saturday, Jan. 11. Dave O’Brien (NESN) and Will Flemming (WEEI) will remain in their play-by-play roles, but some other specifics are still being worked out.


Advertisement

Chad Finn can be reached at chad.finn@globe.com. Follow him @GlobeChadFinn.





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

Trending