diff --git a/app/(prowler)/compliance/page.tsx b/app/(prowler)/compliance/page.tsx
index 7e47723441..8d3f8315f1 100644
--- a/app/(prowler)/compliance/page.tsx
+++ b/app/(prowler)/compliance/page.tsx
@@ -2,10 +2,12 @@ import { Spacer } from "@nextui-org/react";
import { Suspense } from "react";
import { getCompliancesOverview } from "@/actions/compliances";
+import { getScans } from "@/actions/scans";
import {
ComplianceCard,
ComplianceSkeletonGrid,
} from "@/components/compliance";
+import { DataCompliance } from "@/components/compliance/data-compliance";
import { FilterControls } from "@/components/filters";
import { Header } from "@/components/ui";
import { ComplianceOverviewData, SearchParamsProps } from "@/types";
@@ -15,26 +17,33 @@ export default async function Compliance({
}: {
searchParams: SearchParamsProps;
}) {
- const searchParamsKey = JSON.stringify(searchParams || {});
+ const scansData = await getScans({});
+ const scanList = scansData?.data.map((scan: any) => ({
+ id: scan.id,
+ name: scan.attributes.name || "Unnamed Scan",
+ state: scan.attributes.state,
+ progress: scan.attributes.progress,
+ }));
+ const selectedScanId = searchParams.scanId || scanList[0]?.id;
return (
<>
+
+
+
- }>
-
+ }>
+
>
);
}
-const SSRComplianceGrid = async () => {
- // const scanId = "01929f57-c0ee-7553-be0b-cbde006fb6f7";
- const scanId = "0193358c-bd7f-7eec-b13a-2d4a648b8df";
+const SSRComplianceGrid = async ({ scanId }: { scanId: string }) => {
const compliancesData = await getCompliancesOverview({ scanId });
- console.log(compliancesData, "compliancesData");
if (compliancesData?.errors?.length > 0) {
return (
diff --git a/components/compliance/ComplianceCard.tsx b/components/compliance/compliance-card.tsx
similarity index 100%
rename from components/compliance/ComplianceCard.tsx
rename to components/compliance/compliance-card.tsx
diff --git a/components/compliance/ComplianceSkeletonGrid.tsx b/components/compliance/compliance-skeleton-grid.tsx
similarity index 100%
rename from components/compliance/ComplianceSkeletonGrid.tsx
rename to components/compliance/compliance-skeleton-grid.tsx
diff --git a/components/compliance/data-compliance/data-compliance.tsx b/components/compliance/data-compliance/data-compliance.tsx
new file mode 100644
index 0000000000..52484f6bd7
--- /dev/null
+++ b/components/compliance/data-compliance/data-compliance.tsx
@@ -0,0 +1,31 @@
+"use client";
+
+import { useRouter, useSearchParams } from "next/navigation";
+
+import { SelectScanComplianceData } from "@/components/compliance/data-compliance";
+
+interface DataComplianceProps {
+ scans: { id: string; name: string; state: string; progress: number }[];
+}
+
+export const DataCompliance = ({ scans }: DataComplianceProps) => {
+ const router = useRouter();
+ const searchParams = useSearchParams();
+ const selectedScanId = searchParams.get("scanId") || scans[0]?.id;
+
+ const handleSelectionChange = (selectedKey: string) => {
+ router.push(`?scanId=${selectedKey}`);
+ };
+
+ return (
+
+ );
+};
diff --git a/components/compliance/data-compliance/index.ts b/components/compliance/data-compliance/index.ts
new file mode 100644
index 0000000000..14f430df04
--- /dev/null
+++ b/components/compliance/data-compliance/index.ts
@@ -0,0 +1,2 @@
+export * from "./data-compliance";
+export * from "./select-scan-compliance-data";
diff --git a/components/compliance/data-compliance/select-scan-compliance-data.tsx b/components/compliance/data-compliance/select-scan-compliance-data.tsx
new file mode 100644
index 0000000000..fb1189019c
--- /dev/null
+++ b/components/compliance/data-compliance/select-scan-compliance-data.tsx
@@ -0,0 +1,52 @@
+"use client";
+
+import { Select, SelectItem } from "@nextui-org/react";
+
+interface SelectScanComplianceDataProps {
+ scans: { id: string; name: string; state: string; progress: number }[];
+ selectedScanId: string;
+ onSelectionChange: (selectedKey: string) => void;
+}
+
+export const SelectScanComplianceData = ({
+ scans,
+ selectedScanId,
+ onSelectionChange,
+}: SelectScanComplianceDataProps) => {
+ return (
+
+ );
+};
diff --git a/components/compliance/index.ts b/components/compliance/index.ts
index 6f025f2ca5..bb1b06d995 100644
--- a/components/compliance/index.ts
+++ b/components/compliance/index.ts
@@ -1,2 +1,2 @@
-export * from "./ComplianceCard";
-export * from "./ComplianceSkeletonGrid";
+export * from "./compliance-card";
+export * from "./compliance-skeleton-grid";