X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=js%2Fpz2.js;h=6fa568e1473f57757647f56d9c48058885589003;hb=8d6c6bb0ee0afc8721dba2f6596d4dba9c39cd3f;hp=c503b7c748f5e351bcb2ac695a65926ca9cbfb34;hpb=d183a1a61fbdc4afef17d5fad2c60d7c23ef748e;p=pazpar2-moved-to-github.git diff --git a/js/pz2.js b/js/pz2.js index c503b7c..6fa568e 100644 --- a/js/pz2.js +++ b/js/pz2.js @@ -1,6 +1,28 @@ +/* +** $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(); + Node.ELEMENT_NODE = 1; + Node.ATTRIBUTE_NODE = 2; + Node.TEXT_NODE = 3; + Node.CDATA_SECTION_NODE = 4; + Node.ENTITY_REFERENCE_NODE = 5; + Node.ENTITY_NODE = 6; + Node.PROCESSING_INSTRUCTION_NODE = 7; + Node.COMMENT_NODE = 8; + Node.DOCUMENT_NODE = 9; + Node.DOCUMENT_TYPE_NODE = 10; + Node.DOCUMENT_FRAGMENT_NODE = 11; + Node.NOTATION_NODE = 12; +} // check for jQuery -if(typeof window.jQuery == "undefined") +if(typeof window.jQuery == "undefined"){ throw new Error("pz2.js requires jQuery library"); +} // prevent execution of more than once if(typeof window.pz2 == "undefined") { window.undefined = window.undefined; @@ -49,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; @@ -70,7 +98,7 @@ var pz2 = function(paramArray) { // auto init session? if (paramArray.autoInit !== false) __myself.init(__myself.keepAlive); -} +}; pz2.prototype = { init: function(keepAlive) { @@ -88,7 +116,7 @@ pz2.prototype = { else // if it gets here the http return code was 200 (pz2 errors are 417) // but the response was invalid, it should never occur - setTimeout("__myself.init()", 1000) + setTimeout("__myself.init()", 1000); } ); }, @@ -109,7 +137,7 @@ pz2.prototype = { else // if it gets here the http return code was 200 (pz2 errors are 417) // but the response was invalid, it should never occur - setTimeout("__myself.ping()", 1000) + setTimeout("__myself.ping()", 1000); } ); }, @@ -119,7 +147,10 @@ pz2.prototype = { clearTimeout(__myself.showTimer); clearTimeout(__myself.termTimer); clearTimeout(__myself.bytargetTimer); - + + __myself.showCounter = 0; + __myself.termCounter = 0; + if( !__myself.initStatusOK ) return; @@ -139,12 +170,12 @@ pz2.prototype = { if ( data.getElementsByTagName("status")[0].childNodes[0].nodeValue == "OK" ) { __myself.searchStatusOK = true; //piggyback search - __myself.show(0, num, sort) + __myself.show(0, num, sort); 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); } @@ -179,7 +210,7 @@ pz2.prototype = { "idle": Number( data.getElementsByTagName("idle")[0].childNodes[0].nodeValue ), "failed": Number( data.getElementsByTagName("failed")[0].childNodes[0].nodeValue ), "error": Number( data.getElementsByTagName("error")[0].childNodes[0].nodeValue ) - } + }; __myself.statCallback(stat); if (activeClients > 0) __myself.statTimer = setTimeout("__myself.stat()", __myself.statTime); @@ -187,7 +218,7 @@ pz2.prototype = { else // if it gets here the http return code was 200 (pz2 errors are 417) // but the response was invalid, it should never occur - __myself.statTimer = setTimeout("__myself.stat()", __myself.statTime / 4) + __myself.statTimer = setTimeout("__myself.stat()", __myself.statTime / 4); } ); }, @@ -220,23 +251,40 @@ pz2.prototype = { "start": Number( data.getElementsByTagName("start")[0].childNodes[0].nodeValue ), "num": Number( data.getElementsByTagName("num")[0].childNodes[0].nodeValue ), "hits": [] - } + }; // parse all the first-level nodes for all tags var hits = data.getElementsByTagName("hit"); 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) @@ -277,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; } } @@ -302,7 +354,7 @@ pz2.prototype = { { "command": "termlist", "session": __myself.sessionID, "name": __myself.termKeys }, function(data) { if ( data.getElementsByTagName("termlist") ) { - var termList = { "activeclients": Number( data.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue ) } + var termList = { "activeclients": Number( data.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue ) }; var termLists = data.getElementsByTagName("list"); //for each termlist for (i = 0; i < termLists.length; i++) { @@ -313,8 +365,8 @@ pz2.prototype = { for (j = 0; j < terms.length; j++) { var term = { "name": terms[j].getElementsByTagName("name")[0].childNodes[0].nodeValue, - "freq": terms[j].getElementsByTagName("frequency")[0].childNodes[0].nodeValue, - } + "freq": terms[j].getElementsByTagName("frequency")[0].childNodes[0].nodeValue + }; var termIdNode = terms[j].getElementsByTagName("id"); if(terms[j].getElementsByTagName("id").length) @@ -323,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)