/*
-** $Id: pz2.js,v 1.10 2007-04-18 04:23:53 quinn Exp $
+** $Id: pz2.js,v 1.11 2007-04-20 13:56:20 jakub Exp $
** pz2.js - pazpar2's javascript client library.
*/
// at least one callback required
if ( !paramArray )
- throw new Error("An array with parameters has to be suplied when instantiating a class");
+ throw new Error("An array with parameters has to be suplied when instantiating a class");
+
+ //supported pazpar2's protocol version
+ __myself.suppProtoVer = '1';
+ __myself.errorHandler = paramArray.errorhandler || null;
// function callbacks
__myself.statCallback = paramArray.onstat || null;
// error handling
$(document).ajaxError(
- function (request, settings, exception) {
- if ( settings.responseXML && settings.responseXML.getElementsByTagName("error") )
+ function (ajaxError, xhr, reqSettings, prevException)
+ {
+ if ( xhr.responseXML && xhr.responseXML.getElementsByTagName("error").length )
{
- var err = settings.responseXML.getElementsByTagName("error")[0].childNodes[0].nodeValue;
- if (err == 'QUERY')
- alert("Your query was not understood. Please rephrase");
- else
- throw new Error( settings.responseXML.getElementsByTagName("error")[0].childNodes[0].nodeValue);
+ var errMsg = xhr.responseXML.getElementsByTagName("error")[0].childNodes[0].nodeValue;
+ var errCode = xhr.responseXML.getElementsByTagName("error")[0].getAttribute("code");
+
+ var err = new Error(errMsg);
+ err.code = errCode;
+
+ if (__myself.errorHandler) {
+ __myself.errorHandler(err);
+ }
+ else {
+ throw err;
+ }
}
- else
- throw exception;
+ // ensure the errors are propagated
+ else if (prevException != undefined ) {
+ throw prevException;
+ }
+ else {
+ throw new Error("XMLHttpRequest error. STATUS: " + xhr.status + " STATUS TEXT: " + xhr.statusText);
+ }
});
// auto init session?
init: function(keepAlive)
{
if ( keepAlive < __myself.keepAlive )
- __myself.keepAlive = keepAlive;
+ __myself.keepAlive = keepAlive;
$.get( __myself.pz2String,
{ "command": "init" },
function(data) {
if ( data.getElementsByTagName("status")[0].childNodes[0].nodeValue == "OK" ) {
+ if ( data.getElementsByTagName("protocol")[0].childNodes[0].nodeValue != __myself.suppProtoVer )
+ throw new Error("Server's protocol not supported by the client");
__myself.initStatusOK = true;
__myself.sessionID = data.getElementsByTagName("session")[0].childNodes[0].nodeValue;
setTimeout(__myself.ping, __myself.keepAlive);
}
else {
var nodeName = hits[i].childNodes[j].nodeName;
- var nodeText = hits[i].childNodes[j].firstChild.nodeValue;
+ var nodeText = hits[i].childNodes[j].firstChild.nodeValue;
show.hits[i][nodeName] = nodeText;
}
}
/*
-** $Id: client.js,v 1.19 2007-04-17 12:53:45 jakub Exp $
+** $Id: client.js,v 1.20 2007-04-20 13:56:20 jakub Exp $
** MasterKey - pazpar2's javascript client .
*/
/* start with creating pz2 object and passing it event handlers*/
-var my_paz = new pz2( { "onshow": my_onshow,
+var my_paz = new pz2({
+ "onshow": my_onshow,
//"showtime": 1000,
//"onstat": my_onstat,
"onterm": my_onterm,
"termlist": "xtargets,subject,author,date",
//"onbytarget": my_onbytarget,
- "onrecord": my_onrecord } );
+ "onrecord": my_onrecord,
+ "errorhandler": my_errorhandler
+ });
/* some state variable */
var currentSort = 'relevance';
** pz2 Event Handlers ***********************************************************
*********************************************************************************
*/
+function my_errorhandler(err)
+{
+ switch (err.message)
+ {
+ case 'QUERY': alert("Your query was not understood. Please rephrase."); break;
+ default: alert(err.message);
+ }
+}
/*
** data.hits["md-title"], data.hits["md-author"], data.hits.recid, data.hits.count