From 1aaa49630f194d51284abb57d30794c7656008b7 Mon Sep 17 00:00:00 2001 From: Bryan Frimin Date: Tue, 20 May 2025 10:17:06 -0700 Subject: [PATCH] Add latest updated risk Signed-off-by: Bryan Frimin --- .../organizations/risks/ShowRiskView.tsx | 61 ++++++++++++------- 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/apps/console/src/pages/organizations/risks/ShowRiskView.tsx b/apps/console/src/pages/organizations/risks/ShowRiskView.tsx index 1244b3e05..0a109c4c7 100644 --- a/apps/console/src/pages/organizations/risks/ShowRiskView.tsx +++ b/apps/console/src/pages/organizations/risks/ShowRiskView.tsx @@ -217,7 +217,7 @@ const calculateRiskLevel = (score: number): string => { // Helper function to get color for risk level that matches the matrix colors const getRiskLevelColor = ( - level: string, + level: string ): { backgroundColor: string; color: string } => { switch (level) { case "High": @@ -349,7 +349,7 @@ function ShowRiskViewContent({ }) { const data = usePreloadedQuery( showRiskViewQuery, - queryRef, + queryRef ); const { toast } = useToast(); const environment = useRelayEnvironment(); @@ -359,14 +359,14 @@ function ShowRiskViewContent({ const risk = data.node; const severity = getRiskSeverity( risk.inherentLikelihood!, - risk.inherentImpact!, + risk.inherentImpact! ); // Fix typing for measures const measures = risk.measures?.edges?.map((edge) => edge.node) || []; const residualSeverity = getRiskSeverity( risk.residualLikelihood!, - risk.residualImpact!, + risk.residualImpact! ); // Fix typing for policies @@ -405,21 +405,21 @@ function ShowRiskViewContent({ // Setup mutation hooks const [createRiskMeasureMapping] = useMutation( - createRiskMeasureMappingMutation, + createRiskMeasureMappingMutation ); const [deleteRiskMeasureMapping] = useMutation( - deleteRiskMeasureMappingMutation, + deleteRiskMeasureMappingMutation ); // Setup policy mutation hooks const [createRiskPolicyMapping] = useMutation( - createRiskPolicyMappingMutation, + createRiskPolicyMappingMutation ); const [deleteRiskPolicyMapping] = useMutation( - deleteRiskPolicyMappingMutation, + deleteRiskPolicyMappingMutation ); // Clear filters when dialog closes @@ -453,7 +453,7 @@ function ShowRiskViewContent({ organizationMeasuresQuery, { organizationId, - }, + } ).subscribe({ next: (data) => { setOrganizationMeasuresData(data); @@ -483,7 +483,7 @@ function ShowRiskViewContent({ organizationPoliciesQuery, { organizationId, - }, + } ).subscribe({ next: (data) => { setOrganizationPoliciesData(data); @@ -505,7 +505,7 @@ function ShowRiskViewContent({ const getMeasures = useCallback(() => { if (!organizationMeasuresData?.organization?.measures?.edges) return []; return organizationMeasuresData.organization.measures.edges.map( - (edge) => edge.node, + (edge) => edge.node ); }, [organizationMeasuresData]); @@ -550,7 +550,7 @@ function ShowRiskViewContent({ const getPolicies = useCallback(() => { if (!organizationPoliciesData?.organization?.policies?.edges) return []; return organizationPoliciesData.organization.policies.edges.map( - (edge) => edge.node, + (edge) => edge.node ); }, [organizationPoliciesData]); @@ -573,7 +573,7 @@ function ShowRiskViewContent({ NonNullable< ShowRiskViewOrganizationMeasuresQuery$data["organization"] >["measures"] - >["edges"][0]["node"], + >["edges"][0]["node"] ) => { if (!risk.id) return; @@ -635,7 +635,7 @@ function ShowRiskViewContent({ }, }); }, - [risk.id, createRiskMeasureMapping, toast, environment, loadQuery], + [risk.id, createRiskMeasureMapping, toast, environment, loadQuery] ); // Handle unlinking a measure from this risk @@ -645,7 +645,7 @@ function ShowRiskViewContent({ NonNullable< ShowRiskViewOrganizationMeasuresQuery$data["organization"] >["measures"] - >["edges"][0]["node"], + >["edges"][0]["node"] ) => { if (!risk.id) return; @@ -707,7 +707,7 @@ function ShowRiskViewContent({ }, }); }, - [risk.id, deleteRiskMeasureMapping, toast, environment, loadQuery], + [risk.id, deleteRiskMeasureMapping, toast, environment, loadQuery] ); // Handle linking a policy to this risk @@ -717,7 +717,7 @@ function ShowRiskViewContent({ NonNullable< ShowRiskViewOrganizationPoliciesQuery$data["organization"] >["policies"] - >["edges"][0]["node"], + >["edges"][0]["node"] ) => { if (!risk.id) return; @@ -779,7 +779,7 @@ function ShowRiskViewContent({ }, }); }, - [risk.id, createRiskPolicyMapping, toast, environment, loadQuery], + [risk.id, createRiskPolicyMapping, toast, environment, loadQuery] ); // Handle unlinking a policy from this risk @@ -789,7 +789,7 @@ function ShowRiskViewContent({ NonNullable< ShowRiskViewOrganizationPoliciesQuery$data["organization"] >["policies"] - >["edges"][0]["node"], + >["edges"][0]["node"] ) => { if (!risk.id) return; @@ -851,7 +851,7 @@ function ShowRiskViewContent({ }, }); }, - [risk.id, deleteRiskPolicyMapping, toast, environment, loadQuery], + [risk.id, deleteRiskPolicyMapping, toast, environment, loadQuery] ); return ( @@ -919,6 +919,23 @@ function ShowRiskViewContent({

+ +
+
+

+ Last Updated +

+

+ {risk.updatedAt + ? new Date(risk.updatedAt).toLocaleDateString("en-US", { + year: "numeric", + month: "long", + day: "numeric", + }) + : "N/A"} +

+
+
{/* Risk Assessment */} @@ -1263,7 +1280,7 @@ function ShowRiskViewContent({ {filteredMeasures().map((measure) => { // For each render, recalculate linked status directly against the current risk data const isLinked = risk.measures?.edges?.some( - (edge) => edge.node.id === measure.id, + (edge) => edge.node.id === measure.id ); const isLinking = linkingMeasures[measure.id] || false; const isUnlinking = @@ -1365,7 +1382,7 @@ function ShowRiskViewContent({ {filteredPolicies().map((policy) => { // For each render, recalculate linked status directly against the current risk data const isLinked = policies.some( - (riskPolicy) => riskPolicy.id === policy.id, + (riskPolicy) => riskPolicy.id === policy.id ); const isLinking = linkingPolicies[policy.id] || false; const isUnlinking = unlinkingPolicies[policy.id] || false;