Connect with us

Wisconsin

Wisconsin receives average marks on latest infrastructure report card

Published

on

Wisconsin receives average marks on latest infrastructure report card


A report card from a group of civil engineers graded Wisconsin’s infrastructure with a C+ in an assessment that covers 17 categories, including parks, roads and energy. 

That grade is a slight improvement from the 2020 report card, when Wisconsin received a C.

The American Society of Civil Engineers issues the report card every four years as a way to give residents and policymakers a picture of where a state stands when it comes to transportation, water systems, waste management and other infrastructure. This year, Wisconsin became the first state to have broadband evaluated as part of the report.

Stay informed on the latest news

Sign up for WPR’s email newsletter.

Advertisement

Ken Mika is a regional director for the engineering society who is based in Green Bay and one of the co-authors of the latest report card.

“(This year’s grade) tells us that we are currently in a position where there are some areas that do need to get improved immediately, but nothing is detrimental,” Mika told WPR’s “Wisconsin Today.”

The report card is intended to identify infrastructure areas with critical needs and to keep things running smoothly where the state is already doing well.

Advertisement

“A lot of times, people don’t know what’s going on with infrastructure unless something bad is happening,” Mika said. “Nobody knows what civil engineers are up to until a bridge collapses.”

The report authors offered three key recommendations for raising the state’s grade in 2028: 

  • Increase overall investment in infrastructure;
  • Ensure that infrastructure is safe, reliable and resilient;
  • Monitor access and improve data collection.

Mika joined “Wisconsin Today” for a look at some of the report’s key findings.

Milwaukee’s Interstate 43 is seen on Tuesday, Sept. 13, 2022. Evan Casey/WPR 

Roads get a C with recent investments

Wisconsin has more than 115,500 miles of roadways, and most of them saw improved pavement conditions since the previous report in 2020. 

That is largely due to an influx of local, state and federal funding, including the 2021 Infrastructure Investment and Jobs Act, according to the report. However, that funding is set to expire in 2026.

“That’s going to be when the real questions begin. Because if we are not able to sustain this amount of infrastructure investment into our roadways and other areas, we’re going to see everything drop to pre-2021 infrastructure grades,” Mika said. “We need to figure out what the long-term plan is.”

Advertisement

For Mika, that includes identifying new funding models since the Wisconsin gas tax has remained the same since 2006 despite inflation. He also pointed to the fact that gas usage is down with more electric vehicles on the road.

“We need to figure out what’s the better way to cover the true costs of using our roadways than what we’ve been doing in the past,” he said.

A light brown sign reads "Kohler Dunes State Natural Area" next to a cordwalk
Kohler Park Dunes State Natural Area in Sheboygan in September 2024. While Wisconsin sees high participation in public parks, it ranks lowest in the country for per-visit spending. Richelle Wilson/WPR

Public parks get a D due to maintenance backlogs and low funding

This year is the first time report authors evaluated Wisconsin’s public parks, and the category received a D.

Mika chalked up the low grade to a lack of funding. He said Wisconsin has a wide gap between public park participation and how much the state Department of Natural Resources spends on the parks.

“The DNR spent an average of $3.39 per state resident on parks, which is the second lowest rate of all states in the United States,” Mika said. “That’s about $1.09 per visit, which is the lowest in the country, despite being ranked 17th nationally in participation.”

To boost the state’s public parks grade next time, the report recommends investing in critical upgrades to facilities, roads and drinking water at the parks.

Advertisement
A yellow bulldozer digs into the dirt in front of a house
Crews with Hanco Utilities begin work on the first phase of Superior’s municipal broadband network, September 2024. Danielle Kaeding/WPR

Broadband gets a C-

Wisconsin is the first state to have a broadband grade in the infrastructure report card.

Mika said he was initially surprised by the low grade, given recent state and federal investments in broadband. But after reviewing the data, he said that limited access and low speeds in rural areas need to be addressed.

“We’re starting to realize that the older parts of the broadband network are not able to handle the latest and greatest speeds that are required for many of our new infrastructure as we become more of a data-centric society,” Mika said.

He pointed to the heavy use of broadband at home, schools and workplaces, as well as in operating infrastructure systems such as traffic lights or wastewater facilities.

Aerial photo of La Crosse County landfill
La Crosse County Landfill. Civil engineer Ken Mika says landfills are an example of successful public-private partnerships in Wisconsin’s infrastructure. Photo courtesy of La Crosse County

Waste management, ports and rail all receive B grades

The highest grades in this year’s infrastructure report card are in the B range, and that includes hazardous waste, solid waste, rail and ports.

For Mika, the common thread in these higher-performing categories is public-private partnerships. He offered the example of waste management.

“We have both private and publicly owned landfills in Wisconsin, and the DNR works with both entities correctly to the point where the private entities are being responsible and covering their costs and their share while also protecting the environment,” Mika said.

Advertisement

He also pointed to ports as an example of effective public-private partnerships in the state, with many ports being led by a local public entity but also receiving significant investment from private companies.

Schools are given an ‘incomplete’

Another first on this year’s report, schools received an “incomplete.”

“Because of the lack of data since 1999, we weren’t able to fully do what we would have felt as a proper amount of evaluation and grading,” Mika said.

For this report, the engineering society looks at school buildings, not educational programs, Mika explained. He hopes that the grade in the report card will create a push for more publicly available information on school facilities. 

“If the state of Wisconsin can, it would be a good time to update the data so that the public can be better informed of what’s going on with our schools,” he said. 

Advertisement

Read the 2024 report card for Wisconsin’s infrastructure here.



Source link

Wisconsin

Wisconsin basketball adds SEC opponent to 2026-27 schedule

Published

on

Wisconsin basketball adds SEC opponent to 2026-27 schedule


The Wisconsin Badgers men’s basketball team wasted no time scheduling an SEC opponent for the 2026-27 season.

Alex Rosinski confirmed the Badgers will head to Nashville on December 19 to play Auburn, a team competing for the NIT Championship on April 5.

The Tigers were the talk of the town come Selection Sunday with their 17-16 record. Claiming it had the nation’s best win at Florida on January 24, Auburn did everything in its power to talk its way into the NCAA Tournament. Instead, the team had to settle for the NIT.

Auburn has taken care of business against South Alabama, Seattle U, Nevada, and Illinois State en route to the championship game against Tulsa.

Advertisement

The Milwaukee Journal Sentinel also confirmed Wisconsin’s game against Auburn on December 19 will take place at the Bridgestone Arena. Auburn usually plays its home games at the Neville Arena, which is about a five-hour trip from the home of the Nashville Predators.

Even though Wisconsin is coming off a disappointing tournament loss, Greg Gard isn’t messing around. This is yet another high-profile non-conference game he’s added to the team’s schedule. For what it’s worth, this is only the second all-time meeting between these two teams.

Contact/Follow@TheBadgersWire on X (formerly Twitter) and like our page onFacebook to follow ongoing coverage of WisconsinBadgers news, notes and opinion.





Source link

Advertisement
Continue Reading

Wisconsin

Chilly Start To Easter but at least it is drying out in SE Wisconsin

Published

on

Chilly Start To Easter but at least it is drying out in SE Wisconsin


Chilly Start To Easter but at least it is drying out in SE Wisconsin

After a very wet start to the month, we are finally drying out in SE Wisconsin

Advertisement

WE POSTED IT UNDER THE LINKS TAB ON THE 12 NEWS APP, AND YOU’RE GOING TO WANT TO DRESS WARMLY IF YOU’RE HEADED TO BRUNCH TOMORROW. CHURCH, YOU MIGHT NEED A JACKET. >> YEAH, WIND CHILLS ARE GOING TO BE IN THE 20S, SO IT’S NOT EXACTLY GOING TO BE WARM. IT GETS A LITTLE BIT BETTER AS THE DAY GOES ON, AND WE WILL GET SOME SUN TOMORROW. MORE THAN WHAT WE’VE HAD FOR TODAY. NOW SOME OF YOU GETTING A LITTLE GLIMPSE HERE AND THERE. THE SUN, IT HASN’T LASTED VERY LONG. BUT THE GOOD THING IS IT’S A DRY DAY. BUT THE CROWD. IF YOU’RE TRYING TO DO EASTER EGG HUNTS OUTSIDE, IT IS MUDDY, MUSHY. TAKE IT FROM A GUY WHO PLAYED GOLF TODAY. IT WAS VERY, VERY WET, COOLER, MORE SUNSHINE. AS THE DAY GOES ON, WHICH IS NICE. WE’LL GET MORE SUN, BUT WE’RE DRY ALL DAY. TEMPERATURES WARM UP TO AROUND 50. ALL RIGHT, LET’S TALK ABOUT NEXT WEEK. MAINLY DRY UNTIL WEDNESDAY. CHILLY THROUGH TUESDAY, ESPECIALLY MONDAY AND TUESDAY. TUESDAY ESPECIALLY HIGHS ONLY IN THE 30S. THAT’S NOT GOING TO BE VERY NICE. SHOWERS LIKELY. WEDNESDAY. THURSDAY. FRIDAY. SATURDAY. WE DON’T NEED THE RAIN BUT WE HAVE MORE RAIN IN THE FORECAST. WHEN I SAY WE DON’T NEED RAIN, THIS IS WHAT I MEAN. FOR THE MONTH, WE’VE ONLY HAD FOUR DAYS AND WE’VE HAD 3.5IN OF RAIN. WE ARE WAY ABOVE AVERAGE FOR THE MONTH AND THAT HAS MADE US A PRETTY GOOD AMOUNT ABOVE AVERAGE FOR THE YEAR. AND IT’S ALL ABOUT THE LAST FOUR DAYS WHEN YOU PICKED UP SO MUCH RAIN. IT’S JUST BEEN ROUND AFTER ROUND. AND YES, MORE RAIN IS IN THE FORECAST AS WE HEAD INTO THE MIDDLE AND LATTER PARTS OF NEXT WEEK. CHECK OUT THE SATELLITE MAP. YOU CAN ACTUALLY SEE THE CENTER OF LOW PRESSURE MOVING RIGHT OVER MINNEAPOLIS RIGHT NOW. THAT IS GOING TO CONTINUE TO BRING THESE CLOUDS AROUND, BUT THERE’S GOING TO BE MORE BREAKS AS TIME GOES ON. I THINK TOMORROW IS GOING TO BE A DECENT DAY. THERE ARE A FEW. WOULDN’T BE SURPRISED TO SEE A COUPLE LITTLE PASSING FLURRIES. AND THEN FOR TOMORROW MIGHT GET AN ISOLATED SPRINKLE LATER IN THE DAY. BUT IT’S IT’S NOT BAD. STILL WINDY THOUGH. NOT AS WINDY AS IT IS RIGHT NOW. ALL RIGHT. AGAIN, THIS IS KIND OF WHAT I’M TALKING ABOUT WITH THESE PASSING FLURRIES. THIS IS MONDAY AS WE WORK OUR WAY THROUGH MONDAY. IT’S THE SAME KIND OF STORY. IT’S NOT COMPLETELY SUNNY. IT’S NOT COMPLETELY CLOUDY. AGAIN, POSSIBLY SEEING A TINY FLURRY OR TWO. NOW NEXT WEEK, AS WE WORK OUR WAY IN THE MIDDLE OF THE WEEK, THAT’S WHEN THESE ROUNDS OF SHOWERS WILL BE COMING IN. OVERALL, YES, A SOGGY FORECAST STARTING ON WEDNESDAY. WE’RE NOT GOING TO RAIN THE ENTIRE TIME, BUT IT’S GOING TO BE ROUNDS OF RAIN. AND AGAIN, WE DON’T REALLY NEED IT LIVE. LOOK OUTSIDE. THAT. IT’S ACTUALLY PRETTY 43 DEGREES IN WAUKESHA AND WIND CHILLS ARE HANGING OUT AROUND. FREEZING. WON’T BE LONG. THEY’LL BE CARS BACK ON THE TRACKS. THERE WILL BE TONS OF PEOPLE ENJOYING ROAD AMERICA AND IT WON’T BE LONG. WE’LL SEE A LOT OF BOATS OUT HERE ON DELAVAN LAKE. TEMPERATURE 45 DEGREES. RIGHT NOW YOU CAN SEE THAT COOL AIR AND IT’S NOT GOING TO GO ANYWHERE. IT’S COOL AROUND HERE. RIGHT NOW, 46 IN MILWAUKEE IS THE WARMEST TEMP, 51 FOR TOMORROW. IT’S ABOUT EXACTLY NORMAL. BUT AGAIN, THE MORNING IS GOING TO BE CHILLY FOR SURE. MONDAY 46 ELECTION DAY A HIGH OF ONLY 38. BUT IT’S DRY AND THEN RAIN SHOWERS WEDNESDAY, THURSDAY, FRIDAY. SATURDAY. GREAT.

Advertisement

Chilly Start To Easter but at least it is drying out in SE Wisconsin

After a very wet start to the month, we are finally drying out in SE Wisconsin

Updated: 5:57 PM CDT Apr 4, 2026

Advertisement

Editorial Standards

After a very wet start to the month, we are finally drying out in SE Wisconsin

After a very wet start to the month, we are finally drying out in SE Wisconsin

Advertisement



Source link

Advertisement
Continue Reading

Wisconsin

AMBER ALERT: Police say eight-year-old Wisconsin girl is missing

Published

on

AMBER ALERT: Police say eight-year-old Wisconsin girl is missing


Police believe she is in a vehicle last seen driving Friday afternoon in Monroe County.

Advertisement

AMBER ALERT: Police say eight-year-old Wisconsin girl is missing

Police believe she is in a vehicle last seen driving Friday afternoon in Monroe County.

Advertisement

Updated: 6:01 AM CDT Apr 4, 2026

Editorial Standards

Advertisement

An AMBER Alert is out for a Wisconsin girl.Police say eight-year-old Irene Lentz from Wautoma may be with Joseph Nicpon Jr. and Betty Lentz.Authorities believe Irene is in a 2005 Blue Buick Terraza with the license plate number BCU3028. Police say the vehicle was last seen at approximately 12:55 p.m. Friday driving westbound on I-90 in Monroe County near Sparta.If anybody knows where Irene may be, they are asked to immediately call the Wautoma Police Department at (920) 787-3321.

An AMBER Alert is out for a Wisconsin girl.

Police say eight-year-old Irene Lentz from Wautoma may be with Joseph Nicpon Jr. and Betty Lentz.

Advertisement

Screenshot

Wisconsin Crime Network

Police believe Irene Lentz is in this 2005 Blue Buick Terraza with the license plate number BCU3028. Authorities say the vehicle was last seen at approximately 12:55 p.m. Friday driving westbound on I-90 in Monroe County near Sparta.

Authorities believe Irene is in a 2005 Blue Buick Terraza with the license plate number BCU3028. Police say the vehicle was last seen at approximately 12:55 p.m. Friday driving westbound on I-90 in Monroe County near Sparta.

Advertisement

If anybody knows where Irene may be, they are asked to immediately call the Wautoma Police Department at (920) 787-3321.

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’);
});

Advertisement

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’);
}
}

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 };

Advertisement

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’);
});
}
}

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’);

Advertisement

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.wisn.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.wisn.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’);
}

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);
}

Advertisement

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);
}
}

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;

Advertisement

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

`;
}

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’;

Advertisement

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’);
}
}

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;
}

Advertisement

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’);
});
}
}

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

Advertisement

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.wisn.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.wisn.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’);
}

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;
}

Advertisement

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);
}
}

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);
}
}

Advertisement

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

Loading more articles…



Source link

Advertisement
Continue Reading

Trending