Dev: Error log toggle effect

This commit is contained in:
surunzi
2016-08-25 23:53:40 +08:00
parent 9e6fb35491
commit c783f9eca6
5 changed files with 44 additions and 11 deletions

View File

@@ -98,6 +98,21 @@ export default class Log
delete this.args;
this._formattedMsg = msg;
}
static click(type, $el)
{
switch (type)
{
case 'log':
case 'warn':
case 'info':
return 'src';
case 'error':
$el.find('.eruda-stack').toggleClass('eruda-hidden');
break;
}
return 'handled';
}
}
function formatTable(args)
@@ -147,7 +162,7 @@ function formatErr(err)
lines = lines.filter(val => val.indexOf('eruda') < 0);
var stack = `<div class="eruda-stack">${lines.slice(1).join('<br/>')}</div>`;
var stack = `<div class="eruda-stack eruda-hidden">${lines.slice(1).join('<br/>')}</div>`;
return msg + stack.replace(regJsUrl, match => `<a href="${match}" target="_blank">${match}</a>`);
}

View File

@@ -4,7 +4,7 @@
{{time}} {{from}}
</div>
{{/if}}
<div class="eruda-{{type}} eruda-log-item" data-idx="{{idx}}">
<div class="eruda-{{type}} eruda-log-item" data-idx="{{idx}}" data-type="{{type}}">
{{#if icon}}
<div class="eruda-icon-container">
<span class="eruda-icon eruda-icon-{{icon}}"></span>

View File

@@ -222,13 +222,22 @@ export default class Logger extends util.Emitter
this._$el.on('click', '.eruda-log-item', function ()
{
var idx = util.$(this).data('idx'),
src = self._renderLogs[idx].src;
let $el = util.$(this),
idx = $el.data('idx'),
type = $el.data('type');
try {
if (!util.isObj(src)) src = JSON.parse(src);
self.emit('viewJson', src);
} catch (e) {}
let action = Log.click(type, $el);
switch (action)
{
case 'viewSrc':
let src = self._renderLogs[idx].src;
try {
if (!util.isObj(src)) src = JSON.parse(src);
self.emit('viewJson', src);
} catch (e) {}
break;
}
});
}
}

View File

@@ -29,6 +29,10 @@
}
}
.hidden {
display: none;
}
.blue {
color: $blue;
}

View File

@@ -31,12 +31,17 @@ describe('log', function ()
expect($tool.find('.eruda-html')).toContainElement('span.color-blue');
});
it('timer', function ()
it('timing', function ()
{
tool.clear().time('eruda');
tool.clear().timeEnd('eruda');
expect($tool.find('.eruda-html')).toHaveText(/eruda: \d+ms/);
});
it('error', function ()
{
tool.clear().error(new Error('error test'));
});
});
describe('substitution', function ()
@@ -103,10 +108,10 @@ describe('filter', function ()
// Test case from https://github.com/liriliri/eruda/issues/14
it('function', function ()
{
tool.clear().filter(function (log)
/*tool.clear().filter(function (log)
{
return !(log.type === 'error' && /deprecated(.|\n)*stringify/.test(log.src.stack));
});
});*/
var obj = {};
Object.defineProperty(obj, 'a', {