67 lines
2.2 KiB
JavaScript
Executable file
67 lines
2.2 KiB
JavaScript
Executable file
document.addEventListener("DOMContentLoaded", () => {
|
|
const advSearchToggle = document.getElementById("adv-search-toggle");
|
|
const advSearchDiv = document.getElementById("adv-search-div");
|
|
const searchBar = document.getElementById("search-bar");
|
|
const countrySelect = document.getElementById("result-country");
|
|
const timePeriodSelect = document.getElementById("result-time-period");
|
|
const arrowKeys = [37, 38, 39, 40];
|
|
let searchValue = searchBar.value;
|
|
|
|
countrySelect.onchange = () => {
|
|
let str = window.location.href;
|
|
n = str.lastIndexOf("/search");
|
|
if (n > 0) {
|
|
str = str.substring(0, n) + `/search?q=${searchBar.value}`;
|
|
str = tackOnParams(str);
|
|
window.location.href = str;
|
|
}
|
|
}
|
|
|
|
timePeriodSelect.onchange = () => {
|
|
let str = window.location.href;
|
|
n = str.lastIndexOf("/search");
|
|
if (n > 0) {
|
|
str = str.substring(0, n) + `/search?q=${searchBar.value}`;
|
|
str = tackOnParams(str);
|
|
window.location.href = str;
|
|
}
|
|
}
|
|
|
|
function tackOnParams(str) {
|
|
if (timePeriodSelect.value != "") {
|
|
str = str + `&tbs=${timePeriodSelect.value}`;
|
|
}
|
|
if (countrySelect.value != "") {
|
|
str = str + `&country=${countrySelect.value}`;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
const toggleAdvancedSearch = on => {
|
|
if (on) {
|
|
advSearchDiv.style.maxHeight = "70px";
|
|
} else {
|
|
advSearchDiv.style.maxHeight = "0px";
|
|
}
|
|
localStorage.advSearchToggled = on;
|
|
}
|
|
|
|
try {
|
|
toggleAdvancedSearch(JSON.parse(localStorage.advSearchToggled));
|
|
} catch (error) {
|
|
console.warn("Did not recover advanced search toggle state");
|
|
}
|
|
|
|
advSearchToggle.onclick = () => {
|
|
toggleAdvancedSearch(advSearchToggle.checked);
|
|
}
|
|
|
|
searchBar.addEventListener("keyup", function(event) {
|
|
if (event.keyCode === 13) {
|
|
document.getElementById("search-form").submit();
|
|
} else if (searchBar.value !== searchValue && !arrowKeys.includes(event.keyCode)) {
|
|
searchValue = searchBar.value;
|
|
handleUserInput();
|
|
}
|
|
});
|
|
});
|