"use client" import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogTitle, } from "@/components/ui/alert-dialog" import type { FlowPurgeDto } from "@mmapp/contracts/traffic-flow" import { AlertCircleIcon, LoaderCircleIcon } from "lucide-react" export function formatFlowPurgeResult(result: FlowPurgeDto): string { const rows = result.deleted.buckets + result.deleted.minuteStats + result.deleted.minuteDims + result.deleted.dailyDims + (result.deleted.hourFacts ?? 0) + (result.deleted.dailyFacts ?? 0) return `Удалено строк: ${rows}.` } export function NetflowPurgeConfirm({ open, busy, onConfirm, onCancel, }: { open: boolean busy?: boolean onConfirm: () => void onCancel: () => void }) { return ( { if (!v && !busy) onCancel() }}> Сбросить данные NetFlow? Будут удалены сессии и агрегаты (minute/daily) в PostgreSQL. Ключи WireGuard, пиры JH, настройки коллектора и кэш RIPE сохранятся. На время операции приём IPFIX остановится. Отмена { event.preventDefault(); onConfirm() }} > {busy ? : null} {busy ? "Сброс…" : "Сбросить"} ) }