console-filters-min.js revision bdee4fc3a34a597c5cf768f1d8259dcb1bc015d4
YUI.add("console-filters",function(C){var P=C.ClassNameManager.getClassName,G="console",B="filters",K="filter",F="category",D="source",E="category.",L="source.",O="host",H="parentNode",Q="checked",N=".",S="",M=C.UA.ie>7?"&#8194;":" ",R=N+C.Console.CHROME_CLASSES.console_bd_class,I=N+C.Console.CHROME_CLASSES.console_ft_class,A="input[type=checkbox].";function J(){J.superclass.constructor.apply(this,arguments);}C.mix(J,{NAME:"consoleFilters",NS:K,CATEGORIES_TEMPLATE:'<div class="{categories}"></div>',SOURCES_TEMPLATE:'<div class="{sources}"></div>',FILTER_TEMPLATE:'<label class="{filter_label}">'+'<input type="checkbox" value="{filter_name}" '+'class="{filter} {filter_class}"> {filter_name}'+"</label>"+M,CHROME_CLASSES:{categories:P(G,B,"categories"),sources:P(G,B,"sources"),category:P(G,K,F),source:P(G,K,D),filter:P(G,K),filter_label:P(G,K,"label")},ATTRS:{defaultVisibility:{value:true,validator:C.Lang.isBoolean},category:{value:{},validator:function(U,T){return this._validateCategory(T,U);}},source:{value:{},validator:function(U,T){return this._validateSource(T,U);}}}});C.extend(J,C.Plugin.Base,{_entries:null,_categories:null,_sources:null,initializer:function(){this._entries=[];this.get(O).on("entry",this._onEntry,this);this.doAfter("renderUI",this.renderUI);this.doAfter("syncUI",this.syncUI);this.doAfter("bindUI",this.bindUI);this.doAfter("clearConsole",this._afterClearConsole);if(this.get(O).get("rendered")){this.renderUI();this.syncUI();this.bindUI();}},destructor:function(){this._entries=[];if(this._categories){this._categories.get(H).removeChild(this._categories);}if(this._sources){this._sources.get(H).removeChild(this._sources);}},renderUI:function(){var U=this.get(O).get("contentBox").query(I),T;if(U){T=C.substitute(J.CATEGORIES_TEMPLATE,J.CHROME_CLASSES);this._categories=U.appendChild(C.Node.create(T));T=C.substitute(J.SOURCES_TEMPLATE,J.CHROME_CLASSES);this._sources=U.appendChild(C.Node.create(T));}},bindUI:function(){this._categories.on("click",C.bind(this._onCategoryCheckboxClick,this));this._sources.on("click",C.bind(this._onSourceCheckboxClick,this));this.after("categoryChange",this._afterCategoryChange);this.after("sourceChange",this._afterSourceChange);},syncUI:function(){C.each(this.get(F),function(U,T){this._uiSetCheckbox(F,T,U);},this);C.each(this.get(D),function(U,T){this._uiSetCheckbox(D,T,U);},this);this.refreshConsole();},_onEntry:function(V){this._entries.push(V.message);var T=E+V.message.category,X=L+V.message.source,U=this.get(T),Y=this.get(X),W;if(U===undefined){W=this.get("defaultVisibility");this.set(T,W);U=W;}if(Y===undefined){W=this.get("defaultVisibility");this.set(X,W);Y=W;}if(!U||!Y){V.preventDefault();}},_afterClearConsole:function(){this._entries=[];},_afterCategoryChange:function(V){var T=V.subAttrName.replace(/category\./,S),U=V.prevVal,W=V.newVal;if(!T||U[T]!==undefined){this.refreshConsole();this._filterBuffer();}if(T&&!V.fromUI){this._uiSetCheckbox(F,T,W);}},_afterSourceChange:function(U){var W=U.subAttrName.replace(/source\./,S),T=U.prevVal,V=U.newVal;if(!W||T[W]!==undefined){this.refreshConsole();this._filterBuffer();}if(W&&!U.fromUI){this._uiSetCheckbox(D,W,V);}},_filterBuffer:function(){var U=this.get(F),W=this.get(D),T=this.get(O).buffer,X=null,V;for(V=T.length-1;V>=0;--V){if(!U[T[V].category]||!W[T[V].source]){X=X||V;}else{if(X){T.splice(V,(X-V));X=null;}}}if(X){T.splice(0,X+1);}},refreshConsole:function(){var X=this._entries,b=this.get(O),Y=b.get("contentBox").query(R),U=b.get("consoleLimit"),a=this.get(F),T=this.get(D),V=[],W,Z;if(Y){b._cancelPrintLoop();for(W=X.length-1;W>=0&&U>=0;--W){Z=X[W];if(a[Z.category]&&T[Z.source]){V.unshift(Z);--U;}}Y.set("innerHTML",S);b.buffer=V;b.printBuffer();}},_uiSetCheckbox:function(U,X,W){if(U&&X){var T=U===F?this._categories:this._sources,Z=A+P(G,K,X),Y=T.query(Z),V;if(!Y){V=this.get(O);this._createCheckbox(T,X);Y=T.query(Z);V._uiSetHeight(V.get("height"));}Y.set(Q,W);}},_onCategoryCheckboxClick:function(V){var U=V.target,T;if(U.hasClass(J.CHROME_CLASSES.filter)){T=U.get("value");if(T&&T in this.get(F)){this.set(E+T,U.get(Q),{fromUI:true});}}},_onSourceCheckboxClick:function(U){var T=U.target,V;if(T.hasClass(J.CHROME_CLASSES.filter)){V=T.get("value");if(V&&V in this.get(D)){this.set(L+V,T.get(Q),{fromUI:true});}}},hideCategory:function(U,T){if(T){C.Array.each(arguments,arguments.callee,this);}else{this.set(E+U,false);}},showCategory:function(U,T){if(T){C.Array.each(arguments,arguments.callee,this);}else{this.set(E+U,true);}},hideSource:function(U,T){if(T){C.Array.each(arguments,arguments.callee,this);}else{this.set(E+U,false);}},showSource:function(U,T){if(T){C.Array.each(arguments,arguments.callee,this);}else{this.set(E+U,true);}},_createCheckbox:function(T,U){var W=C.merge(J.CHROME_CLASSES,{filter_name:U,filter_class:P(G,K,U)}),V=C.Node.create(C.substitute(J.FILTER_TEMPLATE,W));T.appendChild(V);},_validateCategory:function(T,U){return C.Lang.isObject(U,true)&&T.split(/\./).length<3;},_validateSource:function(U,T){return C.Lang.isObject(T,true)&&U.split(/\./).length<3;}});C.namespace("Plugin").ConsoleFilters=J;},"@VERSION@",{requires:["substitute","node","plugin"]});