diff --git a/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/VulnReports/ViewBasedReportJobDetails.tsx b/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/VulnReports/ViewBasedReportJobDetails.tsx
index 6ec571be37781..44464fcde22da 100644
--- a/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/VulnReports/ViewBasedReportJobDetails.tsx
+++ b/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/VulnReports/ViewBasedReportJobDetails.tsx
@@ -1,4 +1,5 @@
import React from 'react';
+import type { ReactElement } from 'react';
import {
Chip,
ChipGroup,
@@ -11,7 +12,8 @@ import {
Title,
} from '@patternfly/react-core';
-import { ViewBasedReportSnapshot } from 'services/ReportsService.types';
+import useFeatureFlags from 'hooks/useFeatureFlags';
+import type { ViewBasedReportSnapshot } from 'services/ReportsService.types';
import VulnerabilitySeverityIconText from 'Components/PatternFly/IconText/VulnerabilitySeverityIconText';
import { getSearchFilterFromSearchString } from 'utils/searchUtils';
@@ -20,6 +22,52 @@ export type ViewBasedReportJobDetailsProps = {
};
function ViewBasedReportJobDetails({ reportSnapshot }: ViewBasedReportJobDetailsProps) {
+ // TODO Analyze pro and con of redundancy with ReportParametersDedtails component.
+ const { isFeatureFlagEnabled } = useFeatureFlags();
+ const optionalColumnsDescriptions: ReactElement[] = [];
+ if (isFeatureFlagEnabled('ROX_SCANNER_V4') && reportSnapshot.vulnReportFilters.includeNvdCvss) {
+ optionalColumnsDescriptions.push(
+ NVDCVSS
+ );
+ }
+ if (
+ isFeatureFlagEnabled('ROX_SCANNER_V4') &&
+ reportSnapshot.vulnReportFilters.includeEpssProbability
+ ) {
+ optionalColumnsDescriptions.push(
+
+ EPSS Probability Percentage
+
+ );
+ }
+ /*
+ if (
+ isFeatureFlagEnabled('ROX_SCANNER_V4') &&
+ reportSnapshot.vulnReportFilters.includeAdvisory
+ ) {
+ optionalColumnsDescriptions.push(
+
+ Advisory Name and Advisory Link
+
+ );
+ }
+ */
+ /*
+ // Ross CISA KEV includeKnownExploit?
+ // Probably for 4.9 because optional columns might not be up to date for view-based reports.
+ if (
+ isFeatureFlagEnabled('ROX_SCANNER_V4') &&
+ isFeatureFlagEnabled('ROX_WHATEVER') &&
+ formValues.reportParameters.includeKnownExploit
+ ) {
+ optionalColumnsDescriptions.push(
+
+ Known exploit
+
+ );
+ }
+ */
+
// @TODO: We need to separate the "CVE Severity" and "CVEs discovered since" filters from the rest of the filters.
// The relevant search terms are called "Severity" and "CVE Discovered Time".
const query = getSearchFilterFromSearchString(reportSnapshot.vulnReportFilters.query);
@@ -108,17 +156,12 @@ function ViewBasedReportJobDetails({ reportSnapshot }: ViewBasedReportJobDetails
CVEs discovered since
All time
-
- Optional columns
-
-
- {reportSnapshot.vulnReportFilters.includeNvdCvss && NVD CVSS
}
- {reportSnapshot.vulnReportFilters.includeEpssProbability && (
- EPSS probability
- )}
-
-
-
+ {optionalColumnsDescriptions.length !== 0 && (
+
+ Optional columns
+ {optionalColumnsDescriptions}
+
+ )}
);
diff --git a/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/components/ReportParametersDetails.tsx b/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/components/ReportParametersDetails.tsx
index 087869ee3af07..c43f222967ec9 100644
--- a/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/components/ReportParametersDetails.tsx
+++ b/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/components/ReportParametersDetails.tsx
@@ -1,3 +1,5 @@
+import React from 'react';
+import type { ReactElement } from 'react';
import {
DescriptionList,
DescriptionListDescription,
@@ -7,7 +9,6 @@ import {
FlexItem,
Title,
} from '@patternfly/react-core';
-import React, { ReactElement } from 'react';
import { ReportFormValues } from 'Containers/Vulnerabilities/VulnerablityReporting/forms/useReportFormValues';
import { fixabilityLabels } from 'constants/reportConstants';
@@ -29,14 +30,43 @@ function ReportParametersDetails({
formValues,
}: ReportParametersDetailsProps): ReactElement {
const { isFeatureFlagEnabled } = useFeatureFlags();
- const isIncludeAdvisoryEnabled = isFeatureFlagEnabled('ROX_SCANNER_V4');
- const hasIncludeAdvisory =
- isIncludeAdvisoryEnabled && formValues.reportParameters.includeAdvisory;
- const isIncludeEpssProbabilityEnabled = isFeatureFlagEnabled('ROX_SCANNER_V4');
- const hasIncludeEpssProbability =
- isIncludeEpssProbabilityEnabled && formValues.reportParameters.includeEpssProbability;
- const isIncludeNvdCvssEnabled = isFeatureFlagEnabled('ROX_SCANNER_V4');
- const hasIncludeNvdCvss = isIncludeNvdCvssEnabled && formValues.reportParameters.includeNvdCvss;
+ const optionalColumnsDescriptions: ReactElement[] = [];
+ if (isFeatureFlagEnabled('ROX_SCANNER_V4') && formValues.reportParameters.includeNvdCvss) {
+ optionalColumnsDescriptions.push(
+ NVDCVSS
+ );
+ }
+ if (
+ isFeatureFlagEnabled('ROX_SCANNER_V4') &&
+ formValues.reportParameters.includeEpssProbability
+ ) {
+ optionalColumnsDescriptions.push(
+
+ EPSS Probability Percentage
+
+ );
+ }
+ if (isFeatureFlagEnabled('ROX_SCANNER_V4') && formValues.reportParameters.includeAdvisory) {
+ optionalColumnsDescriptions.push(
+
+ Advisory Name and Advisory Link
+
+ );
+ }
+ /*
+ // Ross CISA KEV includeKnownExploit?
+ if (
+ isFeatureFlagEnabled('ROX_SCANNER_V4') &&
+ isFeatureFlagEnabled('ROX_WHATEVER') &&
+ formValues.reportParameters.includeKnownExploit
+ ) {
+ optionalColumnsDescriptions.push(
+
+ Known exploit
+
+ );
+ }
+ */
const cveSeverities =
formValues.reportParameters.cveSeverities.length !== 0 ? (
@@ -136,22 +166,10 @@ function ReportParametersDetails({
Discovered At
Reference
- {(hasIncludeNvdCvss || hasIncludeEpssProbability || hasIncludeAdvisory) && (
+ {optionalColumnsDescriptions.length !== 0 && (
Optional columns
- {hasIncludeNvdCvss && (
- NVDCVSS
- )}
- {hasIncludeEpssProbability && (
-
- EPSS Probability Percentage
-
- )}
- {hasIncludeAdvisory && (
-
- Advisory Name and Advisory Link
-
- )}
+ {optionalColumnsDescriptions}
)}
diff --git a/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/forms/ReportParametersForm.tsx b/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/forms/ReportParametersForm.tsx
index 75aafce6aa7b2..a47ade99cfb7d 100644
--- a/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/forms/ReportParametersForm.tsx
+++ b/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/forms/ReportParametersForm.tsx
@@ -1,4 +1,5 @@
-import React, { ChangeEvent, FormEvent, ReactElement } from 'react';
+import React from 'react';
+import type { ChangeEvent, FormEvent, ReactElement } from 'react';
import {
Checkbox,
DatePicker,
@@ -13,7 +14,7 @@ import {
TextInput,
Title,
} from '@patternfly/react-core';
-import { FormikProps } from 'formik';
+import type { FormikProps } from 'formik';
import { cloneDeep } from 'lodash';
import {
@@ -31,8 +32,8 @@ import SelectSingle from 'Components/SelectSingle/SelectSingle';
import VulnerabilitySeverityIconText from 'Components/PatternFly/IconText/VulnerabilitySeverityIconText';
import FormLabelGroup from 'Components/PatternFly/FormLabelGroup';
import useFeatureFlags from 'hooks/useFeatureFlags';
-import { CollectionSlim } from 'services/CollectionsService';
-import { NotifierConfiguration } from 'services/ReportsService.types';
+import type { CollectionSlim } from 'services/CollectionsService';
+import type { NotifierConfiguration } from 'services/ReportsService.types';
import CollectionSelection from './CollectionSelection';
export type ReportParametersFormProps = {
@@ -42,9 +43,54 @@ export type ReportParametersFormProps = {
function ReportParametersForm({ title, formik }: ReportParametersFormProps): ReactElement {
const { isFeatureFlagEnabled } = useFeatureFlags();
- const isIncludeAdvisoryEnabled = isFeatureFlagEnabled('ROX_SCANNER_V4');
- const isIncludeEpssProbabilityEnabled = isFeatureFlagEnabled('ROX_SCANNER_V4');
- const isIncludeNvdCvssEnabled = isFeatureFlagEnabled('ROX_SCANNER_V4');
+ const optionalColumnsCheckboxes: ReactElement[] = [];
+ if (isFeatureFlagEnabled('ROX_SCANNER_V4')) {
+ optionalColumnsCheckboxes.push(
+
+ );
+ }
+ if (isFeatureFlagEnabled('ROX_SCANNER_V4')) {
+ optionalColumnsCheckboxes.push(
+
+ );
+ }
+ if (isFeatureFlagEnabled('ROX_SCANNER_V4')) {
+ optionalColumnsCheckboxes.push(
+
+ );
+ }
+ /*
+ // Ross CISA KEV includeKnownExploit?
+ if (isFeatureFlagEnabled('ROX_SCANNER_V4') && isFeatureFlagEnabled('ROX_WHATEVER')) {
+ optionalColumnsCheckboxes.push(
+
+ );
+ }
+ */
const handleTextChange =
(fieldName: string) =>
@@ -291,34 +337,9 @@ function ReportParametersForm({ title, formik }: ReportParametersFormProps): Rea
/>
)}
- {(isIncludeNvdCvssEnabled ||
- isIncludeEpssProbabilityEnabled ||
- isIncludeAdvisoryEnabled) && (
+ {optionalColumnsCheckboxes.length !== 0 && (
- {isIncludeNvdCvssEnabled && (
-
- )}
- {isIncludeEpssProbabilityEnabled && (
-
- )}
- {isIncludeAdvisoryEnabled && (
-
- )}
+ {optionalColumnsCheckboxes}
)}
{
imageType: [],
includeAdvisory: false,
includeEpssProbability: false,
+ // Ross CISA KEV includeKnownExploit?
includeNvdCvss: false,
cvesDiscoveredSince: 'ALL_VULN',
cvesDiscoveredStartDate: undefined,
@@ -103,6 +104,7 @@ describe('utils', () => {
imageType: [],
includeAdvisory: false,
includeEpssProbability: false,
+ // Ross CISA KEV includeKnownExploit?
includeNvdCvss: false,
cvesDiscoveredSince: 'SINCE_LAST_REPORT',
cvesDiscoveredStartDate: undefined,
@@ -123,6 +125,7 @@ describe('utils', () => {
imageType: [],
includeAdvisory: false,
includeEpssProbability: false,
+ // Ross CISA KEV includeKnownExploit?
includeNvdCvss: false,
cvesDiscoveredSince: 'START_DATE',
cvesDiscoveredStartDate: '2023-10-02',
diff --git a/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/utils.ts b/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/utils.ts
index 56b82e03b05f8..079ad97651efd 100644
--- a/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/utils.ts
+++ b/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/utils.ts
@@ -60,6 +60,7 @@ export function getReportConfigurationFromFormValues(
imageTypes: reportParameters.imageType,
includeAdvisory: reportParameters.includeAdvisory,
includeEpssProbability: reportParameters.includeEpssProbability,
+ // Ross CISA KEV includeKnownExploit?
includeNvdCvss: reportParameters.includeNvdCvss,
};
let vulnReportFilters: VulnerabilityReportFilters;
@@ -191,6 +192,7 @@ export function getReportFormValuesFromConfiguration(
cvesDiscoveredStartDate,
includeAdvisory: vulnReportFilters.includeAdvisory,
includeEpssProbability: vulnReportFilters.includeEpssProbability,
+ // Ross CISA KEV includeKnownExploit?
includeNvdCvss: vulnReportFilters.includeNvdCvss,
reportScope: {
id: resourceScope.collectionScope.collectionId,