From ef45681ce3bac8832e43de6610c649743d9711f7 Mon Sep 17 00:00:00 2001 From: Estrella Pan Date: Sun, 25 Jan 2026 10:43:43 +0100 Subject: [PATCH] feat(ui): add log level filter in log view Allow filtering logs by level (INFO, WARNING, ERROR, DEBUG) with color-coded filter chips. Multiple levels can be selected simultaneously. Co-Authored-By: Claude Opus 4.5 --- webui/src/i18n/en.json | 11 ++- webui/src/i18n/zh-CN.json | 11 ++- webui/src/pages/index/log.vue | 173 +++++++++++++++++++++++++++++++++- 3 files changed, 192 insertions(+), 3 deletions(-) diff --git a/webui/src/i18n/en.json b/webui/src/i18n/en.json index 2173f8ba..8830c987 100644 --- a/webui/src/i18n/en.json +++ b/webui/src/i18n/en.json @@ -147,8 +147,10 @@ }, "log": { "bug_repo": "Bug Report", + "clear_filters": "Clear", "contact_info": "Contact Infomation", "copy": "Copy", + "filter_level": "Level", "go": "Go", "join": "Join", "reset": "Reset", @@ -241,13 +243,20 @@ "sun": "Sun" }, "unknown": "Unknown", + "unknown_title": "Unknown Title", "today": "Today", "empty": "No anime", "refresh": "Refresh schedule", "no_data": "No schedule data available", + "loading": "Loading...", + "tracked": "Tracked", + "tracked_count": "{count} tracked", + "total_count": "{count} total", + "search_title": "Search and Add Anime", + "no_search_results": "No results found. Try different keywords.", "empty_state": { "title": "No Schedule Yet", - "subtitle": "Add anime from RSS to see your weekly schedule" + "subtitle": "Click refresh to fetch this season's broadcast data" } }, "setup": { diff --git a/webui/src/i18n/zh-CN.json b/webui/src/i18n/zh-CN.json index 88b530c1..53655a45 100644 --- a/webui/src/i18n/zh-CN.json +++ b/webui/src/i18n/zh-CN.json @@ -147,8 +147,10 @@ }, "log": { "bug_repo": "Bug 反馈", + "clear_filters": "清除", "contact_info": "联系方式", "copy": "复制", + "filter_level": "级别", "go": "访问", "join": "加入", "reset": "重置", @@ -241,13 +243,20 @@ "sun": "日" }, "unknown": "未知", + "unknown_title": "未知标题", "today": "今天", "empty": "今日无番", "refresh": "刷新放送表", "no_data": "暂无放送数据", + "loading": "加载中...", + "tracked": "已追踪", + "tracked_count": "已追踪 {count} 部", + "total_count": "共 {count} 部", + "search_title": "搜索并添加番剧", + "no_search_results": "未找到搜索结果,请尝试其他关键词", "empty_state": { "title": "暂无放送表", - "subtitle": "从 RSS 添加番剧后即可查看每周放送时间" + "subtitle": "点击刷新按钮获取本季度放送数据" } }, "setup": { diff --git a/webui/src/pages/index/log.vue b/webui/src/pages/index/log.vue index 35fac0b3..f3977d3d 100644 --- a/webui/src/pages/index/log.vue +++ b/webui/src/pages/index/log.vue @@ -9,6 +9,12 @@ const { onUpdate, offUpdate, reset, copy, getLog } = useLogStore(); const { log } = storeToRefs(useLogStore()); const { version } = useAppInfo(); +// Filter states +const selectedLevels = ref([]); + +// Log levels +const logLevels = ['INFO', 'WARNING', 'ERROR', 'DEBUG']; + const formatLog = computed(() => { const list = log.value .trim() @@ -30,6 +36,31 @@ const formatLog = computed(() => { }); }); +// Filtered logs based on selected levels +const filteredLog = computed(() => { + if (selectedLevels.value.length === 0) { + return formatLog.value; + } + return formatLog.value.filter((entry) => + selectedLevels.value.includes(entry.type) + ); +}); + +// Toggle level filter +function toggleLevel(level: string) { + const index = selectedLevels.value.indexOf(level); + if (index === -1) { + selectedLevels.value.push(level); + } else { + selectedLevels.value.splice(index, 1); + } +} + +// Clear all filters +function clearFilters() { + selectedLevels.value = []; +} + function typeColor(type: string) { const M: Record = { INFO: 'var(--color-primary)', @@ -74,9 +105,38 @@ onDeactivated(() => {
+ +
+
+ {{ $t('log.filter_level') }} +
+ +
+
+ + +
+
-