import { Download, FileText, FileJson, FileSpreadsheet } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { exportToCSV, exportToJSON, exportToPDF, generateReportData } from '@/lib/exportUtils'; import { toast } from '@/hooks/use-toast'; interface ExportMenuProps { elementId?: string; filename?: string; } const ExportMenu = ({ elementId = 'export-content', filename = 'cyber-report' }: ExportMenuProps) => { const handleExportCSV = () => { const data = generateReportData(); exportToCSV(data.threats, `${filename}-threats`); toast({ title: "CSV eksporteret", description: "Threats data er downloadet" }); }; const handleExportJSON = () => { const data = generateReportData(); exportToJSON(data, filename); toast({ title: "JSON eksporteret", description: "Fuld rapport er downloadet" }); }; const handleExportPDF = () => { exportToPDF(elementId, filename); toast({ title: "PDF eksporteret", description: "Print dialog åbnet" }); }; const handleExportFullReport = () => { const data = generateReportData(); // Create a comprehensive report const reportHTML = `

Sikkerhedsoversigt

${data.summary.totalThreats}
Total Trusler
${data.summary.criticalAlerts}
Kritiske Alerts
${data.summary.resolvedIncidents}
Løste Incidents
${data.summary.activeMonitors}
Aktive Monitors

Seneste Trusler

${data.threats.map(t => ` `).join('')}
ID Navn Severity Status Tidspunkt
${t.id} ${t.name} ${t.severity} ${t.status} ${new Date(t.timestamp).toLocaleString('da-DK')}

Regional Oversigt

${data.regions.map(r => ` `).join('')}
Region Trusler Incidents
${r.region} ${r.threats} ${r.incidents}
`; // Create temp element for PDF export const tempDiv = document.createElement('div'); tempDiv.id = 'temp-export-content'; tempDiv.innerHTML = reportHTML; tempDiv.style.position = 'absolute'; tempDiv.style.left = '-9999px'; document.body.appendChild(tempDiv); exportToPDF('temp-export-content', `${filename}-full`); setTimeout(() => { document.body.removeChild(tempDiv); }, 1000); }; return ( Eksporter CSV Eksporter JSON Eksporter PDF (denne side) Fuld rapport (PDF) ); }; export default ExportMenu;