From e18ee08b70a3d4ac6803408fe16b83f690f3e796 Mon Sep 17 00:00:00 2001 From: MacRimi Date: Sat, 11 Oct 2025 18:13:35 +0200 Subject: [PATCH] Update AppImge --- AppImage/components/system-logs.tsx | 61 +++++++++++++++++++++++------ AppImage/components/ui/calendar.tsx | 56 ++++++++++++++++++++++++++ AppImage/components/ui/popover.tsx | 31 +++++++++++++++ 3 files changed, 137 insertions(+), 11 deletions(-) create mode 100644 AppImage/components/ui/calendar.tsx create mode 100644 AppImage/components/ui/popover.tsx diff --git a/AppImage/components/system-logs.tsx b/AppImage/components/system-logs.tsx index 4de227c..7c0722c 100644 --- a/AppImage/components/system-logs.tsx +++ b/AppImage/components/system-logs.tsx @@ -9,6 +9,8 @@ import { ScrollArea } from "./ui/scroll-area" import { Tabs, TabsContent, TabsList, TabsTrigger } from "./ui/tabs" import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "./ui/dialog" import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from "./ui/sheet" +import { Popover, PopoverContent, PopoverTrigger } from "./ui/popover" +import { Calendar } from "./ui/calendar" import { FileText, Search, @@ -20,7 +22,7 @@ import { Database, Activity, HardDrive, - Calendar, + CalendarIcon, RefreshCw, Bell, Mail, @@ -29,6 +31,8 @@ import { CalendarDays, } from "lucide-react" import { useState, useEffect } from "react" +import type { DateRange } from "react-day-picker" +import { format } from "date-fns" interface Log { timestamp: string @@ -108,6 +112,7 @@ export function SystemLogs() { const [dateFilter, setDateFilter] = useState("now") const [customDays, setCustomDays] = useState("1") + const [dateRange, setDateRange] = useState(undefined) const getApiUrl = (endpoint: string) => { if (typeof window !== "undefined") { @@ -205,7 +210,11 @@ export function SystemLogs() { url += `&service=${serviceFilter}` } - if (dateFilter !== "now") { + if (dateFilter === "custom" && dateRange?.from && dateRange?.to) { + const fromDate = format(dateRange.from, "yyyy-MM-dd") + const toDate = format(dateRange.to, "yyyy-MM-dd") + url += `&from_date=${fromDate}&to_date=${toDate}` + } else if (dateFilter !== "now") { const daysAgo = dateFilter === "custom" ? Number.parseInt(customDays) : Number.parseInt(dateFilter) url += `&since_days=${daysAgo}` } @@ -437,6 +446,12 @@ export function SystemLogs() { } } + const getMinDate = () => { + const twoYearsAgo = new Date() + twoYearsAgo.setFullYear(twoYearsAgo.getFullYear() - 2) + return twoYearsAgo + } + if (loading && logs.length === 0) { return (
@@ -606,19 +621,43 @@ export function SystemLogs() { 1 week ago 2 weeks ago 1 month ago - Custom days + Custom range {dateFilter === "custom" && ( - setCustomDays(e.target.value)} - className="w-full sm:w-[120px] bg-background border-border" - min="1" - /> + + + + + + date > new Date() || date < getMinDate()} + /> + + )}