fix(ui): показывать неизвестные поля сертификатов явно

This commit is contained in:
Denozordec committed 2026-10-01 13:32:41 +07:00
1 parent bb74eae64c
commit 17f03e7af1
6 files changed
+101 -36

No files matched your search

@@ -7,8 +7,9 @@ import {
type ColumnDef,
useTable,
} from "@tanstack/react-table"
import type { CertStatus, Server } from "@/lib/data"
import type { CertificateDto } from "@mmapp/contracts/certificates"
import type { Server } from "@/lib/data"
import type { CertificateView } from "@/lib/certificate-view"
import { CertDaysCell } from "@/components/data-grids/certificate-days-cell"
import { Flag } from "@/components/flag"
import { cn } from "@/lib/utils"
import { DataGridShell } from "@/components/data-grids/shared/data-grid-shell"
@@ -30,12 +31,19 @@ import {
ShieldAlertIcon,
ShieldCheckIcon,
ShieldOffIcon,
CircleHelpIcon,
} from "lucide-react"
const STATUS_CONFIG: Record<
CertStatus,
CertificateView["status"],
{ label: string; icon: ReactNode; badge: string; row: string }
> = {
unknown: {
label: "Неизвестен",
icon: <CircleHelpIcon className="size-4 text-muted-foreground" />,
badge: "bg-muted text-muted-foreground border-border",
row: "",
},
valid: {
label: "Действителен",
icon: <BadgeCheckIcon className="size-4 text-emerald-500" />,
@@ -56,34 +64,14 @@ const STATUS_CONFIG: Record<
},
}
function daysLeftColor(days: number): string {
if (days < 0) return "text-red-500"
if (days <= 7) return "text-red-500"
if (days <= 30) return "text-amber-500"
return "text-emerald-600 dark:text-emerald-400"
}
function CertDaysCell({ cert }: { cert: CertificateDto }) {
return (
<>
<div className="flex items-center justify-between text-xs mb-1">
<span className={cn("font-mono font-medium", daysLeftColor(cert.daysLeft))}>
{cert.daysLeft < 0 ? `Истёк ${-cert.daysLeft}д назад` : `${cert.daysLeft}д осталось`}
</span>
<span className="text-muted-foreground text-[10px]">{cert.validUntil}</span>
</div>
</>
)
}
interface CertificatesDataGridProps {
certificates: CertificateDto[]
certificates: CertificateView[]
serverMap: Map<string, Server>
isLoading?: boolean
}
function CertificatesDataGrid({ certificates, serverMap, isLoading }: CertificatesDataGridProps) {
const columns = useMemo<ColumnDef<DataGridFeatures, CertificateDto>[]>(
const columns = useMemo<ColumnDef<DataGridFeatures, CertificateView>[]>(
() => [
{
id: "name",
@@ -120,7 +108,7 @@ function CertificatesDataGrid({ certificates, serverMap, isLoading }: Certificat
headerTitle: "Сертификат",
headerClassName: DATA_GRID_CELL_PAD_FIRST,
cellClassName: DATA_GRID_CELL_PAD_FIRST,
expandedContent: (row: CertificateDto) => <CertificateExpandedDetail cert={row} />,
expandedContent: (row: CertificateView) => <CertificateExpandedDetail cert={row} />,
},
},
{