|
1 | 1 | import React from 'react'; |
2 | | -import { useHistory } from 'react-router-dom'; |
3 | 2 | import ReactTooltip from 'react-tooltip'; |
4 | 3 | import { runStatus, iconColors, iconSizes } from '../../../../../../constants'; |
5 | | -import { routePaths } from '../../../../../../routes/routePaths'; |
6 | 4 |
|
7 | | -import { |
8 | | - Box, |
9 | | - // ColoredCircle, |
10 | | - FlexBox, |
11 | | - icons, |
12 | | - If, |
13 | | - Paragraph, |
14 | | -} from '../../../../../components'; |
15 | | -import { useService } from './useService'; |
16 | | -import { useSelector } from '../../../../../hooks'; |
17 | | -import { workspaceSelectors } from '../../../../../../redux/selectors'; |
| 5 | +import { Box, FlexBox, icons, If, Paragraph } from '../../../../../components'; |
18 | 6 |
|
19 | | -export const Status: React.FC<{ pipeline: TPipeline }> = ({ pipeline }) => { |
20 | | - const { lastThreeRuns } = useService({ pipeline }); |
| 7 | +function getID(pipelineID: string, index: number) { |
| 8 | + return `${pipelineID}-${index}`; |
| 9 | +} |
21 | 10 |
|
22 | | - const history = useHistory(); |
23 | | - const selectedWorkspace = useSelector(workspaceSelectors.selectedWorkspace); |
| 11 | +export const Status: React.FC<{ pipeline: TPipeline }> = ({ pipeline }) => { |
24 | 12 | return ( |
25 | 13 | <FlexBox |
26 | 14 | alignItems="center" |
27 | 15 | justifyContent="center" |
28 | 16 | style={{ marginLeft: '-16px' }} |
29 | 17 | > |
30 | | - {lastThreeRuns.map((item: any, index: number) => ( |
| 18 | + {pipeline.status.map((item: any, index: number) => ( |
31 | 19 | <Box key={index}> |
32 | 20 | <> |
33 | 21 | <FlexBox alignItems="center"> |
34 | | - <div data-tip data-for={item.status}> |
35 | | - <If condition={item.status === runStatus.COMPLETED}> |
| 22 | + <div data-tip data-for={getID(pipeline.id, index)}> |
| 23 | + <If condition={item === runStatus.COMPLETED}> |
36 | 24 | {() => ( |
37 | | - <div |
38 | | - onClick={(e) => { |
39 | | - e.stopPropagation(); |
40 | | - history.push( |
41 | | - routePaths.run.pipeline.statistics( |
42 | | - selectedWorkspace, |
43 | | - item.run.id, |
44 | | - pipeline.id, |
45 | | - ), |
46 | | - ); |
47 | | - }} |
48 | | - > |
49 | | - {/* <ColoredCircle color="green" size="xs"> */} |
| 25 | + <div> |
50 | 26 | <icons.circleCheck |
51 | 27 | color={iconColors.lightGreen} |
52 | 28 | size={iconSizes.md} |
53 | 29 | /> |
54 | | - {/* </ColoredCircle> */} |
55 | 30 | </div> |
56 | 31 | )} |
57 | 32 | </If> |
58 | 33 | </div> |
59 | | - <ReactTooltip id={item.status} place="top" effect="solid"> |
60 | | - <Paragraph color="white">{item.status}</Paragraph> |
| 34 | + <ReactTooltip |
| 35 | + id={getID(pipeline.id, index)} |
| 36 | + place="top" |
| 37 | + effect="solid" |
| 38 | + > |
| 39 | + <Paragraph color="white">{item}</Paragraph> |
61 | 40 | </ReactTooltip> |
62 | 41 | </FlexBox> |
63 | 42 |
|
64 | 43 | <FlexBox alignItems="center"> |
65 | | - <div data-tip data-for={item.status}> |
66 | | - <If condition={item.status === runStatus.RUNNING}> |
| 44 | + <div data-tip data-for={getID(pipeline.id, index)}> |
| 45 | + <If condition={item === runStatus.RUNNING}> |
67 | 46 | {() => ( |
68 | | - <div |
69 | | - onClick={(e) => { |
70 | | - e.stopPropagation(); |
71 | | - history.push( |
72 | | - routePaths.run.pipeline.statistics( |
73 | | - selectedWorkspace, |
74 | | - item.run.id, |
75 | | - pipeline.id, |
76 | | - ), |
77 | | - ); |
78 | | - }} |
79 | | - > |
80 | | - {/* <ColoredCircle color="secondary" size="xs"> */} |
| 47 | + <div> |
81 | 48 | <icons.inProgress |
82 | 49 | color={iconColors.orange} |
83 | 50 | size={iconSizes.md} |
84 | 51 | /> |
85 | | - {/* </ColoredCircle> */} |
86 | 52 | </div> |
87 | 53 | )} |
88 | 54 | </If> |
89 | 55 | </div> |
90 | | - <ReactTooltip id={item.runId} place="top" effect="solid"> |
91 | | - <Paragraph color="white">{item.status}</Paragraph> |
| 56 | + <ReactTooltip |
| 57 | + id={getID(pipeline.id, index)} |
| 58 | + place="top" |
| 59 | + effect="solid" |
| 60 | + > |
| 61 | + <Paragraph color="white">{item}</Paragraph> |
92 | 62 | </ReactTooltip> |
93 | 63 | </FlexBox> |
94 | 64 |
|
95 | 65 | <FlexBox alignItems="center"> |
96 | | - <div data-tip data-for={item.runId}> |
97 | | - <If condition={item.status === runStatus.FAILED}> |
| 66 | + <div data-tip data-for={getID(pipeline.id, index)}> |
| 67 | + <If condition={item === runStatus.FAILED}> |
98 | 68 | {() => ( |
99 | | - <div |
100 | | - onClick={(e) => { |
101 | | - e.stopPropagation(); |
102 | | - history.push( |
103 | | - routePaths.run.pipeline.statistics( |
104 | | - selectedWorkspace, |
105 | | - item.run.id, |
106 | | - pipeline.id, |
107 | | - ), |
108 | | - ); |
109 | | - }} |
110 | | - > |
111 | | - {/* <ColoredCircle color="red" size="xs"> */} |
| 69 | + <div> |
112 | 70 | <icons.failed |
113 | 71 | color={iconColors.red} |
114 | 72 | size={iconSizes.md} |
115 | 73 | /> |
116 | | - {/* </ColoredCircle> */} |
117 | 74 | </div> |
118 | 75 | )} |
119 | 76 | </If> |
120 | 77 | </div> |
121 | | - <ReactTooltip id={item.runId} place="top" effect="solid"> |
122 | | - <Paragraph color="white">{item.status}</Paragraph> |
| 78 | + <ReactTooltip |
| 79 | + id={getID(pipeline.id, index)} |
| 80 | + place="top" |
| 81 | + effect="solid" |
| 82 | + > |
| 83 | + <Paragraph color="white">{item}</Paragraph> |
123 | 84 | </ReactTooltip> |
124 | 85 | </FlexBox> |
125 | 86 |
|
126 | 87 | <FlexBox alignItems="center"> |
127 | | - <div data-tip data-for={item.runId}> |
128 | | - <If condition={item.status === runStatus.CACHED}> |
| 88 | + <div data-tip data-for={getID(pipeline.id, index)}> |
| 89 | + <If condition={item === runStatus.CACHED}> |
129 | 90 | {() => ( |
130 | | - <div |
131 | | - onClick={(e) => { |
132 | | - e.stopPropagation(); |
133 | | - history.push( |
134 | | - routePaths.run.pipeline.statistics( |
135 | | - selectedWorkspace, |
136 | | - item.run.id, |
137 | | - pipeline.id, |
138 | | - ), |
139 | | - ); |
140 | | - }} |
141 | | - > |
142 | | - {/* <ColoredCircle color="mustard" size="xs"> */} |
| 91 | + <div> |
143 | 92 | <icons.cached |
144 | 93 | color={iconColors.butterflyBlue} |
145 | 94 | size={iconSizes.md} |
146 | 95 | /> |
147 | | - {/* </ColoredCircle> */} |
148 | 96 | </div> |
149 | 97 | )} |
150 | 98 | </If> |
151 | 99 | </div> |
152 | | - <ReactTooltip id={item.runId} place="top" effect="solid"> |
153 | | - <Paragraph color="white">{item.status}</Paragraph> |
| 100 | + <ReactTooltip |
| 101 | + id={getID(pipeline.id, index)} |
| 102 | + place="top" |
| 103 | + effect="solid" |
| 104 | + > |
| 105 | + <Paragraph color="white">{item}</Paragraph> |
154 | 106 | </ReactTooltip> |
155 | 107 | </FlexBox> |
156 | 108 | </> |
|
0 commit comments