Home Reference Source Test

packages/causality-log/src/termLogger.js

import { default as BaseLogger } from './baseLogger';
import { default as LogNodeMixins } from './termLogger.mixins.node';
import { default as LogWebMixins } from './termLogger.mixins.web';
import { platform } from 'causal-net.utils';
import { vivid, PlotMixins } from './Vivid/init';
/**
 * This TermLogger provide isomorphic logger
 * { mixWith : { 'node': [LogNodeMixins], 'web': [WebNodeMixins] } }
 * @class TermLogger
 * @extends BaseLogger
 * @example
 * [EXAMPLE ../examples/log.babel.js]
 */
class TermLogger extends platform.mixWith(BaseLogger, 
        { node:[LogNodeMixins, PlotMixins], 
          web:[LogWebMixins, PlotMixins] } ){
    constructor(vivid){
        super();
        /**@private {Array} stack of groups */
        this.groupStack = [];
        this.Plot = vivid;
    }
    
    groupBegin(name){   
        let group = {name, beginTime: new Date()};
        this.groupStack.push(group);
        let indentSpace = '';
        
        this.log(`**********************************\n${indentSpace}${group.name}: begin at ${group.beginTime}`);
    }
    groupEnd(){
        if(this.groupStack.length > 0){
            let group = this.groupStack.pop();
            let indentSpace = '';
            this.log(`${indentSpace}${group.name}: end after ${(new Date() - group.beginTime)} (ms)
                        \n**********************************`);
        }
    }
}

let termLogger = new TermLogger(vivid);
export default termLogger;