import { type ColumnDef } from "@tanstack/react-table"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { FileText } from "lucide-react"; import { UploadDialog } from "@/components/upload-dialog"; import { VersionTable } from "@/components/version-table"; import { UpdateButton } from "@/components/update-button"; import { RoomSelectDialog } from "@/components/room-select-dialog"; import type { AxiosProgressEvent } from "axios"; import { useState } from "react"; interface AppManagerTemplateProps { title: string; description: string; data: TData[]; isLoading: boolean; columns: ColumnDef[]; onUpload: ( fd: FormData, config?: { onUploadProgress?: (e: AxiosProgressEvent) => void } ) => Promise; onUpdate?: (roomName: string) => void; updateLoading?: boolean; onTableInit?: (table: any) => void; rooms: string[]; } export function AppManagerTemplate({ title, description, data, isLoading, columns, onUpload, onUpdate, updateLoading, onTableInit, rooms, }: AppManagerTemplateProps) { const [dialogOpen, setDialogOpen] = useState(false); const handleUpdateClick = () => { if (rooms && onUpdate) { setDialogOpen(true); } }; return (

{title}

{description}

Lịch sử phiên bản Tất cả các phiên bản đã tải lên {onUpdate && ( onUpdate("All")} loading={updateLoading} label="Cập nhật tất cả thiết bị" /> )} {rooms && onUpdate && ( setDialogOpen(false)} rooms={rooms} onConfirm={(roomName) => { onUpdate(roomName); setDialogOpen(false); }} /> )}
); }