Connect with us

Vermont

10 Of The Most Captivating Small Towns In Vermont

Published

on

10 Of The Most Captivating Small Towns In Vermont


Vermont’s small towns celebrate everything that makes this state so unique: scenic beauty, rich history, and a deep sense of community. From charming villages in the mountains to lakeside gems and historic havens, these towns invite visitors to slow down, soak in their character, and discover hidden treasures. Whether you’re drawn to the rustic landscapes, vibrant arts scenes, or the warmth of local traditions, Vermont’s small towns offer the perfect opportunity to experience the Green Mountain State at its finest.

Stowe

Aerial view of Stowe, Vermont with mountains and colorful fall trees.

Stowe is Vermont’s exemplary small town in the Green Mountains, with stunning views of Mount Mansfield, the state’s highest peak. Known for its year-round appeal, Stowe is one of the most popular destinations in Vermont, attracting visitors for outdoor adventures like skiing and snowboarding in winter at the renowned Stowe Mountain Resort.

In the warmer months, hiking enthusiasts flock to trails such as the Stowe Pinnacle Trail, a challenging hike with rewarding views at the summit, and the Mount Mansfield Ridge Trail, which takes you along the longest and highest ridge in Vermont. Fall brings another wave of visitors for fall foliage as the town’s dense forests turn into a vibrant display of red, orange, and yellow leaves.

Advertisement

Popular spots in town include The Green Cup Café, known for its cozy atmosphere and fresh, locally sourced meals, and Stowe Mercantile, a quaint general store selling local goods, handmade Vermont crafts, and specialty foods. For a true taste of the area, head to The Trapp Family Lodge, where visitors can explore the beautiful grounds and enjoy a traditional Austrian meal at the lodge’s restaurant—owned by the von Trapp family of The Sound of Music fame.

Woodstock

Early autumn foliage with houses in the mountains of Woodstock, Vermont

Early autumn foliage with houses in the mountains of Woodstock, Vermont.

Woodstock is one of Vermont’s most scenic towns, known for its iconic landmarks like the Middle Covered Bridge and Taftsville Covered Bridge, which add timeless charm to the landscape.

At the heart of Woodstock is the Marsh-Billings-Rockefeller National Historical Park, a tribute to Vermont’s conservation legacy. Visitors can tour the historic mansion, stroll through gardens, and explore scenic hiking trails. For art lovers, the Gallery on the Green and Collective—The Art of Craft are must-visit spots that showcase works by talented regional artists. Woodstock also hosts annual cultural events, such as the Woodstock Film Series and art shows, which draw visitors year-round.

Woodstock’s culinary scene is equally vibrant. A local favorite is the farm-to-table restaurant The Prince & The Pauper, renowned for its seasonal Vermont-inspired dishes.

Manchester

Exterior architecture and landscaped gardens of Hildene, the Lincoln Family Home, open to the public in Manchester, Vermont

Hildene, the Lincoln Family Home in Manchester, Vermont. Editorial credit: Theresa Lauria / Shutterstock.com

Set against the majestic Green Mountains, Manchester boasts a quaint village center and an appealing blend of history, nature, and refined shopping experiences. A major historical landmark is Hildene, the grand estate of Robert Todd Lincoln, Abraham Lincoln’s son. Visitors to Hildene can tour the elegant mansion, explore its breathtaking formal gardens, and enjoy sweeping views of the Green Mountains from the property.

Advertisement

For outdoor enthusiasts, The Equinox Preservation Trust has the popular Equinox Mountain Trail, a challenging hike to the summit of Equinox Mountain, where panoramic views of the valleys and peaks await. Manchester’s proximity to the Battenkill River makes it a top destination for fly fishing, while Lye Brook Falls Trail and Prospect Rock Trail include scenic hiking opportunities through Vermont’s lush landscapes.

The village center is an inviting area to explore, with upscale shopping at the Manchester Designer Outlets and local art at Tilting at Windmills Gallery, showcasing works by regional and national artists. Food lovers will find a treat at The Silver Fork, a local restaurant known for its fusion of global flavors and fresh Vermont ingredients, and Mistral’s at Toll Gate, which is a delightful dining experience along the Battenkill River.

Middlebury

Two Adirondack chairs overlooking Vermont foliage at Middlebury College in Middlebury, Vermont
Two Adirondack chairs overlooking Vermont foliage at Middlebury College in Middlebury, Vermont.

Middlebury is set in Vermont’s scenic western region and has a mixture of history, culture, and nature, making it a captivating town to visit. Middlebury College enhances the town’s arts and culture scene, drawing visitors to the Mahaney Arts Center. For a touch of local history, the Vermont Folklife Center has exhibits and workshops that celebrate and preserve the region’s cultural traditions. Another historical landmark is the beautiful Middlebury Congregational Church. Visitors can also take in the picturesque Middlebury Falls, Otter Creek, and the Battell Bridge, which overlooks the rushing waters.

Middlebury also serves as a gateway to the scenic shores of Lake Champlain. Button Bay State Park has hiking trails, lakefront walks, and swimming, while the lake itself is popular for kayaking and fishing.

Middlebury’s food scene is deeply rooted in Vermont’s agricultural heritage. The Storm Café, located along the river, and American Flatbread Middlebury Hearth, known for its wood-fired pizzas made with local ingredients, are standout spots for farm-to-table dining. Middlebury also hosts a vibrant farmers’ market that showcases fresh local produce, artisan cheeses, and Vermont specialties.

Montpelier

Skyline of Montpelier, Vermont in autumn

Skyline of Montpelier, Vermont in autumn.

As the state capital, Montpelier is a small town with a big personality. Despite being the seat of government, Montpelier has managed to retain its small-town feel, with a population of just over 8,000 people. The town is known for its stunning neoclassical Vermont State House, where visitors can take a guided tour and learn about the state’s history and government.

Advertisement

Capitol Grounds Café serves freshly roasted coffee and baked goods in a welcoming setting for a cozy coffee break, while Three Penny Taproom is a popular spot for sampling Vermont’s famed craft beer. Notable shops include The Drawing Board, a beloved local art supply store that doubles as a gallery for local artwork, and Buch Spieler Records. The town also hosts numerous festivals annually, including the Montpelier Farmers Market, which brings together local farmers, artisans, and food vendors to celebrate Vermont’s agricultural bounty.

For outdoor lovers, the town’s proximity to the Winooski River means opportunities for kayaking, while nearby hiking trails like North Branch River Park Trail and East Montpelier Trail provide stunning views of the surrounding hills and valleys.

Waitsfield

Aerial view of Waitsfield, Vermont and the Mad River on Scenic Route 100 in autumn

Aerial view of Waitsfield, Vermont and the Mad River on Scenic Route 100 in autumn.

Located in the Mad River Valley, Waitsfield is a quintessential Vermont town known for its relaxed pace of life and stunning natural surroundings. The nearby Mad River is perfect for a variety of outdoor activities, including kayaking, tubing, and fishing, while the surrounding mountains provide excellent hiking, biking, and cross-country skiing opportunities, with popular trails like Sunset Ledge Trail.

The nearby Sugarbush Resort has world-class skiing and snowboarding in winter, and its scenic chairlift rides provide incredible views of the valley in the warmer months. Waitsfield is also home to numerous festivals, including the Mad River Valley Bluegrass Festival, which celebrates Vermont’s music and community spirit.

Brattleboro

Spring aerial view of Brattleboro, Vermont on a partly cloudy day

Spring aerial view of Brattleboro, Vermont. Editorial credit: SEALANDSKYPHOTO / Shutterstock.com

Brattleboro is a dynamic, artsy town that is always buzzing with creativity. Its location along the Connecticut River provides a beautiful setting, and the town’s vibrant arts scene is one of its defining features. Brattleboro has numerous galleries, theaters, and music venues, making it a hub for Vermont’s artistic community. Notable spots include the Brattleboro Museum & Art Center, which hosts contemporary art exhibits; Latchis Theatre, an Art Deco-style venue that hosts films and live performances; and Stone Church, a popular music venue housed in a beautifully repurposed historic building.

Advertisement

The town also hosts events like the Brattleboro Literary Festival, which draws visitors from all over to celebrate the written word, and the Brattleboro Farmers Market, where local vendors showcase Vermont’s finest produce and artisan goods. Brattleboro’s historic district, with its mix of antique shops and eclectic cafes, has plenty to explore. The town also has several beautiful parks and walking trails, including the Retreat Farm and the nearby Putney Mountain for scenic hikes.

Jeffersonville

Grist Mill Covered Bridge surrounded by fall foliage in Cambridge, Vermont

Grist Mill Covered Bridge surrounded by fall foliage in Cambridge, Vermont.

A small town that packs a big punch, Jeffersonville is a hidden gem in northern Vermont. In the Green Mountains, this picturesque town provides easy access to Smugglers’ Notch State Park, where visitors can enjoy scenic trails like Sterling Pond Trail for hiking, as well as skiing and wildlife spotting. White-tailed deer and red foxes are common, while black bears can sometimes be seen in the park’s more remote areas. Birdwatchers may spot species like the peregrine falcon, pileated woodpecker, and various types of hawks.

Jeffersonville’s downtown brims with small-town appeal, featuring local businesses like The Farm Store, which specializes in Vermont-made goods, and Mootsies Bakery, known for its delicious pastries and fresh bread. Nearby Smugglers’ Notch Resort has family-friendly skiing experiences with fewer crowds than larger resorts, making it ideal for a relaxed getaway.

Hardwick

North Main Street in Hardwick, Vermont

North Main Street in Hardwick, Vermont. By Vertexn, Wikimedia Commons

Hardwick is a town that exemplifies Vermont’s agricultural heart. It’s known for its thriving local food scene, with farms providing fresh produce, meats, and artisanal goods that are celebrated at the Hardwick Farmers Market. The town is home to the High Mowing Organic Seeds farm, one of the largest organic seed companies in the country, and the neighboring Cellars at Jasper Hill, which produces world-renowned artisanal cheeses.

For outdoor enthusiasts, Hardwick is surrounded by lush, accessible landscapes perfect for all-season adventure. Nearby Lake Elmore is a local favorite. Its pristine waters are ideal for fishing, kayaking, and swimming in the summer months, and trails like the Elmore Mountain Trail lead to the summit for sweeping views of the Vermont countryside. In winter, the area around the Craftsbury Outdoor Center provides opportunities for cross-country skiing, snowshoeing, and even ice fishing.

Advertisement

Hardwick’s strong sense of community is evident in its local events, including the annual Hardwick Fall Festival, which brings together food, music, and crafts to celebrate the region’s agricultural roots.

Shelburne

Beautiful property off Shelburne Road in Shelburne, Vermont

Beautiful property off Shelburne Road in Shelburne, Vermont. Editorial credit: John Arehart / Shutterstock.com

Shelburne is a beautiful town located on the shores of Lake Champlain and has some of the most scenic views in Vermont. The town is home to the renowned Shelburne Museum, an expansive 45-acre property featuring a collection of over 150,000 pieces of American art and artifacts—including a restored 220-foot steamboat “Ticonderoga.” Just down the road, Shelburne Farms, a 1,400-acre working farm, and nonprofit environmental education center, sits on a beautiful lakeside property where visitors can explore the grounds via the Farm Trail or Lone Tree Hill Trail, both with peaceful walks through meadows, woodlands, and gardens.

Shelburne’s waterfront is a hub for outdoor activities. Shelburne Bay Park has hiking trails with sweeping lake views and access to kayaking and paddleboarding. Views of the distant Adirondack Mountains add a stunning backdrop for boating and picnicking.

You’ll find a mix of beloved local spots in the town’s quaint village center. Stop by the rustic-farmhouse-style Village Wine and Coffee for a morning espresso, or enjoy brunch at Rustic Roots. The Bearded Frog serves creative New American cuisine for dinner, and Folino’s Wood-Fired Pizza provides casual dining with locally sourced toppings and a brewery next door.

Discover Vermont’s Hidden Gems

Vermont’s small towns are rich in character and charm, each with its own unique appeal. From stunning landscapes to historic landmarks and tight-knit communities, these towns glimpse the heart of Vermont. Whether you’re drawn to the beauty of the mountains, the tranquility of lakesides, or the warmth of local traditions, Vermont’s small towns promise an unforgettable experience for any visitor. So take the time to explore these gems and discover the essence of Vermont at its most captivating.

Advertisement



Source link

Vermont

VT Islamic group facing deadline to fund new mosque move in Burlington

Published

on

VT Islamic group facing deadline to fund new mosque move in Burlington


One of Vermont’s few mosques is racing against the clock to purchase two new buildings its leaders say will better serve the growing Muslim community around Burlington.

The Islamic Community Center of Vermont, which currently operates out a cramped Winooski building, says it needs to raise $100,000 by April 28 to guarantee ownership of two much larger Burlington properties on Riverside Avenue.

For the approximately 300 Somali families who use the mosque’s services, the change in location would be like “moving from a one-bedroom apartment to a mansion,” center board member Mukhtar Abdullahi told the Burlington Free Press.

Advertisement

The mosque’s current space limits services. It can only run a few small Qur’an reading and recitation classes each day and weekend, resulting in waitlists for some classes.

“Unfortunately, we’ve had to turn people away simply because we don’t have the capacity to accommodate everyone,” Abdullahi said.

The mosque also lacks sufficient space for women and their children, who for instance must share the facility’s single bathroom with men, “which is far from ideal,” Abdullahi said.

Advertisement

The small size is also a safety concern.

“If something was to happen, there’s no quick exit,” he said.

The deadline is built into a purchasing agreement and financing terms from a bank, Abdullahi said. The center has paid an upfront deposit of $30,000, he said, and the remaining balance of the down payment and closings costs is due April 28.

A bigger space would allow the center to offer multiple classes for different demographics, including age and gender, giving families more flexibility. The organization would also be able to expand Qur’an instruction and provide followers with more activities.

Advertisement

Abdullahi especially dreams of one day cultivating a place just for local youth, which the mosque and the greater Burlington area as a whole lacks, he said.

“Regardless of religion, our youth are the future,” Abdullahi said. “We want to make sure we take care of them.”

How Islamic Community Center of Vermont came to be

The center is one of only two state-registered mosques in Vermont, according to Abdullahi. The other is the similarly named Islamic Society of Vermont, based in South Burlington.

The Islamic Society of Vermont formed in 1995. The Islamic Community Center of Vermont followed in 2011. Together, the two mosques serve the Green Mountain State’s 6,200-6,500 Muslim residents.

The main difference between the organizations is who each serves, Abdullahi said.

Advertisement

His center formed 15 years ago in response to a growing number Somali immigrants, many of whom do not speak English or have a car, to the greater Burlington area. The Islamic Society of Vermont’s services are offered primarily in English and its mosque is a long walk from where the majority of Somali families live, Abdullahi said.

Although the Islamic Society of Vermont has done its best to welcome and accommodate Somali attendees, “there was a need for a mosque where they could communicate easily, ask questions and feel fully understood by people who share their background,” Abdullahi said.

“This wasn’t about replacing that but about creating additional support and accessibility for our community,” he said.

The prospective location, which used to be a laundry mat and a car wash, is a 20-30 minute walk from the mosque’s current spot in Winooski.

Advertisement

Despite its small size, the mosque is “the heart of the community,” Abdullahi told the Free Press, adding that many Somali residents “would struggle to live our daily lives without it.”

The center performs marriages and funeral rites. It’s where people go to settle disagreements.

“We teach children how to be good citizens, how to stay away from trouble, how to read the Qur’an,” Abdullahi said. “It’s where we tell stories about back home.”

“It’s a small building that stands for and does more than what the eye sees,” Abdullahi said.

How fundraising is going

Should the religious nonprofit fail to raise enough money, it will forfeit thousands of dollars in already paid fees and must look for a different location, according to Abdullahi.

Advertisement

Despite the tight deadline, Abdullahi told the Free Press he feels confident the group will secure enough donations.

“We already have several committed donations and meetings lined up, and we’re continuing to connect with supporters,” he said. “Our community has always shown up in meaningful ways, and we’re hopeful that, as more people hear about this effort, they’ll contribute financially or support us in other ways as well.”

Donations will pay for the down payment and closing costs, which originally amounted to $300,000, according to Abdullahi. The center has raised $200,000, a significant amount of which came from Vermont’s non-Muslim population. It has a GoFundMe that as of April 14 had raised about $8,300.

“Regardless of where you come from, always, at the end of the day, community depends on each other,” Abdullahi said.

Real estate records show that the owners of the Riverside properties have been trying to sell them, or parts of them, for several years now.

Advertisement

When would the new mosque open to the public?

Should the center succeed in purchasing the two properties, the new mosque will open sometime between fall and the end of the year, Abdullahi said.

“The place needs a lot of renovations to make it a place of worship,” Abdullahi said, but “it’ll be doable.”

Just as before, people of all faiths, or people with no religious affiliation at all, are invited to visit the mosque.

“We don’t care what religion you are,” Abdullahi said. “It’s a place for the community. Anyone’s welcome.”

Advertisement

Megan Stewart is a government accountability reporter for the Burlington Free Press. Contact her at mstewartyounger@gannett.com.



Source link

Continue Reading

Vermont

Vermont argues that Trump administration provided no factual basis for voter data request – VTDigger

Published

on

Vermont argues that Trump administration provided no factual basis for voter data request – VTDigger


Voters fill out their ballots in Middlebury in Nov. 2024. File photo by Caleb Kenna/VTDigger

RUTLAND CITY — Vermont argued in federal court Tuesday that the Trump administration’s lawsuit demanding the state’s voter roll data should be dismissed because the administration has not provided a sufficient reason for its request.

The Trump administration sued Vermont’s secretary of state, among many other states, last year after she refused the department’s demand to turn over voter data, including voters’ addresses, drivers license numbers and the last four digits of their Social Security numbers. 

Following the hearing, Federal Judge Mary Kay Lanthier will issue a ruling to dismiss or move forward with the case. 

Secretary of State Sarah Copeland Hanzas said she had grounds to deny the request because Vermont Law barred the state and local government officials from sharing personally identifying voter data with federal agencies. 

Advertisement

Copeland Hanzas said in an interview before the hearing that the Trump administration’s requests for states’ unredacted voter rolls undermines public trust in elections and points to broader concerns with privacy rights. 

“We don’t want the federal government to have that level of information about individual Vermonters,” Copeland Hanzas said. 

The state of Vermont’s lawyer Samuel Stratton, representing Copeland Hanzas, argued the case should be dismissed because the Department of Justice did not provide a factual basis and purpose for the request and therefore does not comply with the Civil Rights Act. 

“We are proud to defend Secretary Copeland Hanzas in this case, and we will continue working to protect our elections from federal interference,” the Attorney General Charity Clark wrote in a Tuesday statement.

The Department of Justice attorney Brittany Bennett argued that the federal government has broad authority under the Civil Rights Act to seek voter data in order to determine whether the state of Vermont’s elections are in compliance with federal law. 

Advertisement

The hearing comes after judges recently dismissed similar cases in California, Michigan, Oregon and Massachusetts. A federal judge in Massachusetts dismissed the case last week, asserting that the department failed to comply with Title III of the Civil Rights Act of 1960 by not sharing in detail how the department will use voter information. 

The Department of Justice has brought similar lawsuits against 30 states for withholding voter rolls, while 12 states have complied or said they would comply with the Justice Department’s request, according to a tracker run by the Brennan Center for Justice. 

“​​We certainly hope and expect that the outcome of ours will be similar to what’s happened with the states that have gone before us,” Copeland Hanzas said. “But if the motion to dismiss isn’t approved, then we will continue to fight, and we will have our day in court.”

Disclosure: VTDigger reporter Greta Solsaa worked in summer 2022 as a paid canvasser for the Vermont Public Interest Research Group, which filed several motions in the case.





Source link

Advertisement
Continue Reading

Vermont

Hour-by-hour: When to expect showers & thunderstorms Tuesday in Vermont, New York

Published

on

Hour-by-hour: When to expect showers & thunderstorms Tuesday in Vermont, New York


The most widespread storm coverage will occur between 2-8 PM Tuesday, April 14

Advertisement

Timeline: When to expect showers & thunderstorms Tuesday in Vermont, New York

The most widespread storm coverage will occur between 2-8 PM Tuesday, April 14

Advertisement

NBC5 meteorologists expect strong to locally severe thunderstorms Tuesday afternoon into the evening for Vermont and northern New York.Watch the video to see when showers, downpours, and storms are most likely near your town.

NBC5 meteorologists expect strong to locally severe thunderstorms Tuesday afternoon into the evening for Vermont and northern New York.

Advertisement

Watch the video to see when showers, downpours, and storms are most likely near your town.

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