Skip to main content

Tag: “search”

Project Finder

Find Relevant Projects Browse our complete project history using the filters below. Search by year, keyword, or industry to find projects similar to your needs. Filter by Year All Years Search Projects No projects found matching your filters. Try adjusting your search criteria. (function() { const projectsData = {{ projects |> JSON.stringify }}; const yearFilter = document.getElementById('year-filter'); const searchFilter = document.getElementById('search-filter'); const projectsContainer = document.getElementById('projects-container'); const projectsCount = document.getElementById('projects-count'); const noResults = document.getElementById('no-results'); // Extract unique years and populate dropdown const years = [...new Set(projectsData.map(p => p['DateYYYY-MM-DD'].split('-')[0]))].sort((a, b) => b - a); years.forEach(year => { const option = document.createElement('option'); option.value = year; option.textContent = year; yearFilter.appendChild(option); }); function formatDescription(description) { // Convert line breaks to HTML return description.replace(/\r\n/g, '').replace(/\n/g, ''); } function escapeHtml(text) { const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } function renderProjects(projects) { if (projects.length === 0) { projectsContainer.innerHTML = ''; projectsContainer.classList.add('hidden'); noResults.classList.remove('hidden'); projectsCount.textContent = ''; return; } projectsContainer.classList.remove('hidden'); noResults.classList.add('hidden'); projectsCount.textContent = Showing ${projects.length} project${projects.length !== 1 ? 's' : ''}; projectsContainer.innerHTML = projects.map(project => ` ${escapeHtml(project.Date)} ${escapeHtml(project['Client Type'])} ${formatDescription(escapeHtml(project.Description))} `).join(''); } function filterProjects() { const selectedYear = yearFilter.value; const searchTerm = searchFilter.value.toLowerCase().trim(); let filtered = projectsData; // Filter by year if (selectedYear !== 'all') { filtered = filtered.filter(p => p['DateYYYY-MM-DD'].startsWith(selectedYear)); } // Filter by search term if (searchTerm) { filtered = filtered.filter(p => { const description = p.Description.toLowerCase(); const clientType = p['Client Type'].toLowerCase(); const date = p.Date.toLowerCase(); return description.includes(searchTerm) || clientType.includes(searchTerm) || date.includes(searchTerm); }); } renderProjects(filtered); } // Event listeners yearFilter.addEventListener('change', filterProjects); searchFilter.addEventListener('input', filterProjects); // Initial render - show all projects renderProjects(projectsData); })();
by eSolia Inc.Reading Time: 3 min