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
| ID |
Navn |
Severity |
Status |
Tidspunkt |
${data.threats.map(t => `
| ${t.id} |
${t.name} |
${t.severity} |
${t.status} |
${new Date(t.timestamp).toLocaleString('da-DK')} |
`).join('')}
Regional Oversigt
| Region |
Trusler |
Incidents |
${data.regions.map(r => `
| ${r.region} |
${r.threats} |
${r.incidents} |
`).join('')}
`;
// 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;