d575d6e179d71fc7f77fbb9f114e6046b64b94b3
[matthijs/projects/xerxes.git] / static / base / js / logger-debug.js
1 YAHOO.widget.LogMsg=function(oConfigs){this.msg=this.time=this.category=this.source=this.sourceDetail=null;if(oConfigs&&(oConfigs.constructor==Object)){for(var param in oConfigs){this[param]=oConfigs[param];}}};YAHOO.widget.LogWriter=function(sSource){if(!sSource){YAHOO.log("Could not instantiate LogWriter due to invalid source.","error","LogWriter");return;}
2 this._source=sSource;};YAHOO.widget.LogWriter.prototype.toString=function(){return "LogWriter "+this._sSource;};YAHOO.widget.LogWriter.prototype.log=function(sMsg,sCategory){YAHOO.widget.Logger.log(sMsg,sCategory,this._source);};YAHOO.widget.LogWriter.prototype.getSource=function(){return this._sSource;};YAHOO.widget.LogWriter.prototype.setSource=function(sSource){if(!sSource){YAHOO.log("Could not set source due to invalid source.","error",this.toString());return;}
3 else{this._sSource=sSource;}};YAHOO.widget.LogWriter.prototype._source=null;/***/
4 YAHOO.widget.LogReader=function(elContainer,oConfigs){this._sName=YAHOO.widget.LogReader._index;YAHOO.widget.LogReader._index++;this._buffer=[];this._filterCheckboxes={};this._lastTime=YAHOO.widget.Logger.getStartTime();if(oConfigs&&(oConfigs.constructor==Object)){for(var param in oConfigs){this[param]=oConfigs[param];}}
5 this._initContainerEl(elContainer);if(!this._elContainer){YAHOO.log("Could not instantiate LogReader due to an invalid container element "+
6 elContainer,"error",this.toString());return;}
7 this._initHeaderEl();this._initConsoleEl();this._initFooterEl();this._initDragDrop();this._initCategories();this._initSources();YAHOO.widget.Logger.newLogEvent.subscribe(this._onNewLog,this);YAHOO.widget.Logger.logResetEvent.subscribe(this._onReset,this);YAHOO.widget.Logger.categoryCreateEvent.subscribe(this._onCategoryCreate,this);YAHOO.widget.Logger.sourceCreateEvent.subscribe(this._onSourceCreate,this);this._filterLogs();YAHOO.log("LogReader initialized",null,this.toString());};YAHOO.lang.augmentObject(YAHOO.widget.LogReader,{/**/
8 _index:0,ENTRY_TEMPLATE:(function(){var t=document.createElement('pre');YAHOO.util.Dom.addClass(t,'yui-log-entry');return t;})(),VERBOSE_TEMPLATE:"<span class='{category}'>{label}</span>{totalTime}ms (+{elapsedTime}) {localTime}:</p><p>{sourceAndDetail}</p><p>{message}</p>",BASIC_TEMPLATE:"<p><span class='{category}'>{label}</span>{totalTime}ms (+{elapsedTime}) {localTime}: {sourceAndDetail}: {message}</p>"});YAHOO.widget.LogReader.prototype={logReaderEnabled:true,width:null,/**/
9 height:null,top:null,left:null,right:null,bottom:null,fontSize:null,footerEnabled:true,verboseOutput:true,/**/
10 entryFormat:null,newestOnTop:true,outputBuffer:100,thresholdMax:500,thresholdMin:100,isCollapsed:false,isPaused:false,draggable:true,toString:function(){return "LogReader instance"+this._sName;},/**/
11 pause:function(){this.isPaused=true;this._btnPause.value="Resume";this._timeout=null;this.logReaderEnabled=false;},resume:function(){this.isPaused=false;this._btnPause.value="Pause";this.logReaderEnabled=true;this._printBuffer();},hide:function(){this._elContainer.style.display="none";},show:function(){this._elContainer.style.display="block";},collapse:function(){this._elConsole.style.display="none";if(this._elFt){this._elFt.style.display="none";}
12 this._btnCollapse.value="Expand";this.isCollapsed=true;},expand:function(){this._elConsole.style.display="block";if(this._elFt){this._elFt.style.display="block";}
13 this._btnCollapse.value="Collapse";this.isCollapsed=false;},/**/
14 getCheckbox:function(filter){return this._filterCheckboxes[filter];},getCategories:function(){return this._categoryFilters;},showCategory:function(sCategory){var filtersArray=this._categoryFilters;if(filtersArray.indexOf){if(filtersArray.indexOf(sCategory)>-1){return;}}
15 else{for(var i=0;i<filtersArray.length;i++){if(filtersArray[i]===sCategory){return;}}}
16 this._categoryFilters.push(sCategory);this._filterLogs();var elCheckbox=this.getCheckbox(sCategory);if(elCheckbox){elCheckbox.checked=true;}},hideCategory:function(sCategory){var filtersArray=this._categoryFilters;for(var i=0;i<filtersArray.length;i++){if(sCategory==filtersArray[i]){filtersArray.splice(i,1);break;}}
17 this._filterLogs();var elCheckbox=this.getCheckbox(sCategory);if(elCheckbox){elCheckbox.checked=false;}},getSources:function(){return this._sourceFilters;},showSource:function(sSource){var filtersArray=this._sourceFilters;if(filtersArray.indexOf){if(filtersArray.indexOf(sSource)>-1){return;}}
18 else{for(var i=0;i<filtersArray.length;i++){if(sSource==filtersArray[i]){return;}}}
19 filtersArray.push(sSource);this._filterLogs();var elCheckbox=this.getCheckbox(sSource);if(elCheckbox){elCheckbox.checked=true;}},hideSource:function(sSource){ var filtersArray=this._sourceFilters;for(var i=0;i<filtersArray.length;i++){if(sSource==filtersArray[i]){filtersArray.splice(i,1);break;}}
20 this._filterLogs();var elCheckbox=this.getCheckbox(sSource);if(elCheckbox){elCheckbox.checked=false;}},clearConsole:function(){this._timeout=null;this._buffer=[];this._consoleMsgCount=0;var elConsole=this._elConsole;elConsole.innerHTML='';},setTitle:function(sTitle){this._title.innerHTML=this.html2Text(sTitle);},getLastTime:function(){return this._lastTime;},formatMsg:function(entry){var Static=YAHOO.widget.LogReader,entryFormat=this.entryFormat||(this.verboseOutput?Static.VERBOSE_TEMPLATE:Static.BASIC_TEMPLATE),info={category:entry.category,label:entry.category.substring(0,4).toUpperCase(),sourceAndDetail:entry.sourceDetail?entry.source+" "+entry.sourceDetail:entry.source,//
21 message:this.html2Text(entry.msg||entry.message||'')};if(entry.time&&entry.time.getTime){info.localTime=entry.time.toLocaleTimeString?entry.time.toLocaleTimeString():entry.time.toString();info.elapsedTime=entry.time.getTime()-this.getLastTime();info.totalTime=entry.time.getTime()-
22 YAHOO.widget.Logger.getStartTime();}
23 var msg=Static.ENTRY_TEMPLATE.cloneNode(true);if(this.verboseOutput){msg.className+=' yui-log-verbose';}
24 msg.innerHTML=YAHOO.lang.substitute(entryFormat,info);return msg;},html2Text:function(sHtml){if(sHtml){sHtml+="";return sHtml.replace(/&/g,"&#38;").replace(/</g,"&#60;").replace(/>/g,"&#62;");}
25 return "";},_sName:null,/**/
26 _buffer:null,_consoleMsgCount:0,_lastTime:null,_timeout:null,_filterCheckboxes:null,_categoryFilters:null,_sourceFilters:null,_elContainer:null,_elHd:null,_elCollapse:null,_btnCollapse:null, _title:null,_elConsole:null,_elFt:null,_elBtns:null,_elCategoryFilters:null,_elSourceFilters:null,_btnPause:null,_btnClear:null,_initContainerEl:function(elContainer){elContainer=YAHOO.util.Dom.get(elContainer);if(elContainer&&elContainer.tagName&&(elContainer.tagName.toLowerCase()=="div")){this._elContainer=elContainer;YAHOO.util.Dom.addClass(this._elContainer,"yui-log");}
27 else{this._elContainer=document.body.appendChild(document.createElement("div"));YAHOO.util.Dom.addClass(this._elContainer,"yui-log");YAHOO.util.Dom.addClass(this._elContainer,"yui-log-container");var containerStyle=this._elContainer.style;if(this.width){containerStyle.width=this.width;}
28 if(this.right){containerStyle.right=this.right;}
29 if(this.top){containerStyle.top=this.top;}
30 if(this.left){containerStyle.left=this.left;containerStyle.right="auto";}
31 if(this.bottom){containerStyle.bottom=this.bottom;containerStyle.top="auto";}
32 if(this.fontSize){containerStyle.fontSize=this.fontSize;}
33 if(navigator.userAgent.toLowerCase().indexOf("opera")!=-1){document.body.style+='';}}},_initHeaderEl:function(){var oSelf=this;if(this._elHd){YAHOO.util.Event.purgeElement(this._elHd,true);this._elHd.innerHTML="";}
34 this._elHd=this._elContainer.appendChild(document.createElement("div"));this._elHd.id="yui-log-hd"+this._sName;this._elHd.className="yui-log-hd";this._elCollapse=this._elHd.appendChild(document.createElement("div"));this._elCollapse.className="yui-log-btns";this._btnCollapse=document.createElement("input");this._btnCollapse.type="button";this._btnCollapse.className="yui-log-button";this._btnCollapse.value="Collapse";this._btnCollapse=this._elCollapse.appendChild(this._btnCollapse);YAHOO.util.Event.addListener(oSelf._btnCollapse,'click',oSelf._onClickCollapseBtn,oSelf);this._title=this._elHd.appendChild(document.createElement("h4"));this._title.innerHTML="Logger Console";},_initConsoleEl:function(){if(this._elConsole){YAHOO.util.Event.purgeElement(this._elConsole,true);this._elConsole.innerHTML="";}
35 this._elConsole=this._elContainer.appendChild(document.createElement("div"));this._elConsole.className="yui-log-bd";if(this.height){this._elConsole.style.height=this.height;}},_initFooterEl:function(){var oSelf=this;if(this.footerEnabled){if(this._elFt){YAHOO.util.Event.purgeElement(this._elFt,true);this._elFt.innerHTML="";}
36 this._elFt=this._elContainer.appendChild(document.createElement("div"));this._elFt.className="yui-log-ft";this._elBtns=this._elFt.appendChild(document.createElement("div"));this._elBtns.className="yui-log-btns";this._btnPause=document.createElement("input");this._btnPause.type="button";this._btnPause.className="yui-log-button";this._btnPause.value="Pause";this._btnPause=this._elBtns.appendChild(this._btnPause);YAHOO.util.Event.addListener(oSelf._btnPause,'click',oSelf._onClickPauseBtn,oSelf);this._btnClear=document.createElement("input");this._btnClear.type="button";this._btnClear.className="yui-log-button";this._btnClear.value="Clear";this._btnClear=this._elBtns.appendChild(this._btnClear);YAHOO.util.Event.addListener(oSelf._btnClear,'click',oSelf._onClickClearBtn,oSelf);this._elCategoryFilters=this._elFt.appendChild(document.createElement("div"));this._elCategoryFilters.className="yui-log-categoryfilters";this._elSourceFilters=this._elFt.appendChild(document.createElement("div"));this._elSourceFilters.className="yui-log-sourcefilters";}},_initDragDrop:function(){if(YAHOO.util.DD&&this.draggable&&this._elHd){var ylog_dd=new YAHOO.util.DD(this._elContainer);ylog_dd.setHandleElId(this._elHd.id);this._elHd.style.cursor="move";}},_initCategories:function(){this._categoryFilters=[];var aInitialCategories=YAHOO.widget.Logger.categories;for(var j=0;j<aInitialCategories.length;j++){var sCategory=aInitialCategories[j];this._categoryFilters.push(sCategory);if(this._elCategoryFilters){this._createCategoryCheckbox(sCategory);}}},_initSources:function(){this._sourceFilters=[];var aInitialSources=YAHOO.widget.Logger.sources;for(var j=0;j<aInitialSources.length;j++){var sSource=aInitialSources[j];this._sourceFilters.push(sSource);if(this._elSourceFilters){this._createSourceCheckbox(sSource);}}},_createCategoryCheckbox:function(sCategory){var oSelf=this;if(this._elFt){var elParent=this._elCategoryFilters;var elFilter=elParent.appendChild(document.createElement("span"));elFilter.className="yui-log-filtergrp";var chkCategory=document.createElement("input");chkCategory.id="yui-log-filter-"+sCategory+this._sName;chkCategory.className="yui-log-filter-"+sCategory;chkCategory.type="checkbox";chkCategory.category=sCategory;chkCategory=elFilter.appendChild(chkCategory);chkCategory.checked=true;YAHOO.util.Event.addListener(chkCategory,'click',oSelf._onCheckCategory,oSelf);//
37 var lblCategory=elFilter.appendChild(document.createElement("label"));lblCategory.htmlFor=chkCategory.id;lblCategory.className=sCategory;lblCategory.innerHTML=sCategory;this._filterCheckboxes[sCategory]=chkCategory;}},/**/
38 _createSourceCheckbox:function(sSource){var oSelf=this;if(this._elFt){var elParent=this._elSourceFilters;var elFilter=elParent.appendChild(document.createElement("span"));elFilter.className="yui-log-filtergrp";var chkSource=document.createElement("input");chkSource.id="yui-log-filter"+sSource+this._sName;chkSource.className="yui-log-filter"+sSource;chkSource.type="checkbox";chkSource.source=sSource;chkSource=elFilter.appendChild(chkSource);chkSource.checked=true;YAHOO.util.Event.addListener(chkSource,'click',oSelf._onCheckSource,oSelf);var lblSource=elFilter.appendChild(document.createElement("label"));lblSource.htmlFor=chkSource.id;lblSource.className=sSource;lblSource.innerHTML=sSource;this._filterCheckboxes[sSource]=chkSource;}},_filterLogs:function(){if(this._elConsole!==null){this.clearConsole();this._printToConsole(YAHOO.widget.Logger.getStack());}},_printBuffer:function(){this._timeout=null;if(this._elConsole!==null){var thresholdMax=this.thresholdMax;thresholdMax=(thresholdMax&&!isNaN(thresholdMax))?thresholdMax:500;if(this._consoleMsgCount<thresholdMax){var entries=[];for(var i=0;i<this._buffer.length;i++){entries[i]=this._buffer[i];}
39 this._buffer=[];this._printToConsole(entries);}
40 else{this._filterLogs();}
41 if(!this.newestOnTop){this._elConsole.scrollTop=this._elConsole.scrollHeight;}}},_printToConsole:function(aEntries){var entriesLen=aEntries.length,df=document.createDocumentFragment(),msgHTML=[],thresholdMin=this.thresholdMin,sourceFiltersLen=this._sourceFilters.length,categoryFiltersLen=this._categoryFilters.length,entriesStartIndex,i,j,msg,before;if(isNaN(thresholdMin)||(thresholdMin>this.thresholdMax)){thresholdMin=0;}
42 entriesStartIndex=(entriesLen>thresholdMin)?(entriesLen-thresholdMin):0;for(i=entriesStartIndex;i<entriesLen;i++){var okToPrint=false;var okToFilterCats=false;var entry=aEntries[i];var source=entry.source;var category=entry.category;for(j=0;j<sourceFiltersLen;j++){if(source==this._sourceFilters[j]){okToFilterCats=true; break;}}
43 if(okToFilterCats){for(j=0;j<categoryFiltersLen;j++){if(category==this._categoryFilters[j]){okToPrint=true;break;}}}
44 if(okToPrint){msg=this.formatMsg(entry);if(typeof msg==='string'){msgHTML[msgHTML.length]=msg;}else{df.insertBefore(msg,this.newestOnTop?df.firstChild||null:null);}
45 this._consoleMsgCount++;this._lastTime=entry.time.getTime();}}
46 if(msgHTML.length){msgHTML.splice(0,0,this._elConsole.innerHTML);this._elConsole.innerHTML=this.newestOnTop?msgHTML.reverse().join(''):msgHTML.join('');}else if(df.firstChild){this._elConsole.insertBefore(df,this.newestOnTop?this._elConsole.firstChild||null:null);}},_onCategoryCreate:function(sType,aArgs,oSelf){var category=aArgs[0];oSelf._categoryFilters.push(category);if(oSelf._elFt){oSelf._createCategoryCheckbox(category);}},/**/
47 _onSourceCreate:function(sType,aArgs,oSelf){var source=aArgs[0];oSelf._sourceFilters.push(source);if(oSelf._elFt){oSelf._createSourceCheckbox(source);}},_onCheckCategory:function(v,oSelf){var category=this.category;if(!this.checked){oSelf.hideCategory(category);}
48 else{oSelf.showCategory(category);}},_onCheckSource:function(v,oSelf){var source=this.source;if(!this.checked){oSelf.hideSource(source);}
49 else{oSelf.showSource(source);}},_onClickCollapseBtn:function(v,oSelf){if(!oSelf.isCollapsed){oSelf.collapse();}
50 else{oSelf.expand();}},/**/
51 _onClickPauseBtn:function(v,oSelf){if(!oSelf.isPaused){oSelf.pause();}
52 else{oSelf.resume();}},_onClickClearBtn:function(v,oSelf){oSelf.clearConsole();},_onNewLog:function(sType,aArgs,oSelf){var logEntry=aArgs[0];oSelf._buffer.push(logEntry);if(oSelf.logReaderEnabled===true&&oSelf._timeout===null){oSelf._timeout=setTimeout(function(){oSelf._printBuffer();},oSelf.outputBuffer);}},_onReset:function(sType,aArgs,oSelf){oSelf._filterLogs();}};/***/
53 if(!YAHOO.widget.Logger){YAHOO.widget.Logger={loggerEnabled:true,_browserConsoleEnabled:false,categories:["info","warn","error","time","window"],sources:["global"],_stack:[],maxStackEntries:2500,_startTime:new Date().getTime(),_lastTime:null,_windowErrorsHandled:false,_origOnWindowError:null};//
54 YAHOO.widget.Logger.log=function(sMsg,sCategory,sSource){if(this.loggerEnabled){if(!sCategory){sCategory="info";}
55 else{sCategory=sCategory.toLocaleLowerCase();if(this._isNewCategory(sCategory)){this._createNewCategory(sCategory);}}
56 var sClass="global";var sDetail=null;if(sSource){ var spaceIndex=sSource.indexOf(" ");if(spaceIndex>0){sClass=sSource.substring(0,spaceIndex);sDetail=sSource.substring(spaceIndex,sSource.length);}
57 else{sClass=sSource;}
58 if(this._isNewSource(sClass)){this._createNewSource(sClass);}}
59 var timestamp=new Date();var logEntry=new YAHOO.widget.LogMsg({msg:sMsg,time:timestamp,category:sCategory,source:sClass,sourceDetail:sDetail});var stack=this._stack;var maxStackEntries=this.maxStackEntries;if(maxStackEntries&&!isNaN(maxStackEntries)&&(stack.length>=maxStackEntries)){stack.shift();}
60 stack.push(logEntry);this.newLogEvent.fire(logEntry);if(this._browserConsoleEnabled){this._printToBrowserConsole(logEntry);}
61 return true;}
62 else{return false;}};YAHOO.widget.Logger.reset=function(){this._stack=[];this._startTime=new Date().getTime();this.loggerEnabled=true;this.log("Logger reset");this.logResetEvent.fire();};YAHOO.widget.Logger.getStack=function(){return this._stack;};/**/
63 YAHOO.widget.Logger.getStartTime=function(){return this._startTime;};YAHOO.widget.Logger.disableBrowserConsole=function(){YAHOO.log("Logger output to the function console.log() has been disabled.");this._browserConsoleEnabled=false;};YAHOO.widget.Logger.enableBrowserConsole=function(){this._browserConsoleEnabled=true;YAHOO.log("Logger output to the function console.log() has been enabled.");};YAHOO.widget.Logger.handleWindowErrors=function(){if(!YAHOO.widget.Logger._windowErrorsHandled){if(window.error){YAHOO.widget.Logger._origOnWindowError=window.onerror;}
64 window.onerror=YAHOO.widget.Logger._onWindowError;YAHOO.widget.Logger._windowErrorsHandled=true;YAHOO.log("Logger handling of window.onerror has been enabled.");}
65 else{YAHOO.log("Logger handling of window.onerror had already been enabled.");}};/**/
66 YAHOO.widget.Logger.unhandleWindowErrors=function(){if(YAHOO.widget.Logger._windowErrorsHandled){if(YAHOO.widget.Logger._origOnWindowError){window.onerror=YAHOO.widget.Logger._origOnWindowError;YAHOO.widget.Logger._origOnWindowError=null;}
67 else{ window.onerror=null;}
68 YAHOO.widget.Logger._windowErrorsHandled=false;YAHOO.log("Logger handling of window.onerror has been disabled.");}
69 else{YAHOO.log("Logger handling of window.onerror had already been disabled.");}};YAHOO.widget.Logger.categoryCreateEvent=new YAHOO.util.CustomEvent("categoryCreate",this,true);YAHOO.widget.Logger.sourceCreateEvent=new YAHOO.util.CustomEvent("sourceCreate",this,true);YAHOO.widget.Logger.newLogEvent=new YAHOO.util.CustomEvent("newLog",this,true);YAHOO.widget.Logger.logResetEvent=new YAHOO.util.CustomEvent("logReset",this,true);YAHOO.widget.Logger._createNewCategory=function(sCategory){this.categories.push(sCategory);this.categoryCreateEvent.fire(sCategory);};YAHOO.widget.Logger._isNewCategory=function(sCategory){for(var i=0;i<this.categories.length;i++){if(sCategory==this.categories[i]){return false;}}
70 return true;};YAHOO.widget.Logger._createNewSource=function(sSource){this.sources.push(sSource);this.sourceCreateEvent.fire(sSource);};YAHOO.widget.Logger._isNewSource=function(sSource){if(sSource){for(var i=0;i<this.sources.length;i++){if(sSource==this.sources[i]){return false;}}
71 return true;}};/**/
72 YAHOO.widget.Logger._printToBrowserConsole=function(oEntry){if(window.console&&console.log){var category=oEntry.category;var label=oEntry.category.substring(0,4).toUpperCase();var time=oEntry.time;var localTime;if(time.toLocaleTimeString){localTime=time.toLocaleTimeString();}
73 else{localTime=time.toString();}
74 var msecs=time.getTime();var elapsedTime=(YAHOO.widget.Logger._lastTime)?(msecs-YAHOO.widget.Logger._lastTime):0;YAHOO.widget.Logger._lastTime=msecs;var output=localTime+" ("+
75 elapsedTime+"ms): "+
76 oEntry.source+": ";console.log(output,oEntry.msg);}};YAHOO.widget.Logger._onWindowError=function(sMsg,sUrl,sLine){try{YAHOO.widget.Logger.log(sMsg+' ('+sUrl+', line '+sLine+')',"window");if(YAHOO.widget.Logger._origOnWindowError){YAHOO.widget.Logger._origOnWindowError();}}
77 catch(e){return false;}};//
78 YAHOO.widget.Logger.log("Logger initialized");}
79 YAHOO.register("logger",YAHOO.widget.Logger,{version:"2.5.1",build:"984"});