"use client" import { QueryFilters } from "@/components/data-grids/query-filters" import type { FilterQuery } from "@/components/reui/filters/filters-types" import type { Backup } from "@/lib/data" import { applyFilterQuery } from "@/lib/data-filters/apply-filter-query" import { BACKUP_FILTER_ACCESSORS, BACKUP_FILTER_FIELDS, } from "@/lib/data-filters/backup-filter-fields" import { DataPageCard } from "@/components/data-page-card" import { DataPageToolbar } from "@/components/data-page-toolbar" import { BackupsDataGrid } from "@/components/data-grids/backups-data-grid" import { Button } from "@/components/ui/button" import { PlusIcon } from "lucide-react" type KindFilter = "all" | "auto" | "manual" export function BackupsHistory({ backups, kindFilter, onKindFilterChange, search, onSearchChange, filters, onFiltersChange, onDownload, onRestore, onDelete, onCreate, canCreate = true, canRestore = true, canWrite = true, canDownload = true, }: { backups: Backup[] kindFilter: KindFilter onKindFilterChange: (value: KindFilter) => void search: string onSearchChange: (value: string) => void filters: FilterQuery onFiltersChange: (filters: FilterQuery) => void onDownload: (id: string, filename: string) => void onRestore: (backup: Backup) => void onDelete: (backup: Backup) => void canCreate?: boolean canRestore?: boolean canWrite?: boolean canDownload?: boolean onCreate: () => void }) { const autoCount = backups.filter((b) => b.kind === "auto").length const manualCount = backups.filter((b) => b.kind === "manual").length const byKind = kindFilter === "all" ? backups : backups.filter((b) => b.kind === kindFilter) const q = search.trim().toLowerCase() const searched = q ? byKind.filter((b) => [b.filename, b.server, b.notes].some((v) => v.toLowerCase().includes(q)), ) : byKind const filtered = applyFilterQuery(searched, filters, BACKUP_FILTER_ACCESSORS) const isEmptyAll = backups.length === 0 return ( } search={search} onSearchChange={onSearchChange} searchPlaceholder="Поиск по файлу, серверу, заметке…" countLabel={`${filtered.length} бэкапов`} /> Новый бэкап ) : null } /> ) }