diff options
Diffstat (limited to 'includes/js/dojox/analytics/_base.js')
-rw-r--r-- | includes/js/dojox/analytics/_base.js | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/includes/js/dojox/analytics/_base.js b/includes/js/dojox/analytics/_base.js deleted file mode 100644 index 8d6bd66..0000000 --- a/includes/js/dojox/analytics/_base.js +++ /dev/null @@ -1,127 +0,0 @@ -if(!dojo._hasResource["dojox.analytics._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojox.analytics._base"] = true; -dojo.provide("dojox.analytics._base"); - -dojox.analytics = function(){ - //where we store data until we're ready to send it off. - - //the data queue; - this._data = [] ; - - //id of messages for this session/page - this._id=1; - - //some default values - this.sendInterval=dojo.config["sendInterval"] || 5000; - this.inTransitRetry=dojo.config["inTransitRetry"] || 200; - this.dataUrl=dojo.config["analyticsUrl"] || dojo.moduleUrl("dojox.analytics.logger", "dojoxAnalytics.php"); - this.sendMethod = dojo.config["sendMethod"] || "xhrPost"; - if (dojo.isIE){ - this.maxRequestSize = 2000; - }else{ - this.maxRequestSize = dojo.config["maxRequestSize"] || 4000; - } - - //while we can go ahead and being logging as soon as this constructor is completed - //we're not going to schedule pushing data to the server until after the page - //has completed loading - dojo.addOnLoad(this, "schedulePusher"); - dojo.addOnUnload(this, "pushData", true); -}; - -dojo.extend(dojox.analytics, { - schedulePusher: function(interval){ - // summary: - // schedule the data pushing routines to happen in interval ms - setTimeout(dojo.hitch(this, "checkData"), interval||this.sendInterval); - }, - - addData: function(dataType, data){ - // summary: - // add data to the queue. Will be pusshed to the server on the next - // data push - - if (arguments.length>2){ - var d = []; - for(var i=1;i<arguments.length;i++){ - d.push(arguments[i]); - } - data = d; - } - - this._data.push({plugin: dataType, data: data}); - }, - - checkData: function(){ - // summary - if (this._inTransit){ - this.schedulePusher(this.inTransitRetry); - return; - } - - if (this.pushData()){return} - this.schedulePusher(); - }, - - pushData: function(){ - // summary - // pushes data to the server if any exists. If a push is done, return - // the deferred after hooking up completion callbacks. If there is no data - // to be pushed, return false; - if (this._data.length>0){ - //clear the queue - this._inTransit=this._data; - this._data=[]; - var def; - switch(this.sendMethod){ - case "script": - def = dojo.io.script.get({url: this.getQueryPacket(), preventCache: 1, callbackParamName: "callback"}); - break; - case "xhrPost": - default: - console.info("post send: ", this._inTransit); - def = dojo.xhrPost({url:this.dataUrl, content: {id: this._id++, data: dojo.toJson(this._inTransit)}}); - break; - } - def.addCallback(this, "onPushComplete"); - return def; - } - return false; - }, - - getQueryPacket: function(){ - while(true){ - var content = {id: this._id++, data: dojo.toJson(this._inTransit)}; - - //FIXME would like a much better way to get the query down to lenght - var query = this.dataUrl + '?' + dojo.objectToQuery(content); - if (query.length>this.maxRequestSize){ - this._data.unshift(this._inTransit.pop()); - this._split=1; - }else{ - //console.log("script send: ", this._inTransit, " Remaining in queue: ", this._data.length); - return query; - } - } - }, - - onPushComplete: function(results){ - // summary - // if our data push was successfully, remove the _inTransit data and schedule the next - // parser run. - if (this._inTransit){ - delete this._inTransit; - } - - if (this._data.length>0){ - this.schedulePusher(this.inTransitRetry); - } else { - this.schedulePusher(); - } - } -}); - -//create the analytics singleton -dojox.analytics = new dojox.analytics(); - -} |