Add <progress /> tag to support a progress bar. The value is between 0 ... 1
[pazpar2-moved-to-github.git] / js / pz2.js
index 6bad626..4f089a1 100644 (file)
--- a/js/pz2.js
+++ b/js/pz2.js
@@ -237,7 +237,7 @@ pz2.prototype =
             }
         );
     },
-    search: function (query, num, sort, filter, showfrom)
+    search: function (query, num, sort, filter, showfrom, addParamsArr)
     {
         clearTimeout(this.statTimer);
         clearTimeout(this.showTimer);
@@ -271,6 +271,14 @@ pz2.prototype =
        
         if (filter !== undefined)
            searchParams["filter"] = filter;
+
+        // copy additional parmeters, do not overwrite
+        if (addParamsArr != undefined) {
+            for (var prop in addParamsArr) {
+                if (!searchParams.hasOwnProperty(prop))
+                    searchParams[prop] = addParamsArr[prop];
+            }
+        }
         
         var context = this;
         var request = new pzHttpRequest(this.pz2String, this.errorHandler);
@@ -324,14 +332,14 @@ pz2.prototype =
                         "clients": 
                             Number( data.getElementsByTagName("clients")[0]
                                         .childNodes[0].nodeValue ),
-                        "initializing": 
-                            Number( data.getElementsByTagName("initializing")[0]
+                        "unconnected": 
+                            Number( data.getElementsByTagName("unconnected")[0]
                                         .childNodes[0].nodeValue ),
-                        "searching": 
-                            Number( data.getElementsByTagName("searching")[0]
+                        "connecting": 
+                            Number( data.getElementsByTagName("connecting")[0]
                                         .childNodes[0].nodeValue ),
-                        "presenting": 
-                            Number( data.getElementsByTagName("presenting")[0]
+                        "working": 
+                            Number( data.getElementsByTagName("working")[0]
                                         .childNodes[0].nodeValue ),
                         "idle": 
                             Number( data.getElementsByTagName("idle")[0]
@@ -341,6 +349,9 @@ pz2.prototype =
                                         .childNodes[0].nodeValue ),
                         "error": 
                             Number( data.getElementsByTagName("error")[0]
+                                        .childNodes[0].nodeValue ),
+                        "progress": 
+                            Number( data.getElementsByTagName("progress")[0]
                                         .childNodes[0].nodeValue )
                     };
                     
@@ -769,25 +780,17 @@ pzHttpRequest.prototype =
     _handleResponse: function ()
     {
         if ( this.request.readyState == 4 ) { 
-            // pick up pazpr2 errors first
-            if ( this.request.responseXML 
-                && this.request.responseXML.documentElement.nodeName == 'error'
-                && this.request.responseXML.getElementsByTagName("error")
-                    .length ) {
+            // pick up appplication errors first
+            var errNode = null;
+            if (this.request.responseXML &&
+                (errNode = this.request.responseXML.documentElement)
+                && errNode.nodeName == 'error') {
+                var errMsg = errNode.getAttribute("msg");
+                var errCode = errNode.getAttribute("code");
                 var errAddInfo = '';
-                if ( this.request.responseXML.getElementsByTagName("error")[0]
-                        .childNodes.length )
-                    errAddInfo = ': ' + 
-                        this.request.responseXML
-                            .getElementsByTagName("error")[0]
-                            .childNodes[0].nodeValue;
-                var errMsg = 
-                    this.request.responseXML.getElementsByTagName("error")[0]
-                        .getAttribute("msg");
-                var errCode = 
-                    this.request.responseXML.getElementsByTagName("error")[0]
-                        .getAttribute("code");
-            
+                if (errNode.childNodes.length)
+                    errAddInfo = ': ' + errNode.childNodes[0].nodeValue;
+                           
                 var err = new Error(errMsg + errAddInfo);
                 err.code = errCode;
            
@@ -797,13 +800,13 @@ pzHttpRequest.prototype =
                 else {
                     throw err;
                 }
-            } else if ( this.request.status == 200 ) {
-                this.callback( this.request.responseXML );
+            } else if (this.request.status == 200) {
+                this.callback(this.request.responseXML);
             } else {
-                var err = new Error("Pz2.js: HTTP request error (AJAX). Code: " 
-                            + this.request.status + " Info: " 
+                var err = new Error("HTTP response not OK: " 
+                            + this.request.status + " - " 
                             + this.request.statusText );
-                err.code = 'HTTP';
+                err.code = '00' + this.request.status;
                 
                 if (this.errorHandler) {
                     this.errorHandler(err);