/** @module loggerService */ __PluginManager__.register('loggerService', function(module, exports, require, global){ var support = require('support'); var Logger = require('Logger'); var lightMap = [ {class: 'kit-logger-row--success', keys: ['pass', 'success']}, {class: 'kit-logger-row--warning', keys: ['warn', 'warning']}, {class: 'kit-logger-row--error', keys: ['fail', 'error', 'errors']}, ]; var getLightClass = function(key) { key = ''+key; var addClass = '', ar; for(var i=0; i < lightMap.length; i++){ ar = lightMap[i]['keys']; addClass = ar.includes(key)?lightMap[i]['class']:addClass; } return addClass; }; var htmlCollectionTemplater = '
'; // function dump(value) { // var rArray = []; // if(value === null) { // rArray[0] = 'null'; // } else { // rArray[0] = String(typeof value); // rArray[1] = emptyPHP(value)?'empty':''; // } // return rArray.join(' '); // }; function getRowNode(level, key, value, opClass = ''){ if(opClass) { opClass = ' kit-logger-row--'+opClass; } var lvlTemplate; key = String(key); value = String(value); lvlTemplate = level?'style="--logger-lvl:'+level+';" ':''; var result = ''+key+''+value+''; return support.makeNode(result); } function getItemObjectNode(id = ''){ var entity = '', css = '', style = ''; if(id) { css = ''; entity = ' data-entity-id="'+id+'"'; style = ' style="display: none"' } return support.makeNode(''+css+''); } /** * @extends kit.Logger * @class LoggerService * @memberOf kit */ var LoggerService = function() { Logger.prototype.constructor.apply(this, arguments); this.onLog.push(this.__log); }; support.extend(LoggerService.prototype, Logger.prototype); LoggerService.prototype.setHtmlCollection = function (node) { /** * @type {HTMLElement} */ this.__htmlCollection = node || document.getElementById('kit-logger') || document.querySelector('.kit-logger') || support.makeNode(__htmlCollectionTemplater); if((this.__htmlCollection instanceof HTMLElement) && !this.__htmlCollection.parentElement) { document.body.appendChild(this.__htmlCollection) } }; LoggerService.prototype.__row = function(message, lvl = 0, opClass = '') { if (!this.__htmlCollection) { this.setHtmlCollection(); } var log = this.__htmlCollection; function setObjectValue(log, lvl, key, value, opClass, depth = 3, openDepth = 1, isRoot = true) { var rowChild, isObj = support.isObject(value), id = isObj?support.uniqueId():'', val = (isObj&&depth)?'':value, inp, j, len = isObj?Object.keys(value).length:0; if(!isRoot || (isRoot && !isObj)) { log.appendChild(getRowNode(lvl, key, '' + val + (isObj?(' ['+len+']'):''), opClass)); } if(isObj&&depth) { !isRoot && ++lvl; depth = Math.max(0, depth - 1); log.appendChild(inp = support.makeNode('')); inp.checked = !!openDepth; openDepth = Math.max(0, openDepth - 1); log.appendChild(rowChild = getItemObjectNode(id)); for(j in value) { if(value.hasOwnProperty(j)) setObjectValue(rowChild, lvl, j, value[j], opClass, depth, openDepth, false); } } } setObjectValue(log, lvl, '', message, opClass, 6, 3); log.scrollTop = log.scrollHeight; }; LoggerService.prototype.__log = function(data = { lvl: 0, message: '', context: [], type: '' }){ lvl = support.toNumber(data.lvl); var opClass = String(data.type); this.__row(data.message, lvl, opClass); if(support.isObject(data.context)) this.__row(data.context, lvl+1); }; /** * @memberOf kit.service * @class logger **/ var logger = new LoggerService(); global.service.logger = logger; module.exports = logger; });