document.addEventListener('DOMContentLoaded', function () { const searchForm = document.getElementById('search-form'); const searchInput = document.getElementById('search-input'); const resultsContainer = document.getElementById('results-container'); const loadingIndicator = document.getElementById('loading-indicator'); const summaryModalEl = document.getElementById('summary-modal'); const summaryModal = new bootstrap.Modal(summaryModalEl); const summaryModalBody = document.getElementById('summary-modal-body'); const originalArticleLink = document.getElementById('original-article-link'); searchForm.addEventListener('submit', function (e) { e.preventDefault(); const query = searchInput.value.trim(); if (query) { fetchResults(query); } }); function fetchResults(query) { resultsContainer.innerHTML = ''; loadingIndicator.style.display = 'block'; fetch(`/api/search.php?q=${encodeURIComponent(query)}`) .then(response => response.json()) .then(data => { displayResults(data.RelatedTopics); }) .catch(error => { console.error('Error fetching search results:', error); resultsContainer.innerHTML = '
Failed to fetch results. Please try again.
'; }) .finally(() => { loadingIndicator.style.display = 'none'; }); } function displayResults(results) { if (!results || results.length === 0) { resultsContainer.innerHTML = '
No results found.
'; return; } results.forEach(item => { if(item.Text) { const card = `
${item.Text}

${item.Result}

`; resultsContainer.innerHTML += card; } }); } resultsContainer.addEventListener('click', function(e) { if (e.target.classList.contains('summarize-btn')) { const url = e.target.dataset.url; getSummary(url); } }); function getSummary(url) { summaryModalBody.innerHTML = `
Loading...
`; summaryModal.show(); originalArticleLink.href = url; const formData = new FormData(); formData.append('url', url); fetch('/api/summarize.php', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.error) { summaryModalBody.innerHTML = `
${data.error}
`; } else { summaryModalBody.innerHTML = data.summary.replace(/\n/g, '
'); } }) .catch(error => { console.error('Error fetching summary:', error); summaryModalBody.innerHTML = '
Failed to fetch summary.
'; }); } });