Skip to content

Commit 596461a

Browse files
committed
Merge branch 'fix-ng-changes' into fix-ng-changes-develop
2 parents 6b5cc51 + da5e940 commit 596461a

File tree

16 files changed

+200
-86
lines changed

16 files changed

+200
-86
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"private": true,
55
"homepage": "/dashboard",
66
"dependencies": {
7-
"@devtron-labs/devtron-fe-common-lib": "1.11.0-pre-4",
7+
"@devtron-labs/devtron-fe-common-lib": "1.11.0-beta-7",
88
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
99
"@rjsf/core": "^5.13.3",
1010
"@rjsf/utils": "^5.13.3",

src/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ import { LinkedCIDetail } from '../../../../Pages/Shared/LinkedCIDetailsModal'
126126
import CIMaterialModal from '../../../app/details/triggerView/CIMaterialModal'
127127
import { RenderCDMaterialContentProps } from './types'
128128
import { WebhookReceivedPayloadModal } from '@Components/app/details/triggerView/WebhookReceivedPayloadModal'
129+
import { getExternalCIConfig } from '@Components/ciPipeline/Webhook/webhook.service'
129130

130131
const ApprovalMaterialModal = importComponentFromFELibrary('ApprovalMaterialModal')
131132
const getCIBlockState: (...props) => Promise<BlockedStateData> = importComponentFromFELibrary(
@@ -146,6 +147,7 @@ const validateRuntimeParameters = importComponentFromFELibrary(
146147
'function',
147148
)
148149
const ChangeImageSource = importComponentFromFELibrary('ChangeImageSource', null, 'function')
150+
const WebhookAddImageModal = importComponentFromFELibrary('WebhookAddImageModal', null, 'function')
149151

150152
// FIXME: IN CIMaterials we are sending isCDLoading while in CD materials we are sending isCILoading
151153
let inprogressStatusTimer
@@ -193,6 +195,7 @@ export default function EnvTriggerView({ filteredAppIds, isVirtualEnv }: AppGrou
193195
const [runtimeParams, setRuntimeParams] = useState<Record<string, RuntimePluginVariables[]>>({})
194196
const [runtimeParamsErrorState, setRuntimeParamsErrorState] = useState<Record<string, RuntimeParamsErrorState>>({})
195197
const [isBulkTriggerLoading, setIsBulkTriggerLoading] = useState<boolean>(false)
198+
const [selectedWebhookNode, setSelectedWebhookNode] = useState<{ appId: number; id: number }>(null)
196199

197200
const selectedWorkflows = filteredWorkflows.filter((wf) => wf.isSelected)
198201

@@ -2383,6 +2386,16 @@ export default function EnvTriggerView({ filteredAppIds, isVirtualEnv }: AppGrou
23832386
history.push(match.url)
23842387
}
23852388

2389+
const getWebhookDetails = () => getExternalCIConfig(selectedWebhookNode.appId, selectedWebhookNode.id, false)
2390+
2391+
const handleWebhookAddImageClick = (appId: number) => (id: number) => {
2392+
setSelectedWebhookNode({ appId, id })
2393+
}
2394+
2395+
const handleWebhookAddImageModalClose = () => {
2396+
setSelectedWebhookNode(null)
2397+
}
2398+
23862399
const renderWorkflow = (): JSX.Element => {
23872400
return (
23882401
<>
@@ -2405,10 +2418,17 @@ export default function EnvTriggerView({ filteredAppIds, isVirtualEnv }: AppGrou
24052418
location={location}
24062419
match={match}
24072420
index={index}
2421+
handleWebhookAddImageClick={handleWebhookAddImageClick(workflow.appId)}
24082422
/>
24092423
)
24102424
})}
24112425
<LinkedCIDetail workflows={filteredWorkflows} handleClose={handleModalClose} />
2426+
{WebhookAddImageModal && selectedWebhookNode && (
2427+
<WebhookAddImageModal
2428+
getWebhookDetails={getWebhookDetails}
2429+
onClose={handleWebhookAddImageModalClose}
2430+
/>
2431+
)}
24122432
</>
24132433
)
24142434
}

src/components/app/details/triggerView/TriggerView.tsx

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ import { CIPipelineBuildType } from '../../../ciPipeline/types'
9595
import { LinkedCIDetail } from '../../../../Pages/Shared/LinkedCIDetailsModal'
9696
import { CIMaterialModal } from './CIMaterialModal'
9797
import { WebhookReceivedPayloadModal } from './WebhookReceivedPayloadModal'
98+
import { getExternalCIConfig } from '@Components/ciPipeline/Webhook/webhook.service'
9899

99100
const ApprovalMaterialModal = importComponentFromFELibrary('ApprovalMaterialModal')
100101
const getCIBlockState: (...props) => Promise<BlockedStateData> = importComponentFromFELibrary(
@@ -103,6 +104,7 @@ const getCIBlockState: (...props) => Promise<BlockedStateData> = importComponent
103104
'function',
104105
)
105106
const WorkflowActionRouter = importComponentFromFELibrary('WorkflowActionRouter', null, 'function')
107+
const WebhookAddImageModal = importComponentFromFELibrary('WebhookAddImageModal', null, 'function')
106108
const getRuntimeParams = importComponentFromFELibrary('getRuntimeParams', null, 'function')
107109
const getRuntimeParamsPayload = importComponentFromFELibrary('getRuntimeParamsPayload', null, 'function')
108110

@@ -146,6 +148,7 @@ class TriggerView extends Component<TriggerViewProps, TriggerViewState> {
146148
searchImageTag: '',
147149
resourceFilters: [],
148150
runtimeParams: [],
151+
selectedWebhookNodeId: null,
149152
}
150153
this.refreshMaterial = this.refreshMaterial.bind(this)
151154
this.onClickCIMaterial = this.onClickCIMaterial.bind(this)
@@ -1141,6 +1144,17 @@ class TriggerView extends Component<TriggerViewProps, TriggerViewState> {
11411144
this.setState({ selectedEnv: _selectedEnv })
11421145
}
11431146

1147+
getWebhookDetails = () =>
1148+
getExternalCIConfig(this.props.match.params.appId, this.state.selectedWebhookNodeId, false)
1149+
1150+
handleWebhookAddImageClick = (webhookId: number) => {
1151+
this.setState({ selectedWebhookNodeId: webhookId })
1152+
}
1153+
1154+
handleWebhookAddImageModalClose = () => {
1155+
this.setState({ selectedWebhookNodeId: null })
1156+
}
1157+
11441158
getCINode = (): CommonNodeAttr => {
11451159
let nd: CommonNodeAttr
11461160
if (this.state.ciNodeId) {
@@ -1314,7 +1328,7 @@ class TriggerView extends Component<TriggerViewProps, TriggerViewState> {
13141328
<CloseIcon />
13151329
</button>
13161330
</div>
1317-
<div className='flex-grow-1'>
1331+
<div className="flex-grow-1">
13181332
<Progressing pageLoader size={32} />
13191333
</div>
13201334
</>
@@ -1378,10 +1392,17 @@ class TriggerView extends Component<TriggerViewProps, TriggerViewState> {
13781392
filteredCIPipelines={this.state.filteredCIPipelines}
13791393
environmentLists={this.state.environmentLists}
13801394
appId={+this.props.match.params.appId}
1395+
handleWebhookAddImageClick={this.handleWebhookAddImageClick}
13811396
/>
13821397
)
13831398
})}
13841399
<LinkedCIDetail workflows={this.state.workflows} handleClose={this.handleModalClose} />
1400+
{WebhookAddImageModal && this.state.selectedWebhookNodeId && (
1401+
<WebhookAddImageModal
1402+
getWebhookDetails={this.getWebhookDetails}
1403+
onClose={this.handleWebhookAddImageModalClose}
1404+
/>
1405+
)}
13851406
</>
13861407
)
13871408
}
@@ -1425,7 +1446,7 @@ class TriggerView extends Component<TriggerViewProps, TriggerViewState> {
14251446
}
14261447
if (!this.state.workflows.length) {
14271448
return (
1428-
<div className='flex-grow-1'>
1449+
<div className="flex-grow-1">
14291450
{this.props.isJobView ? (
14301451
<AppNotConfigured
14311452
title={APP_DETAILS.JOB_FULLY_NOT_CONFIGURED.title}

src/components/app/details/triggerView/config.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
import { createContext } from 'react'
1818
import { DeploymentNodeType } from '@devtron-labs/devtron-fe-common-lib'
1919
import { TriggerViewContextType } from './types'
20+
import { importComponentFromFELibrary } from '@Components/common'
21+
22+
const WebhookAddImageButton = importComponentFromFELibrary('WebhookAddImageButton', null, 'function')
2023

2124
export const TriggerViewContext = createContext<TriggerViewContextType>({
2225
invalidateCache: false,
@@ -100,6 +103,16 @@ export const WorkflowTrigger = {
100103
distanceX: 60,
101104
distanceY: 25,
102105
} as NodeDimension,
106+
...(WebhookAddImageButton
107+
? {
108+
webhookNodeSize: {
109+
nodeHeight: 94,
110+
nodeWidth: 200,
111+
distanceX: 60,
112+
distanceY: 20,
113+
} as NodeDimension,
114+
}
115+
: {}),
103116
workflow: {
104117
distanceY: 16,
105118
distanceX: 0,
@@ -129,6 +142,7 @@ export interface WorkflowDimensions {
129142
externalCINodeSizes?: NodeDimension
130143
linkedCINodeSizes?: NodeDimension
131144
cDNodeSizes: NodeDimension
145+
webhookNodeSize?: NodeDimension
132146
workflow: Offset
133147
}
134148

src/components/app/details/triggerView/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ export interface WorkflowProps
341341
index?: number
342342
environmentLists?: any[]
343343
filteredCIPipelines?: any[]
344+
handleWebhookAddImageClick?: (webhookId: number) => void
344345
}
345346

346347
export interface TriggerViewContextType {
@@ -406,6 +407,7 @@ export interface TriggerViewState {
406407
searchImageTag?: string
407408
resourceFilters?: FilterConditionsListType[]
408409
runtimeParams?: RuntimePluginVariables[]
410+
selectedWebhookNodeId: number
409411
}
410412

411413
export interface CIMaterialProps

src/components/app/details/triggerView/workflow.service.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -147,18 +147,16 @@ export const getInitialWorkflows = ({
147147
})
148148
}
149149
if (isJobView) {
150-
return Promise.all([getWorkflowList(id, null, false), getCIConfig(id, false)]).then(
151-
([workflow, ciConfig]) => {
152-
return processWorkflow(
153-
workflow.result as WorkflowResult,
154-
ciConfig.result as CiPipelineResult,
155-
null,
156-
null,
157-
dimensions,
158-
workflowOffset,
159-
)
160-
},
161-
)
150+
return Promise.all([getWorkflowList(id, null, false), getCIConfig(id, false)]).then(([workflow, ciConfig]) => {
151+
return processWorkflow(
152+
workflow.result as WorkflowResult,
153+
ciConfig.result as CiPipelineResult,
154+
null,
155+
null,
156+
dimensions,
157+
workflowOffset,
158+
)
159+
})
162160
}
163161
return Promise.all([
164162
getWorkflowList(id, filteredEnvIds, isTemplateView),
@@ -644,8 +642,10 @@ function webhookToNode(webhookDetails: WebhookDetailsType, dimensions: WorkflowD
644642
id: String(webhookDetails.id),
645643
x: 0,
646644
y: 0,
647-
height: dimensions.staticNodeSizes.nodeHeight,
648-
width: dimensions.staticNodeSizes.nodeWidth,
645+
height: dimensions.webhookNodeSize
646+
? dimensions.webhookNodeSize.nodeHeight
647+
: dimensions.staticNodeSizes.nodeHeight,
648+
width: dimensions.webhookNodeSize ? dimensions.webhookNodeSize.nodeWidth : dimensions.staticNodeSizes.nodeWidth,
649649
title: 'Webhook',
650650
status: DEFAULT_STATUS,
651651
type: WorkflowNodeType.WEBHOOK,

src/components/app/details/triggerView/workflow/Workflow.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ export class Workflow extends Component<WorkflowProps> {
124124
key={`webhook-${node.id}`}
125125
id={node.id}
126126
isTemplateView={false}
127+
addImageButtonConfig={{ show: true, onClick: this.props.handleWebhookAddImageClick }}
127128
/>
128129
)
129130
}
@@ -386,11 +387,7 @@ export class Workflow extends Component<WorkflowProps> {
386387
</span>
387388

388389
<div className="dc__separated-flexbox">
389-
{BulkDeployLink && numberOfCDNodes > 1 && (
390-
<BulkDeployLink
391-
workflowId={this.props.id}
392-
/>
393-
)}
390+
{BulkDeployLink && numberOfCDNodes > 1 && <BulkDeployLink workflowId={this.props.id} />}
394391

395392
{ImagePromotionLink && (
396393
<ImagePromotionLink
@@ -402,7 +399,6 @@ export class Workflow extends Component<WorkflowProps> {
402399
/>
403400
)}
404401
</div>
405-
406402
</>
407403
)}
408404
</div>

0 commit comments

Comments
 (0)