Add business and data impact on list
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
@@ -23,6 +23,12 @@ import { ListVendorViewPaginationQuery } from "./__generated__/ListVendorViewPag
|
|||||||
import { ListVendorView_vendors$key } from "./__generated__/ListVendorView_vendors.graphql";
|
import { ListVendorView_vendors$key } from "./__generated__/ListVendorView_vendors.graphql";
|
||||||
import { ListVendorViewQuery } from "./__generated__/ListVendorViewQuery.graphql";
|
import { ListVendorViewQuery } from "./__generated__/ListVendorViewQuery.graphql";
|
||||||
import { ListVendorViewDeleteVendorMutation } from "./__generated__/ListVendorViewDeleteVendorMutation.graphql";
|
import { ListVendorViewDeleteVendorMutation } from "./__generated__/ListVendorViewDeleteVendorMutation.graphql";
|
||||||
|
import {
|
||||||
|
DropdownMenu,
|
||||||
|
DropdownMenuContent,
|
||||||
|
DropdownMenuItem,
|
||||||
|
DropdownMenuTrigger,
|
||||||
|
} from "@/components/ui/dropdown-menu";
|
||||||
|
|
||||||
interface VendorData {
|
interface VendorData {
|
||||||
name: string;
|
name: string;
|
||||||
@@ -86,6 +92,17 @@ const vendorListFragment = graphql`
|
|||||||
websiteUrl
|
websiteUrl
|
||||||
createdAt
|
createdAt
|
||||||
updatedAt
|
updatedAt
|
||||||
|
riskAssessments(first: 1, orderBy: { direction: DESC, field: ASSESSED_AT }) {
|
||||||
|
edges {
|
||||||
|
node {
|
||||||
|
id
|
||||||
|
assessedAt
|
||||||
|
expiresAt
|
||||||
|
dataSensitivity
|
||||||
|
businessImpact
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pageInfo {
|
pageInfo {
|
||||||
@@ -292,20 +309,42 @@ function ListVendorContent({
|
|||||||
switch (riskLevel) {
|
switch (riskLevel) {
|
||||||
case "CRITICAL":
|
case "CRITICAL":
|
||||||
return "bg-[#FFEFEF] text-[#CD2B31]";
|
return "bg-[#FFEFEF] text-[#CD2B31]";
|
||||||
case "SIGNIFICANT":
|
case "HIGH":
|
||||||
return "bg-[#FFF1E7] text-[#BD4B00]";
|
return "bg-[#FFF1E7] text-[#BD4B00]";
|
||||||
default:
|
case "MEDIUM":
|
||||||
|
return "bg-[#FFF8E7] text-[#B54708]";
|
||||||
|
case "LOW":
|
||||||
return "bg-[#EEFADC] text-[#5D770D]";
|
return "bg-[#EEFADC] text-[#5D770D]";
|
||||||
|
case "NONE":
|
||||||
|
return "bg-[#E6F4FF] text-[#0B4F71]";
|
||||||
|
default:
|
||||||
|
return "bg-gray-100 text-gray-600";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Mock risk status for demo (since the data doesn't have this field)
|
// Get risk assessment status
|
||||||
const getRiskStatus = (vendorId: string) => {
|
const getRiskAssessmentStatus = (vendor: any) => {
|
||||||
// Simplistic way to assign different risk levels for demo
|
const latestAssessment = vendor.riskAssessments?.edges[0]?.node;
|
||||||
const hash = vendorId.split('').reduce((acc, char) => acc + char.charCodeAt(0), 0);
|
|
||||||
if (hash % 3 === 0) return "CRITICAL";
|
if (!latestAssessment) {
|
||||||
if (hash % 3 === 1) return "SIGNIFICANT";
|
return {
|
||||||
return "GENERAL";
|
status: "NEEDED",
|
||||||
|
dataSensitivity: null,
|
||||||
|
businessImpact: null,
|
||||||
|
isExpired: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const now = new Date();
|
||||||
|
const expiresAt = new Date(latestAssessment.expiresAt);
|
||||||
|
const isExpired = expiresAt < now;
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: isExpired ? "EXPIRED" : "VALID",
|
||||||
|
dataSensitivity: latestAssessment.dataSensitivity,
|
||||||
|
businessImpact: latestAssessment.businessImpact,
|
||||||
|
isExpired
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -477,7 +516,7 @@ function ListVendorContent({
|
|||||||
</th>
|
</th>
|
||||||
<th className="py-3 px-4 text-left text-xs font-semibold text-gray-500">
|
<th className="py-3 px-4 text-left text-xs font-semibold text-gray-500">
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
Risk
|
Data Risk
|
||||||
<svg
|
<svg
|
||||||
width="8"
|
width="8"
|
||||||
height="8"
|
height="8"
|
||||||
@@ -492,7 +531,7 @@ function ListVendorContent({
|
|||||||
</th>
|
</th>
|
||||||
<th className="py-3 px-4 text-left text-xs font-semibold text-gray-500">
|
<th className="py-3 px-4 text-left text-xs font-semibold text-gray-500">
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
Compliance status
|
Business Risk
|
||||||
<svg
|
<svg
|
||||||
width="8"
|
width="8"
|
||||||
height="8"
|
height="8"
|
||||||
@@ -510,7 +549,7 @@ function ListVendorContent({
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{vendors.map((vendor) => {
|
{vendors.map((vendor) => {
|
||||||
const riskStatus = getRiskStatus(vendor.id);
|
const riskStatus = getRiskAssessmentStatus(vendor);
|
||||||
return (
|
return (
|
||||||
<tr
|
<tr
|
||||||
key={vendor.id}
|
key={vendor.id}
|
||||||
@@ -540,64 +579,78 @@ function ListVendorContent({
|
|||||||
{formatDate(vendor.updatedAt)}
|
{formatDate(vendor.updatedAt)}
|
||||||
</td>
|
</td>
|
||||||
<td className="py-4 px-4">
|
<td className="py-4 px-4">
|
||||||
<Badge className={`${getRiskBadgeStyle(riskStatus)} font-medium text-xs px-2 py-1 rounded-md`}>
|
{riskStatus.status === "NEEDED" ? (
|
||||||
{riskStatus === "CRITICAL"
|
<Badge className="bg-gray-100 text-gray-600 font-medium text-xs px-2 py-1 rounded-md">
|
||||||
? "Critical"
|
Assessment needed
|
||||||
: riskStatus === "SIGNIFICANT"
|
</Badge>
|
||||||
? "Medium"
|
) : riskStatus.status === "EXPIRED" ? (
|
||||||
: "General"}
|
<Badge className="bg-[#FFEFEF] text-[#CD2B31] font-medium text-xs px-2 py-1 rounded-md">
|
||||||
</Badge>
|
Assessment expired
|
||||||
|
</Badge>
|
||||||
|
) : (
|
||||||
|
<Badge className={`${getRiskBadgeStyle(riskStatus.dataSensitivity)} font-medium text-xs px-2 py-1 rounded-md`}>
|
||||||
|
{riskStatus.dataSensitivity || "NONE"}
|
||||||
|
</Badge>
|
||||||
|
)}
|
||||||
</td>
|
</td>
|
||||||
<td className="py-4 px-4">
|
<td className="py-4 px-4">
|
||||||
<Badge
|
{riskStatus.status === "NEEDED" ? (
|
||||||
className={`${
|
<Badge className="bg-gray-100 text-gray-600 font-medium text-xs px-2 py-1 rounded-md">
|
||||||
riskStatus === "CRITICAL"
|
Assessment needed
|
||||||
? "bg-[#FFEFEF] text-[#CD2B31]"
|
</Badge>
|
||||||
: riskStatus === "SIGNIFICANT"
|
) : riskStatus.status === "EXPIRED" ? (
|
||||||
? "bg-[#FFF1E7] text-[#BD4B00]"
|
<Badge className="bg-[#FFEFEF] text-[#CD2B31] font-medium text-xs px-2 py-1 rounded-md">
|
||||||
: "bg-[#EEFADC] text-[#5D770D]"
|
Assessment expired
|
||||||
} font-medium text-xs px-2 py-1 rounded-md`}
|
</Badge>
|
||||||
>
|
) : (
|
||||||
{riskStatus === "CRITICAL"
|
<Badge className={`${getRiskBadgeStyle(riskStatus.businessImpact)} font-medium text-xs px-2 py-1 rounded-md`}>
|
||||||
? "Late"
|
{riskStatus.businessImpact || "LOW"}
|
||||||
: riskStatus === "SIGNIFICANT"
|
</Badge>
|
||||||
? "In Progress"
|
)}
|
||||||
: "Completed"}
|
|
||||||
</Badge>
|
|
||||||
</td>
|
</td>
|
||||||
<td className="py-4 px-4 text-right">
|
<td className="py-4 px-4 text-right">
|
||||||
<Button
|
<DropdownMenu>
|
||||||
variant="ghost"
|
<DropdownMenuTrigger asChild>
|
||||||
size="icon"
|
<Button
|
||||||
className="h-8 w-8 rounded-full"
|
variant="ghost"
|
||||||
onClick={(e) => {
|
size="icon"
|
||||||
e.preventDefault();
|
className="h-8 w-8 rounded-full"
|
||||||
// Handle menu click - could be expanded into a dropdown menu
|
>
|
||||||
if (
|
<MoreHorizontal className="h-4 w-4" />
|
||||||
window.confirm(
|
</Button>
|
||||||
"Are you sure you want to delete this vendor?"
|
</DropdownMenuTrigger>
|
||||||
)
|
<DropdownMenuContent align="end">
|
||||||
) {
|
<DropdownMenuItem
|
||||||
deleteVendor({
|
className="text-red-600"
|
||||||
variables: {
|
onClick={(e) => {
|
||||||
connections: [vendorsConnection.vendors.__id],
|
e.preventDefault();
|
||||||
input: {
|
if (
|
||||||
vendorId: vendor.id,
|
window.confirm(
|
||||||
},
|
"Are you sure you want to delete this vendor?"
|
||||||
},
|
)
|
||||||
onCompleted() {
|
) {
|
||||||
toast({
|
deleteVendor({
|
||||||
title: "Vendor deleted",
|
variables: {
|
||||||
description:
|
connections: [vendorsConnection.vendors.__id],
|
||||||
"The vendor has been deleted successfully",
|
input: {
|
||||||
|
vendorId: vendor.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onCompleted() {
|
||||||
|
toast({
|
||||||
|
title: "Vendor deleted",
|
||||||
|
description:
|
||||||
|
"The vendor has been deleted successfully",
|
||||||
|
});
|
||||||
|
},
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
});
|
}}
|
||||||
}
|
>
|
||||||
}}
|
Delete vendor
|
||||||
>
|
</DropdownMenuItem>
|
||||||
<MoreHorizontal className="h-4 w-4" />
|
</DropdownMenuContent>
|
||||||
</Button>
|
</DropdownMenu>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* @generated SignedSource<<2d5b613cbbbd051c4c1f1561f55bf644>>
|
* @generated SignedSource<<53f7cbf9132d69012d6e13909a807576>>
|
||||||
* @lightSyntaxTransform
|
* @lightSyntaxTransform
|
||||||
* @nogrep
|
* @nogrep
|
||||||
*/
|
*/
|
||||||
@@ -231,6 +231,82 @@ return {
|
|||||||
"name": "updatedAt",
|
"name": "updatedAt",
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"kind": "Literal",
|
||||||
|
"name": "first",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "Literal",
|
||||||
|
"name": "orderBy",
|
||||||
|
"value": {
|
||||||
|
"direction": "DESC",
|
||||||
|
"field": "ASSESSED_AT"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"concreteType": "VendorRiskAssessmentConnection",
|
||||||
|
"kind": "LinkedField",
|
||||||
|
"name": "riskAssessments",
|
||||||
|
"plural": false,
|
||||||
|
"selections": [
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"concreteType": "VendorRiskAssessmentEdge",
|
||||||
|
"kind": "LinkedField",
|
||||||
|
"name": "edges",
|
||||||
|
"plural": true,
|
||||||
|
"selections": [
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"concreteType": "VendorRiskAssessment",
|
||||||
|
"kind": "LinkedField",
|
||||||
|
"name": "node",
|
||||||
|
"plural": false,
|
||||||
|
"selections": [
|
||||||
|
(v11/*: any*/),
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "assessedAt",
|
||||||
|
"storageKey": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "expiresAt",
|
||||||
|
"storageKey": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "dataSensitivity",
|
||||||
|
"storageKey": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "businessImpact",
|
||||||
|
"storageKey": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"storageKey": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"storageKey": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"storageKey": "riskAssessments(first:1,orderBy:{\"direction\":\"DESC\",\"field\":\"ASSESSED_AT\"})"
|
||||||
|
},
|
||||||
(v10/*: any*/)
|
(v10/*: any*/)
|
||||||
],
|
],
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
@@ -320,16 +396,16 @@ return {
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"cacheID": "b1055c67d0940ecd9189ec80410a8add",
|
"cacheID": "bbb819bae323711ced24c6d5ab842906",
|
||||||
"id": null,
|
"id": null,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"name": "ListVendorViewPaginationQuery",
|
"name": "ListVendorViewPaginationQuery",
|
||||||
"operationKind": "query",
|
"operationKind": "query",
|
||||||
"text": "query ListVendorViewPaginationQuery(\n $after: CursorKey\n $before: CursorKey\n $first: Int\n $last: Int\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...ListVendorView_vendors_pbnwq\n id\n }\n}\n\nfragment ListVendorView_vendors_pbnwq on Organization {\n vendors(first: $first, after: $after, last: $last, before: $before, orderBy: {direction: ASC, field: NAME}) {\n edges {\n node {\n id\n name\n description\n websiteUrl\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 ListVendorViewPaginationQuery(\n $after: CursorKey\n $before: CursorKey\n $first: Int\n $last: Int\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...ListVendorView_vendors_pbnwq\n id\n }\n}\n\nfragment ListVendorView_vendors_pbnwq on Organization {\n vendors(first: $first, after: $after, last: $last, before: $before, orderBy: {direction: ASC, field: NAME}) {\n edges {\n node {\n id\n name\n description\n websiteUrl\n createdAt\n updatedAt\n riskAssessments(first: 1, orderBy: {direction: DESC, field: ASSESSED_AT}) {\n edges {\n node {\n id\n assessedAt\n expiresAt\n dataSensitivity\n businessImpact\n }\n }\n }\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 = "3908e5fd1af7e0cb367a480fc9fc437e";
|
(node as any).hash = "eb39ac51abe77196431f4f20ac0010a9";
|
||||||
|
|
||||||
export default node;
|
export default node;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* @generated SignedSource<<4d1328e7df631fabe3c8b7dccdf5ffb0>>
|
* @generated SignedSource<<500e7888f7d464b89781689be541b2c5>>
|
||||||
* @lightSyntaxTransform
|
* @lightSyntaxTransform
|
||||||
* @nogrep
|
* @nogrep
|
||||||
*/
|
*/
|
||||||
@@ -233,6 +233,82 @@ return {
|
|||||||
"name": "updatedAt",
|
"name": "updatedAt",
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"kind": "Literal",
|
||||||
|
"name": "first",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "Literal",
|
||||||
|
"name": "orderBy",
|
||||||
|
"value": {
|
||||||
|
"direction": "DESC",
|
||||||
|
"field": "ASSESSED_AT"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"concreteType": "VendorRiskAssessmentConnection",
|
||||||
|
"kind": "LinkedField",
|
||||||
|
"name": "riskAssessments",
|
||||||
|
"plural": false,
|
||||||
|
"selections": [
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"concreteType": "VendorRiskAssessmentEdge",
|
||||||
|
"kind": "LinkedField",
|
||||||
|
"name": "edges",
|
||||||
|
"plural": true,
|
||||||
|
"selections": [
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"concreteType": "VendorRiskAssessment",
|
||||||
|
"kind": "LinkedField",
|
||||||
|
"name": "node",
|
||||||
|
"plural": false,
|
||||||
|
"selections": [
|
||||||
|
(v6/*: any*/),
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "assessedAt",
|
||||||
|
"storageKey": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "expiresAt",
|
||||||
|
"storageKey": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "dataSensitivity",
|
||||||
|
"storageKey": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "businessImpact",
|
||||||
|
"storageKey": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"storageKey": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"storageKey": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"storageKey": "riskAssessments(first:1,orderBy:{\"direction\":\"DESC\",\"field\":\"ASSESSED_AT\"})"
|
||||||
|
},
|
||||||
(v11/*: any*/)
|
(v11/*: any*/)
|
||||||
],
|
],
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
@@ -322,12 +398,12 @@ return {
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"cacheID": "f4269cea33bcb3665cfc49bc350cf426",
|
"cacheID": "7a3b85e5ebe050f67283192623ccd695",
|
||||||
"id": null,
|
"id": null,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"name": "ListVendorViewQuery",
|
"name": "ListVendorViewQuery",
|
||||||
"operationKind": "query",
|
"operationKind": "query",
|
||||||
"text": "query ListVendorViewQuery(\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 ...ListVendorView_vendors_pbnwq\n }\n}\n\nfragment ListVendorView_vendors_pbnwq on Organization {\n vendors(first: $first, after: $after, last: $last, before: $before, orderBy: {direction: ASC, field: NAME}) {\n edges {\n node {\n id\n name\n description\n websiteUrl\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 ListVendorViewQuery(\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 ...ListVendorView_vendors_pbnwq\n }\n}\n\nfragment ListVendorView_vendors_pbnwq on Organization {\n vendors(first: $first, after: $after, last: $last, before: $before, orderBy: {direction: ASC, field: NAME}) {\n edges {\n node {\n id\n name\n description\n websiteUrl\n createdAt\n updatedAt\n riskAssessments(first: 1, orderBy: {direction: DESC, field: ASSESSED_AT}) {\n edges {\n node {\n id\n assessedAt\n expiresAt\n dataSensitivity\n businessImpact\n }\n }\n }\n __typename\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n id\n}\n"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* @generated SignedSource<<e3d4dae05baff068e5f61916fb436e10>>
|
* @generated SignedSource<<c99ab9d208e0554aff738243c0115a04>>
|
||||||
* @lightSyntaxTransform
|
* @lightSyntaxTransform
|
||||||
* @nogrep
|
* @nogrep
|
||||||
*/
|
*/
|
||||||
@@ -9,6 +9,8 @@
|
|||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
|
|
||||||
import { ReaderFragment } from 'relay-runtime';
|
import { ReaderFragment } from 'relay-runtime';
|
||||||
|
export type BusinessImpact = "CRITICAL" | "HIGH" | "LOW" | "MEDIUM";
|
||||||
|
export type DataSensitivity = "CRITICAL" | "HIGH" | "LOW" | "MEDIUM" | "NONE";
|
||||||
import { FragmentRefs } from "relay-runtime";
|
import { FragmentRefs } from "relay-runtime";
|
||||||
export type ListVendorView_vendors$data = {
|
export type ListVendorView_vendors$data = {
|
||||||
readonly id: string;
|
readonly id: string;
|
||||||
@@ -20,6 +22,17 @@ export type ListVendorView_vendors$data = {
|
|||||||
readonly description: string | null | undefined;
|
readonly description: string | null | undefined;
|
||||||
readonly id: string;
|
readonly id: string;
|
||||||
readonly name: string;
|
readonly name: string;
|
||||||
|
readonly riskAssessments: {
|
||||||
|
readonly edges: ReadonlyArray<{
|
||||||
|
readonly node: {
|
||||||
|
readonly assessedAt: string;
|
||||||
|
readonly businessImpact: BusinessImpact;
|
||||||
|
readonly dataSensitivity: DataSensitivity;
|
||||||
|
readonly expiresAt: string;
|
||||||
|
readonly id: string;
|
||||||
|
};
|
||||||
|
}>;
|
||||||
|
};
|
||||||
readonly updatedAt: string;
|
readonly updatedAt: string;
|
||||||
readonly websiteUrl: string | null | undefined;
|
readonly websiteUrl: string | null | undefined;
|
||||||
};
|
};
|
||||||
@@ -175,6 +188,82 @@ return {
|
|||||||
"name": "updatedAt",
|
"name": "updatedAt",
|
||||||
"storageKey": null
|
"storageKey": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"kind": "Literal",
|
||||||
|
"name": "first",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "Literal",
|
||||||
|
"name": "orderBy",
|
||||||
|
"value": {
|
||||||
|
"direction": "DESC",
|
||||||
|
"field": "ASSESSED_AT"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"concreteType": "VendorRiskAssessmentConnection",
|
||||||
|
"kind": "LinkedField",
|
||||||
|
"name": "riskAssessments",
|
||||||
|
"plural": false,
|
||||||
|
"selections": [
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"concreteType": "VendorRiskAssessmentEdge",
|
||||||
|
"kind": "LinkedField",
|
||||||
|
"name": "edges",
|
||||||
|
"plural": true,
|
||||||
|
"selections": [
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"concreteType": "VendorRiskAssessment",
|
||||||
|
"kind": "LinkedField",
|
||||||
|
"name": "node",
|
||||||
|
"plural": false,
|
||||||
|
"selections": [
|
||||||
|
(v1/*: any*/),
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "assessedAt",
|
||||||
|
"storageKey": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "expiresAt",
|
||||||
|
"storageKey": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "dataSensitivity",
|
||||||
|
"storageKey": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": null,
|
||||||
|
"args": null,
|
||||||
|
"kind": "ScalarField",
|
||||||
|
"name": "businessImpact",
|
||||||
|
"storageKey": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"storageKey": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"storageKey": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"storageKey": "riskAssessments(first:1,orderBy:{\"direction\":\"DESC\",\"field\":\"ASSESSED_AT\"})"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"args": null,
|
"args": null,
|
||||||
@@ -256,6 +345,6 @@ return {
|
|||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(node as any).hash = "3908e5fd1af7e0cb367a480fc9fc437e";
|
(node as any).hash = "eb39ac51abe77196431f4f20ac0010a9";
|
||||||
|
|
||||||
export default node;
|
export default node;
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ func (v VendorRiskAssessment) CursorKey(orderBy VendorRiskAssessmentOrderField)
|
|||||||
return page.NewCursorKey(v.ID, v.CreatedAt)
|
return page.NewCursorKey(v.ID, v.CreatedAt)
|
||||||
case VendorRiskAssessmentOrderFieldExpiresAt:
|
case VendorRiskAssessmentOrderFieldExpiresAt:
|
||||||
return page.NewCursorKey(v.ID, v.ExpiresAt)
|
return page.NewCursorKey(v.ID, v.ExpiresAt)
|
||||||
|
case VendorRiskAssessmentOrderFieldAssessedAt:
|
||||||
|
return page.NewCursorKey(v.ID, v.AssessedAt)
|
||||||
}
|
}
|
||||||
|
|
||||||
panic(fmt.Sprintf("unsupported order by: %s", orderBy))
|
panic(fmt.Sprintf("unsupported order by: %s", orderBy))
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ type (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
VendorRiskAssessmentOrderFieldCreatedAt VendorRiskAssessmentOrderField = "CREATED_AT"
|
VendorRiskAssessmentOrderFieldCreatedAt VendorRiskAssessmentOrderField = "CREATED_AT"
|
||||||
VendorRiskAssessmentOrderFieldExpiresAt VendorRiskAssessmentOrderField = "EXPIRES_AT"
|
VendorRiskAssessmentOrderFieldExpiresAt VendorRiskAssessmentOrderField = "EXPIRES_AT"
|
||||||
|
VendorRiskAssessmentOrderFieldAssessedAt VendorRiskAssessmentOrderField = "ASSESSED_AT"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (p VendorRiskAssessmentOrderField) Column() string {
|
func (p VendorRiskAssessmentOrderField) Column() string {
|
||||||
|
|||||||
@@ -1479,6 +1479,10 @@ enum VendorRiskAssessmentOrderField
|
|||||||
@goEnum(
|
@goEnum(
|
||||||
value: "github.com/getprobo/probo/pkg/coredata.VendorRiskAssessmentOrderFieldExpiresAt"
|
value: "github.com/getprobo/probo/pkg/coredata.VendorRiskAssessmentOrderFieldExpiresAt"
|
||||||
)
|
)
|
||||||
|
ASSESSED_AT
|
||||||
|
@goEnum(
|
||||||
|
value: "github.com/getprobo/probo/pkg/coredata.VendorRiskAssessmentOrderFieldAssessedAt"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
input CreateVendorRiskAssessmentInput {
|
input CreateVendorRiskAssessmentInput {
|
||||||
|
|||||||
@@ -4863,6 +4863,10 @@ enum VendorRiskAssessmentOrderField
|
|||||||
@goEnum(
|
@goEnum(
|
||||||
value: "github.com/getprobo/probo/pkg/coredata.VendorRiskAssessmentOrderFieldExpiresAt"
|
value: "github.com/getprobo/probo/pkg/coredata.VendorRiskAssessmentOrderFieldExpiresAt"
|
||||||
)
|
)
|
||||||
|
ASSESSED_AT
|
||||||
|
@goEnum(
|
||||||
|
value: "github.com/getprobo/probo/pkg/coredata.VendorRiskAssessmentOrderFieldAssessedAt"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
input CreateVendorRiskAssessmentInput {
|
input CreateVendorRiskAssessmentInput {
|
||||||
@@ -37075,12 +37079,14 @@ func (ec *executionContext) marshalNVendorRiskAssessmentOrderField2githubᚗcom
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
unmarshalNVendorRiskAssessmentOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐVendorRiskAssessmentOrderField = map[string]coredata.VendorRiskAssessmentOrderField{
|
unmarshalNVendorRiskAssessmentOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐVendorRiskAssessmentOrderField = map[string]coredata.VendorRiskAssessmentOrderField{
|
||||||
"CREATED_AT": coredata.VendorRiskAssessmentOrderFieldCreatedAt,
|
"CREATED_AT": coredata.VendorRiskAssessmentOrderFieldCreatedAt,
|
||||||
"EXPIRES_AT": coredata.VendorRiskAssessmentOrderFieldExpiresAt,
|
"EXPIRES_AT": coredata.VendorRiskAssessmentOrderFieldExpiresAt,
|
||||||
|
"ASSESSED_AT": coredata.VendorRiskAssessmentOrderFieldAssessedAt,
|
||||||
}
|
}
|
||||||
marshalNVendorRiskAssessmentOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐVendorRiskAssessmentOrderField = map[coredata.VendorRiskAssessmentOrderField]string{
|
marshalNVendorRiskAssessmentOrderField2githubᚗcomᚋgetproboᚋproboᚋpkgᚋcoredataᚐVendorRiskAssessmentOrderField = map[coredata.VendorRiskAssessmentOrderField]string{
|
||||||
coredata.VendorRiskAssessmentOrderFieldCreatedAt: "CREATED_AT",
|
coredata.VendorRiskAssessmentOrderFieldCreatedAt: "CREATED_AT",
|
||||||
coredata.VendorRiskAssessmentOrderFieldExpiresAt: "EXPIRES_AT",
|
coredata.VendorRiskAssessmentOrderFieldExpiresAt: "EXPIRES_AT",
|
||||||
|
coredata.VendorRiskAssessmentOrderFieldAssessedAt: "ASSESSED_AT",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user