From 67f3adbe4cf03969a0bfbaad484c5b7ff284e13e Mon Sep 17 00:00:00 2001 From: Pablo Lara Date: Sun, 1 Dec 2024 16:57:34 +0100 Subject: [PATCH] Feature/v5 tweaks UI v4 (#5982) --- ui/actions/scans/scans.ts | 44 +++++++++++++++ .../findings-by-status-chart.tsx | 55 +++++++++++-------- .../workflow/forms/test-connection-form.tsx | 7 +-- ui/components/scans/no-providers-added.tsx | 2 +- .../scans/no-providers-connected.tsx | 2 +- 5 files changed, 82 insertions(+), 28 deletions(-) diff --git a/ui/actions/scans/scans.ts b/ui/actions/scans/scans.ts index 367446daaa..3ac7d897d6 100644 --- a/ui/actions/scans/scans.ts +++ b/ui/actions/scans/scans.ts @@ -110,6 +110,49 @@ export const scanOnDemand = async (formData: FormData) => { revalidatePath("/scans"); return parseStringify(data); } catch (error) { + // eslint-disable-next-line no-console + console.error(error); + return { + error: getErrorMessage(error), + }; + } +}; + +export const scheduleDaily = async (formData: FormData) => { + const session = await auth(); + const keyServer = process.env.API_BASE_URL; + + const providerId = formData.get("providerId"); + + const url = new URL(`${keyServer}/schedules/daily`); + + try { + const response = await fetch(url.toString(), { + method: "POST", + headers: { + "Content-Type": "application/vnd.api+json", + Accept: "application/vnd.api+json", + Authorization: `Bearer ${session?.accessToken}`, + }, + body: JSON.stringify({ + data: { + type: "daily-schedules", + attributes: { + provider_id: providerId, + }, + }, + }), + }); + + if (!response.ok) { + throw new Error(`Failed to schedule daily: ${response.statusText}`); + } + + const data = await response.json(); + revalidatePath("/scans"); + return parseStringify(data); + } catch (error) { + // eslint-disable-next-line no-console console.error(error); return { error: getErrorMessage(error), @@ -148,6 +191,7 @@ export const updateScan = async (formData: FormData) => { revalidatePath("/scans"); return parseStringify(data); } catch (error) { + // eslint-disable-next-line no-console console.error(error); return { error: getErrorMessage(error), diff --git a/ui/components/overview/findings-by-status-chart/findings-by-status-chart.tsx b/ui/components/overview/findings-by-status-chart/findings-by-status-chart.tsx index 571cb37420..d8f84ba653 100644 --- a/ui/components/overview/findings-by-status-chart/findings-by-status-chart.tsx +++ b/ui/components/overview/findings-by-status-chart/findings-by-status-chart.tsx @@ -3,6 +3,7 @@ import { Card, CardBody } from "@nextui-org/react"; import { Chip } from "@nextui-org/react"; import { TrendingUp } from "lucide-react"; +import Link from "next/link"; import React, { useMemo } from "react"; import { Label, Pie, PieChart } from "recharts"; @@ -144,18 +145,23 @@ export const FindingsByStatusChart: React.FC = ({
-
- } - color="success" - radius="lg" - size="md" +
+ - {chartData[0].number} - - {updatedChartData[0].percent} + } + color="success" + radius="lg" + size="md" + > + {chartData[0].number} + + {updatedChartData[0].percent} +
{pass_new > 0 ? ( @@ -172,18 +178,23 @@ export const FindingsByStatusChart: React.FC = ({
-
- } - color="danger" - radius="lg" - size="md" +
+ - {chartData[1].number} - - {updatedChartData[1].percent} + } + color="danger" + radius="lg" + size="md" + > + {chartData[1].number} + + {updatedChartData[1].percent} +
+{fail_new} fail findings from last day{" "} diff --git a/ui/components/providers/workflow/forms/test-connection-form.tsx b/ui/components/providers/workflow/forms/test-connection-form.tsx index 5641248a05..6f21f14654 100644 --- a/ui/components/providers/workflow/forms/test-connection-form.tsx +++ b/ui/components/providers/workflow/forms/test-connection-form.tsx @@ -12,7 +12,7 @@ import { checkConnectionProvider, deleteCredentials, } from "@/actions/providers"; -import { scanOnDemand } from "@/actions/scans"; +import { scheduleDaily } from "@/actions/scans"; import { getTask } from "@/actions/task/tasks"; import { CheckIcon, RocketIcon } from "@/components/icons"; import { useToast } from "@/components/ui"; @@ -116,8 +116,7 @@ export const TestConnectionForm = ({ if (connected) { try { - const data = await scanOnDemand(formData); - + const data = await scheduleDaily(formData); if (data.error) { setApiErrorMessage(data.error); form.setError("providerId", { @@ -200,7 +199,7 @@ export const TestConnectionForm = ({ {apiErrorMessage && (
-

{`Provider ID ${apiErrorMessage.toLowerCase()}. Please check and try again.`}

+

{`Provider ID ${apiErrorMessage?.toLowerCase()}. Please check and try again.`}

)} diff --git a/ui/components/scans/no-providers-added.tsx b/ui/components/scans/no-providers-added.tsx index 2b3959eb25..11ca74eeeb 100644 --- a/ui/components/scans/no-providers-added.tsx +++ b/ui/components/scans/no-providers-added.tsx @@ -7,7 +7,7 @@ import { CustomButton } from "../ui/custom"; export const NoProvidersAdded = () => { return (
- +

No Cloud Accounts Configured

diff --git a/ui/components/scans/no-providers-connected.tsx b/ui/components/scans/no-providers-connected.tsx index 52f7c5f728..36f145a06e 100644 --- a/ui/components/scans/no-providers-connected.tsx +++ b/ui/components/scans/no-providers-connected.tsx @@ -8,7 +8,7 @@ import { CustomButton } from "../ui/custom"; export const NoProvidersConnected = () => { return (

- +

No Cloud Accounts Connected