Connect with us

Midwest

Heavily redacted voting records for school superintendent nabbed by ICE spark outrage

Published

on

Heavily redacted voting records for school superintendent nabbed by ICE spark outrage

NEWYou can now listen to Fox News articles!

A legal fight is brewing over a Maryland county board of elections’ heavy redactions to the voter registration records of an illegal immigrant who served as superintendent of Iowa’s largest school system until he was arrested by federal authorities this year, Fox News Digital has learned.

“This was shocking,” Justin Riemer, CEO and president of the conservative legal group Restoring Integrity and Trust in Elections (RITE), told Fox News Digital in a Zoom interview on Friday. “When I saw the news reporting, and they showed screenshots of the registration applications with all this information redacted, I was just shocked.”

Riemer was reacting to Prince George’s County’s Board of Elections’ recent release of voter registration documents belonging to illegal alien Ian Andre Roberts, which included blacking out Roberts’ sex, whether he checked the citizenship box, his date of birth and other information. The election attorney is representing RITE and conservative research group the American Accountability Foundation (AAF) in their efforts to receive the voter registration documents with fewer redactions. 

Roberts, who is originally from Guyana and first entered the U.S. in 1994, was working as the superintendent of the Des Moines public school district when Immigration and Customs Enforcement arrested him in September. Roberts was not legally permitted to work in the country after an employment authorization card expired in 2020, Fox News Digital previously reported. 

Advertisement

SCHOOL CHIEF TO SUSPECT: ICE ARREST OF DES MOINES SUPERINTENDENT EXPOSES FAKE DEGREES, DRUG CONVICTIONS

Former Des Moines superintendent Ian Andre Roberts, who was detained by ICE in September. (Polk County Sheriff)

The arrest of an illegal immigrant working in such a high-profile position shocked conservatives and others. Additional details surrounding his lengthy rap sheet surfaced as journalists and other investigators looked into his history. It was soon discovered that he was listed as a registered Democratic voter in Maryland, where he previously lived, and that he had a conviction for reckless driving in 2012, the Department of Homeland Security reported in October. 

The Maryland State Board of Elections previously said Roberts did not vote in elections. 

“I’m an election law expert, not an immigration expert, but it doesn’t take one to see just how… broken the system has been,” Riemer told Fox Digital. “He has multiple criminal charges. He has worked in multiple school districts where, if they were doing the proper citizenship and work authorization checks, this should have been caught. It’s really just unbelievable how this guy has managed to jump around the country, working in school districts where he’s around children.” 

Advertisement

FORMER DES MOINES SCHOOLS SUPERINTENDENT TAKEN INTO DOJ CUSTODY ON FEDERAL FIREARMS, IMMIGRATION CHARGES

As concern mounted surrounding Roberts, the American Accountability Foundation filed a public records request with Prince George’s County to obtain his voter registration application. The county’s board of elections complied with the request, but redacted key information, sparking what could turn into a legal showdown. 

“The American Accountability Foundation called the county out on it and said, ‘… you’re not allowed to redact this information,’” Riemer said, adding that it’s understandable for the county to redact information such as an individual’s Social Security number or driver’s license number, but not a person’s gender or whether they answered in the affirmative that they are a U.S. citizen.

RITE published copies of the redacted documents, which show 18 black boxes blocking out information across just two pages’ worth of documents. Riemer explained the request was made under the National Voter Registration Act – a federal law that simplified voter registration processes when an eligible individual renews their driver’s license – which includes a provision allowing public access to such records. 

Riemer sent a letter to the Prince George’s County Board of Elections on Tuesday demanding the county turn over the records to his clients with fewer redactions as allowed by law. The election attorney, who previously served as chief counsel to the Republican National Committee, gave the county board until Dec. 1 while noting legal action could be in the future if the election board fails to comply. 

Advertisement

LAWMAKER REVEALS HOW DES MOINES SCHOOLS CHIEF REGISTERED TO VOTE DESPITE ILLEGAL STATUS

Republicans say that illegal alien Ian Andre Roberts being registered to vote in Maryland raises serious concerns about the state’s voting processes. (Keith Srakocic/AP Photo and ICE)

“Please provide my clients with the records no later than Monday, December 1, 2025. If you redact or withhold any portion of the requested records beyond the limited exceptions above, we will immediately follow up with a written notice of your violation of 52 U.S.C. § 20507(i). If you do not remedy such violation within 90 days, my clients will sue you in Maryland federal district court and collect reasonable attorneys’ fees, litigation expenses and other costs,” Riemer’s letter to the county board of elections stated. 

Riemer said he has not yet heard from the board of elections, and speculated that the county board is in the midst of speaking with the state board of elections and the state attorney general’s office about next steps. 

“If they noticed that Restoring Integrity and Trust in Elections was part of this effort to get this information, they should have, because we sued Maryland last year for violating the National Voter Registration Act for restricting public access to registration records just like they’re doing here and won that lawsuit in March. And so they just continuously are doing these practices that are not transparent, they’re not what federal law requires, it’s not what the public deserves,” he added. 

Advertisement

Fox News Digital reached out to the Prince George’s County Board of Elections for comment on the letter and redactions on Friday afternoon but did not immediately receive a reply. 

DEMOCRATS SILENT ON ILLEGAL ALIEN REGISTERED TO VOTE IN BLUE STATE

Roberts was criminally charged on Oct. 2 with being an illegal alien in possession of firearms, according to DHS. (John Moore/Getty Images)

Riemer said that the case is one of many that show concern over non-citizens being on voter roles is not “political theater” as Democrats have claimed amid conservatives rallying around stronger voter integrity laws nationwide. 

“We know it happens in the thousands. Oregon, for example, reported registering a couple thousand non-citizens through their DMV,” he said. 

Advertisement

Roberts was taken into the U.S. Marshals’ custody following his September arrest and is set to be prosecuted, DHS said in October. The federal agency has released the suspect’s lengthy history of run-ins with the law that stretch back to 1996, when he was charged with criminal possession of narcotics with intent to sell in New York, a charge for third-degree unauthorized use of a vehicle in Queens, New York, in 1998 that was later dropped and the 2012 conviction for reckless driving in Maryland. 

More recently, Roberts faced charges in 2020 for second-degree criminal possession of a weapon and other weapons charges and a 2022 conviction for unlawful possession of a loaded firearm in Pennsylvania. 

Roberts is also now facing charges related to his arrest in September, which included him attempting to flee law enforcement officers, according to DHS. He was found to be in possession of $3,000 in cash, a Glock 9mm pistol and a hunting knife at the time of his arrest. Roberts was criminally charged on Oct. 2 with being an illegal alien in possession of firearms, according to DHS. 

The Iowa Board of Educational Examiners revoked Roberts’ license following his arrest and he is no longer permitted to serve as a superintendent in the state. 

Advertisement

Read the full article from Here

Minnesota

Another Minnesota city moves toward displaying old state flag

Published

on

Another Minnesota city moves toward displaying old state flag


Elk River leaders are moving to keep Minnesota’s retired state flag flying in the city after residents backed the idea in a survey.

The Elk River City Council voted 5-0 on Monday night to draft a resolution to display the old flag instead of the new design adopted two years ago.

The move came after more than 1,000 residents responded to an online survey posted by the city. In that survey, the city says almost 75% supported displaying the old flag.

A final council vote is expected at its next meeting on the 20th.

Advertisement

Minnesotans hold onto old habits when buying a state flag

Other cities across the state have taken similar steps to fly the retired flag, including Champlin and Zumbrota.

The flag design turned into a political dispute when planning for a new design first began. Two years later, debates continue, with some believing the old flag celebrated the displacement of Native Americans and others embracing it due to its history.

Lawmakers, commission member discuss new legislation for state flag, seal designs

Advertisement



Source link

Continue Reading

Missouri

News and Events – Morgan Luebbering earns teaching award

Published

on

News and Events  – Morgan Luebbering earns teaching award


Morgan Luebbering, a senior in early childhood education at Missouri S&T, has earned the Missouri Teacher Leaders of Tomorrow Award from the Missouri Milken Educators in partnership with the Missouri Department of Elementary and Secondary Education. Luebbering was a student-teacher at Mark Twain Elementary School in Rolla, Missouri, in the fall 2025 semester.

Missouri Teacher Leaders of Tomorrow celebrates educators who have demonstrated high potential and aims to empower recipients by pairing them with another award-winning educator who will encourage them to pursue excellence during their first year as a teacher.

From left to right: Dr. Jami Swindell, Dr. Kyle Dare, Curtis Terry, Dr. Michelle Schwartze, Dr. Bobbie Jo Lewis, Joe Cross, Dr. Jeffrey Chalfant, Dr. Mary Gillis, Dr. Monica Fulton, Morgan Luebbering, Dr. Mandy Welch, and Julia Alexander. Photo by Peter Ehrhard, Missouri S&T.

Only 15 students in Missouri earn the award each year, and this is the third year in a row that a Missouri S&T education student or graduate has earned the award.

“Morgan was nominated by the university’s education department because she is an exceptional student who will make a big difference in students’ lives in the future,” says Dr. Mary Gillis, associate teaching professor of education at Missouri S&T. “The faculty have been impressed by her efforts during her student-teaching experience and her dedication to improving in the classroom. I know she will inspire generations of students, especially those who want to learn science, technology, engineering and mathematics (STEM) in the future.”

Advertisement

Luebbering, originally from St. Thomas, Missouri, will graduate from S&T this May and is already scheduled to start teaching full time in the fall at Thorpe Gordon STEM Academy in Jefferson City, Missouri.

About Missouri S&T

Missouri University of Science and Technology (Missouri S&T) is a STEM-focused research university of over 7,000 students located in Rolla, Missouri. Part of the four-campus University of Missouri System, Missouri S&T offers over 100 degrees in 40 areas of study and is among the nation’s top public universities for salary impact, according to the Wall Street Journal. For more information about Missouri S&T, visit www.mst.edu. 



Source link

Advertisement
Continue Reading

Nebraska

Nebraska Humane Society asking for help after abandoned dog found severely starved in Omaha

Published

on

Nebraska Humane Society asking for help after abandoned dog found severely starved in Omaha


Nebraska Humane Society investigating after abandoned dog found severely starved in Omaha

Advertisement

Advertisement

Nebraska Humane Society investigating after abandoned dog found severely starved in Omaha

Updated: 9:08 AM CDT Apr 8, 2026

Editorial Standards

Advertisement

The Nebraska Humane Society is asking for the public’s help after an abandoned dog was found severely starved in Omaha.Animal control officers found the boxer mix in a plastic kennel near 31st Street and Fowler Avenue on Friday, the shelter said.The dog, which the Nebraska Humane Society has named Jedi, was in critical condition and is receiving lifesaving treatment.Officials said the case appears to involve long-term neglect, and Jedi had ribs, vertebrae and pelvic bones that were easily visible with no palpable fat.Anyone with information is asked to call 402-444-7800, option 1.Make sure you can always see the latest news, weather, sports and more from KETV NewsWatch 7 on Google search.NAVIGATE: Home | Weather | Local News | National | Sports | Newscasts on demand |

The Nebraska Humane Society is asking for the public’s help after an abandoned dog was found severely starved in Omaha.

Animal control officers found the boxer mix in a plastic kennel near 31st Street and Fowler Avenue on Friday, the shelter said.

Advertisement

The dog, which the Nebraska Humane Society has named Jedi, was in critical condition and is receiving lifesaving treatment.

Officials said the case appears to involve long-term neglect, and Jedi had ribs, vertebrae and pelvic bones that were easily visible with no palpable fat.

Anyone with information is asked to call 402-444-7800, option 1.

Advertisement

This content is imported from Facebook.
You may be able to find the same content in another format, or you may be able to find more information, at their web site.

Make sure you can always see the latest news, weather, sports and more from KETV NewsWatch 7 on Google search.

NAVIGATE: Home | Weather | Local News | National | Sports | Newscasts on demand |

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