X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=js%2Fpz2.js;h=55a92c7e27f0f8f9f392b8348bd3145ef35ea71d;hb=fa4a8f5a36d63ba1487fa06a0244c4a8e86969d6;hp=4cd86ef96ff1b99a52c088f221927415f341d8b6;hpb=9864b5ebf2fda284dd208c64192a652b5e799cd9;p=pazpar2-moved-to-github.git diff --git a/js/pz2.js b/js/pz2.js index 4cd86ef..55a92c7 100644 --- a/js/pz2.js +++ b/js/pz2.js @@ -1,5 +1,5 @@ /* -** $Id: pz2.js,v 1.41 2007-07-02 10:16:46 jakub Exp $ +** $Id: pz2.js,v 1.48 2007-07-18 13:40:56 adam Exp $ ** pz2.js - pazpar2's javascript client library. */ @@ -30,7 +30,7 @@ var pz2 = function(paramArray) { //supported pazpar2's protocol version __myself.suppProtoVer = '1'; - __myself.pz2String = paramArray.pazpar2path || "search.pz2"; + __myself.pz2String = paramArray.pazpar2path || "/pazpar2/search.pz2"; __myself.stylesheet = paramArray.detailstylesheet || null; __myself.useSessions = true; if (paramArray.usesessions != undefined) { @@ -40,13 +40,7 @@ var pz2 = function(paramArray) { //load stylesheet if required in async mode if( __myself.stylesheet ) { var request = new pzHttpRequest( __myself.stylesheet ); - request.async = false; - request.get( - [], - function ( doc ) { - __myself.xslDoc = doc; - } - ); + request.get( {}, function ( doc ) { __myself.xslDoc = doc; } ); } // at least one callback required @@ -207,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, @@ -351,24 +346,52 @@ 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 ( params['handle'] == undefined ) + handle = {}; + else + handle = params['handle']; + + 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, handle); + } 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++) { @@ -400,7 +423,7 @@ pz2.prototype = } } - __myself.recordCallback(record); + callback(record, handle); } else // if it gets here the http return code was 200 (pz2 errors are 417) @@ -546,7 +569,7 @@ pzHttpRequest.prototype = { get: function ( params, callback ) { - this._send( 'GET', params, null, callback ); + this._send( 'GET', params, '', callback ); }, post: function ( params, data, callback ) @@ -554,12 +577,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(); }