summaryrefslogtreecommitdiff
path: root/template/search_script.st
diff options
context:
space:
mode:
Diffstat (limited to 'template/search_script.st')
-rw-r--r--template/search_script.st98
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