Files
i2p.i2p/apps/i2psnark/resources/js/search.js
zzz 688638ad69
Some checks failed
Java CI / build (push) Has been cancelled
Java CI / javadoc-latest (push) Has been cancelled
Java CI / build-java7 (push) Has been cancelled
Java with IzPack Snapshot Setup / setup (push) Has been cancelled
Sync Primary Repository to GitHub Mirror / sync (push) Has been cancelled
i2psnark: Remote API search
2025-06-03 11:58:13 -04:00

228 lines
6.1 KiB
JavaScript

/* @license http://www.gnu.org/licenses/gpl-2.0.html GPL-2.0 */
/* see also licenses/LICENSE-GPLv2.txt */
/**
* Search form helpers
*
* @since 0.9.58
*/
function initSearch()
{
var sch = document.getElementById("search");
if (sch != null) {
var box = document.getElementById("searchbox");
var cxl = document.getElementById("searchcancel");
var radio = document.querySelectorAll('input[name=searchopt]');
var remote = document.getElementById("remoteresults");
var msgs = document.getElementById("snarkMessages");
var main = document.getElementById("mainsection");
var lower = document.getElementById("lowersection");
// cancel listener
cxl.addEventListener("click", function(event) {
if (box.value !== "") {
box.value = "";
requestAjax2(-1);
}
cxl.classList.add("disabled");
if (remote != null)
remote.classList.add("disabled");
if (main != null)
main.classList.remove("disabled");
if (msgs != null)
msgs.classList.remove("disabled");
if (lower != null)
lower.classList.remove("disabled");
removeRemoteResults();
event.preventDefault();
});
// search listener
box.addEventListener("input", function(event) {
if (box.value !== "") {
cxl.classList.remove("disabled");
if (msgs != null)
msgs.classList.add("disabled");
if (lower != null)
lower.classList.add("disabled");
if (radio != null) {
var opt = document.querySelector('input[name=searchopt]:checked').value;
if (opt === "1") {
if (remote != null)
remote.classList.add("disabled");
if (main != null)
main.classList.remove("disabled");
requestAjax2(-1);
} else if (opt === "2") {
if (remote != null) {
if (box.value.length >= 3) {
removeUnrelatedResults(box.value);
remote.classList.remove("disabled");
requestAjaxRemote();
} else {
remote.classList.add("disabled");
}
}
if (main != null)
main.classList.add("disabled");
} else if (opt === "3") {
if (remote != null) {
if (box.value.length >= 3) {
removeUnrelatedResults(box.value);
remote.classList.remove("disabled");
requestAjaxRemote();
} else {
remote.classList.add("disabled");
}
}
if (main != null)
main.classList.remove("disabled");
requestAjax2(-1);
}
} else {
if (remote != null)
remote.classList.add("disabled");
if (main != null)
main.classList.remove("disabled");
requestAjax2(-1);
}
} else {
cxl.classList.add("disabled");
removeRemoteResults();
if (remote != null)
remote.classList.add("disabled");
if (main != null)
main.classList.remove("disabled");
if (msgs != null)
msgs.classList.remove("disabled");
if (lower != null)
lower.classList.remove("disabled");
requestAjax2(-1);
}
});
// radio listener
if (radio != null) {
for (var index = 0; index < radio.length; index++)
{
var r = radio[index];
r.addEventListener("click", function(event) {
var opt = document.querySelector('input[name=searchopt]:checked').value;
if (opt === "1" || box.value === "") {
if (remote != null)
remote.classList.add("disabled");
if (main != null)
main.classList.remove("disabled");
//requestAjax2(-1);
} else if (opt === "2") {
if (remote != null) {
if (box.value.length >= 3) {
removeUnrelatedResults(box.value);
remote.classList.remove("disabled");
//requestAjaxRemote();
} else {
remote.classList.add("disabled");
}
}
if (main != null)
main.classList.add("disabled");
} else if (opt === "3") {
if (remote != null) {
if (box.value.length >= 3) {
removeUnrelatedResults(box.value);
remote.classList.remove("disabled");
//requestAjaxRemote();
} else {
remote.classList.add("disabled");
}
}
if (main != null)
main.classList.remove("disabled");
//requestAjax2(-1);
}
});
}
}
// initial setup
if (box.value !== "") {
cxl.classList.remove("disabled");
if (msgs != null)
msgs.classList.add("disabled");
if (lower != null)
lower.classList.add("disabled");
if (radio != null) {
var opt = document.querySelector('input[name=searchopt]:checked').value;
if (opt === "1") {
if (remote != null)
remote.classList.add("disabled");
if (main != null)
main.classList.remove("disabled");
} else if (opt === "2") {
if (remote != null) {
if (box.value.length >= 3) {
remote.classList.remove("disabled");
} else {
remote.classList.add("disabled");
}
}
if (main != null)
main.classList.add("disabled");
} else if (opt === "3") {
if (remote != null) {
if (box.value.length >= 3) {
remote.classList.remove("disabled");
} else {
remote.classList.add("disabled");
}
}
if (main != null)
main.classList.remove("disabled");
}
} else {
if (remote != null)
remote.classList.add("disabled");
if (main != null)
main.classList.remove("disabled");
}
} else {
cxl.classList.add("disabled");
if (remote != null)
remote.classList.add("disabled");
if (main != null)
main.classList.remove("disabled");
if (msgs != null)
msgs.classList.remove("disabled");
if (lower != null)
lower.classList.remove("disabled");
}
// so we don't get the link popup
cxl.removeAttribute("href");
}
}
function removeUnrelatedResults(cur) {
var footer = document.getElementById("remoteresultfooter");
if (footer != null) {
var prev = footer.getAttribute("search");
if (prev != null) {
if (!prev.startsWith(cur) && !cur.startsWith(prev)) {
// unrelated search, clear previous results
removeRemoteResults();
}
}
}
}
function removeRemoteResults() {
var results = document.getElementById("removeresulttablebody");
if (results != null)
results.innerHTML = "";
}
document.addEventListener("DOMContentLoaded", function() {
initSearch();
}, true);
/* @license-end */