Connect with us

Maryland

Maryland Equitable Justice Commission Proposes 18 Reforms to Address Racial Disparities, Highlighting That Black Residents Make Up 30% of the Population but 71% of Those Incarcerated – The MoCo Show

Published

on

Maryland Equitable Justice Commission Proposes 18 Reforms to Address Racial Disparities, Highlighting That Black Residents Make Up 30% of the Population but 71% of Those Incarcerated – The MoCo Show


The Maryland Equitable Justice Commission (MEJC) has proposed 18 recommendations to address the state’s high incarceration rates and racial disparities in the criminal justice system, focusing on reforms in sentencing, reentry programs, trauma-informed care, youth justice, and parole processes. The initiatives aim to reduce the disproportionate incarceration of Black Marylanders, who make up 71% of the prison population despite being 30% of the state’s residents.

Per the Maryland Attorney General’s Office: “Maryland has the nation’s highest percentage of Black people in its prisons when compared to the general population. To address this crisis, the Maryland Equitable Justice Commission (MEJC) approved today recommendations for legislative and agency reforms, program development, data collection, and other measures designed to reduce the mass incarceration of Black men and women and other marginalized groups in Maryland prisons and jails. While Black Marylanders make up about 30% of the state’s overall population, 71% of people incarcerated in Maryland correctional facilities are Black Marylanders. This impact of this incarceration is enormous, disrupting housing, employment, family systems, and both individual and community health and well-being.

Today’s 18 recommendations are designed to tackle long-seeded issues that have contributed to Maryland’s high incarceration rates and racial disparities throughout the legal system. They are the culmination of a pioneering partnership between Maryland Attorney General Anthony Brown and Maryland Public Defender Natasha Dartigue, who, together, established the MEJC in October 2023. The MEJC is a collaborative with more than 40 stakeholder members from the government, private sector, and the community, as well as two academic partners: The Judge Alexander Williams, Jr. Center for Education, Justice & Ethics and the Bowie State University Institute for Restorative Justice.

The recommendations, listed below, were developed by the following work groups of Collaborative members focused on areas known to impact incarceration rates:
MEJC Work Groups
• Criminal Law and Sentencing Reform
• Health and Human Services
• Education, Workforce Development and Economic Opportunity
• Prison, Jail and Detention Facility Reform
• Promoting Successful Reentry and Preventing Reincarceration
• Law Enforcement Policies and Practices
• Youth Justice Reform.

Advertisement

“No single person created mass incarceration, and no single person can correct its devastating effects on communities of color across Maryland. That is a job for prosecutors and defense attorneys, academics and legislators, law enforcement, the judiciary, and reformers, all of whom participated in the Maryland Equitable Justice Collaborative,” said Attorney General Anthony G. Brown. “These recommendations are a crucial first step in making our State fairer, and safer, for all. Just as this crisis has harmed Black communities for decades, our efforts will impact Maryland families for generations, helping them heal from the trauma of mass incarceration. We must end mass incarceration and eliminate the racial biases and disparities in our criminal legal system.”

From Public Defender Natasha M. Dartigue: “The impact of mass incarceration extends far beyond the restrictive, steel bars to crippling the financial, social and emotional growth of families and communities. The ripple effect of prioritizing punitive policies and practices over data-driven approaches, coupled with racially disparate implementation, has irreparably damaged individuals and devastated communities. High incarceration rates contribute to weakened community ties, less social cohesion and a reduced workforce population. By disrupting the cycle of poverty, trauma and instability, the recommendations are an important first step in creating reform that both tackles mass incarceration and promotes public safety. I applaud the MEJC members for the tremendous dedication shown, expertise shared, and teamwork championed.”

The recommendations are:
1. Conduct a statewide assessment to find gaps in Maryland’s crisis response systems. Based on the assessment’s results, develop ways the state can help counties improve their use, implementation, and expansion of alternative crisis response models and infrastructure.
2. Pass legislation to end non-safety-related traffic stops; enhance data reporting requirements and include data on race and gender; re-examine the use and efficacy of consent searches to reduce unnecessary interactions with police and allow for more appropriate utilization of law enforcement.
3. Scale the impact and success of cognitive behavioral theory training programs and mandate that all sworn police officers in Maryland receive the training.
4. Conduct a qualitative and quantitative analysis of each step in the criminal legal process – from arrest to parole – to understand the impact of racial and geographic disparities in Maryland’s adult prison population.
5. Develop and adopt a Sentencing Pilot using a needs-based, case management approach in collaboration with the Division of Parole and Probation in at least two Maryland counties.
6. Reduce unnecessary pretrial confinement by changing the district court discovery rules so that prosecutors must give discovery to the defense within a reasonable timeframe, developing a uniform civilian complaint review process across all State’s Attorney’s Offices, and allowing defendants to waive their right to a bail review hearing.
7.Develop a pilot program to improve access to trauma-informed mental health treatment for people incarcerated in Maryland’s jails and detention centers.
8. Incentivize primary care physicians to conduct Adverse Childhood Experiences screening with community-led follow-up interventions.
9. Increase the number of people eligible for earlier parole consideration due to serious medical conditions and having reached an age where they no longer pose a threat to public safety.
10. Enhance the transparency, consistency, and efficacy of parole decisions by allowing access to the materials and justifications relied upon for decision-making, developing clear guidance on the application of factors impacting release, identifying actions or steps that incarcerated people can take to improve their chances for release, surveying the services available to incarcerated people upon release, and publishing detailed reports on the Maryland Parole Commission’s activities.
11. Pilot an Emerging Adults Program (ages 18-25) that creates protocols geared toward community building and intensive services to improve post-release success and prevent future system involvement.
12. Expand and improve community-based reentry programming by creating a protocol to share specific service needs of people who are incarcerated; collecting and publishing data on the effectiveness of reentry services; ensuring that all state facilities offer reentry services; increasing funding for successful reentry programs; and expanding community-based reentry programs’ access to incarcerated people 180 days before their reentry date.
13. Expand access to Second Look laws that empower judges to reduce or modify sentences, but not increase, under specific conditions. These laws should prioritize rehabilitation, requiring judges to assess an individual’s progress, ensure they pose no danger to society, and act in the interests of justice. Decisions must be based on personalized evaluations of behavior and efforts toward reform. Additionally, victims and their representatives should be treated with respect, granted notice of proceedings, allowed to attend and provide input, and offered protective measures like no-contact orders if probation is imposed.
14.Conduct a comprehensive study on the financial obligations imposed on individuals under probation and parole and their impact on successful reentry.
15. Address the rising criminalization of in-school behavior by tracking and analyzing data trends in school-based arrests, enhancing implicit bias training, and revising discipline and criminal justice policies.
16. Amend the compulsory school attendance requirements to allow justice-involved youth to complete their high school requirements through the GED process.
17. Limit the automatic charging of children in adult criminal court.
18. Review the training requirements of judges and magistrates to ensure that their decisions are supported by a comprehensive and working knowledge of implicit bias, cultural competency, adolescent brain development, adverse childhood experiences, trauma, and other important considerations. A summary of the current training requirements and materials involved should be made available for public review.

A report detailing the need for these recommendations, the best practices they rely upon, and suggestions for implementation is due to be released in early 2025.”

Advertisement



Source link

Maryland

Deadly motorcycle crash closes busy stretch of Connecticut Avenue in Montgomery Co. – WTOP News

Published

on

Deadly motorcycle crash closes busy stretch of Connecticut Avenue in Montgomery Co. – WTOP News


A deadly crash involving a motorcycle shut down a stretch of Connecticut Avenue in Chevy Chase, Maryland, early Tuesday.

A deadly crash involving a motorcycle shut down a stretch of Connecticut Avenue in Chevy Chase, Maryland, early Tuesday.

Montgomery County police said officers responded around 6:15 a.m. to a report of a crash involving a car and a motorcycle at Manor Road and Connecticut Avenue.

A motorcyclist was found in serious condition. Police said the man died at the scene.

Advertisement

A woman driving the car was hospitalized with minor injuries.

Connecticut Avenue is closed in both directions between Jones Bridge Road and Manor Road as police investigate the collision.

The crash is the latest in a series of deadly motorcycle incidents across Maryland, including a deadly hit-and-run in Charles County that left one man dead Saturday.

A map of the area is below.

CLICK MAP FOR THE LATEST ROAD CONDITIONS FROM THE WTOP TRAFFIC CENTER: Map shows closure of Connecticut Avenue in both directions, south of Interstate 495 in Chevy Chase, Md.

Get breaking news and daily headlines delivered to your email inbox by signing up here.

Advertisement

© 2026 WTOP. All Rights Reserved. This website is not intended for users located within the European Economic Area.



Source link

Continue Reading

Maryland

Maryland House passes bill to end automatic charging of some juveniles as adults

Published

on

Maryland House passes bill to end automatic charging of some juveniles as adults


Maryland lawmakers have approved a bill that would end the automatic charging of certain juveniles as adults and is now on its way to the governor’s office for review.

The Youth Charging Reform Act passed the House of Delegates on Monday after clearing the Senate last week. The bill aims to end the automatic charging of 16- and 17-year-olds as adults for certain drug, assault, and gun offenses.

ALSO READ | Bill to end automatic charging of some juveniles as adults inches closer to passage

The bill drew significant opposition from several top prosecutors in Maryland, including Baltimore City State’s Attorney Ivan Bates, Prince George’s County State’s Attorney Tara Jackson, Montgomery County State’s Attorney John McCarthy, and Anne Arundel County State’s Attorney Anne Colt Leitess.

Advertisement

For months, they’ve warned that the change could weaken accountability and pose public safety risks.

“DJS is not equipped to deal with these increased violent offenders, and the legislature should defer the implementation of this bill until the programs are in place,” McCarthy said.

Maryland sheriffs also joined the pushback, including Carroll County Sheriff Jim Dewees, who previously said, “This is not a smart move, by any means, I don’t like it because, and I think by and large, law enforcement doesn’t like it, because we don’t have a whole lot of trust in the juvenile court system and the DJS system.”

ALSO READ | FOX45 sends video of prosecutors’ concerns to lawmakers backing juvenile justice bill

Supporters of the bill argued that most cases end up in the juvenile system regardless, and therefore, it makes sense to start them in the Department of Juvenile Services.

Advertisement

“They’re already ingesting that work anyway; they’re already doing that workload anyway,” Sen. Will Smith, lead sponsor of the legislation, previously told FOX45 News. “We’re just wasting time and money by sending them to the adult system first.”

Comment with Bubbles

JOIN THE CONVERSATION (6)

The bill now awaits at Gov. Wes Moore’s desk for a final decision.



Source link

Advertisement
Continue Reading

Maryland

B-W Parkway to close for bridge replacement

Published

on

B-W Parkway to close for bridge replacement


WBAL

Maryland Route 295

Advertisement

SOURCE: WBAL

Advertisement

Baltimore-Washington Parkway, exit ramps to close in Jessup for bridge replacement

WBAL logo

Updated: 10:31 AM EDT Apr 6, 2026

Editorial Standards

Advertisement

A portion of the Baltimore-Washington Parkway will close for two weekends in Jessup, where a bridge will be demolished.Check our LIVE traffic map and cameras in the WBAL-TV 11 News appThe Maryland State Highway Administration said Maryland Route 295 ramps will close, weather permitting, at Maryland Route 175 for an interchange reconstruction project.Southbound MD 295 will close between Maryland Routes 100 and 32 starting at 10 p.m. on April 10 until 5 a.m. on April 13 with the following lane and ramp closures.Both ramps from MD 100 onto southbound MD 295.Both ramps from Arundel Mills Boulevard onto southbound MD 295.Southbound MD 295 ramp to eastbound and westbound MD 175.Westbound MD 175 ramp to southbound MD 295.Northbound MD 295 will close between Maryland Routes 32 and 100 starting at 10 p.m. on April 17 until 5 a.m. on April 20 with the following ramp closures.Both ramps from MD 32 onto northbound MD 295.Eastbound MD 175 ramp to northbound MD 295.Northbound MD 295 ramp to eastbound and westbound MD 175.The mainline MD 175 lanes on the new bridge will remain open to traffic. The SHA said signs will be posted for detours to include MD 100, Interstate 95 and MD 32. Those going to Baltimore-Washington International Thurgood Marshall Airport are advised to use alternate north-south routes such as I-95, U.S. Route 1 or I-97 to reach I-195.The overall interchange reconstruction project completion is scheduled for Fall 2027, schedule and weather permitting.

A portion of the Baltimore-Washington Parkway will close for two weekends in Jessup, where a bridge will be demolished.

Advertisement

The Maryland State Highway Administration said Maryland Route 295 ramps will close, weather permitting, at Maryland Route 175 for an interchange reconstruction project.

Southbound MD 295 will close between Maryland Routes 100 and 32 starting at 10 p.m. on April 10 until 5 a.m. on April 13 with the following lane and ramp closures.

  • Both ramps from MD 100 onto southbound MD 295.
  • Both ramps from Arundel Mills Boulevard onto southbound MD 295.
  • Southbound MD 295 ramp to eastbound and westbound MD 175.
  • Westbound MD 175 ramp to southbound MD 295.

Northbound MD 295 will close between Maryland Routes 32 and 100 starting at 10 p.m. on April 17 until 5 a.m. on April 20 with the following ramp closures.

  • Both ramps from MD 32 onto northbound MD 295.
  • Eastbound MD 175 ramp to northbound MD 295.
  • Northbound MD 295 ramp to eastbound and westbound MD 175.

The mainline MD 175 lanes on the new bridge will remain open to traffic.

The SHA said signs will be posted for detours to include MD 100, Interstate 95 and MD 32.

Advertisement

Those going to Baltimore-Washington International Thurgood Marshall Airport are advised to use alternate north-south routes such as I-95, U.S. Route 1 or I-97 to reach I-195.

The overall interchange reconstruction project completion is scheduled for Fall 2027, schedule and weather permitting.

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