Signed-off-by: gearnode <bryan@frimin.fr>
This commit is contained in:
gearnode
2025-02-12 18:01:35 -08:00
parent dea502f5ca
commit 2595a4ec28

View File

@@ -6,19 +6,7 @@ import {
usePreloadedQuery, usePreloadedQuery,
useQueryLoader, useQueryLoader,
} from "react-relay"; } from "react-relay";
import { import { Shield, FileText, Clock } from "lucide-react";
Building2,
Computer,
Mail,
Shield,
Network,
Database,
FileText,
Share2,
AlertTriangle,
Users,
Clock,
} from "lucide-react";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Progress } from "@/components/ui/progress"; import { Progress } from "@/components/ui/progress";
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
@@ -58,21 +46,26 @@ function FrameworkOverviewPageContent({
const controls = framework.controls?.edges.map((edge) => edge?.node) ?? []; const controls = framework.controls?.edges.map((edge) => edge?.node) ?? [];
// Group controls by their category // Group controls by their category
const controlsByCategory = controls.reduce((acc, control) => { const controlsByCategory = controls.reduce(
(acc, control) => {
if (!control?.category) return acc; if (!control?.category) return acc;
if (!acc[control.category]) { if (!acc[control.category]) {
acc[control.category] = []; acc[control.category] = [];
} }
acc[control.category].push(control); acc[control.category].push(control);
return acc; return acc;
}, {} as Record<string, typeof controls>); },
{} as Record<string, typeof controls>,
);
const controlCards = Object.entries(controlsByCategory).map(([category, controls]) => ({ const controlCards = Object.entries(controlsByCategory).map(
([category, controls]) => ({
title: category, title: category,
controls, controls,
completed: controls.filter((c) => c?.state === "IMPLEMENTED").length, completed: controls.filter((c) => c?.state === "IMPLEMENTED").length,
total: controls.length, total: controls.length,
})); }),
);
const totalImplemented = controls.filter( const totalImplemented = controls.filter(
(c) => c?.state === "IMPLEMENTED", (c) => c?.state === "IMPLEMENTED",