Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ type RemediationHistoryPanelProps = {
refreshKey?: number
}

const COLUMN_SPAN = 6
const COLUMN_SPAN = 7

function formatDateTime(value: string | null): string {
if (!value) return "—"
Comment thread
hodanoori marked this conversation as resolved.
Outdated
Expand Down Expand Up @@ -87,11 +87,12 @@ const RemediationHistoryTable = ({
<>
{remediatedVulnerabilities.map((r: RemediatedVulnerability) => (
<DataGridRow key={r.remediationId}>
<DataGridCell className="whitespace-nowrap">{r.type ?? "—"}</DataGridCell>
<DataGridCell className="whitespace-nowrap">{r.type}</DataGridCell>
Comment thread
hodanoori marked this conversation as resolved.
Outdated
<DataGridCell className="whitespace-nowrap">{formatDateTime(r.expirationDate)}</DataGridCell>
<DataGridCell className="whitespace-nowrap">{formatDateTime(r.remediationDate)}</DataGridCell>
Comment thread
hodanoori marked this conversation as resolved.
<DataGridCell>{r.remediatedBy ?? "—"}</DataGridCell>
<DataGridCell>{r.description ?? "—"}</DataGridCell>
<DataGridCell>{r.remediatedBy ?? "--"}</DataGridCell>
<DataGridCell className="min-w-0">{r.description ?? "--"}</DataGridCell>
<DataGridCell className="min-w-0">{r.url ?? "--"}</DataGridCell>
Comment thread
hodanoori marked this conversation as resolved.
Outdated
<DataGridCell className="cursor-default interactive" onClick={(e) => e.stopPropagation()}>
{revertingId === r.remediationId ? (
<Spinner variant="primary" size="small" className="ml-auto" />
Expand Down Expand Up @@ -225,13 +226,14 @@ export const RemediationHistoryPanel = ({
fallbackRender={getErrorDataRowComponent({ colspan: COLUMN_SPAN })}
resetKeys={[remediationsPromise]}
>
<DataGrid columns={COLUMN_SPAN} minContentColumns={[0, 1, 2, 3, 5]} cellVerticalAlignment="top">
<DataGrid columns={COLUMN_SPAN} minContentColumns={[0, 1, 2, 3, 6]} cellVerticalAlignment="top">
<DataGridRow>
<DataGridHeadCell>Type</DataGridHeadCell>
<DataGridHeadCell>Expiration Date</DataGridHeadCell>
<DataGridHeadCell>Remediation Date</DataGridHeadCell>
<DataGridHeadCell>Remediated By</DataGridHeadCell>
<DataGridHeadCell>Description</DataGridHeadCell>
<DataGridHeadCell>Source Ticket</DataGridHeadCell>
<DataGridHeadCell />
Comment thread
hodanoori marked this conversation as resolved.
</DataGridRow>
<Suspense fallback={<LoadingDataRow colSpan={COLUMN_SPAN} />}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,6 @@ export const RiskAcceptanceModal: React.FC<RiskAcceptanceModalProps> = ({
const descriptionTrimmed = description.trim()
const sourceTicketTrimmed = sourceTicket.trim()

const buildDescription = () => {
if (sourceTicketTrimmed) {
return `Source Ticket: ${sourceTicketTrimmed}\n\n${descriptionTrimmed}`
}
return descriptionTrimmed
}

const handleConfirm = async () => {
if (!descriptionTrimmed) {
setDescriptionError("Description is required")
Expand All @@ -118,10 +111,11 @@ export const RiskAcceptanceModal: React.FC<RiskAcceptanceModalProps> = ({
vulnerability,
service,
image,
description: buildDescription(),
description: descriptionTrimmed,
...(remediatedBy && { remediatedBy }),
...(severityValue !== undefined && { severity: severityValue }),
expirationDate: expirationDate.toISOString(),
...(sourceTicketTrimmed && { url: sourceTicketTrimmed }),
}
Comment thread
hodanoori marked this conversation as resolved.
const result = await onConfirm(input)
if (result?.error) {
Expand Down
4 changes: 3 additions & 1 deletion apps/heureka/src/components/Services/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ export type RemediatedVulnerability = {
remediationDate: string | null
remediatedBy: string | null
expirationDate: string | null
url: string | null
}

type NormalizedServiceImageVulnerabilities = {
Expand Down Expand Up @@ -622,8 +623,9 @@ export const getNormalizedRemediationsResponse = (
vulnerability: node.vulnerability || null,
vulnerabilityId: null,
remediationDate: node.remediationDate != null ? String(node.remediationDate) : null,
remediatedBy: node.remediatedBy ?? null,
remediatedBy: node.remediatedBy?.trim() || null,
expirationDate: node.expirationDate != null ? String(node.expirationDate) : null,
url: node.url?.trim() || null,
}
})

Expand Down
7 changes: 7 additions & 0 deletions apps/heureka/src/generated/graphql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1296,6 +1296,7 @@ export type Remediation = Node & {
serviceId?: Maybe<Scalars["ID"]["output"]>
severity?: Maybe<SeverityValues>
type?: Maybe<RemediationTypeValues>
url?: Maybe<Scalars["String"]["output"]>
vulnerability?: Maybe<Scalars["String"]["output"]>
vulnerabilityId?: Maybe<Scalars["ID"]["output"]>
}
Expand All @@ -1320,6 +1321,7 @@ export type RemediationFilter = {
severity?: InputMaybe<Array<InputMaybe<SeverityValues>>>
state?: InputMaybe<Array<StateFilter>>
type?: InputMaybe<Array<InputMaybe<RemediationTypeValues>>>
url?: InputMaybe<Array<InputMaybe<Scalars["String"]["input"]>>>
vulnerability?: InputMaybe<Array<InputMaybe<Scalars["String"]["input"]>>>
}

Expand All @@ -1332,6 +1334,7 @@ export type RemediationInput = {
service?: InputMaybe<Scalars["String"]["input"]>
severity?: InputMaybe<SeverityValues>
type?: InputMaybe<RemediationTypeValues>
url?: InputMaybe<Scalars["String"]["input"]>
vulnerability?: InputMaybe<Scalars["String"]["input"]>
}

Expand Down Expand Up @@ -1795,6 +1798,7 @@ export type CreateRemediationMutation = {
serviceId?: string | null
severity?: SeverityValues | null
type?: RemediationTypeValues | null
url?: string | null
vulnerability?: string | null
vulnerabilityId?: string | null
}
Expand Down Expand Up @@ -1828,6 +1832,7 @@ export type GetRemediationsQuery = {
expirationDate?: any | null
remediationDate?: any | null
remediatedBy?: string | null
url?: string | null
}
} | null> | null
} | null
Expand Down Expand Up @@ -2189,6 +2194,7 @@ export const CreateRemediationDocument = gql`
serviceId
severity
type
url
vulnerability
vulnerabilityId
}
Expand All @@ -2213,6 +2219,7 @@ export const GetRemediationsDocument = gql`
expirationDate
remediationDate
remediatedBy
url
}
}
totalCount
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ mutation CreateRemediation($input: RemediationInput!) {
serviceId
severity
type
url
vulnerability
vulnerabilityId
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ query GetRemediations($filter: RemediationFilter) {
expirationDate
remediationDate
remediatedBy
url
}
}
totalCount
Expand Down
Loading