From a059127c07d726a27ac11060033e21d0350959cc Mon Sep 17 00:00:00 2001
From: "Shishkevich D." <135337715+shishkevichd@users.noreply.github.com>
Date: Sun, 9 Mar 2025 12:32:45 +0000
Subject: [PATCH] chore: add message repeat counter
---
web/html/xui/index.html | 102 +++++++++++++++++++++++-----------------
1 file changed, 60 insertions(+), 42 deletions(-)
diff --git a/web/html/xui/index.html b/web/html/xui/index.html
index 7677d5bd..8b4b2e58 100644
--- a/web/html/xui/index.html
+++ b/web/html/xui/index.html
@@ -332,6 +332,7 @@
[[ log.sender ]]
[[ log.date ]]
[[ log.level ]]
+ [[ log.repeat ]]
@@ -492,53 +493,70 @@
this.logs = this.getLogs(logs);
},
getLogs(logs) {
+ const seen = {}
+
if (logs === null) return []
- return logs.map((log) => {
- let message;
- let level;
- let date;
- let sender;
+ return logs
+ .map((log) => {
+ let message;
+ let level;
+ let date;
+ let sender;
- if (log.includes("XRAY:")) {
- sender = "xray"
+ if (log.includes("XRAY:")) {
+ sender = "xray"
+ } else {
+ sender = "3x-ui"
+ }
+
+ if (sender === "xray") {
+ if (log.toLowerCase().includes("failed")) {
+ level = "err"
+ } else if (log.includes("[Warning]")) {
+ level = "warning"
+ } else if (log.includes("[Info]")) {
+ level = "info"
+ } else {
+ level = "debug"
+ }
+ } else {
+ if (log.includes("ERROR") || log.toLowerCase().includes("failed")) {
+ level = "err"
+ } else if (log.includes("DEBUG")) {
+ level = "debug"
+ } else if (log.includes("INFO")) {
+ level = "info"
+ }
+ }
+
+ // date = ``
+ // message = `${logs.split("—")[1]}`
+
+ date = `${log.split(" ")[0]} ${log.split(" ")[1]}`
+ message = `${log.split("——")[1]}`
+
+ return {
+ message: message,
+ level: level,
+ date: date,
+ sender: sender
+ }
+ })
+ .reduce((result, item) => {
+ const { message } = item;
+ if (seen.hasOwnProperty(message)) {
+ // Если элемент с таким message уже встречался, увеличим счётчик 'repeat'
+ seen[message].repeat += 1;
} else {
- sender = "3x-ui"
+ // Если элемента с таким message ещё нет, добавляем копию объекта и инициализируем repeat как 0
+ const newItem = { ...item, repeat: 0 };
+ seen[message] = newItem;
+ result.push(newItem);
}
-
- if (sender === "xray") {
- if (log.toLowerCase().includes("failed")) {
- level = "err"
- } else if (log.includes("[Warning]")) {
- level = "warning"
- } else if (log.includes("[Info]")) {
- level = "info"
- } else {
- level = "debug"
- }
- } else {
- if (log.includes("ERROR") || log.toLowerCase().includes("failed")) {
- level = "err"
- } else if (log.includes("DEBUG")) {
- level = "debug"
- } else if (log.includes("INFO")) {
- level = "info"
- }
- }
-
- // date = ``
- // message = `${logs.split("—")[1]}`
-
- date = `${log.split(" ")[0]} ${log.split(" ")[1]}`
- message = `${log.split("——")[1]}`
-
- return {
- message: message,
- level: level,
- date: date,
- sender: sender
- }
- }).reverse()
+ return result;
+ }, [])
+ .reverse()
},
hide() {
this.visible = false;