⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logger-debug.js

📁 这是YUI的源码及相关示例。里面有很多很炫的Javascript效果。
💻 JS
📖 第 1 页 / 共 4 页
字号:
     * 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 + -