diff options
Diffstat (limited to 'template/search_script.st')
| -rw-r--r-- | template/search_script.st | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/template/search_script.st b/template/search_script.st new file mode 100644 index 0000000..94461b3 --- /dev/null +++ b/template/search_script.st @@ -0,0 +1,98 @@ +var term = "" +var imagesPerPage = 25; +var images = [] +function addScript(term) { + jQuery("#search-script").remove() + jQuery("head").append("<scr"+"ipt src='/cmd/ghettosearch/"+term+"' id='search-script'></sc"+"ript>") +} + +function setContent(x){ + jQuery("#searchresults").html(x) +} + +function setMessage(x){ + jQuery("#message").html(x) +} + +function searchError(error){ + setContent("") + setMessage(error) +} + +function renderPage(num){ + if (images.length > 0) + setMessage("page " + (num + 1)); + var contentString = '' + var start = num * imagesPerPage + var imageCounter = 0 + for(var i = start; i < images.length; i++){ + if(imageCounter > imagesPerPage) break; + contentString += '<a href="'+images[i]+'"target="_blank"><img src="'+images[i]+'"></a>' + imageCounter += 1 + } + contentString += '<br><br>' + if(num > 0) + contentString += '<a href="javascript:renderPage('+(num-1)+')"><h1>previous</h1></a> ' + if (images.length > start + imageCounter) + contentString += ' <a href="javascript:renderPage('+(num+1)+')"><h1>next</h1></a>' + setContent(contentString) +} + +function searchResult(results){ + images = [] + var alreadyGot = {} + if(results === null || results.length == 0) { + setContent("") + setMessage("no results found") + } else { + for(var r = 0; r<results.length; r++){ + var content = results[r]['content'] + if (content.substring(0,6) == "<safe>") continue; // skip html posts + var imageUrls = getImagesAsArray(content); + for (var i=0; i<imageUrls.length; i++){ + var imageUrl = imageUrls[i]; + if (imageUrl in alreadyGot) continue; + alreadyGot[imageUrl] = true + var validImage = true; + for(var t = 0; t<tokens.length; t++){ + if (imageUrl.toLowerCase().indexOf(tokens[t]) == -1) { + validImage = false; + break; + } + } + if (validImage) + images.push(imageUrl); + } + } + if (images.length == 0) { + setMessage("no results found") + } + renderPage(0) + } +} + +var tokens = [] + +function doSearch(){ + term = jQuery("#search-query").val().trim().toLowerCase() + var rawTokens = term.split(" ") + tokens = [] + for(var t = 0; t < rawTokens.length; t++) { + if (rawTokens[t].length > 2) + tokens.push(rawTokens[t]) + } + if (tokens.length == 0) { + setMessage("search query too small") + } else { + setMessage("searching for '"+tokens.join(" and ")+"'") + addScript(tokens.join("+")) + } +} + +// only search every 800ms while someone is typing +function keyHandler(){ + if (keyHandler.timeout) clearTimeout(keyHandler.timeout); + keyHandler.timeout = setTimeout(doSearch, 800) +} + +jQuery("#search-query").keyup(keyHandler)
\ No newline at end of file |
