X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=js%2Fpz2.js;h=bfec8426096f5657ec2ed9148eb08dd2d7d6a699;hb=c7e28063b2365987df7adc35db6786732b8e233f;hp=046b29b4925e50748b0505e4ea009fe27fd50b51;hpb=15e9bebbd9771c793e9ecf42bcaab72c696c25b8;p=pazpar2-moved-to-github.git diff --git a/js/pz2.js b/js/pz2.js index 046b29b..bfec842 100644 --- a/js/pz2.js +++ b/js/pz2.js @@ -1,5 +1,5 @@ /* -** $Id: pz2.js,v 1.35 2007-06-13 17:20:17 jakub Exp $ +** $Id: pz2.js,v 1.43 2007-07-02 20:55:07 adam Exp $ ** pz2.js - pazpar2's javascript client library. */ @@ -30,20 +30,25 @@ var pz2 = function(paramArray) { //supported pazpar2's protocol version __myself.suppProtoVer = '1'; - __myself.pz2String = "search.pz2"; + __myself.pz2String = paramArray.pazpar2path || "search.pz2"; __myself.stylesheet = paramArray.detailstylesheet || null; - + __myself.useSessions = true; + if (paramArray.usesessions != undefined) { + __myself.useSessions = paramArray.usesessions; + } + //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; } ); } - + // at least one callback required if ( !paramArray ) throw new Error("An array with parameters has to be suplied when instantiating a class"); @@ -134,12 +139,12 @@ pz2.prototype = init: function ( sessionId ) { __myself.reset(); + if ( sessionId != undefined ) { __myself.initStatusOK = true; __myself.sessionID = sessionId; __myself.ping(); - - } else { + } else if (__myself.useSessions) { var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler); request.get( { "command": "init" }, @@ -157,7 +162,9 @@ pz2.prototype = setTimeout("__myself.init()", 1000); } ); - } + } else { + __myself.initStatusOK = true; + } }, // no need to ping explicitly ping: function () @@ -200,10 +207,11 @@ pz2.prototype = 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, "session": __myself.sessionID }; + + if (filter !== undefined) + searchParams["filter"] = filter; + var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler); request.get( searchParams, @@ -344,24 +352,35 @@ pz2.prototype = } ); }, - record: function(id) + record: function(id,offset) { - if( !__myself.searchStatusOK ) + 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; + recordParams["syntax"] = "usmarc"; + recordParams["esn"] = "F"; + } + __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; + __myself.recordCallback(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++) { @@ -562,15 +581,15 @@ pzHttpRequest.prototype = _urlAppendParams: function (params) { var getUrl = this.url; - var paramArr = new Array(); - for ( var key in params ) { - paramArr.push(key + '=' + encodeURI(params[key]) ); + var sep = '?'; + var el = params; + for (var key in el) { + if (el[key] != null) { + getUrl += sep + key + '=' + encodeURI(el[key]); + sep = '&'; + } } - - if ( paramArr.length ) - getUrl += '?' + paramArr.join('&'); - return getUrl; }, @@ -634,6 +653,10 @@ pzQuery.prototype = { this.simpleFilter = null; this.numTerms = 0; }, + clearSimpleQuery: function() + { + this.simpleQuery = ''; + }, addTerm: function(field, value) { var term = {"field": field, "value": value};