/** @module logger */ __PluginManager__.register('Logger', function(module, exports, require, global){ function makeNode(html = '') { var nodeWrap = document.createElement('div'); nodeWrap.innerHTML = html; var r = nodeWrap.firstElementChild; r.remove(); return r; } var lightMap = [ {class: '', keys: []}, {class: 'text-danger', keys: []}, {class: 'text-secondary', keys: []}, ]; var getLightClass = function(key) { var addClass = '', ar; for(var i=0; i < lightMap.length; i++){ ar = lightMap[i]['keys']; addClass = ar.includes(String(key))?lightMap[i]['class']:addClass; } return addClass; }; var collectionTemplater = '
'; // 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 i = 0, lvlTemplate = '', setStyle = ''; level = Number(level); key = String(key); value = String(value); for(i = 0; i < level; i++){ lvlTemplate += ''; } var result = ''+lvlTemplate+''+key+''+value+''; return makeNode(result); } function args2array(arguments) { var args = []; for (var i = 0; i < arguments.length; i++) { args.push(arguments[i]); } return args; } /** * @class Logger * @memberOf kit */ var Logger = function() { this.collection = undefined; }; /** * @param node {HTMLElement} */ Logger.prototype.setCollection = function (node) { /** * @type {HTMLElement} */ this.collection = node || document.getElementById('kit-logger') || document.querySelector('.kit-logger') || makeNode(collectionTemplater); if((this.collection instanceof HTMLElement) && !this.collection.parentElement) { document.body.appendChild(this.collection) } }; Logger.prototype.__row = function(message, lvl = 0, opClass = '') { if (!this.collection) { this.setCollection(); } var log = this.collection; var k = 0, j = 0, i = 0, m = 0, rowNode; if(typeof message == 'object') { for(k in message) { log.appendChild(getRowNode(lvl, k, message[k], opClass)); if(typeof message[k] == 'object') { for(j in message[k]) { log.appendChild(getRowNode(lvl+1, j, message[k][j])); if(typeof message[k][j] == 'object') { for(i in message[k][j]) { log.appendChild(getRowNode(lvl+2, i, message[k][j][i])); if(typeof message[k][j][i] == 'object') { for(m in message[k][j][i]) { log.appendChild(getRowNode(lvl+3, m, message[k][j][i][m])); } } } } } } } } else { log.appendChild(getRowNode(lvl, '', message, opClass)); } log.scrollTop = log.scrollHeight; }; Logger.prototype.__log = function(lvl, type, message, context){ lvl = Number(lvl); var opClass = ''; if(arguments.length >= 2) opClass = type; if(arguments.length >= 3) this.__row(message, lvl, opClass); if(arguments.length >= 4) this.__row(context, lvl+1); }; Logger.prototype.emergency = function (message, context) { this.__log.apply(this, [0, 'emergency'].concat(args2array(arguments))); }; Logger.prototype.alert = function (message, context) { this.__log.apply(this, [0, 'alert'].concat(args2array(arguments))); }; Logger.prototype.critical = function (message, context) { this.__log.apply(this, [0, 'critical'].concat(args2array(arguments))); }; Logger.prototype.error = function (message, context) { this.__log.apply(this, [0, 'error'].concat(args2array(arguments))); }; Logger.prototype.warning = function (message, context) { this.__log.apply(this, [0, 'warning'].concat(args2array(arguments))); }; Logger.prototype.notice = function (message, context) { this.__log.apply(this, [0, 'notice'].concat(args2array(arguments))); }; Logger.prototype.info = function (message, context) { this.__log.apply(this, [0, 'info'].concat(args2array(arguments))); }; Logger.prototype.debug = function (message, context) { this.__log.apply(this, [0, 'debug'].concat(args2array(arguments))); }; Logger.prototype.success = function (message, context) { this.__log.apply(this, [0, 'success'].concat(args2array(arguments))); }; Logger.prototype.log = function (lvl = 0, message = '', context, type) { lvl = Number(lvl); var opClass = ''; if(arguments.length >= 4) opClass = type; if(arguments.length >= 2) this.__row(message, lvl, opClass); if(arguments.length >= 3) this.__row(context, lvl+1, opClass); }; return module.exports = Logger; });