Connect with us

Iowa

Iowa Secretary of State Paul Pate says he’ll seek a fifth term in office in 2026 election

Published

on

Iowa Secretary of State Paul Pate says he’ll seek a fifth term in office in 2026 election


play

Iowa Secretary of State Paul Pate will seek a fifth term in office.

Pate, a Republican, announced June 14 that he would run for reelection in 2026.

Advertisement

“I am thrilled to announce that I will once again be running to serve as your secretary of state, because we’re not done yet,” said Pate in a video announcing his candidacy.

In his announcement, Pate detailed key accomplishments the state has achieved under his leadership.

“Throughout my life as a public servant, I’ve been guided by three core principles: service, participation and integrity,” Pate said. “During my time as Iowa Secretary of State, we’ve broken numerous records for voter registration and participation, we’ve been recognized as a top state for election administration and integrity and even earned awards for cyber security measures, accessibility for the disabled community, and poll worker recruitment and voter outreach.”

He went on to discuss the importance of secure elections and promised to continue his mission of ensuring “every Iowa business thrives (and) every eligible vote counts.”

Pate previously served as Iowa’s secretary of state from 1995-1999. He lost a primary bid for the Republican nomination for governor in 1998 and served as mayor of Cedar Rapids from 2002-2006.

Advertisement

He ran again for secretary of state in 2014 before running for the office again in 2014. He won reelection in 2018 and 2022.

The most recent election saw Pate defeat Democrat Joel Miller with 60% of the vote, compared to Miller’s 39.9%.  His current term will end on January 1, 2027.

Pate has supported several changes to Iowa’s election laws during his terms in office. Most recently, he backed a bills that give his office more tools to verify a voter’s citizenship status and standardizes recount procedures.

Advertisement

The legislation comes in response to the chaotic weeks leading up to the 2024 election, when Pate instructed county auditors to challenge the ballots of 2,176 registered voters who he suspected were not citizens based on a faulty list from the Iowa Department of Transportation.

Ultimately, his office found 277 noncitizens on Iowa’s voter rolls, including 35 noncitizens who successfully voted in the 2024 election and five more who tried to vote but had their ballots rejected. 

The last-minute moves faced criticism and legal challenges.

Throughout his career, Pate has also served as a state senator and president of the Iowa League of Cities. He was unanimously elected president of the National Association of Secretaries of State in 2019, according to his campaign website, pateforiowa.com.

“I’m Paul Pate, your secretary of state,” the video concluded. “And I’m asking for your vote.”

Advertisement

Norah Judson is a reporter for the Register. Reach her at njudson@gannett.com.



Source link

Iowa

Iowa High School Boys Track And Field Leaders

Published

on

Iowa High School Boys Track And Field Leaders


We are still weeks away from the state track and field meet in Iowa, but high school athletes around the state are starting to get outdoors to post times and leave marks.

High School on SI previously posted the leaders in Iowa high school track and field for the girls, so now, we head over to the boys. Just like with that one, the numbers below are from the Bound website and up-to-date as of April 3, 2026.

Iowa High School Boys Track And Field Event Leaders

100-Meter Dash

Advertisement
Add us as a preferred source on Google

  • Connor Kunze, Nevada, 10.48
  • Kaiden Kunze, Norwalk, 10.52
  • Noah Ross, Ankeny Centennial, 10.61
  • Adam Kacmarynski, Pella Christian, 10.69
  • Deztin McMurrin, Waterloo West, 10.70

200-Meter Dash

  • Marcus Tomlyanovich, Cedar Falls, 21.73
  • Zane Johnson, ADM, 21.90
  • Cauy Konz, Treynor, 22.08
  • Dawson Dougherty, Cedar Rapids Kennedy, 22.09
  • Lincoln Bainbridge, Van Buren County, 22.10

400-Meter Dash

  • Drew Bennis, Cedar Rapids Prairie, 48.52
  • Harrison Mullens, Pella, 48.85
  • Lincoln Bainbridge, Van Buren County, 49.10
  • Will Bertrand, Sioux City Bishop Heelan, 49.43
  • Gage Tucker, Bettendorf, 49.55

800-Meter Run

  • Brennen Hoyer, Cedar Falls, 1:53.72
  • AJ Willey, Bettendorf, 1:54.27
  • Keegan Decker, Iowa City Liberty, 1:54.44
  • Canaan Dunham, Pella, 1:54.73
  • Ayden Gabrielson, Waukee Northwest, 1:54.79

1600-Meter Run

  • Quentin Nauman, Western Dubuque, 4:03.65
  • Keegan Decker, Iowa City Liberty, 4:04.33
  • Kuma Gutema, Sioux City North, 4:12.40
  • Logan Bleich, Gilbert, 4:14.67
  • Canaan Dunham, Pella, 4:15.92

3200-Meter Run

  • Keegan Decker, Iowa City Liberty, 8:59.49
  • Quentin Nauman, Western Dubuque, 9:07.03
  • AJ Willey, Bettendorf, 9:08.52
  • Slader Buckheister, Cedar Rapids Kennedy, 9:08.54
  • Canaan Dunham, Pella, 9:12.27

110-Meter Hurdles

  • Tay Seals, Clear Creek-Amana, 13.92
  • Hayden Carlson, Ankeny, 14.07
  • Caiden Johnson, Pella, 14.16
  • Blake Ludwig, Waukee Northwest, 14.25
  • Miciah LeLaCheur, Valley, 14.30

400-Meter Hurdles

  • J.J. McDermott, Bettendorf, 54.42
  • Wil Pauli, Cedar Falls, 54.78
  • Jayden Jeter, Waukee, 54.92
  • Owen Von Ahsen, Benton, 54.92
  • Tate Marco, Sibley-Ocheyedan, 55.14

Long Jump

  • Rylan Peters, Waverly-Shell Rock, 23-8
  • Kaiden Kunze, Norwalk, 23-3
  • Jayden Stephens, Waverly-Shell Rock, 22-11
  • Ezekiel Symonds, Independence, 22-10.5
  • Jamaul Richardson Willamsburg, 22-8

High Jump

  • Ajak Malual, Waukee, 6-9
  • Logan Athlerton, Norwalk, 6-8
  • Eli Patterson, Benton, 6-7
  • Miciah LeLaCheur, Valley, 6-6
  • Spencer Casey, Cascade, 6-5.5

Shot Put

  • Greyson Hartman, Washington, 67-3.5
  • Morgan Cooley, East Union, 59-11
  • Max Nevitt, Algona, 59-5.5
  • Carson Divis, Hinton, 57-6
  • Shem Mally, Cedar Rapids Kennedy, 57-5.5

Discus

  • Greyson Hartman, Washington, 179-9
  • Aiden Curtis, Indianola, 179-2
  • Daxon Kiesau, Urbandale, 176-8
  • Colin Whitters, Iowa City West, 167-1
  • Reece Winery, Southeast Polk, 166-5

100-Meter Wheel Chair

  • Titus Steng, Shenandoah, 17.01
  • Eli Johnson, Bedford, 18.58
  • Josh Anderson, Washington, 20.45
  • Logan Shwery, Ankeny Centennial, 23.50
  • Ryan Stevenson, Pleasant Valley, 31.23

200-Meter Wheel Chair

  • Titus Steng, Shenandoah, 31.66
  • Eli Johnson, Bedford, 33.89
  • Issac Anderson, Washington, 37.32
  • Josh Anderson, Washington, 37.34
  • Logan Shwery, Ankeny Centennial, 49.04

400-Meter Wheel Chair

  • Titus Steng, Shenandoah, 1:06.30
  • Eli Johnson, Bedford, 1:10.74
  • Isaac Anderson, Washington, 1:13.78
  • Logan Shwery, Ankeny Centennial, 1:28.32

800-Meter Wheel Chair

  • Titus Steng, Shenandoah, 2:21.91
  • Eli Johnson, Bedford, 2:41.25
  • Josh Anderson, Washington, 3:01.66

Shot Put Wheel Chair

  • Ryan Stevenson, Pleasant Valley, 16-11

100-Meter Ambulatory

  • Carter Swanson, Hudson, 15.35
  • Daniel Villa, Waterloo East, 15.49
  • Leighton Pullin, Waterloo East, 19.72
  • Daniel Carr, Waterloo East, 22.97

200-Meter Ambulatory

  • Cameron McGraw, Alburnett, 30.86
  • Carter Swanson, Hudson, 32.19

400-Meter Ambulatory

  • Carter Swanson, Hudson, 1:14.41

4×100-Meter Relay

  • Gilbert, 42.21
  • Cedar Rapids Jefferson, 42.61
  • Treynor, 42.70
  • Western Dubuque, 42.79
  • Waukee Northwest, 42.86

4×200-Meter Relay

  • Valley, 1:26.29
  • Clear Lake, 1:27.55
  • Waukee Northwest, 1:28.54
  • ADM, 1:28.60
  • Cedar Rapids Prairie, 1:29.30

4×400-Meter Relay

  • Clear Lake, 3:20.37
  • Cedar Falls, 3:21.03
  • Waukee Northwest, 3:23.95
  • Sioux City Bishop Heelan, 3:24.10
  • Cedar Rapids Prairie, 3:24.62

4×800-Meter Relay

  • Waukee Northwest, 7:55.90
  • Cedar Falls, 7:57.36
  • Dallas Center-Grimes, 8:02.78
  • Johnston, 8:03.88
  • Unity Christian, 8:04.19

Sprint Medley Relay

  • Clear Creek-Amana, 1:34.37
  • Sibley-Ocheyedan, 1:35.17
  • Muscatine, 1:35.57
  • Cedar Rapids Prairie, 1:35.76
  • Mount Vernon, 1:35.86

Distance Medley Relay

  • Ankeny Centennial, 3:26.51
  • Waukee Northwest, 3:30.23
  • Gilbert, 3:32.46
  • Dallas Center-Grimes, 3:33.16
  • Ankeny, 3:34.82

Shuttle Hurdle Relay

  • Pella, 58.29
  • Iowa City West, 58.61
  • Treynor, 58.87
  • Waukee Northwest, 58.95
  • Ankeny, 59.02



Source link

Continue Reading

Iowa

Where will Iowa basketball spending rank in transfer portal?

Published

on

Where will Iowa basketball spending rank in transfer portal?


You have to pay to play.

That’s the way the new world of college sports works, especially football and men’s basketball, the two moneymakers for programs across the country. The financial aspect of competing is looming larger than ever now, and to win in those sports, it requires serious financial backing.

It costs now to recruit top talent from high school and even more to lure in top talent from the transfer portal, which can infuse instant upgrades to a roster. The Iowa Hawkeyes had a portal-heavy roster this year during their magical Elite 8 run during March Madness and will once again be shopping for more high-end talent.

Iowa won’t just be among the big spenders in the Big Ten, but On3’s Pete Nakos believes Iowa is going to be among those big spenders in the sport of college basketball, potentially nearing double-figures in the millions.

Advertisement

The Next Tier: $8 to $10 million

LouisvilleTexas A&MIowa, St. Louis, Providence and BYU make up the next tier of top spenders, all expected to spend over $8 million and can touch $10 million if they want. Other top spenders of note will likely be Virginia and Washington, among others.

Alabama was in the $8 to $10 million range this season, and the Crimson Tide are expected to have similar funding available. They will be able to crack into the next tier if they need to, sources said. – Pete Nakos, On3

Iowa’s first priority via the transfer portal is replacing the crater-sized hole in the starting lineup left by point guard Bennett Stirtz, who carried this team at times this year and was the engine that made this team go.

After that, Iowa needs to add size on the interior. While they were able to play most of the year, finding ways to win despite lacking some size, having a true big man only further unlocks Ben McCollum’s offense.

Contact/Follow us @HawkeyesWire on X (formerly Twitter) and like our page on Facebook to follow ongoing coverage of Iowa news, notes and opinions. Follow Riley on X: @rileydonald7

Advertisement





Source link

Continue Reading

Iowa

Iowa wide receiver becomes first-ever back-to-back winner of Jet Award

Published

on

Iowa wide receiver becomes first-ever back-to-back winner of Jet Award


Iowa wide receiver Kaden Wetjen becomes first-ever back-to-back winner of Jet Award

Advertisement

OUR TEAM. SOMEONE TO LOOK OUT FOR THIS UPCOMING YEAR, STICKING WITH FOOTBALL, THE JET AWARD GALA HAPPENING TONIGHT IN OMAHA ON THE 15TH YEAR OF THE AWARD. THE AWARD IS GIVEN TO THE COLLEGE RETURN SPECIALIST OF THE YEAR, IOWA’S KADEN WETJEN MAKES HISTORY, BECOMING THE FIRST EVER BACK TO BACK WINNER. OF JOHNNY THE JET RODGERS AWARD. IT’S AWESOME. AND I KIND OF JOKED AROUND LAST YEAR, TOLD ME I WAS GOING TO COME BACK HERE NEXT YEAR AND HERE WE ARE ACTUALLY ACTUALLY DID IT. AND WE ACTUALLY HAD TWICE THE SUCCESS WE HAD LAST YEAR WHEN WE WON IT. SO JUST ME AND THE UNIT, THE TEAM THAT WE HAD WAS, WAS SUPER AWESOME. IT’S NOT JUST THIS AWARD ISN’T JUST FOR ME. IT’S FOR MY, FOR MY TEAMMATES AS WELL. YES. ALSO BEING HONORED TONIGHT, MILLARD SOUTH ALMA JOBJET TAMALA AS MR. FOOTBALL 2025. RECOGNIZING THE TOP HIGH SCHOOL FOOTBALL TALENT IN THE STATE. GUYS, OBVIOUSLY KAMALA TAKING HIS TALENTS TO ALABAMA. HE’LL BE PLAYING IN TUSCALOOSA THIS YEAR AS FAR AS IT COMES WITH EACH AND EVERY TIME ANYBODY WOULD KICK TO HIM, I WOULD SAY, WHAT ARE YOU DOING? DON’T KICK, KICK, KICK IT. HE’S SO GOOD. I MEAN, LOO

Advertisement

Iowa wide receiver Kaden Wetjen becomes first-ever back-to-back winner of Jet Award

Updated: 8:57 PM CDT Apr 2, 2026

Editorial Standards

Advertisement

Omaha hosted the Jet Award Gala on Thursday.It was the 15th year of the award, which was given to the College Return Specialist of the Year.Iowa’s Kaden Wetjen made history, becoming the first-ever back-to-back winner of the Johnny the Jet Rodgers Award.The gala also honored Millard South alum Jett Thomalla as Mr. Football 2025, recognizing the top high school football talent in the state.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 |

Omaha hosted the Jet Award Gala on Thursday.

Advertisement

It was the 15th year of the award, which was given to the College Return Specialist of the Year.

Iowa’s Kaden Wetjen made history, becoming the first-ever back-to-back winner of the Johnny the Jet Rodgers Award.

The gala also honored Millard South alum Jett Thomalla as Mr. Football 2025, recognizing the top high school football talent in the state.

Advertisement

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

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

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

`;
}

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’, ‘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 || ”;

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

Loading more articles…

Advertisement



Source link

Continue Reading

Trending