forked from talamer/console
-
Notifications
You must be signed in to change notification settings - Fork 0
/
RepositoryRow.tsx
103 lines (99 loc) · 3.77 KB
/
RepositoryRow.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import * as React from 'react';
import { Link } from 'react-router-dom';
import { TableData, RowFunctionArgs } from '@console/internal/components/factory';
import {
Kebab,
ResourceIcon,
ResourceKebab,
ResourceLink,
resourcePath,
Timestamp,
} from '@console/internal/components/utils';
import { referenceFor, referenceForModel } from '@console/internal/module/k8s';
import { getLatestRun } from '@console/pipelines-plugin/src/utils/pipeline-augment';
import { PipelineRunModel, RepositoryModel } from '../../../models';
import {
pipelineRunFilterReducer,
pipelineRunTitleFilterReducer,
} from '../../../utils/pipeline-filter-reducer';
import { pipelineRunDuration } from '../../../utils/pipeline-utils';
import LinkedPipelineRunTaskStatus from '../../pipelineruns/status/LinkedPipelineRunTaskStatus';
import PipelineRunStatus from '../../pipelineruns/status/PipelineRunStatus';
import { getTaskRunsOfPipelineRun } from '../../taskruns/useTaskRuns';
import { RepositoryFields, RepositoryLabels } from '../consts';
import { RepositoryKind } from '../types';
import { repositoriesTableColumnClasses } from './RepositoryHeader';
const RepositoryRow: React.FC<RowFunctionArgs<RepositoryKind>> = ({ obj, customData }) => {
const {
metadata: { name, namespace },
} = obj;
const { taskRuns, pipelineRuns } = customData;
const plrs = pipelineRuns.filter((plr) => {
return (
plr.metadata?.labels[RepositoryLabels[RepositoryFields.REPOSITORY]] === obj.metadata.name
);
});
const latestRun = getLatestRun(plrs, 'creationTimestamp');
const latestPLREventType =
latestRun && latestRun?.metadata?.labels[RepositoryLabels[RepositoryFields.EVENT_TYPE]];
const PLRTaskRuns = getTaskRunsOfPipelineRun(taskRuns, latestRun?.metadata?.name);
return (
<>
<TableData className={repositoriesTableColumnClasses[0]}>
<ResourceIcon kind={referenceForModel(RepositoryModel)} />
<Link
to={`${resourcePath(referenceForModel(RepositoryModel), name, namespace)}/Runs`}
className="co-resource-item__resource-name"
data-test-id={name}
>
{name}
</Link>
</TableData>
<TableData className={repositoriesTableColumnClasses[1]} columnID="namespace">
<ResourceLink kind="Namespace" name={obj.metadata.namespace} />
</TableData>
<TableData className={repositoriesTableColumnClasses[2]}>
{latestPLREventType || '-'}
</TableData>
<TableData className={repositoriesTableColumnClasses[3]}>
{latestRun ? (
<ResourceLink
kind={referenceForModel(PipelineRunModel)}
name={latestRun?.metadata.name}
namespace={namespace}
/>
) : (
'-'
)}
</TableData>
<TableData className={repositoriesTableColumnClasses[4]}>
{}
{latestRun ? (
<LinkedPipelineRunTaskStatus pipelineRun={latestRun} taskRuns={PLRTaskRuns} />
) : (
'-'
)}
</TableData>
<TableData className={repositoriesTableColumnClasses[5]}>
{
<PipelineRunStatus
status={pipelineRunFilterReducer(latestRun)}
title={pipelineRunTitleFilterReducer(latestRun)}
pipelineRun={latestRun}
taskRuns={PLRTaskRuns}
/>
}
</TableData>
<TableData className={repositoriesTableColumnClasses[6]}>
{<Timestamp timestamp={latestRun?.status.startTime} />}
</TableData>
<TableData className={repositoriesTableColumnClasses[7]}>
{pipelineRunDuration(latestRun)}
</TableData>
<TableData className={repositoriesTableColumnClasses[8]}>
<ResourceKebab actions={Kebab.factory.common} kind={referenceFor(obj)} resource={obj} />
</TableData>
</>
);
};
export default RepositoryRow;