📄 logger-debug.js
字号:
* Initializes the header element. * * @method _initHeaderEl * @private */ _initHeaderEl : function() { var oSelf = this; // Destroy header if(this._elHd) { // Unhook DOM events YAHOO.util.Event.purgeElement(this._elHd, true); // Remove DOM elements this._elHd.innerHTML = ""; } // Create header 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.style.fontSize = // YAHOO.util.Dom.getStyle(this._elContainer,"fontSize"); 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"; }, /** * Initializes the console element. * * @method _initConsoleEl * @private */ _initConsoleEl : function() { // Destroy console if(this._elConsole) { // Unhook DOM events YAHOO.util.Event.purgeElement(this._elConsole, true); // Remove DOM elements this._elConsole.innerHTML = ""; } // Ceate console this._elConsole = this._elContainer.appendChild(document.createElement("div")); this._elConsole.className = "yui-log-bd"; // If implementer has provided console, trust and set those if(this.height) { this._elConsole.style.height = this.height; } }, /** * Initializes the footer element. * * @method _initFooterEl * @private */ _initFooterEl : function() { var oSelf = this; // Don't create footer elements if footer is disabled if(this.footerEnabled) { // Destroy console if(this._elFt) { // Unhook DOM events YAHOO.util.Event.purgeElement(this._elFt, true); // Remove DOM elements this._elFt.innerHTML = ""; } 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.style.fontSize = // YAHOO.util.Dom.getStyle(this._elContainer,"fontSize"); 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.style.fontSize = // YAHOO.util.Dom.getStyle(this._elContainer,"fontSize"); 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"; } }, /** * Initializes Drag and Drop on the header element. * * @method _initDragDrop * @private */ _initDragDrop : function() { // If Drag and Drop utility is available... // ...and draggable is true... // ...then make the header draggable if(YAHOO.util.DD && this.draggable && this._elHd) { var ylog_dd = new YAHOO.util.DD(this._elContainer); ylog_dd.setHandleElId(this._elHd.id); //TODO: use class name this._elHd.style.cursor = "move"; } }, /** * Initializes category filters. * * @method _initCategories * @private */ _initCategories : function() { // Initialize category filters this._categoryFilters = []; var aInitialCategories = YAHOO.widget.Logger.categories; for(var j=0; j < aInitialCategories.length; j++) { var sCategory = aInitialCategories[j]; // Add category to the internal array of filters this._categoryFilters.push(sCategory); // Add checkbox element if UI is enabled if(this._elCategoryFilters) { this._createCategoryCheckbox(sCategory); } } }, /** * Initializes source filters. * * @method _initSources * @private */ _initSources : function() { // Initialize source filters this._sourceFilters = []; var aInitialSources = YAHOO.widget.Logger.sources; for(var j=0; j < aInitialSources.length; j++) { var sSource = aInitialSources[j]; // Add source to the internal array of filters this._sourceFilters.push(sSource); // Add checkbox element if UI is enabled if(this._elSourceFilters) { this._createSourceCheckbox(sSource); } } }, /** * Creates the UI for a category filter in the LogReader footer element. * * @method _createCategoryCheckbox * @param sCategory {String} Category name. * @private */ _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"; // Append el at the end so IE 5.5 can set "type" attribute // and THEN set checked property 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; // Subscribe to the click event YAHOO.util.Event.addListener(chkCategory,'click',oSelf._onCheckCategory,oSelf); // Create and class the text label var lblCategory = elFilter.appendChild(document.createElement("label")); lblCategory.htmlFor = chkCategory.id; lblCategory.className = sCategory; lblCategory.innerHTML = sCategory; this._filterCheckboxes[sCategory] = chkCategory; } }, /** * Creates a checkbox in the LogReader footer element to filter by source. * * @method _createSourceCheckbox * @param sSource {String} Source name. * @private */ _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"; // Append el at the end so IE 5.5 can set "type" attribute // and THEN set checked property 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; // Subscribe to the click event YAHOO.util.Event.addListener(chkSource,'click',oSelf._onCheckSource,oSelf); // Create and class the text label var lblSource = elFilter.appendChild(document.createElement("label")); lblSource.htmlFor = chkSource.id; lblSource.className = sSource; lblSource.innerHTML = sSource; this._filterCheckboxes[sSource] = chkSource; } }, /** * Reprints all log messages in the stack through filters. * * @method _filterLogs * @private */ _filterLogs : function() { // Reprint stack with new filters if (this._elConsole !== null) { this.clearConsole(); this._printToConsole(YAHOO.widget.Logger.getStack()); } }, /** * Sends buffer of log messages to output and clears buffer. * * @method _printBuffer * @private */ _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]; } this._buffer = []; this._printToConsole(entries); } else { this._filterLogs(); } if(!this.newestOnTop) { this._elConsole.scrollTop = this._elConsole.scrollHeight; } } }, /** * Cycles through an array of log messages, and outputs each one to the console * if its category has not been filtered out. * * @method _printToConsole * @param aEntries {Object[]} Array of LogMsg objects to output to console. * @private */ _printToConsole : function(aEntries) { // Manage the number of messages displayed in the console 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; } entriesStartIndex = (entriesLen > thresholdMin) ? (entriesLen - thresholdMin) : 0; // Iterate through all log entries for(i=entriesStartIndex; i<entriesLen; i++) { // Print only the ones that filter through var okToPrint = false; var okToFilterCats = false; // Get log message details 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; } } if(okToFilterCats) { for(j=0; j<categoryFiltersLen; j++) { if(category == this._categoryFilters[j]) { okToPrint = true; break; } } } if(okToPrint) { msg = this.formatMsg(entry); if (typeof msg === 'string') { msgHTML[msgHTML.length] = msg; } else { df.insertBefore(msg, this.newestOnTop ? df.firstChild || null : null); } this._consoleMsgCount++; this._lastTime = entry.time.getTime(); } } 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); } },///////////////////////////////////////////////////////////////////////////////// Private event handlers/////////////////////////////////////////////////////////////////////////////// /** * Handles Logger's categoryCreateEvent. * * @method _onCategoryCreate * @param sType {String} The event. * @param aArgs {Object[]} Data passed from event firer. * @param oSelf {Object} The LogReader instance. * @private */ _onCategoryCreate : function(sType, aArgs, oSelf) { var category = aArgs[0]; // Add category to the internal array of filters oSelf._categoryFilters.push(category); if(oSelf._elFt) { oSelf._createCategoryCheckbox(category); } }, /** * Handles Logger's sourceCreateEvent. * * @method _onSourceCreate * @param sType {String} The event. * @param aArgs {Object[]} Data passed from event firer. * @param oSelf {Object} The LogReader instance. * @private */ _onSourceCreate : function(sType, aArgs, oSelf) { var source = aArgs[0]; // Add source to the internal array of filters oSelf._sourceFilters.push(source); if(oSelf._elFt) { oSelf._createSourceCheckbox(source); } }, /** * Handles check events on the category filter checkboxes. * * @method _onCheckCategory * @param v {HTMLEvent} The click event. * @param oSelf {Object} The LogReader instance. * @private */ _onCheckCategory : function(v, oSelf) { var category = this.category; if(!this.checked) { oSelf.hideCategory(category); } else { oSelf.showCategory(category); } }, /** * Handles check events on the category filter checkboxes. * * @method _onCheckSource * @param v {HTMLEvent} The click event. * @param oSelf {Object} The LogReader instance. * @private */ _onCheckSource : function(v, oSelf) { var source = this.source; if(!this.checked) { oSelf.hideSource(source); } else { oSelf.showSource(source); } }, /** * Handles click events on the collapse button. * * @method _onClickCollapseBtn * @param v {HTMLEvent} The click event. * @param oSelf {Object} The LogReader instance * @private */ _onClickCollapseBtn : function(v, oSelf) { if(!oSelf.isCollapsed) { oSelf.collapse(); } else { oSelf.expand(); } }, /** * Handles click events on the pause button. * * @method _onClickPauseBtn * @param v {HTMLEvent} The click event. * @param oSelf {Object} The LogReader instance. * @private */ _onClickPauseBtn : function(v, oSelf) { if(!oSelf.isPaused) { oSelf.pause(); } else { oSelf.resume(); } }, /** * Handles click events on the clear button. * * @method _onClickClearBtn * @param v {HTMLEvent} The click event. * @param oSelf {Object} The LogReader instance. * @private */ _onClickClearBtn : function(v, oSelf) { oSelf.clearConsole(); }, /** * Handles Logger's newLogEvent. * * @method _onNewLog * @param sType {String} The event. * @param aArgs {Object[]} Data passed from event firer. * @param oSelf {Object} The LogReader instance.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -