-
Notifications
You must be signed in to change notification settings - Fork 596
/
PipelineRunList.tsx
73 lines (67 loc) · 2.68 KB
/
PipelineRunList.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import * as React from 'react';
import { SortByDirection } from '@patternfly/react-table';
import Helmet from 'react-helmet';
import { useTranslation } from 'react-i18next';
import { useActivePerspective } from '@console/dynamic-plugin-sdk';
import { Table } from '@console/internal/components/factory';
import { useUserSettings } from '@console/shared/src';
import { PREFERRED_DEV_PIPELINE_PAGE_TAB_USER_SETTING_KEY } from '../../../const';
import { PipelineRunModel } from '../../../models';
import { PipelineRunKind } from '../../../types';
import { usePipelineOperatorVersion } from '../../pipelines/utils/pipeline-operator';
import { useTaskRuns } from '../../taskruns/useTaskRuns';
import { getPipelineRunVulnerabilities } from '../hooks/usePipelineRunVulnerabilities';
import PipelineRunHeader from './PipelineRunHeader';
import PipelineRunRow from './PipelineRunRow';
import './PipelineRunList.scss';
type PipelineRunListProps = {
namespace: string;
};
export const PipelineRunList: React.FC<PipelineRunListProps> = (props) => {
const { t } = useTranslation();
const operatorVersion = usePipelineOperatorVersion(props.namespace);
const activePerspective = useActivePerspective()[0];
const [, setPreferredTab, preferredTabLoaded] = useUserSettings<string>(
PREFERRED_DEV_PIPELINE_PAGE_TAB_USER_SETTING_KEY,
'pipelines',
);
const [taskRuns, taskRunsLoaded] = useTaskRuns(props.namespace);
React.useEffect(() => {
if (preferredTabLoaded && activePerspective === 'dev') {
setPreferredTab('pipeline-runs');
}
}, [activePerspective, preferredTabLoaded, setPreferredTab]);
return (
<>
<Helmet>
<title>{t('pipelines-plugin~PipelineRuns')}</title>
</Helmet>
<Table
{...props}
aria-label={t(PipelineRunModel.labelPluralKey)}
defaultSortField="status.startTime"
defaultSortOrder={SortByDirection.desc}
Header={PipelineRunHeader}
Row={PipelineRunRow}
customSorts={{
vulnerabilities: (obj: PipelineRunKind) => {
const scanResults = getPipelineRunVulnerabilities(obj);
if (!scanResults?.vulnerabilities) {
return -1;
}
// Expect no more than 999 of any one severity
return (
(scanResults.vulnerabilities.critical ?? 0) * 1000000000 +
(scanResults.vulnerabilities.high ?? 0) * 1000000 +
(scanResults.vulnerabilities.medium ?? 0) * 1000 +
(scanResults.vulnerabilities.low ?? 0)
);
},
}}
customData={{ operatorVersion, taskRuns: taskRunsLoaded ? taskRuns : [] }}
virtualize
/>
</>
);
};
export default PipelineRunList;