Additional record debugging. Fixed incoming per-client record counter
[pazpar2-moved-to-github.git] / www / demo / search.js
index 206abfa..ee5e723 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: search.js,v 1.33 2007-01-16 23:44:07 quinn Exp $
+/* $Id: search.js,v 1.38 2007-01-17 17:24:44 quinn Exp $
  * ---------------------------------------------------
  * Javascript container
  */
@@ -24,7 +24,6 @@ var url_surveillence;
 var recstoshow = 20;
 var page_window = 5;  // Number of pages prior to and after the current page
 var facet_list;
-var cur_facet = 0;
 var cur_sort = "relevance";
 var searched = 0;
 var cur_id = -1;
@@ -96,7 +95,8 @@ function session_pinged()
     var error = xml.getElementsByTagName("error");
     if (error[0])
        location = "?";
-    setTimeout(ping_session, 50000);
+    else
+        setTimeout(ping_session, 50000);
 }
 
 function update_action (new_action) {
@@ -341,6 +341,15 @@ function show_details()
     cur_id = id;
     cur_rec = xml;
 
+    var nodes = document.getElementsByName('listrecord');
+    var i;
+    for (i = 0; i < nodes.length; i++)
+    {
+       var dets = nodes[i].getElementsByTagName('div');
+       if (dets[0])
+           dets[0].style.display = 'none';
+    }
+
     var body = document.getElementById('rec_' + id);
     if (!body)
        return;
@@ -359,14 +368,6 @@ function hyperlink_search(obj)
 function fetch_details(id)
 {
     cur_id = -1;
-    var nodes = document.getElementsByName('listrecord');
-    var i;
-    for (i = 0; i < nodes.length; i++)
-    {
-       var dets = nodes[i].getElementsByTagName('div');
-       if (dets[0])
-           dets[0].style.display = 'none';
-    }
     if (id == cur_id)
     {
        cur_id = -1;
@@ -515,72 +516,78 @@ function refine_query (obj) {
        query_cell.value += ' and su=(' + term + ')';
     else if (cur_termlist == 'author')
        query_cell.value += ' and au=(' + term + ')';
+    else if (cur_termlist == 'date')
+       query_cell.value += ' and date=' + term;
 
     start_search();
 }
 
+function clear_termlists()
+{
+    var i;
+    for (i = 0; i < facet_list.length; i++)
+       clear_cell(facet_list[i][1]);
+}
 
-
-function show_termlist()
+function show_termlists()
 {
     if (xtermlist.readyState != 4)
        return;
 
     var i;
     var xml = xtermlist.responseXML;
-    var body = facet_list[cur_facet][1];
-    var facet_name = facet_list[cur_facet][0];
-    var hits = xml.getElementsByTagName("term");
     var clients =
        Number(xml.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue);
+    var lists = xml.getElementsByTagName("list");
 
-    cur_facet++;
-
-    if (cur_facet >= facet_list.length)
-        cur_facet = 0;
-
-    if (!hits[0])
-    {
-       termtimer = setTimeout(check_termlist, 500);
-    }
-    else
+    for (i = 0; i < lists.length; i++)
     {
+       var listname = lists[i].getAttribute('name');
+       var body = document.getElementById('facet_' + listname + '_terms');
+       if (body.style.display == 'none')
+           continue;
        clear_cell(body);
-       
-        for (i = 0; i < hits.length; i++)
+       var terms = lists[i].getElementsByTagName('term');
+       var t;
+        for (t = 0; t < terms.length; t++)
        {
-           var namen = hits[i].getElementsByTagName("name");
-           var freqn = hits[i].getElementsByTagName("frequency");
+           var namen = terms[t].getElementsByTagName("name");
+           var freqn = terms[t].getElementsByTagName("frequency");
            if (namen[0])
                 var term = namen[0].childNodes[0].nodeValue;
                var freq = freqn[0].childNodes[0].nodeValue;
                 var refine_cell = create_element('a', term + ' (' + freq + ')');
                 refine_cell.setAttribute('href', '#');
                 refine_cell.setAttribute('term', term);
-                refine_cell.setAttribute('facet', facet_name);
+                refine_cell.setAttribute('facet', listname);
                 refine_cell.onclick = function () {
                     refine_query(this);
                     return false;
                 };
                 body.appendChild(refine_cell);
        }
-
-       if (clients > 0)
-           termtimer = setTimeout(check_termlist, 1000);
     }
+    if (clients > 0)
+       termtimer = setTimeout(check_termlist, 1000);
 }
 
 function check_termlist()
 {
-    var facet_name = facet_list[cur_facet][0];
+    var facet_names = '';
+    var i;
+    for (i = 0; i < facet_list.length; i++)
+       if (facet_list[i][1].style.display != 'none')
+       {
+           if (facet_names)
+               facet_names += ',';
+           facet_names += facet_list[i][0];
+       }
     var url = "search.pz2?" +
         "command=termlist" +
        "&session=" + session +
-       "&name=" + facet_name;
-    xtermlist = GetXmlHttpObject();
-    xtermlist.onreadystatechange=show_termlist;
-    xtermlist.open("GET", url);
-    xtermlist.send(null);
+       "&name=" + facet_names +
+       "&num=12";
+    SendXmlHttpObject(xtermlist = GetXmlHttpObject(), url, show_termlists);
 }
 
 function show_stat()
@@ -655,6 +662,7 @@ function start_search()
     clearTimeout(showtimer);
     showtimer = 0;
     cur_id = -1;
+    clear_termlists();
     var query = escape(document.getElementById('query').value);
     var url = "search.pz2?" +
         "command=search" +
@@ -780,6 +788,7 @@ function toggle_facet (obj) {
     if (obj.className == 'selected') {
         obj.className = 'unselected';
         container.style.display = 'inline';
+       check_termlist();
     } else {
         obj.className = 'selected';
         container.style.display = 'none';