From f2af0be1e116261aa175f5c56bf70a54643e4168 Mon Sep 17 00:00:00 2001 From: MacRimi Date: Sat, 18 Oct 2025 17:36:08 +0200 Subject: [PATCH] Update system-logs.tsx --- AppImage/components/system-logs.tsx | 234 +++++++++++++++++++++++++--- 1 file changed, 210 insertions(+), 24 deletions(-) diff --git a/AppImage/components/system-logs.tsx b/AppImage/components/system-logs.tsx index 1310eb3..35ee7f3 100644 --- a/AppImage/components/system-logs.tsx +++ b/AppImage/components/system-logs.tsx @@ -26,7 +26,6 @@ import { Mail, Menu, Terminal, - CalendarDays, } from "lucide-react" import { useState, useEffect } from "react" @@ -108,7 +107,7 @@ export function SystemLogs() { const [serviceFilter, setServiceFilter] = useState("all") const [activeTab, setActiveTab] = useState("logs") - const [displayedLogsCount, setDisplayedLogsCount] = useState(500) + const [displayedLogsCount, setDisplayedLogsCount] = useState(50) // Increased from 500 to 50 for initial load, will use pagination const [selectedLog, setSelectedLog] = useState(null) const [selectedEvent, setSelectedEvent] = useState(null) @@ -422,6 +421,48 @@ export function SystemLogs() { } } + const logsOnly: CombinedLogEntry[] = logs + .map((log) => ({ ...log, isEvent: false, sortTimestamp: new Date(log.timestamp).getTime() })) + .sort((a, b) => b.sortTimestamp - a.sortTimestamp) + + const eventsOnly: CombinedLogEntry[] = events + .map((event) => ({ + timestamp: event.starttime, + level: event.level, + service: event.type, + message: `${event.type}${event.vmid ? ` (VM/CT ${event.vmid})` : ""} - ${event.status}`, + source: `Node: ${event.node} • User: ${event.user}`, + isEvent: true, + eventData: event, + sortTimestamp: new Date(event.starttime).getTime(), + })) + .sort((a, b) => b.sortTimestamp - a.sortTimestamp) + + // Filter logs only + const filteredLogsOnly = logsOnly.filter((log) => { + const matchesSearch = + log.message.toLowerCase().includes(searchTerm.toLowerCase()) || + log.service.toLowerCase().includes(searchTerm.toLowerCase()) + const matchesLevel = levelFilter === "all" || log.level === levelFilter + const matchesService = serviceFilter === "all" || log.service === serviceFilter + + return matchesSearch && matchesLevel && matchesService + }) + + // Filter events only + const filteredEventsOnly = eventsOnly.filter((event) => { + const matchesSearch = + event.message.toLowerCase().includes(searchTerm.toLowerCase()) || + event.service.toLowerCase().includes(searchTerm.toLowerCase()) + const matchesLevel = levelFilter === "all" || event.level === levelFilter + const matchesService = serviceFilter === "all" || event.service === serviceFilter + + return matchesSearch && matchesLevel && matchesService + }) + + const displayedLogsOnly = filteredLogsOnly.slice(0, displayedLogsCount) + const displayedEventsOnly = filteredEventsOnly.slice(0, displayedLogsCount) + const combinedLogs: CombinedLogEntry[] = [ ...logs.map((log) => ({ ...log, isEvent: false, sortTimestamp: new Date(log.timestamp).getTime() })), ...events.map((event) => ({ @@ -609,28 +650,28 @@ export function SystemLogs() { case "logs": return case "events": - return + return case "backups": return case "notifications": return default: - return + return } } const getSectionLabel = (section: string) => { switch (section) { case "logs": - return "Logs & Events" + return "Logs" case "events": - return "Recent Events" + return "Events" case "backups": return "Backups" case "notifications": return "Notifications" default: - return section + return "Logs" } } @@ -717,12 +758,16 @@ export function SystemLogs() { - + - + - Logs & Events + Logs + + + + Events @@ -749,19 +794,30 @@ export function SystemLogs() {
+ +
+ + +
+ {displayedEventsOnly.map((event, index) => ( +
{ + setSelectedEvent(event.eventData) + setIsEventModalOpen(true) + }} + > +
+ + {getLevelIcon(event.level)} + {event.level.toUpperCase()} + + + + EVENT + +
+ +
+
+
+ {event.service} +
+
+ {event.timestamp} +
+
+
{event.message}
+
{event.source}
+
+
+ ))} + + {displayedEventsOnly.length === 0 && ( +
+ +

No events found matching your criteria

+
+ )} + + {displayedEventsOnly.length > 0 && displayedEventsOnly.length < filteredEventsOnly.length && ( +
+ +
+ )} +
+
+ + {/* Backups Tab */}
@@ -1113,15 +1301,17 @@ export function SystemLogs() { - + Event Details Complete information about this event - {selectedEvent && ( -
+ + {selectedEvent && ( +
+
{getLevelIcon(selectedEvent.level)} {selectedEvent.level.toUpperCase()} @@ -1131,10 +1321,6 @@ export function SystemLogs() { EVENT
- )} - - {selectedEvent && ( -
Message