summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/javascript/global.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/local/www/javascript/global.js')
-rw-r--r--src/usr/local/www/javascript/global.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/usr/local/www/javascript/global.js b/src/usr/local/www/javascript/global.js
new file mode 100644
index 0000000..0b67f58
--- /dev/null
+++ b/src/usr/local/www/javascript/global.js
@@ -0,0 +1,43 @@
+var AjaxQueue = {
+ batchSize: 1, //No.of simultaneous AJAX requests allowed, Default : 1
+ urlQueue: [], //Request URLs will be pushed into this array
+ elementsQueue: [], //Element IDs of elements to be updated on completion of a request
+ optionsQueue: [], //Request options will be pushed into this array
+ currentRequest: null,
+ setBatchSize: function(bSize){ //Method to set a different batch size. Recommended: Set batchSize before making requests
+ this.batchSize = bSize;
+ },
+ push: function(url, options, elementID){ //Push the request in the queue. elementID is optional and required only for Ajax requests that updates the element
+ this.urlQueue.push(url);
+ this.optionsQueue.push(options);
+ if(elementID!=null){
+ this.elementsQueue.push(elementID);
+ } else {
+ this.elementsQueue.push("NOTSPECIFIED");
+ }
+
+ this._processNext();
+ },
+ _processNext: function() { // Method for processing the requests in the queue. Private method. Don't call it explicitly
+ if(this.currentRequest == null && this.urlQueue.length > 0) // Check if the currently processing request count is less than batch size
+ {
+ // Call jQuery.ajax on the first item in the queue and remove it from the queue
+ AjaxQueue.currentRequest = jQuery.ajax(AjaxQueue.urlQueue.shift(), AjaxQueue.optionsQueue.shift());
+ AjaxQueue.currentRequest.complete( function() {
+ //Call AjaxQueue._processNext on completion ( success / failure) of this AJAX request.
+ AjaxQueue.currentRequest = null;
+ AjaxQueue._processNext();
+ });
+ if(this.elementsQueue[0]=="NOTSPECIFIED") { //Check if an elementID was specified
+ // If no ElementID was specified remove the first item from the queue
+ var junk = AjaxQueue.elementsQueue.shift();
+ } else {
+ // If ElementID was specified update the first item in the queue and remove it from the queue
+ AjaxQueue.currentRequest.success( function(data) {
+ jQuery(AjaxQueue.elementsQueue.shift()).html(data);
+ });
+ }
+ }
+ }
+};
+
OpenPOWER on IntegriCloud