Connect with us

Northeast

Maine secretary of state’s house 'swatted' day after Trump ballot disqualification decision

Published

on

Maine secretary of state’s house 'swatted' day after Trump ballot disqualification decision

The home of Maine Secretary of State Shenna Bellows was “swatted” Friday evening, police confirmed Saturday.  

Maine State Police responded after an unidentified man lied about having broken into the house. 

Bellows and her family were away at the time of the hoax call. 

The incident comes after Bellows disqualified former President Trump from the state’s 2024 Republican presidential primary ballot late Thursday, citing Section 3 of the 14th Amendment of the U.S. Constitution, which bans from office those who “engaged in insurrection” over his alleged incitement of the Jan. 6 riot. 

MAINE GOP STATE LAWMAKER MOVES TO IMPEACH STATE SECRETARY OVER TRUMP BALLOT REMOVAL

Advertisement

Maine Secretary of State Shenna Bellows decided Thursday that former President Trump is to be barred from Maine’s 2024 presidential ballot.  (Joe Phelan/Portland Press Herald via Getty Images/File)

Bellows made the ruling after some state residents, including a bipartisan group of former lawmakers, challenged Trump’s position on the ballot.

“Swatting” is when someone calls the police under dangerous false pretenses to trigger a law enforcement response, especially a SWAT team to a location. 

Some swatting calls in the past have ended in the victim being killed. An Ohio man was sentenced to prison in 2019 after a Kansas man he swatted was accidentally killed by police. 

On Saturday, Bellows called the swatting call “unacceptable” in a lengthy statement on Facebook. 

Advertisement

HOW RECENT ‘SWATTING’ CALLS TARGETING OFFICIALS MAY PROMPT HEAVIER PENALTIES FOR HOAX POLICE CALLS

Maine Secretary of State Shenna Bellows (Gordon Chibroski/File)

“Thank you for the messages of love and support,” she wrote. “I’ve been moved by every one and especially by those from friends and loved ones who disagree with my decision but have reached out to express love and respect.”

Bellows added that her staff had faced “unacceptable” and “non-stop threatening communications” on Friday after her decision. “It’s designed to scare not only me but also others into silence, to send a message. I am so grateful to have such an amazing team of employees at the Department of Secretary of State. [Her husband] Brandon and I are grateful for incredible, dedicated support from law enforcement in this time.” 

Maine State Police said officers investigated Bellows’ home at her request and nothing suspicious was found. 

Advertisement

The investigation is ongoing. 

On Christmas Day, Republican U.S. Reps. Brandon Wiliams of New York and Marjorie Taylor Greene of Georgia were also the targets of swatting calls. 

Then on Tuesday, Republican state Rep. Kevin D. Miller of Ohio reported that he was swatted.

Read the full article from Here

Advertisement
Continue Reading
Click to comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pennsylvania

Pa. data centers: How lawmakers are responding, from electricity and water use to tax breaks

Published

on

Pa. data centers: How lawmakers are responding, from electricity and water use to tax breaks


What data centers think of Matzie’s bill

The Data Center Coalition is watching bills like Matzie’s closely. The coalition represents companies including Amazon Web Services, Google, Microsoft, Anthropic, CoreWeave and OpenAI.

Dan Diorio, vice president of state policy with the group, said the coalition is open to special utility rates for large electricity users that force these customers to pay for any grid upgrades their operations require while insulating other ratepayers from these costs. But the group opposes bills like Matzie’s that apply specifically to data centers, rather than to all electricity users over a certain size.

“If it’s a transmission line or if it’s a substation, if it’s a generating asset, of course, data centers should pay for that and will pay for that,” Diorio said.

But “no specific end user should be singled out for disparate treatment,” he said.

Advertisement

The coalition also opposes mandating data centers to curtail energy use during times of peak demand or bring their own new, clean power, preferring instead incentives that reward data centers for voluntarily doing so, Diorio said.

“Things like having to take interruptible service … you could see projects move across to a different state line where they didn’t have that requirement, while doing nothing to solve the ultimate shortfall within [the regional grid],” he said.

Pennsylvania lobbying records show the Data Center Coalition spent $19,632 on lobbying at the state level on the topic of “energy, information technology and utilities” during the last three months of 2025.

“Pennsylvania is a very strong, growing and important market for the data center industry,” Diorio said. “We understand concerns, and we want to be an engaged stakeholder to address those concerns, but also keep the state strong for development. And I think we can do that — I think we can find a good middle ground.”

Advertisement



Source link

Continue Reading

Rhode Island

Hate self-checkout at the grocery store? A RI bill to limit it is back.

Published

on

Hate self-checkout at the grocery store? A RI bill to limit it is back.


play

  • Rhode Island lawmakers are considering a bill to limit grocery stores to eight self-checkout kiosks.
  • The proposed legislation would also require one employee for every two self-checkout stations.
  • The bill specifically targets grocery stores, which has drawn criticism from business associations.

PROVIDENCE – As lawmakers debate raising Rhode Island’s minimum wage, which would impact many grocery store workers, a bill to limit the number of self-checkout lanes at grocery stores is again stirring conversation.

Rep. Megan Cotter, D-Exeter, Hopkinton, Richmond, introduced a version of her initial bill, proposed in 2023, to reduce the number of self-checkout kiosks a grocery store can have open, and mandate the amount of labor required to operate them. Her bill, H 7290, has eight co-sponsors in the House, while Senate President Valarie Lawson, D-East Providence, introduced a companion bill in the Senate, S 2342.

Advertisement

When Cotter’s bill was first introduced, it included a mandate that grocers give a 10% discount to customers who used self-checkout for more than 10 items. The newest iteration scraps that language in favor of a more streamlined approach:

  • Grocery stores can have no more than eight self-checkout kiosks operating at one time.
  • One checkout line must be manned for every two self-checkout kiosks.
  • One worker must be assigned to every two self-checkout stations.

Here’s how the math on the self-checkout proposal works:

For a store operating the maximum number of self-checkout kiosks, eight, this means the store would be running four lines with cashiers at a time. That same store would also need four people monitoring the self-checkout stations, for a total of eight workers across 12 cash registers, both manned and unmanned.

Limiting the number of self-checkout aisles a store can have is all about preserving jobs and hours worked, she previously said.

Why stores are using self-checkout

In 2023, Cotter said her original bill was partially a function of her frustration with using the Walmart self-checkout kiosks.

Advertisement

Problems with self-checkout kiosks abound as each industry, from groceries to pharmacies to hardware to big box stores like Walmart, sets different parameters and triggers on self-checkout machines.

Clements’ Marketplace Operations Director Charles Anthony IV wrote in testimony against Cotter’s bill that the grocery, with locations in Bristol and Portsmouth, installed the self-checkout kiosks to be their “fast lanes.”

“With smaller orders often causing backups across the Front End, the Fast Lanes have helped to maintain a steady pace and take care of our customers more efficiently,” Anthony wrote.

At Target, self-checkout was meant to be limited to people with 10 items or fewer.

Why limit self-checkout?

Cotter’s bill only targets grocery stores. That caught the attention of Rhode Island Food Dealers Association President Scott Bromberg, who submitted testimony against the proposal.

Advertisement

“This proposal is especially egregious because it specifically targets only grocery stores,” Bromberg wrote. “Big box retailers, along with hardware stores, pharmacies, dollar stores, fast food chains and more utilize self-checkout to allow them to deploy their staff where needed most.”

The bill mostly targets traditional grocery stores, but also hits pharmacies, like CVS and Walgreens, but might not include big box retailers like Walmart and Target.

It defines groceries as:

  • Raw or processed food or drink
  • Prescription and over-the-counter drugs
  • Hygiene items when a store also sells food, drink and “miscellaneous household items” like laundry detergent and dishwasher soap.

A grocery store is defined as a business that gets most of its revenue from selling “groceries.”

Shaw’s and Star Market’s Jim O’Leary wrote that 60% to 65% of its transactions are done via self-checkout systems and 10% are done through its drive-up platform.

“Only approximately 25% of customers utilize traditional staffed registers. This distribution highlights the importance of maintaining adaptive service models to accommodate a broad spectrum of consumer preferences, thereby enhancing the overall shopping experience and most importantly convenience,” O’Leary wrote.

Advertisement

Which RI stores use self-checkout?

Stores in the state offer a wide variety of takes on self-checkout.

At many Five Below stores, self-checkout is the only option. Home Depot has replaced most checkout lanes at the front of many its stores with self-checkout lanes.

At the discount grocer Aldi, many stores have open self-checkout kiosks. Depending on how slow business is, it can sometimes take a few minutes for a cashier to return to a regular checkout lane, as employees do double duty as cashiers and stockers. Customers are also expected to do their own bagging.

Stop & Shops usually have a variety of self-checkout kiosks and cashiers, but the kiosks practically shout at customers and the scales, meant to prevent theft, often wrongly register item weights, forcing a worker to override the machine after an item is bagged too quickly, or not quickly enough.

Many CVS stores also have the self-checkout kiosks.

Advertisement

Self-checkouts have also moved into the world of fast food, for example at Taco Bell and McDonald’s, shifting workers away from being cashiers.

Is low-skill labor worth keeping?

The two-self checkout restriction bills are aimed at preserving jobs often classified as entry level or low skill.

The worth and value of those jobs is increasingly under fire by legislators and the business community, especially as the debate over minimum wage increases rages.

Rep. Stephen Casey, D-Woonsocket, made the case during a hearing on March 18 that it would be unfair for the minimum wage to be increased because public sector workers don’t make enough, making an argument that low-skilled labor deserves to be paid less.

“So the average fireman in Rhode Island makes $28.06 an hour, so you’re saying that the guy that’s flipping burgers should make $20 an hour?” Casey asked during the hearing.

Advertisement

That argument also appeared during the debate over a bill to give health care workers time-and-a-half on Sundays, as Woonsocket resident Jason Romblad said he was “amazed that people selling us a pack of gum will get time-and-a-half on these days, but a health care worker who takes care of us when we are sick and hurt do not get it.”

A separate bill to strip caterers and commissary workers of time-and-a-half on Sundays and holidays was lauded by businesses groups that called for ending the practice entirely. National Federation of Independent Businesses State Director Christopher Carlozzi wrote in support of ending the benefit, claiming that paying minimum wage workers $24 an hour on Sundays instead of the mandated $16 (a $64 pre-tax difference for an eight-hour shift) means the difference between opening a shop on Sundays or leaving it closed.

According to the state’s latest Occupational Employment And Wage Statistics, published in May 2025, cashiers, an estimated 9,710 of them in the state, make a mean average of $15.90 an hour. That climbs to $16.67 an hour for “experienced wage.” The entry wage was $14 an hour, the minimum wage in 2024.

In January, the minimum wage increased to $16 an hour and it increases to $17 an hour on Jan. 1, 2027.

Other large groups of similarly paid professions are fast food and counter workers, 12,650 of them; dining room and cafeteria attendants, 2,720 of them; and dishwashers, 2,830 of them.

Advertisement

The statistics count an estimated 493,800 employed, making cashiers 2% of the total employment in the state.



Source link

Continue Reading

Vermont

Hour-by-hour: See when to expect steady snow Tuesday in Vermont, New York

Published

on

Hour-by-hour: See when to expect steady snow Tuesday in Vermont, New York


Roads will turn slippery mid-morning through mid-afternoon

Advertisement

Hour-by-hour: See when to expect steady snow Tuesday in Vermont, New York

Roads will turn slippery mid-morning through mid-afternoon

Advertisement

NBC5 meteorologists expect a burst of steady snow to arrive Tuesday morning in Vermont and northern New York, lasting through the early-mid afternoon. Deteriorating road conditions will lead to slow travel for several hours, with some improvement expected by the evening commute.Watch the video above to see the timeline for your area.

NBC5 meteorologists expect a burst of steady snow to arrive Tuesday morning in Vermont and northern New York, lasting through the early-mid afternoon.

Advertisement

Deteriorating road conditions will lead to slow travel for several hours, with some improvement expected by the evening commute.

Watch the video above to see the timeline for your area.

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