@@ -24,7 +24,7 @@ import { PolicyListPage } from "./policies/PolicyListPage";
|
||||
import { PolicyPage } from "./policies/PolicyPage";
|
||||
import { EditRiskPage } from "./risks/EditRiskPage";
|
||||
import { NewRiskPage } from "./risks/NewRiskPage";
|
||||
import { RiskListPage } from "./risks/RiskListPage";
|
||||
import { ListRiskPage } from "./risks/ListRiskPage";
|
||||
import ShowRiskView from "./risks/ShowRiskView";
|
||||
import { VendorListPage } from "./vendors/VendorListPage";
|
||||
import { VendorPage } from "./vendors/VendorPage";
|
||||
@@ -60,7 +60,7 @@ export function OrganizationsRoutes() {
|
||||
<Route path="policies/new" element={<NewPolicyPage />} />
|
||||
<Route path="policies/:policyId" element={<PolicyPage />} />
|
||||
<Route path="policies/:policyId/edit" element={<EditPolicyPage />} />
|
||||
<Route path="risks" element={<RiskListPage />} />
|
||||
<Route path="risks" element={<ListRiskPage />} />
|
||||
<Route path="risks/new" element={<NewRiskPage />} />
|
||||
<Route path="risks/:riskId" element={<ShowRiskView />} />
|
||||
<Route path="risks/:riskId/edit" element={<EditRiskPage />} />
|
||||
|
||||
@@ -34,6 +34,7 @@ import { Suspense } from "react";
|
||||
import { EditRiskViewSkeleton } from "./EditRiskPage";
|
||||
import type { EditRiskViewQuery } from "./__generated__/EditRiskViewQuery.graphql";
|
||||
import type { EditRiskViewUpdateRiskMutation } from "./__generated__/EditRiskViewUpdateRiskMutation.graphql";
|
||||
import type { RiskTreatment } from "./__generated__/EditRiskViewUpdateRiskMutation.graphql";
|
||||
|
||||
// Query to get risk details
|
||||
const editRiskViewQuery = graphql`
|
||||
@@ -47,6 +48,7 @@ const editRiskViewQuery = graphql`
|
||||
inherentImpact
|
||||
residualLikelihood
|
||||
residualImpact
|
||||
treatment
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -64,6 +66,7 @@ const updateRiskMutation = graphql`
|
||||
inherentImpact
|
||||
residualLikelihood
|
||||
residualImpact
|
||||
treatment
|
||||
updatedAt
|
||||
}
|
||||
}
|
||||
@@ -94,6 +97,7 @@ function EditRiskViewContent({
|
||||
const [residualLikelihood, setResidualLikelihood] =
|
||||
useState<string>("MEDIUM");
|
||||
const [residualImpact, setResidualImpact] = useState<string>("MEDIUM");
|
||||
const [treatment, setTreatment] = useState<RiskTreatment>("MITIGATED");
|
||||
const [isSubmitting, setIsSubmitting] = useState(false);
|
||||
|
||||
const [updateRisk, isInFlight] =
|
||||
@@ -161,6 +165,7 @@ function EditRiskViewContent({
|
||||
setInherentImpact(floatToImpact(risk.inherentImpact || 0.5));
|
||||
setResidualLikelihood(floatToLikelihood(risk.residualLikelihood || 0.5));
|
||||
setResidualImpact(floatToImpact(risk.residualImpact || 0.5));
|
||||
setTreatment(risk.treatment || "MITIGATED");
|
||||
}
|
||||
}, [risk]);
|
||||
|
||||
@@ -186,6 +191,7 @@ function EditRiskViewContent({
|
||||
inherentImpact: impactToFloat(inherentImpact),
|
||||
residualLikelihood: likelihoodToFloat(residualLikelihood),
|
||||
residualImpact: impactToFloat(residualImpact),
|
||||
treatment,
|
||||
};
|
||||
|
||||
updateRisk({
|
||||
@@ -308,6 +314,29 @@ function EditRiskViewContent({
|
||||
|
||||
<Separator />
|
||||
|
||||
<div className="space-y-2">
|
||||
<Label htmlFor="treatment">Treatment Strategy</Label>
|
||||
<Select
|
||||
value={treatment}
|
||||
onValueChange={(value: RiskTreatment) => setTreatment(value)}
|
||||
>
|
||||
<SelectTrigger id="treatment">
|
||||
<SelectValue placeholder="Select a treatment strategy" />
|
||||
</SelectTrigger>
|
||||
<SelectContent className="max-h-[300px] overflow-y-auto">
|
||||
<SelectItem value="AVOIDED">Avoid</SelectItem>
|
||||
<SelectItem value="MITIGATED">Mitigate</SelectItem>
|
||||
<SelectItem value="TRANSFERRED">Transfer</SelectItem>
|
||||
<SelectItem value="ACCEPTED">Accept</SelectItem>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<p className="text-sm text-tertiary">
|
||||
Choose how you plan to address this risk
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<Separator />
|
||||
|
||||
<div>
|
||||
<h3 className="text-lg font-medium mb-2">Residual Risk</h3>
|
||||
<p className="text-sm text-tertiary mb-4">
|
||||
@@ -357,6 +386,8 @@ function EditRiskViewContent({
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Separator />
|
||||
|
||||
<div className="flex justify-end gap-3">
|
||||
<Button
|
||||
type="button"
|
||||
|
||||
@@ -4,7 +4,7 @@ import { lazy } from "@probo/react-lazy";
|
||||
import { useLocation } from "react-router";
|
||||
import { ErrorBoundaryWithLocation } from "../ErrorBoundary";
|
||||
|
||||
const RiskListView = lazy(() => import("./RiskListView"));
|
||||
const RiskListView = lazy(() => import("./ListRiskView"));
|
||||
|
||||
export function RiskViewSkeleton() {
|
||||
return (
|
||||
@@ -21,7 +21,7 @@ export function RiskViewSkeleton() {
|
||||
);
|
||||
}
|
||||
|
||||
export function RiskListPage() {
|
||||
export function ListRiskPage() {
|
||||
const location = useLocation();
|
||||
|
||||
return (
|
||||
@@ -15,12 +15,12 @@ import {
|
||||
useState,
|
||||
useTransition,
|
||||
} from "react";
|
||||
import type { RiskListViewQuery } from "./__generated__/RiskListViewQuery.graphql";
|
||||
import type { ListRiskViewQuery } from "./__generated__/ListRiskViewQuery.graphql";
|
||||
import { useParams, useSearchParams } from "react-router";
|
||||
import { PageTemplate } from "@/components/PageTemplate";
|
||||
import { RiskViewSkeleton } from "./RiskListPage";
|
||||
import { RiskListViewPaginationQuery } from "./__generated__/RiskListViewPaginationQuery.graphql";
|
||||
import { RiskListView_risks$key } from "./__generated__/RiskListView_risks.graphql";
|
||||
import { RiskViewSkeleton } from "./ListRiskPage";
|
||||
import { ListRiskViewPaginationQuery } from "./__generated__/ListRiskViewPaginationQuery.graphql";
|
||||
import { ListRiskView_risks$key } from "./__generated__/ListRiskView_risks.graphql";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
||||
import { Link } from "react-router";
|
||||
@@ -34,7 +34,7 @@ import {
|
||||
DialogHeader,
|
||||
DialogTitle,
|
||||
} from "@/components/ui/dialog";
|
||||
import { RiskListViewDeleteMutation } from "./__generated__/RiskListViewDeleteMutation.graphql";
|
||||
import { ListRiskViewDeleteMutation } from "./__generated__/ListRiskViewDeleteMutation.graphql";
|
||||
import {
|
||||
Popover,
|
||||
PopoverContent,
|
||||
@@ -45,8 +45,8 @@ import { Label } from "@/components/ui/label";
|
||||
|
||||
const defaultPageSize = 25;
|
||||
|
||||
const riskListViewQuery = graphql`
|
||||
query RiskListViewQuery(
|
||||
const listRiskViewQuery = graphql`
|
||||
query ListRiskViewQuery(
|
||||
$organizationId: ID!
|
||||
$first: Int
|
||||
$after: CursorKey
|
||||
@@ -56,15 +56,15 @@ const riskListViewQuery = graphql`
|
||||
organization: node(id: $organizationId) {
|
||||
id
|
||||
|
||||
...RiskListView_risks
|
||||
...ListRiskView_risks
|
||||
@arguments(first: $first, after: $after, last: $last, before: $before)
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const riskListFragment = graphql`
|
||||
fragment RiskListView_risks on Organization
|
||||
@refetchable(queryName: "RiskListViewPaginationQuery")
|
||||
const listRiskViewFragment = graphql`
|
||||
fragment ListRiskView_risks on Organization
|
||||
@refetchable(queryName: "ListRiskViewPaginationQuery")
|
||||
@argumentDefinitions(
|
||||
first: { type: "Int" }
|
||||
after: { type: "CursorKey" }
|
||||
@@ -72,7 +72,7 @@ const riskListFragment = graphql`
|
||||
before: { type: "CursorKey" }
|
||||
) {
|
||||
risks(first: $first, after: $after, last: $last, before: $before)
|
||||
@connection(key: "RiskListView_risks") {
|
||||
@connection(key: "ListRiskView_risks") {
|
||||
__id
|
||||
edges {
|
||||
node {
|
||||
@@ -82,6 +82,7 @@ const riskListFragment = graphql`
|
||||
inherentImpact
|
||||
residualLikelihood
|
||||
residualImpact
|
||||
treatment
|
||||
description
|
||||
createdAt
|
||||
updatedAt
|
||||
@@ -98,7 +99,7 @@ const riskListFragment = graphql`
|
||||
`;
|
||||
|
||||
const deleteRiskMutation = graphql`
|
||||
mutation RiskListViewDeleteMutation(
|
||||
mutation ListRiskViewDeleteMutation(
|
||||
$input: DeleteRiskInput!
|
||||
$connections: [ID!]!
|
||||
) {
|
||||
@@ -113,6 +114,18 @@ const floatToPercentage = (value: number): string => {
|
||||
return `${Math.round(value * 100)}%`;
|
||||
};
|
||||
|
||||
// Helper function to format treatment value
|
||||
const formatTreatment = (treatment: string): string => {
|
||||
const treatmentMap: Record<string, string> = {
|
||||
MITIGATED: "Mitigate",
|
||||
ACCEPTED: "Accept",
|
||||
AVOIDED: "Avoid",
|
||||
TRANSFERRED: "Transfer",
|
||||
};
|
||||
|
||||
return treatmentMap[treatment] || treatment;
|
||||
};
|
||||
|
||||
function LoadAboveButton({
|
||||
isLoading,
|
||||
hasMore,
|
||||
@@ -389,12 +402,12 @@ function RiskMatrix({
|
||||
);
|
||||
}
|
||||
|
||||
function RiskListViewContent({
|
||||
function ListRiskViewContent({
|
||||
queryRef,
|
||||
}: {
|
||||
queryRef: PreloadedQuery<RiskListViewQuery>;
|
||||
queryRef: PreloadedQuery<ListRiskViewQuery>;
|
||||
}) {
|
||||
const data = usePreloadedQuery(riskListViewQuery, queryRef);
|
||||
const data = usePreloadedQuery(listRiskViewQuery, queryRef);
|
||||
const [, setSearchParams] = useSearchParams();
|
||||
const [, startTransition] = useTransition();
|
||||
const { organizationId } = useParams<{ organizationId: string }>();
|
||||
@@ -412,7 +425,7 @@ function RiskListViewContent({
|
||||
|
||||
// Setup delete mutation
|
||||
const [commitDeleteMutation] =
|
||||
useMutation<RiskListViewDeleteMutation>(deleteRiskMutation);
|
||||
useMutation<ListRiskViewDeleteMutation>(deleteRiskMutation);
|
||||
|
||||
const {
|
||||
data: risksConnection,
|
||||
@@ -423,9 +436,9 @@ function RiskListViewContent({
|
||||
isLoadingNext,
|
||||
isLoadingPrevious,
|
||||
} = usePaginationFragment<
|
||||
RiskListViewPaginationQuery,
|
||||
RiskListView_risks$key
|
||||
>(riskListFragment, data.organization);
|
||||
ListRiskViewPaginationQuery,
|
||||
ListRiskView_risks$key
|
||||
>(listRiskViewFragment, data.organization);
|
||||
|
||||
const risks = risksConnection?.risks?.edges?.map((edge) => edge.node) || [];
|
||||
const pageInfo = risksConnection?.risks?.pageInfo;
|
||||
@@ -553,10 +566,13 @@ function RiskListViewContent({
|
||||
<th className="h-12 px-4 text-left align-middle font-medium text-tertiary w-1/2">
|
||||
Name
|
||||
</th>
|
||||
<th className="h-12 px-4 text-left align-middle font-medium text-tertiary w-1/4">
|
||||
<th className="h-12 px-4 text-left align-middle font-medium text-tertiary w-1/6">
|
||||
Treatment
|
||||
</th>
|
||||
<th className="h-12 px-4 text-left align-middle font-medium text-tertiary w-1/6">
|
||||
Inherent Severity
|
||||
</th>
|
||||
<th className="h-12 px-4 text-left align-middle font-medium text-tertiary w-1/4">
|
||||
<th className="h-12 px-4 text-left align-middle font-medium text-tertiary w-1/6">
|
||||
Residual Severity
|
||||
</th>
|
||||
<th className="h-12 px-4 text-left align-middle font-medium text-tertiary w-[120px]">
|
||||
@@ -568,7 +584,7 @@ function RiskListViewContent({
|
||||
{risks.length === 0 ? (
|
||||
<tr className="border-b transition-colors hover:bg-h-subtle-bg data-[state=selected]:bg-subtle-bg">
|
||||
<td
|
||||
colSpan={4}
|
||||
colSpan={5}
|
||||
className="text-center p-4 align-middle text-tertiary"
|
||||
>
|
||||
No risks found. Create a new risk to get started.
|
||||
@@ -588,7 +604,15 @@ function RiskListViewContent({
|
||||
{risk.name}
|
||||
</Link>
|
||||
</td>
|
||||
<td className="p-0 align-middle w-1/4 whitespace-nowrap">
|
||||
<td className="p-0 align-middle w-1/6 whitespace-nowrap">
|
||||
<Link
|
||||
to={`/organizations/${organizationId}/risks/${risk.id}`}
|
||||
className="block p-4 h-full w-full"
|
||||
>
|
||||
{formatTreatment(risk.treatment)}
|
||||
</Link>
|
||||
</td>
|
||||
<td className="p-0 align-middle w-1/6 whitespace-nowrap">
|
||||
<Link
|
||||
to={`/organizations/${organizationId}/risks/${risk.id}`}
|
||||
className="block p-4 h-full w-full"
|
||||
@@ -598,7 +622,7 @@ function RiskListViewContent({
|
||||
)}
|
||||
</Link>
|
||||
</td>
|
||||
<td className="p-0 align-middle w-1/4 whitespace-nowrap">
|
||||
<td className="p-0 align-middle w-1/6 whitespace-nowrap">
|
||||
<Link
|
||||
to={`/organizations/${organizationId}/risks/${risk.id}`}
|
||||
className="block p-4 h-full w-full"
|
||||
@@ -698,10 +722,10 @@ function RiskListViewContent({
|
||||
);
|
||||
}
|
||||
|
||||
export default function RiskListView() {
|
||||
export default function ListRiskView() {
|
||||
const [searchParams] = useSearchParams();
|
||||
const [queryRef, loadQuery] =
|
||||
useQueryLoader<RiskListViewQuery>(riskListViewQuery);
|
||||
useQueryLoader<ListRiskViewQuery>(listRiskViewQuery);
|
||||
|
||||
const { organizationId } = useParams();
|
||||
|
||||
@@ -724,7 +748,7 @@ export default function RiskListView() {
|
||||
|
||||
return (
|
||||
<Suspense fallback={<RiskViewSkeleton />}>
|
||||
<RiskListViewContent queryRef={queryRef} />
|
||||
<ListRiskViewContent queryRef={queryRef} />
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
@@ -49,6 +49,7 @@ const createRiskMutation = graphql`
|
||||
inherentImpact
|
||||
residualLikelihood
|
||||
residualImpact
|
||||
treatment
|
||||
createdAt
|
||||
updatedAt
|
||||
}
|
||||
@@ -68,6 +69,7 @@ export default function NewRiskView() {
|
||||
const [residualLikelihood, setResidualLikelihood] =
|
||||
useState<string>("MEDIUM");
|
||||
const [residualImpact, setResidualImpact] = useState<string>("MEDIUM");
|
||||
const [treatment, setTreatment] = useState<string>("MITIGATED");
|
||||
const [isSubmitting, setIsSubmitting] = useState(false);
|
||||
const [selectedTemplate, setSelectedTemplate] = useState<string>("");
|
||||
const [riskTemplates, setRiskTemplates] = useState<RiskTemplate[]>([]);
|
||||
@@ -141,6 +143,7 @@ export default function NewRiskView() {
|
||||
setinherentImpact("MEDIUM");
|
||||
setResidualLikelihood("MEDIUM");
|
||||
setResidualImpact("MEDIUM");
|
||||
setTreatment("MITIGATED");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -158,6 +161,11 @@ export default function NewRiskView() {
|
||||
// Set residual values to be the same as initial values by default
|
||||
setResidualLikelihood(likelihoodValue);
|
||||
setResidualImpact(impactValue);
|
||||
|
||||
// Set recommended treatment if available
|
||||
if (template.variations[0].recommendedTreatment) {
|
||||
setTreatment(template.variations[0].recommendedTreatment.toUpperCase());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -201,6 +209,7 @@ export default function NewRiskView() {
|
||||
inherentImpact: impactToFloat(inherentImpact),
|
||||
residualLikelihood: likelihoodToFloat(residualLikelihood),
|
||||
residualImpact: impactToFloat(residualImpact),
|
||||
treatment,
|
||||
};
|
||||
|
||||
createRisk({
|
||||
@@ -209,7 +218,7 @@ export default function NewRiskView() {
|
||||
connections: [
|
||||
ConnectionHandler.getConnectionID(
|
||||
organizationId!,
|
||||
"RiskListView_risks"
|
||||
"ListRiskView_risks"
|
||||
),
|
||||
],
|
||||
},
|
||||
@@ -344,6 +353,24 @@ export default function NewRiskView() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<Label htmlFor="treatment">Treatment Strategy</Label>
|
||||
<Select value={treatment} onValueChange={setTreatment}>
|
||||
<SelectTrigger id="treatment">
|
||||
<SelectValue placeholder="Select a treatment strategy" />
|
||||
</SelectTrigger>
|
||||
<SelectContent className="max-h-[300px] overflow-y-auto">
|
||||
<SelectItem value="AVOIDED">Avoid</SelectItem>
|
||||
<SelectItem value="MITIGATED">Mitigate</SelectItem>
|
||||
<SelectItem value="TRANSFERRED">Transfer</SelectItem>
|
||||
<SelectItem value="ACCEPTED">Accept</SelectItem>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<p className="text-sm text-tertiary">
|
||||
Choose how you plan to address this risk
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<Separator className="my-4" />
|
||||
|
||||
<div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<c0da8faf6e1669e8cf890804a805b2d1>>
|
||||
* @generated SignedSource<<5ae729150c7f534725306ecd1cf786af>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -9,6 +9,7 @@
|
||||
// @ts-nocheck
|
||||
|
||||
import { ConcreteRequest } from 'relay-runtime';
|
||||
export type RiskTreatment = "ACCEPTED" | "AVOIDED" | "MITIGATED" | "TRANSFERRED";
|
||||
export type EditRiskViewQuery$variables = {
|
||||
riskId: string;
|
||||
};
|
||||
@@ -21,6 +22,7 @@ export type EditRiskViewQuery$data = {
|
||||
readonly name?: string;
|
||||
readonly residualImpact?: number;
|
||||
readonly residualLikelihood?: number;
|
||||
readonly treatment?: RiskTreatment;
|
||||
};
|
||||
};
|
||||
export type EditRiskViewQuery = {
|
||||
@@ -91,6 +93,13 @@ v8 = {
|
||||
"kind": "ScalarField",
|
||||
"name": "residualImpact",
|
||||
"storageKey": null
|
||||
},
|
||||
v9 = {
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "treatment",
|
||||
"storageKey": null
|
||||
};
|
||||
return {
|
||||
"fragment": {
|
||||
@@ -116,7 +125,8 @@ return {
|
||||
(v5/*: any*/),
|
||||
(v6/*: any*/),
|
||||
(v7/*: any*/),
|
||||
(v8/*: any*/)
|
||||
(v8/*: any*/),
|
||||
(v9/*: any*/)
|
||||
],
|
||||
"type": "Risk",
|
||||
"abstractKey": null
|
||||
@@ -158,7 +168,8 @@ return {
|
||||
(v5/*: any*/),
|
||||
(v6/*: any*/),
|
||||
(v7/*: any*/),
|
||||
(v8/*: any*/)
|
||||
(v8/*: any*/),
|
||||
(v9/*: any*/)
|
||||
],
|
||||
"type": "Risk",
|
||||
"abstractKey": null
|
||||
@@ -169,16 +180,16 @@ return {
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "0cf5e4b47335aeb1fe04520d137942d1",
|
||||
"cacheID": "cd7c9a0e53b9c1a2291e488756da9908",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "EditRiskViewQuery",
|
||||
"operationKind": "query",
|
||||
"text": "query EditRiskViewQuery(\n $riskId: ID!\n) {\n risk: node(id: $riskId) {\n __typename\n ... on Risk {\n id\n name\n description\n inherentLikelihood\n inherentImpact\n residualLikelihood\n residualImpact\n }\n id\n }\n}\n"
|
||||
"text": "query EditRiskViewQuery(\n $riskId: ID!\n) {\n risk: node(id: $riskId) {\n __typename\n ... on Risk {\n id\n name\n description\n inherentLikelihood\n inherentImpact\n residualLikelihood\n residualImpact\n treatment\n }\n id\n }\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "d057f56759426d63136cef80269dc8a3";
|
||||
(node as any).hash = "cce4cb6856fe45d8ab37fe690ac8c720";
|
||||
|
||||
export default node;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<c9530c22837ce495259b6d3ac404da87>>
|
||||
* @generated SignedSource<<92886e4193283cb894a864edc361a575>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -9,6 +9,7 @@
|
||||
// @ts-nocheck
|
||||
|
||||
import { ConcreteRequest } from 'relay-runtime';
|
||||
export type RiskTreatment = "ACCEPTED" | "AVOIDED" | "MITIGATED" | "TRANSFERRED";
|
||||
export type UpdateRiskInput = {
|
||||
description?: string | null | undefined;
|
||||
id: string;
|
||||
@@ -17,6 +18,7 @@ export type UpdateRiskInput = {
|
||||
name?: string | null | undefined;
|
||||
residualImpact?: number | null | undefined;
|
||||
residualLikelihood?: number | null | undefined;
|
||||
treatment?: RiskTreatment | null | undefined;
|
||||
};
|
||||
export type EditRiskViewUpdateRiskMutation$variables = {
|
||||
input: UpdateRiskInput;
|
||||
@@ -31,6 +33,7 @@ export type EditRiskViewUpdateRiskMutation$data = {
|
||||
readonly name: string;
|
||||
readonly residualImpact: number;
|
||||
readonly residualLikelihood: number;
|
||||
readonly treatment: RiskTreatment;
|
||||
readonly updatedAt: string;
|
||||
};
|
||||
};
|
||||
@@ -120,6 +123,13 @@ v1 = [
|
||||
"name": "residualImpact",
|
||||
"storageKey": null
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "treatment",
|
||||
"storageKey": null
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
@@ -152,16 +162,16 @@ return {
|
||||
"selections": (v1/*: any*/)
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "1fb9a7f1a9a6dc2fd8b1c3235336324b",
|
||||
"cacheID": "e1bdac5dea224d79834ac952692a9bda",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "EditRiskViewUpdateRiskMutation",
|
||||
"operationKind": "mutation",
|
||||
"text": "mutation EditRiskViewUpdateRiskMutation(\n $input: UpdateRiskInput!\n) {\n updateRisk(input: $input) {\n risk {\n id\n name\n description\n inherentLikelihood\n inherentImpact\n residualLikelihood\n residualImpact\n updatedAt\n }\n }\n}\n"
|
||||
"text": "mutation EditRiskViewUpdateRiskMutation(\n $input: UpdateRiskInput!\n) {\n updateRisk(input: $input) {\n risk {\n id\n name\n description\n inherentLikelihood\n inherentImpact\n residualLikelihood\n residualImpact\n treatment\n updatedAt\n }\n }\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "75f21269b0c81f77ce4e3547010059ee";
|
||||
(node as any).hash = "6394ecc50b1e1f039b11ecdcf2724571";
|
||||
|
||||
export default node;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<349d62a3a4ed3ea1d83c12f0c61437dd>>
|
||||
* @generated SignedSource<<4d228ebd230765e4ef84981f18bcd705>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -12,18 +12,18 @@ import { ConcreteRequest } from 'relay-runtime';
|
||||
export type DeleteRiskInput = {
|
||||
riskId: string;
|
||||
};
|
||||
export type RiskListViewDeleteMutation$variables = {
|
||||
export type ListRiskViewDeleteMutation$variables = {
|
||||
connections: ReadonlyArray<string>;
|
||||
input: DeleteRiskInput;
|
||||
};
|
||||
export type RiskListViewDeleteMutation$data = {
|
||||
export type ListRiskViewDeleteMutation$data = {
|
||||
readonly deleteRisk: {
|
||||
readonly deletedRiskId: string;
|
||||
};
|
||||
};
|
||||
export type RiskListViewDeleteMutation = {
|
||||
response: RiskListViewDeleteMutation$data;
|
||||
variables: RiskListViewDeleteMutation$variables;
|
||||
export type ListRiskViewDeleteMutation = {
|
||||
response: ListRiskViewDeleteMutation$data;
|
||||
variables: ListRiskViewDeleteMutation$variables;
|
||||
};
|
||||
|
||||
const node: ConcreteRequest = (function(){
|
||||
@@ -59,7 +59,7 @@ return {
|
||||
],
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "RiskListViewDeleteMutation",
|
||||
"name": "ListRiskViewDeleteMutation",
|
||||
"selections": [
|
||||
{
|
||||
"alias": null,
|
||||
@@ -84,7 +84,7 @@ return {
|
||||
(v0/*: any*/)
|
||||
],
|
||||
"kind": "Operation",
|
||||
"name": "RiskListViewDeleteMutation",
|
||||
"name": "ListRiskViewDeleteMutation",
|
||||
"selections": [
|
||||
{
|
||||
"alias": null,
|
||||
@@ -117,16 +117,16 @@ return {
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "525011737d0920883b3942d2603dc31f",
|
||||
"cacheID": "d6c6ab49ae59bc29ee4b1a33c4a36181",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "RiskListViewDeleteMutation",
|
||||
"name": "ListRiskViewDeleteMutation",
|
||||
"operationKind": "mutation",
|
||||
"text": "mutation RiskListViewDeleteMutation(\n $input: DeleteRiskInput!\n) {\n deleteRisk(input: $input) {\n deletedRiskId\n }\n}\n"
|
||||
"text": "mutation ListRiskViewDeleteMutation(\n $input: DeleteRiskInput!\n) {\n deleteRisk(input: $input) {\n deletedRiskId\n }\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "4aee92e5abfd6733b44588bf01276560";
|
||||
(node as any).hash = "0c83d35fb68cb67f5980df027c0d1051";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<ada1e6614842f2accf7bbe92a4e845a4>>
|
||||
* @generated SignedSource<<121c9ad6ab399476692b98d1838f70d7>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -10,21 +10,21 @@
|
||||
|
||||
import { ConcreteRequest } from 'relay-runtime';
|
||||
import { FragmentRefs } from "relay-runtime";
|
||||
export type RiskListViewPaginationQuery$variables = {
|
||||
export type ListRiskViewPaginationQuery$variables = {
|
||||
after?: string | null | undefined;
|
||||
before?: string | null | undefined;
|
||||
first?: number | null | undefined;
|
||||
id: string;
|
||||
last?: number | null | undefined;
|
||||
};
|
||||
export type RiskListViewPaginationQuery$data = {
|
||||
export type ListRiskViewPaginationQuery$data = {
|
||||
readonly node: {
|
||||
readonly " $fragmentSpreads": FragmentRefs<"RiskListView_risks">;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"ListRiskView_risks">;
|
||||
};
|
||||
};
|
||||
export type RiskListViewPaginationQuery = {
|
||||
response: RiskListViewPaginationQuery$data;
|
||||
variables: RiskListViewPaginationQuery$variables;
|
||||
export type ListRiskViewPaginationQuery = {
|
||||
response: ListRiskViewPaginationQuery$data;
|
||||
variables: ListRiskViewPaginationQuery$variables;
|
||||
};
|
||||
|
||||
const node: ConcreteRequest = (function(){
|
||||
@@ -107,7 +107,7 @@ return {
|
||||
],
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "RiskListViewPaginationQuery",
|
||||
"name": "ListRiskViewPaginationQuery",
|
||||
"selections": [
|
||||
{
|
||||
"alias": null,
|
||||
@@ -120,7 +120,7 @@ return {
|
||||
{
|
||||
"args": (v6/*: any*/),
|
||||
"kind": "FragmentSpread",
|
||||
"name": "RiskListView_risks"
|
||||
"name": "ListRiskView_risks"
|
||||
}
|
||||
],
|
||||
"storageKey": null
|
||||
@@ -139,7 +139,7 @@ return {
|
||||
(v3/*: any*/)
|
||||
],
|
||||
"kind": "Operation",
|
||||
"name": "RiskListViewPaginationQuery",
|
||||
"name": "ListRiskViewPaginationQuery",
|
||||
"selections": [
|
||||
{
|
||||
"alias": null,
|
||||
@@ -214,6 +214,13 @@ return {
|
||||
"name": "residualImpact",
|
||||
"storageKey": null
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "treatment",
|
||||
"storageKey": null
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
@@ -308,7 +315,7 @@ return {
|
||||
"args": (v6/*: any*/),
|
||||
"filters": null,
|
||||
"handle": "connection",
|
||||
"key": "RiskListView_risks",
|
||||
"key": "ListRiskView_risks",
|
||||
"kind": "LinkedHandle",
|
||||
"name": "risks"
|
||||
}
|
||||
@@ -322,16 +329,16 @@ return {
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "afcf1c15c2ed7722673da85d53acfef3",
|
||||
"cacheID": "402fdc7c2f504ba8640e2ecd2f8f2cb8",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "RiskListViewPaginationQuery",
|
||||
"name": "ListRiskViewPaginationQuery",
|
||||
"operationKind": "query",
|
||||
"text": "query RiskListViewPaginationQuery(\n $after: CursorKey\n $before: CursorKey\n $first: Int\n $last: Int\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...RiskListView_risks_pbnwq\n id\n }\n}\n\nfragment RiskListView_risks_pbnwq on Organization {\n risks(first: $first, after: $after, last: $last, before: $before) {\n edges {\n node {\n id\n name\n inherentLikelihood\n inherentImpact\n residualLikelihood\n residualImpact\n description\n createdAt\n updatedAt\n __typename\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n id\n}\n"
|
||||
"text": "query ListRiskViewPaginationQuery(\n $after: CursorKey\n $before: CursorKey\n $first: Int\n $last: Int\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...ListRiskView_risks_pbnwq\n id\n }\n}\n\nfragment ListRiskView_risks_pbnwq on Organization {\n risks(first: $first, after: $after, last: $last, before: $before) {\n edges {\n node {\n id\n name\n inherentLikelihood\n inherentImpact\n residualLikelihood\n residualImpact\n treatment\n description\n createdAt\n updatedAt\n __typename\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n id\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "7da0a3d5e4fb09ce7f6b7ddf233702ab";
|
||||
(node as any).hash = "a5f7d6424459d2a3b471bb0a4f0a4169";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<5301e57ef0b2621712f4c8ca693afdeb>>
|
||||
* @generated SignedSource<<677eff2bfb212e672f0d95b56adeebe7>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -10,22 +10,22 @@
|
||||
|
||||
import { ConcreteRequest } from 'relay-runtime';
|
||||
import { FragmentRefs } from "relay-runtime";
|
||||
export type RiskListViewQuery$variables = {
|
||||
export type ListRiskViewQuery$variables = {
|
||||
after?: string | null | undefined;
|
||||
before?: string | null | undefined;
|
||||
first?: number | null | undefined;
|
||||
last?: number | null | undefined;
|
||||
organizationId: string;
|
||||
};
|
||||
export type RiskListViewQuery$data = {
|
||||
export type ListRiskViewQuery$data = {
|
||||
readonly organization: {
|
||||
readonly id: string;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"RiskListView_risks">;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"ListRiskView_risks">;
|
||||
};
|
||||
};
|
||||
export type RiskListViewQuery = {
|
||||
response: RiskListViewQuery$data;
|
||||
variables: RiskListViewQuery$variables;
|
||||
export type ListRiskViewQuery = {
|
||||
response: ListRiskViewQuery$data;
|
||||
variables: ListRiskViewQuery$variables;
|
||||
};
|
||||
|
||||
const node: ConcreteRequest = (function(){
|
||||
@@ -108,7 +108,7 @@ return {
|
||||
],
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "RiskListViewQuery",
|
||||
"name": "ListRiskViewQuery",
|
||||
"selections": [
|
||||
{
|
||||
"alias": "organization",
|
||||
@@ -122,7 +122,7 @@ return {
|
||||
{
|
||||
"args": (v7/*: any*/),
|
||||
"kind": "FragmentSpread",
|
||||
"name": "RiskListView_risks"
|
||||
"name": "ListRiskView_risks"
|
||||
}
|
||||
],
|
||||
"storageKey": null
|
||||
@@ -141,7 +141,7 @@ return {
|
||||
(v1/*: any*/)
|
||||
],
|
||||
"kind": "Operation",
|
||||
"name": "RiskListViewQuery",
|
||||
"name": "ListRiskViewQuery",
|
||||
"selections": [
|
||||
{
|
||||
"alias": "organization",
|
||||
@@ -216,6 +216,13 @@ return {
|
||||
"name": "residualImpact",
|
||||
"storageKey": null
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "treatment",
|
||||
"storageKey": null
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
@@ -310,7 +317,7 @@ return {
|
||||
"args": (v7/*: any*/),
|
||||
"filters": null,
|
||||
"handle": "connection",
|
||||
"key": "RiskListView_risks",
|
||||
"key": "ListRiskView_risks",
|
||||
"kind": "LinkedHandle",
|
||||
"name": "risks"
|
||||
}
|
||||
@@ -324,16 +331,16 @@ return {
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "56ddd15a8a41c48c01bf0be667569473",
|
||||
"cacheID": "fcdb0ca740c0a11d5e4961407baadffa",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "RiskListViewQuery",
|
||||
"name": "ListRiskViewQuery",
|
||||
"operationKind": "query",
|
||||
"text": "query RiskListViewQuery(\n $organizationId: ID!\n $first: Int\n $after: CursorKey\n $last: Int\n $before: CursorKey\n) {\n organization: node(id: $organizationId) {\n __typename\n id\n ...RiskListView_risks_pbnwq\n }\n}\n\nfragment RiskListView_risks_pbnwq on Organization {\n risks(first: $first, after: $after, last: $last, before: $before) {\n edges {\n node {\n id\n name\n inherentLikelihood\n inherentImpact\n residualLikelihood\n residualImpact\n description\n createdAt\n updatedAt\n __typename\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n id\n}\n"
|
||||
"text": "query ListRiskViewQuery(\n $organizationId: ID!\n $first: Int\n $after: CursorKey\n $last: Int\n $before: CursorKey\n) {\n organization: node(id: $organizationId) {\n __typename\n id\n ...ListRiskView_risks_pbnwq\n }\n}\n\nfragment ListRiskView_risks_pbnwq on Organization {\n risks(first: $first, after: $after, last: $last, before: $before) {\n edges {\n node {\n id\n name\n inherentLikelihood\n inherentImpact\n residualLikelihood\n residualImpact\n treatment\n description\n createdAt\n updatedAt\n __typename\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n id\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "0fff20fd656047e6df52818ccf0a0f3b";
|
||||
(node as any).hash = "8f1ba48e6663d5f1e473aa52b70c7a67";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<c2e3450de2b84e18c9ade3ac1bed3b69>>
|
||||
* @generated SignedSource<<9a0b8102088652729e5c161730fe26a9>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -9,8 +9,9 @@
|
||||
// @ts-nocheck
|
||||
|
||||
import { ReaderFragment } from 'relay-runtime';
|
||||
export type RiskTreatment = "ACCEPTED" | "AVOIDED" | "MITIGATED" | "TRANSFERRED";
|
||||
import { FragmentRefs } from "relay-runtime";
|
||||
export type RiskListView_risks$data = {
|
||||
export type ListRiskView_risks$data = {
|
||||
readonly id: string;
|
||||
readonly risks: {
|
||||
readonly __id: string;
|
||||
@@ -24,6 +25,7 @@ export type RiskListView_risks$data = {
|
||||
readonly name: string;
|
||||
readonly residualImpact: number;
|
||||
readonly residualLikelihood: number;
|
||||
readonly treatment: RiskTreatment;
|
||||
readonly updatedAt: string;
|
||||
};
|
||||
}>;
|
||||
@@ -34,11 +36,11 @@ export type RiskListView_risks$data = {
|
||||
readonly startCursor: string | null | undefined;
|
||||
};
|
||||
};
|
||||
readonly " $fragmentType": "RiskListView_risks";
|
||||
readonly " $fragmentType": "ListRiskView_risks";
|
||||
};
|
||||
export type RiskListView_risks$key = {
|
||||
readonly " $data"?: RiskListView_risks$data;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"RiskListView_risks">;
|
||||
export type ListRiskView_risks$key = {
|
||||
readonly " $data"?: ListRiskView_risks$data;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"ListRiskView_risks">;
|
||||
};
|
||||
|
||||
const node: ReaderFragment = (function(){
|
||||
@@ -100,21 +102,21 @@ return {
|
||||
"fragmentPathInResult": [
|
||||
"node"
|
||||
],
|
||||
"operation": require('./RiskListViewPaginationQuery.graphql'),
|
||||
"operation": require('./ListRiskViewPaginationQuery.graphql'),
|
||||
"identifierInfo": {
|
||||
"identifierField": "id",
|
||||
"identifierQueryVariableName": "id"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "RiskListView_risks",
|
||||
"name": "ListRiskView_risks",
|
||||
"selections": [
|
||||
{
|
||||
"alias": "risks",
|
||||
"args": null,
|
||||
"concreteType": "RiskConnection",
|
||||
"kind": "LinkedField",
|
||||
"name": "__RiskListView_risks_connection",
|
||||
"name": "__ListRiskView_risks_connection",
|
||||
"plural": false,
|
||||
"selections": [
|
||||
{
|
||||
@@ -169,6 +171,13 @@ return {
|
||||
"name": "residualImpact",
|
||||
"storageKey": null
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "treatment",
|
||||
"storageKey": null
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
@@ -271,6 +280,6 @@ return {
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "7da0a3d5e4fb09ce7f6b7ddf233702ab";
|
||||
(node as any).hash = "a5f7d6424459d2a3b471bb0a4f0a4169";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<63841b5a52846eba02cc6d442cfd4133>>
|
||||
* @generated SignedSource<<cb8ffabeb71c2aa60fdef5f2abfc1f42>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -9,6 +9,7 @@
|
||||
// @ts-nocheck
|
||||
|
||||
import { ConcreteRequest } from 'relay-runtime';
|
||||
export type RiskTreatment = "ACCEPTED" | "AVOIDED" | "MITIGATED" | "TRANSFERRED";
|
||||
export type CreateRiskInput = {
|
||||
description: string;
|
||||
inherentImpact: number;
|
||||
@@ -17,6 +18,7 @@ export type CreateRiskInput = {
|
||||
organizationId: string;
|
||||
residualImpact?: number | null | undefined;
|
||||
residualLikelihood?: number | null | undefined;
|
||||
treatment: RiskTreatment;
|
||||
};
|
||||
export type NewRiskViewCreateRiskMutation$variables = {
|
||||
connections: ReadonlyArray<string>;
|
||||
@@ -34,6 +36,7 @@ export type NewRiskViewCreateRiskMutation$data = {
|
||||
readonly name: string;
|
||||
readonly residualImpact: number;
|
||||
readonly residualLikelihood: number;
|
||||
readonly treatment: RiskTreatment;
|
||||
readonly updatedAt: string;
|
||||
};
|
||||
};
|
||||
@@ -127,6 +130,13 @@ v3 = {
|
||||
"name": "residualImpact",
|
||||
"storageKey": null
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "treatment",
|
||||
"storageKey": null
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
@@ -213,16 +223,16 @@ return {
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "86d84d72c424807216edf39eb8f0c34f",
|
||||
"cacheID": "9f296661d12f36362aeecd2a1fd4aa63",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "NewRiskViewCreateRiskMutation",
|
||||
"operationKind": "mutation",
|
||||
"text": "mutation NewRiskViewCreateRiskMutation(\n $input: CreateRiskInput!\n) {\n createRisk(input: $input) {\n riskEdge {\n node {\n id\n name\n description\n inherentLikelihood\n inherentImpact\n residualLikelihood\n residualImpact\n createdAt\n updatedAt\n }\n }\n }\n}\n"
|
||||
"text": "mutation NewRiskViewCreateRiskMutation(\n $input: CreateRiskInput!\n) {\n createRisk(input: $input) {\n riskEdge {\n node {\n id\n name\n description\n inherentLikelihood\n inherentImpact\n residualLikelihood\n residualImpact\n treatment\n createdAt\n updatedAt\n }\n }\n }\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "7ad6c27c192e419839b8105eb2ca9ae7";
|
||||
(node as any).hash = "7f70a20771d9f05f62e952a59c5484e3";
|
||||
|
||||
export default node;
|
||||
|
||||
Reference in New Issue
Block a user