X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=js%2Fpz2.js;h=18d790f19a876e7fd723ff239e832ae32f4a675b;hb=cc87307147ba12602de3e23f4a6de713f9f174c4;hp=950cfa161f207359ef7a2ba79ed86c9c6ac14b1b;hpb=84c071fdd8d3810262abe1b66091184938bc4bfc;p=pazpar2-moved-to-github.git diff --git a/js/pz2.js b/js/pz2.js index 950cfa1..18d790f 100644 --- a/js/pz2.js +++ b/js/pz2.js @@ -1,5 +1,5 @@ /* -** $Id: pz2.js,v 1.39 2007-06-22 10:52:09 adam Exp $ +** $Id: pz2.js,v 1.46 2007-07-12 11:49:20 sondberg Exp $ ** pz2.js - pazpar2's javascript client library. */ @@ -40,12 +40,7 @@ var pz2 = function(paramArray) { //load stylesheet if required in async mode if( __myself.stylesheet ) { var request = new pzHttpRequest( __myself.stylesheet ); - request.get( - [], - function ( doc ) { - __myself.xslDoc = doc; - } - ); + request.get( {}, function ( doc ) { __myself.xslDoc = doc; } ); } // at least one callback required @@ -146,7 +141,7 @@ pz2.prototype = } else if (__myself.useSessions) { 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 ) @@ -161,7 +156,9 @@ pz2.prototype = setTimeout("__myself.init()", 1000); } ); - } + } else { + __myself.initStatusOK = true; + } }, // no need to ping explicitly ping: function () @@ -171,7 +168,7 @@ pz2.prototype = // 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; @@ -204,10 +201,11 @@ pz2.prototype = else throw new Error("You need to supply query to the search command"); - var searchParams = [{ "command": "search", "query": __myself.currQuery }]; - searchParams.push({"session":__myself.sessionID}); - if (filter !== undefined) - searchParams.push({"filter": filter}); + var searchParams = { "command": "search", "query": __myself.currQuery, "session": __myself.sessionID }; + + if (filter !== undefined) + searchParams["filter"] = filter; + var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler); request.get( searchParams, @@ -241,7 +239,7 @@ pz2.prototype = 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 ); @@ -289,8 +287,8 @@ pz2.prototype = 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 @@ -348,24 +346,47 @@ pz2.prototype = } ); }, - record: function(id) + record: function(id,offset, params) { - if( !__myself.searchStatusOK ) + if ( params == undefined ) + params = {}; + + if ( params.callback != undefined ) { + callback = params.callback; + } else { + callback = __myself.recordCallback; + } + + if( !__myself.searchStatusOK && __myself.useSessions) return; if( id !== undefined ) __myself.currRecID = id; var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler); + + var recordParams = { "command": "record", "session": __myself.sessionID, "id": __myself.currRecID }; + if (offset !== undefined) { + recordParams["offset"] = offset; + } + + if (params.syntax != undefined) { + recordParams['syntax'] = params.syntax; + } + + __myself.currRecOffset = offset; request.get( - [ { "command": "record", "session": __myself.sessionID, "id": __myself.currRecID } ], + recordParams, function(data) { var recordNode; var record = new Array(); - if ( recordNode = data.getElementsByTagName("record")[0] ) { + record['xmlDoc'] = data; + if (__myself.currRecOffset !== undefined) { + record['offset'] = __myself.currRecOffset; + callback(record); + } else if ( recordNode = data.getElementsByTagName("record")[0] ) { // if stylesheet was fetched do not parse the response if ( __myself.xslDoc ) { record['recid'] = recordNode.getElementsByTagName("recid")[0].firstChild.nodeValue; - record['xmlDoc'] = data; record['xslDoc'] = __myself.xslDoc; } else { for ( i = 0; i < recordNode.childNodes.length; i++) { @@ -397,7 +418,7 @@ pz2.prototype = } } - __myself.recordCallback(record); + callback(record); } else // if it gets here the http return code was 200 (pz2 errors are 417) @@ -414,7 +435,7 @@ pz2.prototype = 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 ); @@ -466,7 +487,7 @@ pz2.prototype = 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"); @@ -543,7 +564,7 @@ pzHttpRequest.prototype = { get: function ( params, callback ) { - this._send( 'GET', params, null, callback ); + this._send( 'GET', params, '', callback ); }, post: function ( params, data, callback ) @@ -551,12 +572,21 @@ pzHttpRequest.prototype = this._send( 'POST', params, data, callback ); }, + load: function () + { + this.async = false; + this.request.open( 'GET', this.url, this.async ); + this.request.send(''); + if ( this.request.status == 200 ) + return this.request.responseXML; + }, + _send: function ( type, params, data, callback ) { this.callback = callback; var context = this; + this.async = true; 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(); } @@ -568,15 +598,13 @@ pzHttpRequest.prototype = var getUrl = this.url; var sep = '?'; - for (var i = 0; i < params.length; i++) { - var el = params[i]; - for (var key in el) { - if (el[key] != null) { - getUrl += sep + key + '=' + encodeURI(el[key]); - sep = '&'; - } - } - } + var el = params; + for (var key in el) { + if (el[key] != null) { + getUrl += sep + key + '=' + encodeURI(el[key]); + sep = '&'; + } + } return getUrl; },