document.addEventListener('DOMContentLoaded', () => { const searchForm = document.getElementById('search-form'); const searchInput = document.getElementById('search-input'); const searchBtn = document.getElementById('search-btn'); const resultsContainer = document.getElementById('results-container'); const examples = document.querySelectorAll('.example-link'); // Helper to format currency const formatCurrency = (value) => new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR', minimumFractionDigits: 0 }).format(value); const handleSearch = async (query) => { if (!query) return; const originalBtnText = searchBtn.innerHTML; searchBtn.innerHTML = ''; searchBtn.disabled = true; resultsContainer.style.display = 'none'; try { const response = await fetch(`/api/search.php?query=${encodeURIComponent(query)}`); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); displayResults(data); } catch (error) { console.error("Fetch error: ", error); displayError('Er is een fout opgetreden. Probeer het later opnieuw.'); } finally { searchBtn.innerHTML = originalBtnText; searchBtn.disabled = false; } }; searchForm.addEventListener('submit', (e) => { e.preventDefault(); handleSearch(searchInput.value); }); examples.forEach(link => { link.addEventListener('click', (e) => { e.preventDefault(); const exampleQuery = e.target.textContent; searchInput.value = exampleQuery; handleSearch(exampleQuery); }); }); const displayResults = (data) => { if (data.error) { displayError(data.error); return; } // --- Main Header --- document.getElementById('address-title').textContent = data.adres; document.getElementById('address-subtitle').textContent = `Gegevens voor ${data.postcode}, ${data.plaats}`; // --- Basisgegevens --- document.getElementById('info-postcode').textContent = data.postcode; document.getElementById('info-plaats').textContent = data.plaats; document.getElementById('info-gemeente').textContent = data.gemeente; document.getElementById('info-provincie').textContent = data.provincie; document.getElementById('info-buurt').textContent = data.buurt; document.getElementById('info-wijk').textContent = data.wijk; // --- Kadastrale Info --- document.getElementById('info-perceelnummer').textContent = data.perceelnummer; document.getElementById('info-eigendomssituatie').textContent = data.eigendomssituatie; document.getElementById('info-type').textContent = data.type; document.getElementById('info-bouwjaar').textContent = data.bouwjaar; document.getElementById('info-oppervlakte').textContent = data.oppervlakte; // --- WOZ Waarde --- document.getElementById('info-woz-waarde').textContent = formatCurrency(data.woz_waarde); // --- Energielabel --- document.getElementById('info-energielabel').textContent = data.energielabel; document.getElementById('info-energiekosten').textContent = `${formatCurrency(data.geschatte_energiekosten)}`; // --- Buurtstatistieken --- document.getElementById('info-inwoners').textContent = data.buurtstatistieken.inwoners.toLocaleString('nl-NL'); document.getElementById('info-gem-leeftijd').textContent = `${data.buurtstatistieken.gemiddelde_leeftijd} jaar`; document.getElementById('info-groen-score').textContent = data.buurtstatistieken.groen_score; document.getElementById('info-veiligheid-score').textContent = data.buurtstatistieken.veiligheid_score; // --- Verkoophistorie --- const historyBody = document.getElementById('verkoophistorie-body'); historyBody.innerHTML = ''; // Clear previous results data.verkoophistorie.forEach(tx => { const row = document.createElement('tr'); row.innerHTML = `