Spaces:
Build error
Build error
const searchForm = document.getElementById("search-form"); | |
const searchQueryInput = document.getElementById("search-query"); | |
const timelimitSelect = document.getElementById("timelimit"); | |
const safesearchSelect = document.getElementById("safesearch"); | |
const resultsContainer = document.getElementById("results"); | |
const suggestionsContainer = document.getElementById("suggestions"); | |
const peopleAlsoSearchList = document.getElementById( | |
"people-also-search-list" | |
); | |
const peopleAlsoSearchSection = document.getElementById( | |
"people-also-search-section" | |
); | |
const aboutSection = document.getElementById("about-section"); | |
const sidebar = document.getElementById("sidebar"); | |
searchQueryInput.addEventListener("input", async () => { | |
const searchQuery = searchQueryInput.value; | |
if (searchQuery.trim() === "") { | |
suggestionsContainer.style.display = "none"; | |
return; | |
} | |
try { | |
const data = await eel.get_suggestions(searchQuery)(); | |
displaySuggestions(data); | |
} catch (error) { | |
console.error("Error:", error); | |
suggestionsContainer.style.display = "none"; | |
} | |
}); | |
searchQueryInput.addEventListener("focus", () => { | |
if (searchQueryInput.value.trim() !== "") { | |
suggestionsContainer.style.display = "block"; | |
} | |
}); | |
document.addEventListener("click", (event) => { | |
if (!searchForm.contains(event.target)) { | |
suggestionsContainer.style.display = "none"; | |
} | |
}); | |
searchForm.addEventListener("submit", async (event) => { | |
event.preventDefault(); | |
const searchQuery = searchQueryInput.value; | |
const timelimit = timelimitSelect.value; | |
const safesearch = safesearchSelect.value; | |
await performSearch(searchQuery, timelimit, safesearch); | |
}); | |
function displaySuggestions(suggestions) { | |
suggestionsContainer.innerHTML = ""; | |
if (suggestions.length === 0) { | |
suggestionsContainer.style.display = "none"; | |
return; | |
} | |
const suggestionList = document.createElement("ul"); | |
suggestions.forEach((suggestion) => { | |
const listItem = document.createElement("li"); | |
listItem.textContent = suggestion.phrase; | |
listItem.addEventListener("click", () => { | |
searchQueryInput.value = suggestion.phrase; | |
suggestionsContainer.style.display = "none"; | |
performSearch(suggestion.phrase); | |
}); | |
suggestionList.appendChild(listItem); | |
}); | |
suggestionsContainer.appendChild(suggestionList); | |
suggestionsContainer.style.display = "block"; | |
} | |
async function performSearch(query, timelimit, safesearch) { | |
try { | |
const searchResults = await eel.perform_search( | |
query, | |
timelimit, | |
safesearch | |
)(); | |
displayResults(searchResults); | |
suggestionsContainer.style.display = "none"; | |
// Get "People Also Search For" data | |
const peopleAlsoSearchData = await eel.get_people_also_search(query)(); | |
// Display "About" section | |
const aboutDescription = peopleAlsoSearchData.find( | |
(item) => item.topic === null | |
); | |
if (aboutDescription) { | |
document.getElementById("about-description").textContent = | |
aboutDescription.text; | |
aboutSection.style.display = "block"; | |
} else { | |
aboutSection.style.display = "none"; | |
} | |
const peopleAlsoSearchItems = peopleAlsoSearchData.filter( | |
(item) => item.topic === "See also" | |
); | |
displayPeopleAlsoSearch(peopleAlsoSearchItems.slice(0, 6)); | |
if (peopleAlsoSearchItems.length > 0) { | |
peopleAlsoSearchSection.style.display = "block"; | |
} else { | |
peopleAlsoSearchSection.style.display = "none"; | |
} | |
if (aboutSection.style.display === "block" || peopleAlsoSearchSection.style.display === "block") { | |
sidebar.style.display = "block"; | |
document.querySelector(".main-content").style.marginLeft = "320px"; | |
} else { | |
sidebar.style.display = "none"; | |
document.querySelector(".main-content").style.marginLeft = "0px"; | |
} | |
} catch (error) { | |
console.error("Error:", error); | |
displayError("An error occurred while fetching results."); | |
} | |
} | |
function displayPeopleAlsoSearch(data) { | |
peopleAlsoSearchList.innerHTML = ""; | |
if (data.length === 0) { | |
return; | |
} | |
data.forEach((item) => { | |
const listItem = document.createElement("li"); | |
const link = document.createElement("a"); | |
link.href = item.url; | |
link.textContent = item.text; | |
link.target = "_blank"; | |
link.rel = "noopener noreferrer"; | |
listItem.appendChild(link); | |
peopleAlsoSearchList.appendChild(listItem); | |
}); | |
} | |
function displayResults(results) { | |
resultsContainer.innerHTML = ""; | |
if (results.length === 0) { | |
displayError("No results found."); | |
return; | |
} | |
results.forEach((result) => { | |
const resultElement = document.createElement("div"); | |
resultElement.classList.add("result"); | |
const titleElement = document.createElement("h3"); | |
const titleLink = document.createElement("a"); | |
titleLink.href = result.href; | |
titleLink.textContent = result.title; | |
titleLink.target = "_blank"; | |
titleLink.rel = "noopener noreferrer"; | |
titleElement.appendChild(titleLink); | |
const urlElement = document.createElement("div"); | |
urlElement.classList.add("url"); | |
urlElement.textContent = result.href; | |
const descriptionElement = document.createElement("p"); | |
descriptionElement.textContent = result.body; | |
resultElement.appendChild(titleElement); | |
resultElement.appendChild(urlElement); | |
resultElement.appendChild(descriptionElement); | |
resultsContainer.appendChild(resultElement); | |
}); | |
} | |
function displayError(message) { | |
resultsContainer.innerHTML = ""; | |
const errorElement = document.createElement("p"); | |
errorElement.textContent = message; | |
errorElement.style.color = "red"; | |
resultsContainer.appendChild(errorElement); | |
} | |
function toggleSettings() { | |
const settingsMenu = document.getElementById("settings-menu"); | |
settingsMenu.style.display = | |
settingsMenu.style.display === "block" ? "none" : "block"; | |
} |