2025-03-12 12:32:15 -07:00
const loading _message = "results are loading..." ;
const kinda _long = "results are still loading..." ;
const elapsed _message = "time elapsed" ;
let time _elapsed = 0.0 ;
let timer _interval ;
function updateTimer ( ) {
if ( document . getElementById ( "stopwatch" ) !== null ) {
const timer _element = document . getElementById ( "stopwatch" )
time _elapsed += 1 / 100 ;
timer _element . innerHTML = time _elapsed . toString ( ) ;
if ( time _elapsed > 5 ) {
const notice1 = document . getElementById ( "loading_message" ) ;
notice1 . innerHTML = kinda _long ;
}
}
}
function startLoading ( ) {
if ( document . getElementById ( "loading" ) === null ) {
const results _area = document . getElementById ( "results-area" ) ;
const loading _element = document . createElement ( "div" ) ;
loading _element . id = "loading" ;
const notice1 = document . createElement ( "span" ) ;
notice1 . id = "loading_message" ;
notice1 . innerHTML = loading _message ;
loading _element . appendChild ( notice1 ) ;
const timer _notice = document . createElement ( "span" ) ;
timer _notice . id = "timer_message" ;
timer _notice . innerHTML = elapsed _message ;
const timer _element = document . createElement ( "div" ) ;
timer _element . id = "stopwatch" ;
loading _element . appendChild ( timer _element ) ;
results _area . appendChild ( loading _element ) ;
timer _interval = setInterval ( updateTimer , 10 ) ;
}
}
function stopLoading ( ) {
if ( document . getElementById ( "loading" ) !== null ) {
clearInterval ( timer _interval ) ;
const results _area = document . getElementById ( "results-area" ) ;
const loading _element = document . getElementById ( "loading" ) ;
results _area . removeChild ( loading _element ) ;
}
}
startLoading ( ) ;
function process ( result ) {
stopLoading ( ) ;
const json = result ; //JSON.parse(result);
if ( json . hasOwnProperty ( "error" ) || ! json . hasOwnProperty ( "results" ) ) {
const response _element = document . getElementsByClassName ( "response" ) [ 0 ] ;
const results _area = document . getElementById ( "results-area" ) ;
response _element . removeChild ( results _area ) ;
const error _element = document . createElement ( "div" ) ;
error _element . classList . add ( "error" ) ;
if ( json . hasOwnProperty ( "error" ) ) {
error _element . innerText = json . error ;
} else {
error _element . innerText = "unknown serverside error occurred! please try your request again, and contact an administrator if the error persists!" ;
}
response _element . appendChild ( error _element ) ;
} else {
const search _results = json . results ;
const response _element = document . getElementsByClassName ( "response" ) [ 0 ] ;
const search _result _list = document . createElement ( "ol" ) ;
const results _area = document . getElementById ( "results-area" ) ;
const stats _element = document . createElement ( "div" ) ;
stats _element . classList . add ( "stats" ) ;
stats _element . innerText = ` found ${ search _results . search _results . length } results in ${ search _results . query _time } seconds ( ${ search _results . page _rank _time } was pageranking) ` ;
results _area . appendChild ( stats _element ) ;
if ( search _results . hasOwnProperty ( "note" ) ) {
const note _element = document . createElement ( "div" ) ;
note _element . classList . add ( "note" ) ;
note _element . innerText = search _results . note ;
results _area . insertBefore ( note _element , stats _element ) ;
}
search _result _list . classList . add ( "search-result-list" ) ;
for ( const result _obj of search _results . search _results ) {
const li = document . createElement ( "li" ) ;
const a = document . createElement ( "a" ) ;
a . classList . add ( "search-result" ) ;
a . href = result _obj . url ;
const h2 = document . createElement ( "h2" ) ;
h2 . classList . add ( "search-title" ) ;
if ( result _obj . hasOwnProperty ( "title" ) ) {
h2 . innerText = result _obj . title ;
} else {
h2 . innerText = result _obj . url ;
}
a . appendChild ( h2 ) ;
const resultstat = document . createElement ( "span" ) ;
resultstat . classList . add ( "resultstat" ) ;
if ( result _obj . hasOwnProperty ( "title" ) ) {
const search _url = document . createElement ( "span" ) ;
search _url . classList . add ( "search-url" ) ;
search _url . innerText = result _obj . url + " " ;
resultstat . appendChild ( search _url ) ;
}
const relevance = document . createElement ( "span" ) ;
relevance . classList . add ( "search-relevance" ) ;
2025-03-26 20:37:18 -07:00
relevance . innerText = ` ( ${ result _obj . percentage _str } %, ${ result _obj . value } / ${ search _results . max _relevance } ) ` ;
2025-03-12 12:32:15 -07:00
const enginelist = document . createElement ( "span" ) ;
enginelist . classList . add ( "enginelist" ) ;
if ( result _obj . hasOwnProperty ( "asklyphe" ) ) {
if ( result _obj . asklyphe === true ) {
const tinylyphe = document . createElement ( "img" ) ;
tinylyphe . src = "/static/img/tinylyphe.png" ;
tinylyphe . title = "from askLyphe database" ;
enginelist . appendChild ( tinylyphe ) ;
}
}
if ( result _obj . hasOwnProperty ( "bing" ) ) {
if ( result _obj . bing === true ) {
const tinybutterfly = document . createElement ( "img" ) ;
tinybutterfly . src = "/static/img/tinybutterfly.png" ;
tinybutterfly . title = "from external search engine" ;
enginelist . appendChild ( tinybutterfly ) ;
}
}
if ( result _obj . hasOwnProperty ( "google" ) ) {
if ( result _obj . google === true ) {
const tinyletter = document . createElement ( "img" ) ;
tinyletter . src = "/static/img/tinyletter.png" ;
tinyletter . title = "from external search engine" ;
enginelist . appendChild ( tinyletter ) ;
}
}
resultstat . appendChild ( relevance ) ;
resultstat . appendChild ( enginelist ) ;
a . appendChild ( resultstat ) ;
if ( result _obj . hasOwnProperty ( "description" ) ) {
const desc = document . createElement ( "span" ) ;
desc . classList . add ( "search-description" ) ;
desc . innerText = result _obj . description ;
a . appendChild ( desc ) ;
}
li . appendChild ( a ) ;
search _result _list . appendChild ( li ) ;
}
results _area . appendChild ( search _result _list ) ;
if ( search _results . blocked . length > 0 ) {
const blocked _header = document . createElement ( "span" ) ;
blocked _header . classList . add ( "blocked-header" ) ;
blocked _header . innerText = ` ${ search _results . blocked . length } results were pruned from search results for the following reasons: ` ;
results _area . appendChild ( blocked _header ) ;
const blocked _results = document . createElement ( "ol" ) ;
blocked _results . classList . add ( "blocked-results" ) ;
for ( const blocked of search _results . blocked ) {
const li = document . createElement ( "li" ) ;
li . innerText = ` " ${ blocked . url } " because " ${ blocked . reason } " ` ;
blocked _results . appendChild ( li ) ;
}
results _area . appendChild ( blocked _results ) ;
}
}
}
let xml _http = new XMLHttpRequest ( ) ;
xml _http . onload = ( e ) => {
process ( xml _http . response ) ;
}
let query = "Deez" ;
let engines = "" ;
let params = ( new URL ( document . location ) ) . searchParams ;
if ( params . has ( "q" ) ) {
query = params . get ( "q" ) ;
}
if ( params . has ( "engines" ) ) {
engines = ` &engines= ${ params . get ( "engines" ) } ` ;
}
xml _http . open ( "GET" , ` ${ window . location . origin } /ask_json?q= ${ encodeURIComponent ( query ) } ${ engines } ` ) ;
xml _http . responseType = "json" ;
xml _http . send ( ) ;