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

📄 logger.js

📁 图灵程序设计丛书 JavaScript基础教程源代码
💻 JS
📖 第 1 页 / 共 3 页
字号:


    // Attach container...

    if(containerEl) {

        if(typeof containerEl == "string") {

            this._containerEl = document.getElementById(containerEl);

        }

        else if(containerEl.tagName) {

            this._containerEl = containerEl;

        }

        this._containerEl.className = "yui-log";

    }

    // ...or create container from scratch

    if(!this._containerEl) {

        if(YAHOO.widget.LogReader._defaultContainerEl) {

            this._containerEl =  YAHOO.widget.LogReader._defaultContainerEl;

        }

        else {

            this._containerEl = document.body.appendChild(document.createElement("div"));

            this._containerEl.id = "yui-log";

            this._containerEl.className = "yui-log";



            YAHOO.widget.LogReader._defaultContainerEl = this._containerEl;

        }



        // If implementer has provided container values, trust and set those

        var containerStyle = this._containerEl.style;

        if(this.width) {

            containerStyle.width = this.width;

        }

        if(this.left) {

            containerStyle.left = this.left;

        }

        if(this.right) {

            containerStyle.right = this.right;

        }

        if(this.bottom) {

            containerStyle.bottom = this.bottom;

        }

        if(this.top) {

            containerStyle.top = this.top;

        }

        if(this.fontSize) {

            containerStyle.fontSize = this.fontSize;

        }

    }



    if(this._containerEl) {

        // Create header

        if(!this._hdEl) {

            this._hdEl = this._containerEl.appendChild(document.createElement("div"));

            this._hdEl.id = "yui-log-hd" + YAHOO.widget.LogReader._index;

            this._hdEl.className = "yui-log-hd";



            this._collapseEl = this._hdEl.appendChild(document.createElement("div"));

            this._collapseEl.className = "yui-log-btns";



            this._collapseBtn = document.createElement("input");

            this._collapseBtn.type = "button";

            this._collapseBtn.style.fontSize = YAHOO.util.Dom.getStyle(this._containerEl,"fontSize");

            this._collapseBtn.className = "yui-log-button";

            this._collapseBtn.value = "Collapse";

            this._collapseBtn = this._collapseEl.appendChild(this._collapseBtn);

            YAHOO.util.Event.addListener(oSelf._collapseBtn,'click',oSelf._onClickCollapseBtn,oSelf);



            this._title = this._hdEl.appendChild(document.createElement("h4"));

            this._title.innerHTML = "Logger Console";



            // If Drag and Drop utility is available...

            // ...and this container was created from scratch...

            // ...then make the header draggable

            if(YAHOO.util.DD &&

            (YAHOO.widget.LogReader._defaultContainerEl == this._containerEl)) {

                var ylog_dd = new YAHOO.util.DD(this._containerEl.id);

                ylog_dd.setHandleElId(this._hdEl.id);

                this._hdEl.style.cursor = "move";

            }

        }

        // Ceate console

        if(!this._consoleEl) {

            this._consoleEl = this._containerEl.appendChild(document.createElement("div"));

            this._consoleEl.className = "yui-log-bd";

            

            // If implementer has provided console, trust and set those

            if(this.height) {

                this._consoleEl.style.height = this.height;

            }

        }

        // Don't create footer if disabled

        if(!this._ftEl && this.footerEnabled) {

            this._ftEl = this._containerEl.appendChild(document.createElement("div"));

            this._ftEl.className = "yui-log-ft";



            this._btnsEl = this._ftEl.appendChild(document.createElement("div"));

            this._btnsEl.className = "yui-log-btns";



            this._pauseBtn = document.createElement("input");

            this._pauseBtn.type = "button";

            this._pauseBtn.style.fontSize = YAHOO.util.Dom.getStyle(this._containerEl,"fontSize");

            this._pauseBtn.className = "yui-log-button";

            this._pauseBtn.value = "Pause";

            this._pauseBtn = this._btnsEl.appendChild(this._pauseBtn);

            YAHOO.util.Event.addListener(oSelf._pauseBtn,'click',oSelf._onClickPauseBtn,oSelf);



            this._clearBtn = document.createElement("input");

            this._clearBtn.type = "button";

            this._clearBtn.style.fontSize = YAHOO.util.Dom.getStyle(this._containerEl,"fontSize");

            this._clearBtn.className = "yui-log-button";

            this._clearBtn.value = "Clear";

            this._clearBtn = this._btnsEl.appendChild(this._clearBtn);

            YAHOO.util.Event.addListener(oSelf._clearBtn,'click',oSelf._onClickClearBtn,oSelf);



            this._categoryFiltersEl = this._ftEl.appendChild(document.createElement("div"));

            this._categoryFiltersEl.className = "yui-log-categoryfilters";

            this._sourceFiltersEl = this._ftEl.appendChild(document.createElement("div"));

            this._sourceFiltersEl.className = "yui-log-sourcefilters";

        }

    }



    // Initialize buffer

    if(!this._buffer) {

        this._buffer = []; // output buffer

    }

    YAHOO.widget.Logger.newLogEvent.subscribe(this._onNewLog, this);

    this._lastTime = YAHOO.widget.Logger.getStartTime(); // timestamp of last log message to console



    // Initialize category filters

    this._categoryFilters = [];

    var catsLen = YAHOO.widget.Logger.categories.length;

    if(this._categoryFiltersEl) {

        for(var i=0; i < catsLen; i++) {

            this._createCategoryCheckbox(YAHOO.widget.Logger.categories[i]);

        }

    }

    // Initialize source filters

    this._sourceFilters = [];

    var sourcesLen = YAHOO.widget.Logger.sources.length;

    if(this._sourceFiltersEl) {

        for(var j=0; j < sourcesLen; j++) {

            this._createSourceCheckbox(YAHOO.widget.Logger.sources[j]);

        }

    }

    YAHOO.widget.Logger.categoryCreateEvent.subscribe(this._onCategoryCreate, this);

    YAHOO.widget.Logger.sourceCreateEvent.subscribe(this._onSourceCreate, this);



    YAHOO.widget.LogReader._index++;

    this._filterLogs();

};



/***************************************************************************

 * Public members

 ***************************************************************************/

/**

 * Whether or not the log reader is enabled to output log messages. Default:

 * true.

 *

 * @type boolean

 */

YAHOO.widget.LogReader.prototype.logReaderEnabled = true;



/**

 * Public member to access CSS width of the log reader container.

 *

 * @type string

 */

YAHOO.widget.LogReader.prototype.width = null;



/**

 * Public member to access CSS height of the log reader container.

 *

 * @type string

 */

YAHOO.widget.LogReader.prototype.height = null;



/**

 * Public member to access CSS top position of the log reader container.

 *

 * @type string

 */

YAHOO.widget.LogReader.prototype.top = null;



/**

 * Public member to access CSS left position of the log reader container.

 *

 * @type string

 */

YAHOO.widget.LogReader.prototype.left = null;



/**

 * Public member to access CSS right position of the log reader container.

 *

 * @type string

 */

YAHOO.widget.LogReader.prototype.right = null;



/**

 * Public member to access CSS bottom position of the log reader container.

 *

 * @type string

 */

YAHOO.widget.LogReader.prototype.bottom = null;



/**

 * Public member to access CSS font size of the log reader container.

 *

 * @type string

 */

YAHOO.widget.LogReader.prototype.fontSize = null;



/**

 * Whether or not the footer UI is enabled for the log reader. Default: true.

 *

 * @type boolean

 */

YAHOO.widget.LogReader.prototype.footerEnabled = true;



/**

 * Whether or not output is verbose (more readable). Setting to true will make

 * output more compact (less readable). Default: true.

 *

 * @type boolean

 */

YAHOO.widget.LogReader.prototype.verboseOutput = true;



/**

 * Whether or not newest message is printed on top. Default: true.

 *

 * @type boolean

 */

YAHOO.widget.LogReader.prototype.newestOnTop = true;



/***************************************************************************

 * Public methods

 ***************************************************************************/

/**

 * Pauses output of log messages. While paused, log messages are not lost, but

 * get saved to a buffer and then output upon resume of log reader.

 */

YAHOO.widget.LogReader.prototype.pause = function() {

    this._timeout = null;

    this.logReaderEnabled = false;

};



/**

 * Resumes output of log messages, including outputting any log messages that

 * have been saved to buffer while paused.

 */

YAHOO.widget.LogReader.prototype.resume = function() {

    this.logReaderEnabled = true;

    this._printBuffer();

};



/**

 * Hides UI of log reader. Logging functionality is not disrupted.

 */

YAHOO.widget.LogReader.prototype.hide = function() {

    this._containerEl.style.display = "none";

};



/**

 * Shows UI of log reader. Logging functionality is not disrupted.

 */

YAHOO.widget.LogReader.prototype.show = function() {

    this._containerEl.style.display = "block";

};



/**

 * Updates title to given string.

 *

 * @param {string} sTitle String to display in log reader's title bar.

 */

YAHOO.widget.LogReader.prototype.setTitle = function(sTitle) {

    var regEx = />/g;

    sTitle = sTitle.replace(regEx,"&gt;");

    regEx = /</g;

    sTitle = sTitle.replace(regEx,"&lt;");

    this._title.innerHTML = (sTitle);

};

 /***************************************************************************

 * Private members

 ***************************************************************************/

/**

 * Internal class member to index multiple log reader instances.

 *

 * @type number

 * @private

 */

YAHOO.widget.LogReader._index = 0;



/**

 * A class member shared by all log readers if a container needs to be

 * created during instantiation. Will be null if a container element never needs to

 * be created on the fly, such as when the implementer passes in their own element.

 *

 * @type HTMLElement

 * @private

 */

YAHOO.widget.LogReader._defaultContainerEl = null;



/**

 * Buffer of log messages for batch output.

 *

 * @type array

 * @private

 */

YAHOO.widget.LogReader.prototype._buffer = null;



/**

 * Date of last output log message.

 *

 * @type date

 * @private

 */

YAHOO.widget.LogReader.prototype._lastTime = null;



/**

 * Batched output timeout ID.

 *

 * @type number

 * @private

 */

YAHOO.widget.LogReader.prototype._timeout = null;



/**

 * Array of filters for log message categories.

 *

 * @type array

 * @private

 */

YAHOO.widget.LogReader.prototype._categoryFilters = null;



/**

 * Array of filters for log message sources.

 *

 * @type array

 * @private

 */

YAHOO.widget.LogReader.prototype._sourceFilters = null;



/**

 * Log reader container element.

 *

 * @type HTMLElement

 * @private

 */

YAHOO.widget.LogReader.prototype._containerEl = null;



/**

 * Log reader header element.

 *

 * @type HTMLElement

 * @private

 */

YAHOO.widget.LogReader.prototype._hdEl = null;



/**

 * Log reader collapse element.

 *

 * @type HTMLElement

 * @private

 */

YAHOO.widget.LogReader.prototype._collapseEl = null;



/**

 * Log reader collapse button element.

 *

 * @type HTMLElement

 * @private

 */

YAHOO.widget.LogReader.prototype._collapseBtn = null;



/**

 * Log reader title header element.

 *

 * @type HTMLElement

 * @private

 */

YAHOO.widget.LogReader.prototype._title = null;



/**

 * Log reader console element.

 *

 * @type HTMLElement

 * @private

 */

YAHOO.widget.LogReader.prototype._consoleEl = null;



/**

 * Log reader footer element.

 *

 * @type HTMLElement

 * @private

 */

YAHOO.widget.LogReader.prototype._ftEl = null;



/**

 * Log reader buttons container element.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -