Connect with us

Kansas

Kansas City mayor warns against supporting police funding amendment

Published

on

Kansas City mayor warns against supporting police funding amendment


Missouri Amendment 4 affects local funding and state oversight for Kansas City police.

Supporters say “adequate funding is needed” to keep the community safe, but Quinton Lucas, who has served as the city’s mayor since 2019, opposes the proposed amendment because it “takes power” from local officials.

This interview has been edited for length and clarity.

GREGORY HOLMAN, KSMU NEWS: Kansas City, Missouri Mayor Quinton Lucas, welcome to Ozarks Public Radio.

Advertisement

QUINTON LUCAS, KANSAS CITY MAYOR: It is great to be with you.

KSMU: Let’s get right to it. We’re here to talk about voting on Amendment 4 to the Missouri Constitution. This is a proposed amendment that would affect the Kansas City police department and its minimum funding. Every eligible voter in Missouri is going to have the chance to vote on this Amendment on August 6.

Now before we ask any questions, Mayor Lucas, let me just start by reading the ballot language for our listeners. I’m quoting from sample ballots.

“Shall the Missouri Constitution be amended to authorize laws, passed before December 31st, 2026, that increase minimum funding for a police force established by a state board of police commissioners to ensure such police force has additional resources to serve its communities?

“This would authorize a law passed in 2022 increasing required funding by the City of Kansas City for police department requests from 20% of general revenue to 25%, an increase of $38,743,646, though the City previously provided that level of funding voluntarily. No other state or local governmental entities estimate costs or savings.”

Advertisement

So that’s the question all Missouri voters are being asked on their ballots for August 6.
Mayor Lucas, tell us about your views on Amendment 4. Why should people in the Ozarks and all around Missouri care about this issue?

LUCAS: Well, you know, it is on the ballot in the Ozarks and all around Missouri. So it is important to make sure a voice is heard from everyone. And I think that the biggest threat to somebody in the Ozarks or somewhere, anywhere else outside of Kansas City, is that the state could do the same thing to you.

This is a ballot question that asks in no unclear way, basically, to control the Kansas City Missouri budget. It asks for the statewide voters to say that Kansas City needs to spend more on this one area of its budget, not spending more on certain areas that we fund all the time, like healthcare, paying for firefighters, paying to fix our roads, and paying to address core basic issues. And it takes that power out of the city council and out of the mayor’s office, and having an ability to do so.

So I think the real reason somebody should care is if you’re worried about Jefferson City, bureaucrats, bureaucrats anywhere telling you what to do, then this is the very type of question that does just that. And that’s why I’ll be voting no.

KSMU: I want to ask you about the perspective on Amendment 4 from folks who disagree with you. One of the main backers of Amendment 4 is State Senator Tony Leutkemeyer. Now as many of our listeners know, the Senator is a Republican, you’re a Democrat, but the Senator is a Republican from the 34th District close to Kansas City.

Advertisement

And Senator Leutkemeyer wrote an opinion piece about Amendment 4 in the Kansas City Star on July 2. He wants Missourians to vote for the amendment. He accused your administration of trying to defund the Kansas City police department by tens of millions of dollars back in 2021 and writes that Amendment 4 would “stabilize the KCPD budget.” What’s your response to this type of argument?

LUCAS: Yeah, I mean, Tony is just sadly wrong. First of all, when I became mayor, the KCPD budget, our police budget in Kansas City, was $261 million. Now it is $317 million. That is a substantial percentage increase over where it was before. I also, just last year, raised police salaries by 30%. And so this isn’t an issue of funding of the police. I have, Kansas City has, consistently supported police funding.

We just want to be able to be like every other city in Missouri, and be able to make these determinations based on our own budgeting, based on our own negotiations, and frankly, based on being able to have some accountability. In what world do you say you get a blank check, and we can’t ask any questions about how you spend your money? That’s exactly what this ballot question is about.

You know currently in Kansas City, we have a 911 call-taker crisis where there are people — happened to my own family — who call 911 and have to wait on hold for five minutes. Some people as long as 10 minutes. And that has happened to thousands of Kansas Citians. Under our current system, the city council, the mayor, others, can’t push the police to do anything different about it.

Whereas what I want to do is say, heck, I want to give you money targeted to that very issue, so that you can hire more call-takers, so you can have more efficient operations there. This question precludes us from doing so. That’s how it’s a bad idea. And that’s just one example. And so I would respectfully disagree with the senator. We spent a whole lot of money to support our police.

Advertisement

We’ve increased it every year I’ve been in office, and I’ve been in office for nine years now [Editor’s note: That includes Lucas’s time as a city council member and mayor]. And I think we’ll continue to — we just want to be able to have good conversations, good accountability. And unlike the senator, who was running for reelection when this last came up — and I think that was a big part of why this was introduced — I’m somebody who’s term-limited, and I’m just saying this for the best interest of Kansas Citians long-term.

KSMU: I think it’s fair to say that a lot of folks living in rural Missouri are likely to take a view that Kansas City — and St. Louis, for that matter — have pretty severe crime problems and that even more state oversight and police spending is needed. What’s your reaction to that sort of Back the Blue viewpoint?

LUCAS: You know, I think my view is that if you can absolutely Back the Blue, you can absolutely be supportive of them, but also believe in local oversight. Just think about this: Do you want the mayor of Kansas City—? I’m Quinton Lucas, I’m a left-of-center guy and all of that, but do you want me running your local police department?

If I run for governor one day, and I’m able to get elected, do you want me a bunch of my friends, a bunch of bureaucrats in Jefferson City, telling you and your community what to do? What’s the priority? How much people need to get paid? Should you put more money into this category or another? That’s where my concern is.

I think about my children, I think about the people in this community who deserve that voice. So it isn’t just saying that, you know, Kansas City will be safer, because frankly, under current state control of policing, it’s not. We break homicide records under the control of a board, four of whom are appointed by the governor of Missouri, only one comes from the people of Kansas City, and that’s the mayor. And I think, frankly, long-term, we will be in a better position if you have a closer connection between law enforcement and the people of Kansas City.

Advertisement

So, I think it’s kind of a sheep in wolf’s clothing that, you know, you’re dealing with this thing, wolf in sheep’s clothing, rather, where you’re dealing with this thing, that seems kind of nice, right? We’re just gonna pay for the police more. But instead, what it actually is doing is saying you have no control. The state has control over how you’re going to spend your money. And if you want to make a change to it — too bad.

KSMU: Now, you alluded to some of the history and context here, and I want to ask about that. Back in 2022, Missouri voters passed Amendment 4, but in April of this year, Missouri Supreme Court rejected those results — I’m quoting from coverage by KCUR over in Kansas City that the state supreme court “ruled that the original ballot measure was so inaccurate that it ‘actually misled voters.’” What’s your view on that?

LUCAS: You know, my view is that that was a very wise decision. And I was sad that we had to get there. I am somebody who doesn’t like to file lawsuits against the state. I don’t like to have to get into these battles. But it’s about fundamental fairness for our voters. They tried to rush a question onto the ballot, they tried to rush a question on making it seem like it was just free. And I think a lot of people said understandably, ‘wait, we can get more good stuff for no cost.

That’s really cool.’ At least this time around, and I think it was rushed on the ballot again, after the Supreme Court decision. The — at least this time around — people get to see there will be a fiscal impact on Kansas City, we will lose our ability to spend $40 million a year on almost anything else. And I think that is something that, to me, is fundamentally challenging with having this type of provision. And don’t get me wrong — maybe we will elect to spend $100 million more on police services. But Kansas Citians go to the ballot, they vote for people. That’s how we should have things done in a representative democracy. What we shouldn’t have is state bureaucrats telling us what to do.

KSMU: Now if you spend $100 million more, we may call you back for another interview. [Mayor Lucas laughs.] But this is the last question for this one. Can you compare and contrast, briefly — if Amendment 4 passes, what can folks expect with Kansas City policing? Or if voters reject it this time, what’s going to happen?

Advertisement

LUCAS: Well, here’s the thing, if Amendment 4 passes, what you are going to see is a status quo, and to some people, things staying the same, status quo, sounds good. To the people of Kansas City, it doesn’t. And the last four years, we have broken our city’s homicide record, twice — twice.

We have a higher number of murders than we have ever had in the history of this city. In the past four years, we have had a homicide-department, a 911 call-taker crisis, where people are waiting on hold. Status quo, not accountability, is not good for the people of Kansas City. And I would submit to you, is not good for the people of Missouri. As you might have seen after the shooting at the Chiefs Super Bowl parade, a great event, lots of Missouri dignitaries, including the governor of Missouri were there.

The state legislature canceled session that day. We had a mass shooting, where 24 people were injured one woman lost her life. That’s not a status quo I want in Kansas City, and it’s not a status quo I want the state of Missouri. That’s why I think a vote no is the right one to break that type of status quo around us now.





Source link

Advertisement

Kansas

Kansas woman found with over 100,000 fentanyl pills, sentenced to 20 years in prison

Published

on

Kansas woman found with over 100,000 fentanyl pills, sentenced to 20 years in prison


WICHITA, Kan. (KWCH) – A Kansas woman has been sentenced to 20 years in federal prison after being caught with a large amount of fentanyl pills.

According to court documents, 51-year-old Mana Elena Reyes from Wichita pleaded guilty to one count of possession with intent to distribute fentanyl.

Reyes had multiple discussions between April and May of 2023 with a person she was unaware was an undercover officer with the Sedgwick County Sheriff’s Office. During the conversations, she discussed purchasing and selling methamphetamine and fentanyl.

The Kansas Highway Patrol conducted a traffic stop and searched Reyes’ vehicle, where they found approximately 115,000 fentanyl pills and over 4,000 grams of methamphetamine. They also found heroin, fentanyl powder and cocaine.

Advertisement



Source link

Continue Reading

Kansas

Kansas City Chiefs heiress Gracie Hunt gets engaged to ex-NFL player’s son

Published

on

Kansas City Chiefs heiress Gracie Hunt gets engaged to ex-NFL player’s son


Gracie Hunt is engaged to Derek Green, the youngest son of former Kansas City Chiefs quarterback Trent Green.

The NFL heiress, who is the daughter of billionaire Chiefs CEO Clark Hunt, announced the exciting news in a sweet Instagram post on Saturday.

“It was always you,” Gracie, 27, wrote alongside a series of pics from Derek’s proposal.

Gracie Hunt and Derek Green (pictured here together in February) are engaged after a year of dating. graciehunt/instagram
The NFL heiress (seen here with her now-fiancé last month) announced the engagement news in an Instagram post on Saturday. graciehunt/instagram

The photos showed Derek, 26, down on one knee as he popped the question to his now-fiancée beneath an outdoor altar decorated with white flowers.

Advertisement

Another featured the happy couple kissing, while a third showed the NFL heiress’s emerald-cut engagement ring, which was encrusted with white diamonds and a single emerald stone along the band.

The carousel of photos also included some of the pair’s family and friends filming the proposal and clapping in celebration after Gracie said “yes.”

Gracie’s mom, Tavia, took to her own Instagram over the weekend to celebrate her daughter and future son-in-law’s engagement.

The photos showed Derek (pictured here with Gracie last month) down on one knee as he popped the question beneath an outdoor altar. graciehunt/instagram
Gracie is the daughter of billionaire Chiefs CEO Clark Hunt (seen here with his wife, Tavia, and Gracie and Derek last month). graciehunt/instagram

“We’re getting another SON!!” the 54-year-old wrote on her Instagram Stories. “Gracie Green has a nice ring to it!!”

Tavia and Clark share daughters Gracie and Ava, 21, as well as a 23-year-old son, Knobel.

Advertisement

“Forever looks so beautiful on these two,” Gracie’s mom continued. “God brought these two together in such a special way, and our hearts are overflowing with joy … We are so grateful for His hand in their lives and so excited for all that lies ahead.”

Gracie and Derek (pictured here together in February 2026) started dating in April 2025. graciehunt/instagram
Gracie (seen here with her parents and Derek in February) took to social media in July 2025 to say that she and Derek have been “friends since 2017.” graciehunt/instagram

Gracie first teased her and Derek’s relationship in a since-deleted Instagram video of them together at Arrowhead Stadium in Kansas City, Missouri, in April 2025.

“After meeting 7.5 years ago in this place… all along there was some invisible string,” she captioned the clip while quoting Taylor Swift’s song “Invisible String” from the pop star’s album “Folklore.”

Swift and Kansas City Chiefs tight end Travis Kelce, both 36, are also engaged. Kelce asked the “Fate of Ophelia” hitmaker to marry him in August 2025.

Gracie, meanwhile, returned to social media in July of last year to reveal that she and her now-fiancé have been “friends since 2017.”

Advertisement
“After meeting 7.5 years ago in this place… all along there was some invisible string,” Gracie (pictured here with Derek in February) teased in an Instagram post last year. graciehunt/instagram
Gracie also included several nods to Taylor Swift (seen here together during a Chiefs game in December 2023) in her social media posts about Derek. Gracie Hunt/Instagram

“I’m dating my best friend,” Gracie wrote in the Instagram post with Swift’s “You Belong With Me” playing in the background.

Before dating Derek, Gracie was with real estate broker Cody Keith.

Keith wasn’t seen at the NFL heiress’s 26th birthday party in March 2025, nor in attendance for the Chiefs’ 2025 Super Bowl loss against the Philadelphia Eagles that February.





Source link

Advertisement
Continue Reading

Kansas

Kansas City gets first look at 2026 Parade of Hearts sculptures ahead of summer display

Published

on

Kansas City gets first look at 2026 Parade of Hearts sculptures ahead of summer display


Kansas City gets first look at 2026 Parade of Hearts sculptures ahead of summer display

Advertisement

MULTIPLE TIMES AND FIND NEW BOOTHS AND ARTISTS. THE METRO IS GETTING ITS FIRST LOOK AT ALL THE HEARTS THAT WILL BE FEATURED IN THIS YEAR’S PARADE OF HEARTS. THERE WAS A SNEAK PEEK EVENT AT THE OVERLAND PARK CONVENTION CENTER YESTERDAY. THE PARADE OF HEARTS SHOWCASES KANSAS CITY’S CREATIVITY AND HIGHLIGHTS LOCAL ART. EACH SCULPTURE WAS DESIGNED BY A LOCAL ARTIST AND WILL BE ON DISPLAY AROUND THE METRO. MY FAVORITE MOMENT IS JUST SEEING THE SMILES ON EVERYONE’S FACES AND THOSE PROUD MOMENTS WHERE YOU HAVE PARENTS SITTING THERE WATCHING THEIR KIDS. WE HAVE ARTISTS AS YOUNG AS NINE YEARS OLD, SEVEN YEARS OLD, AND THEN UP UNTIL CLOSE TO 80. SO WE HAVE ALL AGES REPRESENTED, SO WE SEE THEIR FAMILIES SUPPORTING THEM, AND IT’S JUST A GREAT MOMENT. AND SOON THE ART, THE HEARTS WILL GO TO THEIR DESIGNATED LOCATIONS ACROSS THE AREA. THEY’LL BE THERE ALL SUMMER LONG BEFORE BEING AUCTIONED OFF. THE PROCEEDS WILL GO TOWARDS SUPPORTI

Advertisement

Kansas City gets first look at 2026 Parade of Hearts sculptures ahead of summer display

Updated: 6:26 PM CDT Apr 5, 2026

Editorial Standards

Advertisement

Kansas City is getting an early look at one of its most recognizable public art displays.A preview event for the 2026 Parade of Hearts was held Saturday at the Overland Park Convention Center, giving attendees a first glimpse at this year’s heart sculptures.The annual event highlights local artists and showcases creativity across the metro, with each sculpture designed by a Kansas City-area artist.In the coming weeks, the hearts will be placed at locations throughout the region, where they will remain on display throughout the summer.Organizers say the installations are meant to encourage people to explore the metro while supporting the arts.At the end of the season, the sculptures will be auctioned off, with proceeds going toward supporting local artists.A full map of heart locations will be available online once installations are complete.

Kansas City is getting an early look at one of its most recognizable public art displays.

Advertisement

A preview event for the 2026 Parade of Hearts was held Saturday at the Overland Park Convention Center, giving attendees a first glimpse at this year’s heart sculptures.

The annual event highlights local artists and showcases creativity across the metro, with each sculpture designed by a Kansas City-area artist.

In the coming weeks, the hearts will be placed at locations throughout the region, where they will remain on display throughout the summer.

Advertisement

Organizers say the installations are meant to encourage people to explore the metro while supporting the arts.

At the end of the season, the sculptures will be auctioned off, with proceeds going toward supporting local artists.

A full map of heart locations will be available online once installations are complete.

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