keeweb/app/scripts/views/settings/settings-logs-view.js

56 lines
1.6 KiB
JavaScript
Raw Normal View History

2019-09-16 20:42:33 +02:00
import { View } from 'framework/views/view';
2019-09-15 14:16:32 +02:00
import { StringFormat } from 'util/formatting/string-format';
import { Logger } from 'util/logger';
2019-09-16 20:40:20 +02:00
import template from 'templates/settings/settings-logs-view.hbs';
2016-06-04 10:31:06 +02:00
2019-09-16 20:40:20 +02:00
class SettingsLogsView extends View {
parent = '.settings__general-advanced';
template = template;
2016-06-04 10:31:06 +02:00
2017-04-15 20:32:43 +02:00
render() {
2020-06-01 16:53:51 +02:00
const logs = Logger.getLast().map((item) => ({
2016-07-17 13:30:38 +02:00
level: item.level,
2019-08-16 23:05:39 +02:00
msg:
'[' +
2019-09-15 08:11:11 +02:00
StringFormat.padStr(item.level.toUpperCase(), 5) +
2019-08-16 23:05:39 +02:00
'] ' +
2020-06-01 16:53:51 +02:00
item.args.map((arg) => this.mapArg(arg)).join(' ')
2016-07-17 13:30:38 +02:00
}));
2019-09-16 20:40:20 +02:00
super.render({ logs });
}
2017-04-15 20:32:43 +02:00
mapArg(arg) {
if (arg === null) {
return 'null';
}
if (arg === undefined) {
return 'undefined';
}
2017-04-15 20:34:58 +02:00
if (arg === '') {
return '""';
}
2017-04-15 20:32:43 +02:00
if (!arg || !arg.toString() || typeof arg !== 'object') {
return arg ? arg.toString() : arg;
}
if (arg instanceof Array) {
2020-06-01 16:53:51 +02:00
return '[' + arg.map((item) => this.mapArg(item)).join(', ') + ']';
2017-04-15 20:32:43 +02:00
}
let str = arg.toString();
if (str === '[object Object]') {
const cache = [];
str = JSON.stringify(arg, (key, value) => {
if (typeof value === 'object' && value !== null) {
if (cache.indexOf(value) !== -1) {
return;
}
cache.push(value);
}
return value;
});
}
return str;
2016-06-04 10:31:06 +02:00
}
2019-09-16 20:40:20 +02:00
}
2016-06-04 10:31:06 +02:00
2019-09-15 14:16:32 +02:00
export { SettingsLogsView };