diff --git a/doc/TOOL_API.md b/doc/TOOL_API.md index 445de24..7b90736 100644 --- a/doc/TOOL_API.md +++ b/doc/TOOL_API.md @@ -52,7 +52,7 @@ Filter logs. |filter|string regexp function|Custom filter| ```javascript -console.filter('all'); // String parameter. Log, warn, debug, error is also supported. +console.filter('eruda'); console.filter(/^eruda/); console.filter(function (log) { diff --git a/package.json b/package.json index aca1008..099f0a4 100644 --- a/package.json +++ b/package.json @@ -63,8 +63,8 @@ "karma-sourcemap-loader": "^0.3.7", "karma-webpack": "^5.0.0", "licia": "^1.37.0", - "luna-console": "^1.2.0", - "luna-data-grid": "^0.3.2", + "luna-console": "^1.3.0", + "luna-data-grid": "^0.4.0", "luna-dom-viewer": "^1.2.3", "luna-modal": "^1.0.0", "luna-notification": "^0.1.4", diff --git a/src/Console/Console.js b/src/Console/Console.js index 842c942..d20ead2 100644 --- a/src/Console/Console.js +++ b/src/Console/Console.js @@ -3,12 +3,11 @@ import noop from 'licia/noop' import $ from 'licia/$' import Emitter from 'licia/Emitter' import uncaught from 'licia/uncaught' -import escapeRegExp from 'licia/escapeRegExp' import trim from 'licia/trim' import upperFirst from 'licia/upperFirst' import isHidden from 'licia/isHidden' -import lowerCase from 'licia/lowerCase' import isNull from 'licia/isNull' +import isArr from 'licia/isArr' import extend from 'licia/extend' import evalCss from '../lib/evalCss' import emitter from '../lib/emitter' @@ -88,6 +87,13 @@ export default class Console extends Tool { return this } + filter(filter) { + const $searchKeyword = this._$searchKeyword + const logger = this._logger + + $searchKeyword.text(filter) + logger.setOption('filter', trim(filter)) + } destroy() { this._logger.destroy() super.destroy() @@ -139,10 +145,10 @@ export default class Console extends Tool {
- All - Error - Warning - Info + All + Info + Warning + Error @@ -178,7 +184,7 @@ export default class Console extends Tool { let maxLogNum = cfg.get('maxLogNum') maxLogNum = maxLogNum === 'infinite' ? 0 : +maxLogNum - const $filter = this._$control.find(c('.filter')) + const $level = this._$control.find(c('.level')) const logger = new LunaConsole(this._$logs.get(0), { asyncRender: cfg.get('asyncRender'), maxNum: maxLogNum, @@ -188,16 +194,18 @@ export default class Console extends Tool { lazyEvaluation: cfg.get('lazyEvaluation'), }) - logger.on('optionChange', (name, filter) => { - if (name !== 'filter') { - return - } - $filter.each(function () { - const $this = $(this) - const isMatch = $this.data('filter') === filter + logger.on('optionChange', (name, val) => { + switch (name) { + case 'level': + $level.each(function () { + const $this = $(this) + const level = $this.data('level') + const isMatch = level === val || (level === 'all' && isArr(val)) - $this[isMatch ? 'addClass' : 'rmClass'](c('active')) - }) + $this[isMatch ? 'addClass' : 'rmClass'](c('active')) + }) + break + } }) if (cfg.get('overrideConsole')) this.overrideConsole() @@ -206,7 +214,7 @@ export default class Console extends Tool { } _exposeLogger() { const logger = this._logger - const methods = ['filter', 'html'].concat(CONSOLE_METHOD) + const methods = ['html'].concat(CONSOLE_METHOD) methods.forEach( (name) => @@ -223,29 +231,23 @@ export default class Console extends Tool { const $input = this._$input const $inputBtns = this._$inputBtns const $control = this._$control - const $searchKeyword = this._$searchKeyword const logger = this._logger const config = this.config $control .on('click', c('.clear-console'), () => logger.clear(true)) - .on('click', c('.filter'), function () { - $searchKeyword.text('') - logger.setOption('filter', $(this).data('filter')) + .on('click', c('.level'), function () { + let level = $(this).data('level') + if (level === 'all') { + level = ['verbose', 'info', 'warning', 'error'] + } + logger.setOption('level', level) }) .on('click', c('.search'), () => { LunaModal.prompt('Filter').then((filter) => { if (isNull(filter)) return - $searchKeyword.text(filter) - if (trim(filter) === '') { - logger.setOption('filter', 'all') - return - } - logger.setOption( - 'filter', - new RegExp(escapeRegExp(lowerCase(filter))) - ) + this.filter(filter) }) }) .on('click', c('.copy'), () => { diff --git a/src/Console/Console.scss b/src/Console/Console.scss index 9b8e90d..9008179 100644 --- a/src/Console/Console.scss +++ b/src/Console/Console.scss @@ -25,7 +25,7 @@ .icon-filter { right: 23px; } - .filter { + .level { cursor: pointer; font-size: $font-size-s; height: 20px;