@@ -7,15 +7,16 @@ import {
7
7
noop ,
8
8
DockerConfigOverrideType ,
9
9
Reload ,
10
+ WorkflowNodeType ,
10
11
} from '@devtron-labs/devtron-fe-common-lib'
11
12
import { ReactComponent as CloseIcon } from '../../assets/icons/ic-cross.svg'
12
13
import { ReactComponent as EditIcon } from '../../assets/icons/ic-pencil.svg'
13
14
import { ReactComponent as DeleteIcon } from '../../assets/icons/ic-delete-interactive.svg'
14
15
import { Workflow } from '../workflowEditor/Workflow'
15
16
import { Link , useHistory , useLocation , useParams , useRouteMatch } from 'react-router-dom'
16
17
import { URLS } from '../../config'
17
- import { CIConfigDiffViewProps , ProcessedWorkflowsType } from './types'
18
- import { WorkflowType } from '../app/details/triggerView/types'
18
+ import { CIConfigDiffViewProps , GetCIPipelineModalURLType , ProcessedWorkflowsType } from './types'
19
+ import { NodeAttr , WorkflowType } from '../app/details/triggerView/types'
19
20
import { CIBuildConfigDiff } from './CIBuildConfigDiff'
20
21
import Tippy from '@tippyjs/react'
21
22
import { getInitDataWithCIPipeline , saveCIPipeline } from '../ciPipeline/ciPipeline.service'
@@ -24,6 +25,7 @@ import { ConfigOverrideWorkflowDetails } from '../../services/service.types'
24
25
import { getConfigOverrideWorkflowDetails , getWorkflowList } from '../../services/service'
25
26
import { WorkflowCreate } from '../app/details/triggerView/config'
26
27
import { processWorkflow } from '../app/details/triggerView/workflow.service'
28
+ import { getLinkedCIPipelineURL } from '../common'
27
29
28
30
export default function CIConfigDiffView ( {
29
31
parentReloading,
@@ -114,7 +116,28 @@ export default function CIConfigDiffView({
114
116
)
115
117
}
116
118
117
- const renderViewBuildPipelineRow = ( _wfId : number ) : JSX . Element => {
119
+ const getCIPipelineModalURL = ( { ciNode, workflowId } : GetCIPipelineModalURLType ) : string => {
120
+ if ( ! ciNode ) {
121
+ toast . error ( 'Invalid Pipeline' )
122
+ return
123
+ }
124
+
125
+ if ( ciNode . isLinkedCI ) {
126
+ return `${ URLS . APP } /${ appId } /${ URLS . APP_CONFIG } /${ URLS . APP_WORKFLOW_CONFIG } /${ getLinkedCIPipelineURL (
127
+ appId ,
128
+ workflowId ,
129
+ ciNode . id ,
130
+ ) } `
131
+ }
132
+
133
+ return `${ URLS . APP } /${ appId } /${ URLS . APP_CONFIG } /${ URLS . APP_WORKFLOW_CONFIG } /${ workflowId } /${
134
+ URLS . APP_CI_CONFIG
135
+ } /${ wfCIMap . get ( workflowId ) } /build`
136
+ }
137
+
138
+ const renderViewBuildPipelineRow = ( _wfId : number , nodes : NodeAttr [ ] ) : JSX . Element => {
139
+ const ciNode = nodes ?. find ( ( node ) => node . type == WorkflowNodeType . CI )
140
+
118
141
return (
119
142
< div
120
143
className = "flex dc__position-abs dc__content-space"
@@ -124,12 +147,7 @@ export default function CIConfigDiffView({
124
147
} }
125
148
>
126
149
< Tippy className = "default-tt" arrow = { false } placement = "top" content = "Edit override" >
127
- < Link
128
- to = { `${ URLS . APP } /${ appId } /${ URLS . APP_CONFIG } /${ URLS . APP_WORKFLOW_CONFIG } /${ _wfId } /${
129
- URLS . APP_CI_CONFIG
130
- } /${ wfCIMap . get ( _wfId ) } /build`}
131
- className = "flex mr-16"
132
- >
150
+ < Link to = { getCIPipelineModalURL ( { ciNode, workflowId : _wfId } ) } className = "flex mr-16" >
133
151
< EditIcon className = "icon-dim-24" />
134
152
</ Link >
135
153
</ Tippy >
@@ -249,7 +267,7 @@ export default function CIConfigDiffView({
249
267
addWebhookCD = { noop }
250
268
cdWorkflowList = { _configOverridenWorkflows }
251
269
/>
252
- { renderViewBuildPipelineRow ( + _wf . id ) }
270
+ { renderViewBuildPipelineRow ( + _wf . id , _wf . nodes ) }
253
271
< CIBuildConfigDiff
254
272
configOverridenWorkflows = { _configOverridenWorkflows }
255
273
wfId = { _wf . id }
0 commit comments