Connect with us

Louisiana

Louisiana legislators grill New Orleans DA for releasing people convicted of violent crimes

Published

on

Louisiana legislators grill New Orleans DA for releasing people convicted of violent crimes


BATON ROUGE, La. — Louisiana legislators interrogated New Orleans District Attorney Jason Williams over reform policies that have allowed several hundred people to have their convictions voided or sentences reduced in the past few years, during a fiery Senate hearing Thursday at the state capitol.

Conservative lawmakers, Republican Attorney General Liz Murrill and several former prosecutors said Williams failed to fulfill his duty to defend convictions for violent crimes. They highlighted cases of convicted murderers and rapists released from prison through post-conviction relief, which allows new information to be considered after all appeals have been exhausted.

Williams, a Democrat who took office in 2020 on a progressive platform, defended his record and said his office is seeking to restore trust in the legal system. He has pushed for expanding the use of post-conviction relief to review cases where his office believes unconstitutional or unjust procedures were employed to reach convictions.

Murrill said she is reviewing what she called the “disproportionately higher number” of relief cases awarded by Williams’ office since January. He has granted relief in around 40 cases during that period, while district attorneys in neighboring Jefferson and St. Tammany parishes have only allowed for one case of relief each.

Advertisement

In almost every case granted by Williams’ office, the person had not asserted their innocence as a reason for relief, she said. District attorneys have an obligation to fight to uphold convictions, Murrill added.

Williams and his supporters have pointed to New Orleans’ history of police and prosecutorial misconduct and harsh sentencing policies as a reason for the elevated number of cases.

“The job is to enforce the law and not make the law,” Murrill said. “If the district attorney had a disagreement regarding policy, that’s not a basis for relief.”

Under a new law that took effect in August, Williams’ office is required to notify the attorney general of post-conviction relief cases and allow her to intervene.

Murrill and conservative lawmakers said the hearing was part of a process to assess whether Williams had committed overreach. They would consider additional legislative responses to his office’s actions in the future. Across the country, conservative legislators have sought to limit the independence of progressive prosecutors, according to University of Berkeley law professor Rebecca Goldstein.

Advertisement

State Sen. Royce Duplessis, a Democrat who represents New Orleans, said that Williams reflected the values and policies of voters who elected him to office and questioned the political motives behind the hearing.

Laura Rodrigue, a former New Orleans prosecutor and daughter of Williams’ predecessor, highlighted what she said was a flurry of instances where post-conviction relief was granted despite there being “no legal basis” for relief.

She raised the case of Eric Matthews, who beat his two-year-old to death with a belt in 1994 and had his conviction voided earlier this year on the grounds that his lawyer was ineffective. While Williams’ office said they opposed releasing Matthews and plan for a retrial, Matthews is currently out on bond.

“Finding some loophole to let someone out on, none of us should support that because it is evil, it is wicked,” Republican state Sen. Valarie Hodges said.

Republican state Sen. Jay Morris brought up the case of another man who stabbed his female partner to death and was later re-sentenced and released after Williams’ office conceded the ineffective counsel claims presented by the man’s attorney.

Advertisement

“Do you have a concern that that person who brutally murdered his ex-wife (is) being set free?” Morris asked Williams.

Williams said he did. But he explained there were other potential constitutional violations raised in the case and that acknowledging them could have “exposed my office to a lawsuit.”

He said his office had sought maintain a conviction and had shared statements from the victim’s family to the judge opposing the release.

Williams said he believed much of the testimony presented at the hearing was misleading and unfairly maligned the post-conviction relief process. He said his office was motivated to let people have a chance to bring new evidence into court, pointing to a case where one alleged victim recently admitted that he had falsely accused a man serving decades behind bars for armed robbery.

Some lawmakers accused Williams of operating without transparency over his decision-making in cases where relief was granted. His office has withheld documents from the public related to these cases on the grounds they are protected “work product,” the Advocate has reported.

Advertisement

Williams said his office plans to provide lawmakers and the attorney general with complete records for each case of post-conviction relief over the past year.

“We have nothing to hide,” he said.

___

Brook is a corps member for The Associated Press/Report for America Statehouse News Initiative. Report for America is a nonprofit national service program that places journalists in local newsrooms to report on undercovered issues. Follow Brook on the social platform X: @jack_brook96.



Source link

Advertisement

Louisiana

Police identify dirt Bike rider killed while allegedly fleeing from police during traffic stop

Published

on

Police identify dirt Bike rider killed while allegedly fleeing from police during traffic stop


The Louisiana State Police have identified the dirt bike rider who was involved in a deadly crash while evading police on Canal Boulevard.Landon Smith, 24, of Winnfield, was killed in the crash. Police say the crash happened around 5 p.m. on Canal Boulevard at City Park Avenue. Preliminary investigation revealed that New Orleans police were attempting to conduct a traffic stop on Canal Street in the French Quarter involving a dirt bike, driven by Smith. Police say Smith was driving recklessly and refused to stop, and continued to flee from police. Troop NOLA was made aware of the attempted traffic stop, and minutes later, they say Smith was traveling at a high rate of speed on Orleans Avenue while driving the wrong way into oncoming traffic. Troopers attempted to initiate a traffic stop, but Smith continued to evade police.Both NOPD and the troopers lost sight of the dirt bike. Troopers eventually located a crash involving the dirt bike and a truck at the intersection of City Park Avenue and Canal Boulevard.Law enforcement rendered aid to Smith, and he was transported to a local hospital, where he later died. According to state police, Smith was traveling west on City Park Avenue at a high rate of speed on the right shoulder, while passing westbound traffic stopped at a red light. As he approached the intersection of Canal Boulevard and disregarded the red light and continued straight through the intersection, hitting the right side of the truck, which was making a left turn onto Canal Boulevard from eastbound City Park Avenue. This is an ongoing investigation.

The Louisiana State Police have identified the dirt bike rider who was involved in a deadly crash while evading police on Canal Boulevard.

Landon Smith, 24, of Winnfield, was killed in the crash.

Advertisement

Police say the crash happened around 5 p.m. on Canal Boulevard at City Park Avenue.

Preliminary investigation revealed that New Orleans police were attempting to conduct a traffic stop on Canal Street in the French Quarter involving a dirt bike, driven by Smith.

Police say Smith was driving recklessly and refused to stop, and continued to flee from police.

Troop NOLA was made aware of the attempted traffic stop, and minutes later, they say Smith was traveling at a high rate of speed on Orleans Avenue while driving the wrong way into oncoming traffic.

Advertisement

Troopers attempted to initiate a traffic stop, but Smith continued to evade police.

Both NOPD and the troopers lost sight of the dirt bike.

Troopers eventually located a crash involving the dirt bike and a truck at the intersection of City Park Avenue and Canal Boulevard.

Law enforcement rendered aid to Smith, and he was transported to a local hospital, where he later died.

According to state police, Smith was traveling west on City Park Avenue at a high rate of speed on the right shoulder, while passing westbound traffic stopped at a red light.

Advertisement

As he approached the intersection of Canal Boulevard and disregarded the red light and continued straight through the intersection, hitting the right side of the truck, which was making a left turn onto Canal Boulevard from eastbound City Park Avenue.

This is an ongoing investigation.



Source link

Advertisement
Continue Reading

Louisiana

Why this New Orleans rooftop bar is considered one of the best in US

Published

on

Why this New Orleans rooftop bar is considered one of the best in US


play

During the Gilded Age in New York City, rooftop bars originated as a way to escape the busy streets and enjoy refreshing drinks while observing the city with a birds-eye view.

Rooftop bars have held onto their novelty, as they serve as social hotspots for locals and as a perfect place for visitors to take in a new city.

Advertisement

Whether watching the day unfold or on a night out under the stars, rooftop bars remain popular spots for enjoying libations.

Mambo’s in New Orleans named best rooftop bar in Louisiana

Mambo’s in New Orleans is the best rooftop bar in Louisiana, according to Foodie, and is the only rooftop bar on Bourbon Street.

This rooftop bar offers a unique vantage point of the infamous Bourbon Street, with panoramic views and a lively atmosphere making the bar a perfect place to take in New Orleans’ ambience.

The open-air space seats over 50 guests, and is the perfect place for a night out or for laid-back afternoon cocktails with a view of New Orleans’ iconic French and Spanish architecture.

Advertisement

The rooftop bar is not the only feature attracting patrons, as this three-story building holds a hidden entrance to a secret courtyard on the main floor that leads to a patio garden. On the second floor, there is another, more intimate bar adorned with Louisiana-themed decor.

Each floor retains a rustic, historical feel, with exposed brick and reclaimed cypress planks making up the building’s interior structure. Decorating the space are pieces of local art and cultural Louisiana artifacts, making the space feel somewhat like a museum.

Not just a spot for good drinks, Mambo’s offers a dining menu full of traditional Cajun and Creole flavors. Using only the freshest local ingredients, Mambo’s chefs create a menu rich in New Orleans heritage, offering dishes like jambalaya, seafood gumbo, crawfish étouffée and a variety of po’boys.

The best rooftop bar in every state according to Foodie

  • Alabama: GunRunner Rooftop Bar in Florence
  • Alaska: 49th State Brewing in Anchorage
  • Arizona: The Perch Brewery in Chandler
  • Arkansas: Celeste at The Preacher’s Son in Bentonville
  • California: Florentín Rooftop Bar in Los Angeles
  • Colorado: 54thirty Rooftop in Denver
  • Connecticut: Sign of the Whale in Stamford
  • Delaware: The Quoin Hotel + Restaurant in Wilmington
  • Florida: Rosa Sky in Miami
  • Georgia: 9 Mile Station in Atlanta
  • Hawaii: Tikis Grill & Bar in Honolulu
  • Idaho: Crave Kitchen & Bar in Eagle
  • Illinois: Raised | An Urban Rooftop Bar in Chicago
  • Indiana: 3UP Rooftop Lounge in Carmel
  • Iowa: Wellman’s Pub & Rooftop in Des Moines
  • Kansas: Tallgrass Tap House in Manhattan
  • Kentucky: Lost Palm in Lexington
  • Louisiana: Mambo’s in New Orleans
  • Maine: Luna Rooftop Bar in Portland
  • Maryland: Hip Flask Rooftop Bar in Bethesda
  • Massachusetts: Apex Rooftop Bar and Lounge in Boston
  • Michigan: The Monarch Club in Detroit
  • Minnesota: Brit’s Pub in Minneapolis
  • Mississippi: 10 South Rooftop Bar and Grill in Vicksburg
  • Missouri: 360 Rooftop Bar in St. Louis
  • Montana: Bozeman Taproom & Spirits in Bozeman
  • Nebraska: The Rooftop in Lincoln
  • Nevada: Chéri Rooftop in Las Vegas
  • New Hampshire: Rooftop at The Envio in Portsmouth
  • New Jersey: RoofTop at Exchange Place in Jersey City
  • New Mexico: Coyote Cantina in Santa Fe
  • New York: 230 Fifth in New York City
  • North Carolina: Aura Rooftop in Charlotte
  • North Dakota: Camp Lonetree in Fargo
  • Ohio: VASO Rooftop Lounge in Dublin
  • Oklahoma: Social Capital in Oklahoma City
  • Oregon: The Roof Deck at Revolution Hall in Portland
  • Pennsylvania: Standard Tap in Philadelphia
  • Rhode Island: Rooftop at the Providence G in Providence
  • South Carolina: Rip Tydz in Myrtle Beach
  • South Dakota: Juniper at Vertex Sky Bar in Rapid City
  • Tennessee: The Lookout at Ole Red in Nashville
  • Texas: Upstairs at Caroline in Austin
  • Utah: The Green Pig Pub in Salt Lake City
  • Vermont: Juniper Bar & Restaurant in Burlington
  • Virginia: The Lost Fox Hideaway in Ashburn
  • Washington: The Pink Door in Seattle
  • West Virginia: LaFontaine’s Rooftop Lounge in Huntington
  • Wisconsin: People’s Park in Waukesha
  • Wyoming: Bear Bottom Bar and Grill in Centennial

Presley Bo Tyler is the Louisiana Deep South Connect Team reporter for USA Today Network. Find her on X @PresleyTyler02 and email at PTyler@Gannett.com



Source link

Advertisement
Continue Reading

Louisiana

Louisiana State Police investigating deadly crash after driver allegedly evades police

Published

on

Police identify dirt Bike rider killed while allegedly fleeing from police during traffic stop


Louisiana State Police investigating deadly crash after driver allegedly evades police

Advertisement

ma’am. I Yeah. Yeah. I ma. Yeah. Yeah. ma’am. Yeah. Um.

Advertisement

Louisiana State Police investigating deadly crash after driver allegedly evades police

Updated: 9:30 PM CDT Apr 6, 2026

Editorial Standards

Advertisement

Louisiana State Police are investigating a crash after a driver allegedly evaded police on Canal Boulevard. Police say the crash happened around 5 p.m. on Canal Boulevard at City Park Avenue. The crash happened after the rider of the dirt bike struck another car while evading New Orleans police and Louisiana State Police, who were attempting to conduct a traffic stop. The subject was taken to a local hospital, where he later died. The name or age of the dirt bike rider was provided. This is an ongoing investigation. Anyone with information and/or pictures and videos is urged to share that information with LSP Detectives. You may anonymously report information through the Louisiana State Police online reporting system by visiting lsp.org and clicking on Report Suspicious or Criminal Activity, or by calling the LSP Fusion Center Hotline at 1-800-434-8007.

Louisiana State Police are investigating a crash after a driver allegedly evaded police on Canal Boulevard.

Advertisement

Police say the crash happened around 5 p.m. on Canal Boulevard at City Park Avenue.

The crash happened after the rider of the dirt bike struck another car while evading New Orleans police and Louisiana State Police, who were attempting to conduct a traffic stop.

The subject was taken to a local hospital, where he later died.

Advertisement

The name or age of the dirt bike rider was provided.

This is an ongoing investigation.

Anyone with information and/or pictures and videos is urged to share that information with LSP Detectives. You may anonymously report information through the Louisiana State Police online reporting system by visiting lsp.org and clicking on Report Suspicious or Criminal Activity, or by calling the LSP Fusion Center Hotline at 1-800-434-8007.

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