wuhu-torn-helper/src/ts/class/handler/ViewLogsHandler.ts
2023-04-17 16:53:44 +08:00

56 lines
2.1 KiB
TypeScript

import Log from "../Log";
import Popup from "../utils/Popup";
import CommonUtils from "../utils/CommonUtils";
import VIEW_LOGS_HANDLER_HTML from "../../../static/html/view_logs_handler.html";
import ClassName from "../../container/ClassName";
import { Injectable } from "../../container/Injectable";
import Logger from "../Logger";
@ClassName('ViewLogsHandler')
@Injectable()
export default class ViewLogsHandler {
constructor(
private readonly commonUtils: CommonUtils,
private readonly logger: Logger,
) {
}
public handle(): void {
let logCounter = this.logger.getCounter();
let pop = new Popup(VIEW_LOGS_HANDLER_HTML
.replace('{{}}', logCounter.info.toString())
.replace('{{}}', logCounter.warning.toString())
.replace('{{}}', logCounter.error.toString()), '查看日志');
window.setTimeout(() => {
let container = pop.element.querySelector('div');
let text = document.createElement('div');
let logs = Log.getLogs().split('\r\n');
logs.forEach(log => {
let p = document.createElement('p');
p.innerText = log;
if (log.slice(0, 10).includes('ERR')) {
p.style.backgroundColor = '#ff000080';
} else if (log.slice(0, 10).includes('WRN')) {
p.style.backgroundColor = '#ffff0080';
}
text.append(p);
});
pop.element.querySelector('button').addEventListener('click', () => window.setTimeout(() => {
this.commonUtils.exportTextFile(
'wuhu_log_' + Log.getTime()
.replace('[', '')
.replace(']', '')
.replace(' ', '')
.replace('.', '')
.replaceAll('-', '')
.replaceAll(':', '') + '.log',
[Log.getLogs()]
);
}, 0));
container.innerHTML = '';
container.append(text);
}, 0);
}
}