UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

136 lines (105 loc) 3.25 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Sebastian Werner (wpbasti) ************************************************************************ */ /** * This appender is used to log to an existing DOM element */ qx.Class.define("qx.log.appender.Element", { extend : qx.core.Object, /* ***************************************************************************** CONSTRUCTOR ***************************************************************************** */ /** * @param element {Element} DOM element to use for log output. */ construct : function(element) { this.base(arguments); var style = [ '.qxappender .level-debug{background:white}', '.qxappender .level-info{background:#DEEDFA}', '.qxappender .level-warn{background:#FFF7D5}', '.qxappender .level-error{background:#FFE2D5}', '.qxappender .level-user{background:#E3EFE9}', '.qxappender .type-string{color:black;font-weight:normal;}', '.qxappender .type-number{color:#155791;font-weight:normal;}', '.qxappender .type-boolean{color:#15BC91;font-weight:normal;}', '.qxappender .type-array{color:#CC3E8A;font-weight:bold;}', '.qxappender .type-map{color:#CC3E8A;font-weight:bold;}', '.qxappender .type-key{color:#565656;font-style:italic}', '.qxappender .type-class{color:#5F3E8A;font-weight:bold}', '.qxappender .type-instance{color:#565656;font-weight:bold}', '.qxappender .type-stringify{color:#565656;font-weight:bold}' ]; // Include stylesheet qx.bom.Stylesheet.createElement(style.join("")); // Finally register to log engine qx.log.Logger.register(this); }, /* ***************************************************************************** MEMBERS ***************************************************************************** */ members : { __element : null, /** * Configures the DOM element to use. * * @param element {Element} DOM element to log to */ setElement : function(element) { // Clear old element this.clear(); // Add classname if (element) { qx.bom.element.Class.add(element, "qxappender"); } // Link to element this.__element = element; }, /** * Clears the current output. * */ clear : function() { var elem = this.__element; // Remove all messages if (elem) { elem.innerHTML = ""; } }, /** * Processes a single log entry * * @signature function(entry) * @param entry {Map} The entry to process */ process : function(entry) { var elem = this.__element; if (!elem) { return; } // Append new content elem.appendChild(qx.log.appender.Util.toHtml(entry)); // Scroll down elem.scrollTop = elem.scrollHeight; } } });