News Finder
Find Latest Updates Browse our latest updates and announcements using the filters below. Search by year or keyword to find news that interests you. Filter by Year All Years Search News No news found matching your filters. Try adjusting your search criteria. (function() { const newsData = {{ webinfo |> JSON.stringify }}; const yearFilter = document.getElementById('year-filter'); const searchFilter = document.getElementById('search-filter'); const newsContainer = document.getElementById('news-container'); const newsCount = document.getElementById('news-count'); const noResults = document.getElementById('no-results'); // Extract unique years and populate dropdown const years = ...new Set(newsData.map(n => n.DateYYYYMMDD.substring(0, 4)))].sort((a, b) => b - a); const currentYear = new Date().getFullYear().toString(); years.forEach(year => { const option = document.createElement('option'); option.value = year; option.textContent = year; yearFilter.appendChild(option); }); // Default to current year, or most recent year if current has no data let defaultYear = currentYear; if (years.includes(currentYear)) { const currentYearData = newsData.filter(n => n.DateYYYYMMDD.startsWith(currentYear)); if (currentYearData.length === 0 && years.length > 0) { // Current year has no data, use most recent year defaultYear = years[0]; } } else if (years.length > 0) { // Current year not in data, use most recent year defaultYear = years[0]; } yearFilter.value = defaultYear; function escapeHtml(text) { const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } function formatDescription(description) { // Escape HTML let formatted = escapeHtml(description); // Convert markdown links to HTML links [text -> text formatted = formatted.replace(/\[(]+)\]\((+)\)/g, '$1'); // Convert line breaks to HTML formatted = formatted.replace(/\r\n/g, '').replace(/\n/g, ''); return formatted; } function renderNews(newsItems) { if (newsItems.length === 0) { newsContainer.innerHTML = ''; newsContainer.classList.add('hidden'); noResults.classList.remove('hidden'); newsCount.textContent = ''; return; } newsContainer.classList.remove('hidden'); noResults.classList.add('hidden'); newsCount.textContent = Showing ${newsItems.length} news item${newsItems.length !== 1 ? 's' : ''}; newsContainer.innerHTML = newsItems.map(news => ` ${escapeHtml(news.Date)} ${formatDescription(news.Description)} `).join(''); } function filterNews() { const selectedYear = yearFilter.value; const searchTerm = searchFilter.value.toLowerCase().trim(); let filtered = newsData; // Filter by year if (selectedYear !== 'all') { filtered = filtered.filter(n => n.DateYYYYMMDD.startsWith(selectedYear)); } // Filter by search term if (searchTerm) { filtered = filtered.filter(n => { const description = n.Description.toLowerCase(); const date = n.Date.toLowerCase(); return description.includes(searchTerm) || date.includes(searchTerm); }); } renderNews(filtered); } // Event listeners yearFilter.addEventListener('change', filterNews); searchFilter.addEventListener('input', filterNews); // Initial render - filter by default year filterNews(); })();
by eSolia Inc.Reading Time: 3 min