X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=www%2Ftest1%2Findex.html;h=88d39be1a7ca4c1dae1a342bfa829b23c81e1a59;hb=035bf6e2f077c554c8633a08f2494cf385040e41;hp=3b44bcc91a3c6f1ba3a885deccf3077a488311e5;hpb=ff4094ad2ed04317152013b5e048b8ba7f048654;p=pazpar2-moved-to-github.git diff --git a/www/test1/index.html b/www/test1/index.html index 3b44bcc..88d39be 100644 --- a/www/test1/index.html +++ b/www/test1/index.html @@ -21,6 +21,8 @@ var showtimer; var termtimer; var stattimer; var startrec; +var session_cells = Array('query'); +var old_session = session_read(); function GetXmlHttpObject() { @@ -103,7 +105,7 @@ function show_records() var xml = xshow.responseXML; var body = document.getElementById("body"); var hits = xml.getElementsByTagName("hit"); - if (!hits[0]) + if (!hits[0]) // We should never get here with blocking operations { body.innerHTML = "No records yet"; searchtimer = setTimeout(check_search, 250); @@ -141,12 +143,12 @@ function show_records() } shown++; if (shown < 5) - searchtimer = setTimeout(check_search, 400); - else if (shown < 10) searchtimer = setTimeout(check_search, 1000); else - searchtimer = setTimeout(check_search, 4000); + searchtimer = setTimeout(check_search, 2000); } + if (!termtimer) + termtimer = setTimeout(check_termlist, 1000); } function check_search() @@ -155,24 +157,38 @@ function check_search() var url = "search.pz2?" + "command=show" + "&start=" + startrec + - "&session=" + session; + "&num=15" + + "&session=" + session + + "&block=1"; xshow = GetXmlHttpObject(); xshow.onreadystatechange=show_records; xshow.open("GET", url); xshow.send(null); } + +function refine_query (obj) { + var query_cell = document.getElementById('query'); + var subject = obj.innerHTML; + + subject = subject.replace(/[\(\)]/g, ''); + query_cell.value += ' and su=(' + subject + ')'; + start_search(); +} + function show_termlist() { if (xtermlist.readyState != 4) return; + var i; var xml = xtermlist.responseXML; var body = document.getElementById("termlist"); var hits = xml.getElementsByTagName("term"); if (!hits[0]) { - termtimer = (check_termlist, 1000); + termtimer = setTimeout(check_termlist, 1000); + } else { @@ -181,7 +197,9 @@ function show_termlist() { var namen = hits[i].getElementsByTagName("name"); if (namen[0]) - body.innerHTML += namen[0].childNodes[0].nodeValue; + body.innerHTML += '' + + namen[0].childNodes[0].nodeValue + + ''; /* body.innerHTML += ' ('; var freqn = hits[i].getElementsByTagName("frequency"); @@ -260,17 +278,20 @@ function search_started() alert(msg); return; } - searchtimer = setTimeout(check_search, 250); - termtimer = setTimeout(check_termlist, 1000); + check_search(); stattimer = setTimeout(check_stat, 1000); } function start_search() { clearTimeout(termtimer); + termtimer = 0; clearTimeout(searchtimer); + searchtimer = 0; clearTimeout(stattimer); + stattimer = 0; clearTimeout(showtimer); + showtimer = 0; if (!targets_loaded) { alert("Please load targets first"); @@ -287,10 +308,86 @@ function start_search() xsearch.send(null); document.getElementById("termlist").innerHTML = ''; document.getElementById("body").innerHTML = ''; + update_history(); shown = 0; startrec = 0; } + +function session_encode () +{ + var i; + var session = ''; + + for (i = 0; i < session_cells.length; i++) + { + var name = session_cells[i]; + var value = escape(document.getElementById(name).value); + session += '&' + name + '=' + value; + } + + return session; +} + + +function session_restore (session) +{ + var fields = session.split(/&/); + var i; + + for (i = 1; i < fields.length; i++) + { + var pair = fields[i].split(/=/); + var key = pair.shift(); + var value = pair.join('='); + var cell = document.getElementById(key); + + cell.value = value; + } + +} + + +function session_read () +{ + var ses = window.location.hash.replace(/^#/, ''); + return ses; +} + + +function session_store (new_value) +{ + window.location.hash = '#' + new_value; +} + + +function update_history () +{ + var session = session_encode(); + session_store(session); + old_session= session; +} + + +function session_check () +{ + var session = session_read(); + + clearInterval(url_surveillence); + + if ( session != old_session ) + { + session_restore(session); + start_search(); + + } + + url_surveillence = setInterval(session_check, 200); +} + + +var url_surveillence = setInterval(session_check, 200); +