import React, { useState, useMemo } from 'react'; import { PieChart, Pie, Sector, Label } from 'recharts'; import { PieSectorDataItem } from "recharts/types/polar/Pie"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/Components/ui/card"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/Components/ui/select"; import {SecuritySummaryReportResultType} from "@/types/security-summary"; export default function NumberOfVulnerabilitiesPieChart({reportData}: { reportData: SecuritySummaryReportResultType }) { const vulnerabilityData = useMemo(() => [ { name: 'Active Critical', value: reportData.n_vulns.active.critical, fill: 'hsl(var(--chart-1))' }, { name: 'Active High', value: reportData.n_vulns.active.high, fill: 'hsl(var(--chart-2))' }, { name: 'Active Medium', value: reportData.n_vulns.active.medium, fill: 'hsl(var(--chart-3))' }, { name: 'Passive High', value: reportData.n_vulns.passive.high, fill: 'hsl(var(--chart-4))' }, { name: 'Passive Medium', value: reportData.n_vulns.passive.medium, fill: 'hsl(var(--chart-5))' } ], [reportData]); const [activeMetric, setActiveMetric] = useState(vulnerabilityData[0].name); const activeIndex = useMemo( () => vulnerabilityData.findIndex((item) => item.name === activeMetric), [activeMetric, vulnerabilityData] ); const metrics = useMemo(() => vulnerabilityData.map((item) => item.name), [vulnerabilityData]); const chartConfig: any = { 'Active Critical': { label: "Active Critical", color: 'hsl(var(--chart-1))' }, 'Active High': { label: "Active High", color: 'hsl(var(--chart-2))' }, 'Active Medium': { label: "Active Medium", color: 'hsl(var(--chart-3))' }, 'Passive High': { label: "Passive High", color: 'hsl(var(--chart-4))' }, 'Passive Medium': { label: "Passive Medium", color: 'hsl(var(--chart-5))' } }; return (
Number of Vulnerabilities Vulnerabilities details
( )} >
); }