/*
-** $Id: pz2.js,v 1.32 2007-06-04 12:49:21 jakub Exp $
+** $Id: pz2.js,v 1.38 2007-06-21 14:05:41 adam Exp $
** pz2.js - pazpar2's javascript client library.
*/
//supported pazpar2's protocol version
__myself.suppProtoVer = '1';
- __myself.pz2String = "search.pz2";
+ __myself.pz2String = paramArray.pazpar2path || "search.pz2";
__myself.stylesheet = paramArray.detailstylesheet || null;
//load stylesheet if required in async mode
if( __myself.stylesheet ) {
var request = new pzHttpRequest( __myself.stylesheet );
request.get(
- {},
+ [],
function ( doc ) {
__myself.xslDoc = doc;
}
if (paramArray.autoInit !== false)
__myself.init();
};
-pz2.prototype = {
+pz2.prototype =
+{
+ stop: function ()
+ {
+ clearTimeout(__myself.statTimer);
+ clearTimeout(__myself.showTimer);
+ clearTimeout(__myself.termTimer);
+ clearTimeout(__myself.bytargetTimer);
+ },
+
reset: function ()
{
__myself.sessionID = null;
__myself.pingStatusOK = false;
__myself.searchStatusOK = false;
- clearTimeout(__myself.statTimer);
- clearTimeout(__myself.showTimer);
- clearTimeout(__myself.termTimer);
- clearTimeout(__myself.bytargetTimer);
+ __myself.stop();
if ( __myself.resetCallback )
__myself.resetCallback();
} else {
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- { "command": "init" },
+ [ { "command": "init" } ],
function(data) {
if ( data.getElementsByTagName("status")[0].childNodes[0].nodeValue == "OK" ) {
if ( data.getElementsByTagName("protocol")[0].childNodes[0].nodeValue != __myself.suppProtoVer )
// session is not initialized code here
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- { "command": "ping", "session": __myself.sessionID },
+ [ { "command": "ping", "session": __myself.sessionID } ],
function(data) {
if ( data.getElementsByTagName("status")[0].childNodes[0].nodeValue == "OK" ) {
__myself.pingStatusOK = true;
else
throw new Error("You need to supply query to the search command");
- if( filter !== undefined )
- var searchParams = { "command": "search", "session": __myself.sessionID, "query": __myself.currQuery, "filter": filter };
- else
- var searchParams = { "command": "search", "session": __myself.sessionID, "query": __myself.currQuery };
+ var searchParams = [{ "command": "search", "query": __myself.currQuery }];
+ searchParams.push({"session":__myself.sessionID});
+ if (filter !== undefined)
+ searchParams.push({"filter": filter});
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
searchParams,
clearTimeout(__myself.statTimer);
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- { "command": "stat", "session": __myself.sessionID },
+ [ { "command": "stat", "session": __myself.sessionID } ],
function(data) {
if ( data.getElementsByTagName("stat") ) {
var activeClients = Number( data.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue );
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
var context = this;
request.get(
- { "command": "show", "session": __myself.sessionID, "start": __myself.currentStart,
- "num": __myself.currentNum, "sort": __myself.currentSort, "block": 1 },
+ [ { "command": "show", "session": __myself.sessionID, "start": __myself.currentStart,
+ "num": __myself.currentNum, "sort": __myself.currentSort, "block": 1 } ],
function(data) {
if ( data.getElementsByTagName("status")[0].childNodes[0].nodeValue == "OK" ) {
// first parse the status data send along with records
__myself.currRecID = id;
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- { "command": "record", "session": __myself.sessionID, "id": __myself.currRecID },
+ [ { "command": "record", "session": __myself.sessionID, "id": __myself.currRecID } ],
function(data) {
var recordNode;
var record = new Array();
clearTimeout(__myself.termTimer);
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- { "command": "termlist", "session": __myself.sessionID, "name": __myself.termKeys },
+ [ { "command": "termlist", "session": __myself.sessionID, "name": __myself.termKeys } ],
function(data) {
if ( data.getElementsByTagName("termlist") ) {
var activeClients = Number( data.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue );
clearTimeout(__myself.bytargetTimer);
var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler);
request.get(
- { "command": "bytarget", "session": __myself.sessionID },
+ [ { "command": "bytarget", "session": __myself.sessionID } ],
function(data) {
if ( data.getElementsByTagName("status")[0].childNodes[0].nodeValue == "OK" ) {
var targetNodes = data.getElementsByTagName("target");
this.request = null;
this.url = url;
this.errorHandler = errorHandler || null;
+ this.async = true;
if ( window.XMLHttpRequest ) {
this.request = new XMLHttpRequest();
{
get: function ( params, callback )
{
- this.callback = callback;
-
- var getUrl = this.url;
- var paramArr = new Array();
-
- for ( var key in params ) {
- paramArr.push(key + '=' + encodeURI(params[key]) );
- }
+ this._send( 'GET', params, null, callback );
+ },
- if ( paramArr.length )
- getUrl += '?' + paramArr.join('&');
+ post: function ( params, data, callback )
+ {
+ this._send( 'POST', params, data, callback );
+ },
+ _send: function ( type, params, data, callback )
+ {
+ this.callback = callback;
var context = this;
- this.request.open( 'GET', getUrl, true );
- this.request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
- //this.request.setRequestHeader('Accept-Charset', 'UTF-8');
+ this.request.open( type, this._urlAppendParams(params), this.async );
+ //this.request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
this.request.onreadystatechange = function () {
context._handleResponse();
}
- this.request.send(null);
+ this.request.send(data);
+ },
+
+ _urlAppendParams: function (params)
+ {
+ var getUrl = this.url;
+
+ var sep = '?';
+ for (var i = 0; i < params.length; i++) {
+ var el = params[i];
+ for (var key in el) {
+ getUrl += sep + key + '=' + encodeURI(el[key]);
+ sep = '&';
+ }
+ }
+ return getUrl;
},
_handleResponse: function ()
this.simpleFilter = null;
this.numTerms = 0;
},
+ clearSimpleQuery: function()
+ {
+ this.simpleQuery = '';
+ },
addTerm: function(field, value)
{
var term = {"field": field, "value": value};