From 7d38882e1f0c7f32dff95a9a2f9a2f111baf3074 Mon Sep 17 00:00:00 2001 From: gearnode Date: Mon, 31 Mar 2025 09:49:35 +0200 Subject: [PATCH] Add risk proba and impact Signed-off-by: gearnode --- .../MitigationListViewQuery.graphql.ts | 17 +- .../pages/organizations/risks/NewRiskView.tsx | 82 ++++++++ .../organizations/risks/RiskListView.tsx | 16 +- .../NewRiskViewCreateRiskMutation.graphql.ts | 26 ++- .../RiskListViewPaginationQuery.graphql.ts | 22 +- .../RiskListViewQuery.graphql.ts | 20 +- .../RiskListView_risks.graphql.ts | 20 +- pkg/coredata/migrations/20250331T093100Z.sql | 7 + pkg/coredata/risk.go | 16 +- pkg/probo/risk_service.go | 16 ++ pkg/server/api/console/v1/schema.graphql | 6 + pkg/server/api/console/v1/schema/schema.go | 191 +++++++++++++++++- pkg/server/api/console/v1/types/risk.go | 2 + pkg/server/api/console/v1/types/types.go | 12 +- pkg/server/api/console/v1/v1_resolver.go | 4 + 15 files changed, 421 insertions(+), 36 deletions(-) create mode 100644 pkg/coredata/migrations/20250331T093100Z.sql diff --git a/apps/console/src/pages/organizations/mitigations/__generated__/MitigationListViewQuery.graphql.ts b/apps/console/src/pages/organizations/mitigations/__generated__/MitigationListViewQuery.graphql.ts index 6ce2d3d62..b2a6db2c5 100644 --- a/apps/console/src/pages/organizations/mitigations/__generated__/MitigationListViewQuery.graphql.ts +++ b/apps/console/src/pages/organizations/mitigations/__generated__/MitigationListViewQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<> + * @generated SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -19,7 +19,6 @@ export type MitigationListViewQuery$data = { readonly organization: { readonly id: string; readonly mitigations?: { - readonly __id: string; readonly edges: ReadonlyArray<{ readonly node: { readonly category: string; @@ -177,18 +176,6 @@ v5 = [ } ], "storageKey": null - }, - { - "kind": "ClientExtension", - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "__id", - "storageKey": null - } - ] } ], v6 = [ @@ -314,6 +301,6 @@ return { }; })(); -(node as any).hash = "c2da6b42a986dd18cd18603c5f5809ad"; +(node as any).hash = "6b2de4417fd7175dd9ccd34549e097b7"; export default node; diff --git a/apps/console/src/pages/organizations/risks/NewRiskView.tsx b/apps/console/src/pages/organizations/risks/NewRiskView.tsx index f54286c05..15471b0bb 100644 --- a/apps/console/src/pages/organizations/risks/NewRiskView.tsx +++ b/apps/console/src/pages/organizations/risks/NewRiskView.tsx @@ -14,6 +14,13 @@ import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { useToast } from "@/hooks/use-toast"; import { PageTemplate } from "@/components/PageTemplate"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; const createRiskMutation = graphql` mutation NewRiskViewCreateRiskMutation( @@ -26,6 +33,8 @@ const createRiskMutation = graphql` id name description + probability + impact createdAt updatedAt } @@ -39,11 +48,48 @@ export default function NewRiskView() { const { organizationId } = useParams<{ organizationId: string }>(); const [name, setName] = useState(""); const [description, setDescription] = useState(""); + const [probability, setProbability] = useState("MEDIUM"); + const [impact, setImpact] = useState("MEDIUM"); const [isSubmitting, setIsSubmitting] = useState(false); const { toast } = useToast(); const [commitMutation, isInFlight] = useMutation(createRiskMutation); + // Map string values to float values + const probabilityToFloat = (value: string): number => { + switch (value) { + case "VERY_LOW": + return 0.1; + case "LOW": + return 0.3; + case "MEDIUM": + return 0.5; + case "HIGH": + return 0.7; + case "VERY_HIGH": + return 0.9; + default: + return 0.5; + } + }; + + const impactToFloat = (value: string): number => { + switch (value) { + case "VERY_LOW": + return 0.1; + case "LOW": + return 0.3; + case "MEDIUM": + return 0.5; + case "HIGH": + return 0.7; + case "VERY_HIGH": + return 0.9; + default: + return 0.5; + } + }; + const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); @@ -62,6 +108,8 @@ export default function NewRiskView() { organizationId: organizationId!, name, description, + probability: probabilityToFloat(probability), + impact: impactToFloat(impact), }; commitMutation({ @@ -141,6 +189,40 @@ export default function NewRiskView() { /> +
+
+ + +
+ +
+ + +
+
+