Messing with the refresh timer to make things feel snappier.
[pazpar2-moved-to-github.git] / js / pz2.js
index 84e9893..6fa568e 100644 (file)
--- a/js/pz2.js
+++ b/js/pz2.js
@@ -1,3 +1,8 @@
+/*
+** $Id: pz2.js,v 1.8 2007-04-18 03:42:30 quinn Exp $
+** pz2.js - pazpar2's javascript client library.
+*/
+
 //since explorer is flawed
 if (!window['Node']) {
     window.Node = new Object();
@@ -66,13 +71,19 @@ var pz2 = function(paramArray) {
     //timers
     __myself.statTime = paramArray.stattime || 2000;
     __myself.statTimer = null;
-    __myself.termTime = paramArray.termtime || 2000;
+    __myself.termTime = paramArray.termtime || 1000;
     __myself.termTimer = null;
-    __myself.showTime = paramArray.showtime || 2000;
+    __myself.showTime = paramArray.showtime || 1000;
     __myself.showTimer = null;
+    __myself.showFastCount = 4;
     __myself.bytargetTime = paramArray.bytargettime || 1000;
     __myself.bytargetTimer = null;
 
+    //useful?
+    __myself.dumpFactor = 500;
+    __myself.showCounter = 0;
+    __myself.termCounter = 0;
+
     // active clients, updated by stat and show
     // might be an issue since bytarget will poll accordingly
     __myself.activeClients = 1;
@@ -136,7 +147,10 @@ pz2.prototype = {
         clearTimeout(__myself.showTimer);
         clearTimeout(__myself.termTimer);
         clearTimeout(__myself.bytargetTimer);
-
+        
+        __myself.showCounter = 0;
+        __myself.termCounter = 0;
+        
         if( !__myself.initStatusOK )
             return;
         
@@ -160,8 +174,8 @@ pz2.prototype = {
                     if ( __myself.statCallback )
                         __myself.statTimer = setTimeout("__myself.stat()", __myself.statTime / 2);
                     if ( __myself.termlistCallback )
-                        __myself.termlist();
-                        //__myself.termTimer = setTimeout("__myself.termlist()", __myself.termTime / 2);
+                        //__myself.termlist();
+                        __myself.termTimer = setTimeout("__myself.termlist()", __myself.termTime / 2);
                     if ( __myself.bytargetCallback )
                         __myself.bytargetTimer = setTimeout("__myself.bytarget()", __myself.bytargetTime / 2);
                 }
@@ -243,17 +257,34 @@ pz2.prototype = {
                     var hit = new Array();
                     for (i = 0; i < hits.length; i++) {
                         show.hits[i] = new Array();
+                       show.hits[i]['location'] = new Array();
                         for ( j = 0; j < hits[i].childNodes.length; j++) {
+                           var locCount = 0;
                             if ( hits[i].childNodes[j].nodeType == Node.ELEMENT_NODE ) {
-                                var nodeName = hits[i].childNodes[j].nodeName;
-                                var nodeText = hits[i].childNodes[j].firstChild.nodeValue;
-                                show.hits[i][nodeName] = nodeText;
+                               if (hits[i].childNodes[j].nodeName == 'location') {
+                                   var locNode = hits[i].childNodes[j];
+                                   var id = locNode.getAttribute('id');
+                                   show.hits[i]['location'][id] = {
+                                       "id": locNode.getAttribute("id"),
+                                       "name": locNode.getAttribute("name")
+                                   };
+                               }
+                               else {
+                                   var nodeName = hits[i].childNodes[j].nodeName;
+                                   var nodeText = hits[i].childNodes[j].firstChild.nodeValue;
+                                   show.hits[i][nodeName] = nodeText;
+                               }
                             }
                         }
                     }
                     __myself.showCallback(show);
+                    __myself.showCounter++;
+                   var delay = __myself.showTime;
+                   if (__myself.showCounter > __myself.showFastCount)
+                           delay *= 2;
+                           alert(delay);
                     if (activeClients > 0)
-                        __myself.showTimer = setTimeout("__myself.show()", __myself.showTime);
+                        __myself.showTimer = setTimeout("__myself.show()", delay);
                 }
                 else
                     // if it gets here the http return code was 200 (pz2 errors are 417)
@@ -294,7 +325,11 @@ pz2.prototype = {
                         for ( j = 0; j < locationNodes[i].childNodes.length; j++) {
                             if ( locationNodes[i].childNodes[j].nodeType == Node.ELEMENT_NODE ) {
                                 var nodeName = locationNodes[i].childNodes[j].nodeName;
-                                var nodeText = locationNodes[i].childNodes[j].firstChild.nodeValue;
+                                var nodeText;
+                               if (locationNodes[i].childNodes[j].firstChild)
+                                       nodeText = locationNodes[i].childNodes[j].firstChild.nodeValue;
+                               else
+                                       nodeText = '';
                                 record["location"][i][nodeName] = nodeText;                            
                             }
                         }
@@ -340,9 +375,11 @@ pz2.prototype = {
                             termList[listName][j] = term;
                         }
                     }
+
                     __myself.termlistCallback(termList);
+                    __myself.termCounter++;
                     if (termList["activeclients"] > 0)
-                        __myself.termTimer = setTimeout("__myself.termlist()", __myself.termTime); 
+                        __myself.termTimer = setTimeout("__myself.termlist()", (__myself.termTime + __myself.termCounter*__myself.dumpFactor)); 
                 }
                 else
                     // if it gets here the http return code was 200 (pz2 errors are 417)