X-Git-Url: http://git.indexdata.com/cgi-bin?a=blobdiff_plain;f=js%2Fpz2.js;h=4cd86ef96ff1b99a52c088f221927415f341d8b6;hb=9864b5ebf2fda284dd208c64192a652b5e799cd9;hp=0b2560b476b6bec63cdf19544875986930e3c36d;hpb=be44b27afe6a19122873361440cfa572d15e7e8b;p=pazpar2-moved-to-github.git diff --git a/js/pz2.js b/js/pz2.js index 0b2560b..4cd86ef 100644 --- a/js/pz2.js +++ b/js/pz2.js @@ -1,5 +1,5 @@ /* -** $Id: pz2.js,v 1.33 2007-06-05 15:19:25 jakub Exp $ +** $Id: pz2.js,v 1.41 2007-07-02 10:16:46 jakub 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"); @@ -109,35 +114,37 @@ var pz2 = function(paramArray) { if (paramArray.autoInit !== false) __myself.init(); }; -pz2.prototype = { - stop: function () - { - clearTimeout(__myself.statTimer); - clearTimeout(__myself.showTimer); - clearTimeout(__myself.termTimer); - clearTimeout(__myself.bytargetTimer); +pz2.prototype = +{ + stop: function () + { + clearTimeout(__myself.statTimer); + clearTimeout(__myself.showTimer); + clearTimeout(__myself.termTimer); + clearTimeout(__myself.bytargetTimer); }, + reset: function () { __myself.sessionID = null; __myself.initStatusOK = false; __myself.pingStatusOK = false; __myself.searchStatusOK = false; - + __myself.stop(); - + if ( __myself.resetCallback ) __myself.resetCallback(); }, 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" }, @@ -155,7 +162,9 @@ pz2.prototype = { setTimeout("__myself.init()", 1000); } ); - } + } else { + __myself.initStatusOK = true; + } }, // no need to ping explicitly ping: function () @@ -198,10 +207,10 @@ 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 }]; + searchParams.push({"session":__myself.sessionID}); + if (filter !== undefined) + searchParams.push({"filter": filter}); var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler); request.get( searchParams, @@ -408,7 +417,7 @@ pz2.prototype = { clearTimeout(__myself.termTimer); var request = new pzHttpRequest(__myself.pz2String, __myself.errorHandler); request.get( - { "command": "termlist", "session": __myself.sessionID, "name": __myself.termKeys, "block": "1" }, + { "command": "termlist", "session": __myself.sessionID, "name": __myself.termKeys }, function(data) { if ( data.getElementsByTagName("termlist") ) { var activeClients = Number( data.getElementsByTagName("activeclients")[0].childNodes[0].nodeValue ); @@ -520,6 +529,7 @@ var pzHttpRequest = function ( url, errorHandler ) { this.request = null; this.url = url; this.errorHandler = errorHandler || null; + this.async = true; if ( window.XMLHttpRequest ) { this.request = new XMLHttpRequest(); @@ -536,26 +546,39 @@ pzHttpRequest.prototype = { 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 = '?'; + var el = params; + for (var key in el) { + if (el[key] != null) { + getUrl += sep + key + '=' + encodeURI(el[key]); + sep = '&'; + } + } + return getUrl; }, _handleResponse: function () @@ -611,10 +634,6 @@ var pzQuery = function() this.filterNums = 0; }; pzQuery.prototype = { - clearSimpleQuery: function() - { - this.simpleQuery = ''; - }, reset: function() { this.simpleQuery = ''; @@ -622,6 +641,10 @@ pzQuery.prototype = { this.simpleFilter = null; this.numTerms = 0; }, + clearSimpleQuery: function() + { + this.simpleQuery = ''; + }, addTerm: function(field, value) { var term = {"field": field, "value": value};