Skip to content

Commit c6773ca

Browse files
committed
fix: update on clicks and common functions
1 parent e651d6e commit c6773ca

File tree

8 files changed

+101
-177
lines changed

8 files changed

+101
-177
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1503,6 +1503,8 @@ const EnvTriggerView = ({ filteredAppIds, isVirtualEnv }: AppGroupDetailDefaultT
15031503
onClickCDMaterial,
15041504
onClickRollbackMaterial,
15051505
reloadTriggerView,
1506+
// TODO: Update below function
1507+
onClickApprovalNode: () => {}
15061508
}}
15071509
>
15081510
{renderWorkflow()}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,5 @@ export const TRIGGER_VIEW_PARAMS = {
113113
APPROVAL_NODE: 'approval-node',
114114
CD_NODE: 'cd-node',
115115
NODE_TYPE: 'node-type',
116+
ROLLBACK_NODE: 'rollback-node',
116117
}

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

Lines changed: 54 additions & 166 deletions
Large diffs are not rendered by default.

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

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,14 @@
1616

1717
import { useLocation } from 'react-router-dom'
1818

19-
import { DeploymentHistoryDetail, DeploymentWithConfigType } from '@devtron-labs/devtron-fe-common-lib'
19+
import {
20+
CommonNodeAttr,
21+
DeploymentHistoryDetail,
22+
DeploymentNodeType,
23+
DeploymentWithConfigType,
24+
showError,
25+
WorkflowType,
26+
} from '@devtron-labs/devtron-fe-common-lib'
2027

2128
import { URLS } from '@Config/routes'
2229

@@ -190,3 +197,29 @@ export const shouldRenderWebhookAddImageModal = (location: ReturnType<typeof use
190197
location.pathname.includes(URLS.BUILD) ||
191198
location.pathname.includes(URLS.LINKED_CI_DETAILS)
192199
)
200+
201+
export const getSelectedNodeFromWorkflows = (workflows: WorkflowType[], search: string): CommonNodeAttr => {
202+
const searchParams = new URLSearchParams(search)
203+
const cdNodeId =
204+
searchParams.get(TRIGGER_VIEW_PARAMS.CD_NODE) ||
205+
searchParams.get(TRIGGER_VIEW_PARAMS.ROLLBACK_NODE) ||
206+
searchParams.get(TRIGGER_VIEW_PARAMS.APPROVAL_NODE)
207+
208+
if (!cdNodeId) {
209+
showError('Could not find node')
210+
return {} as CommonNodeAttr
211+
}
212+
const nodeType = searchParams.get(TRIGGER_VIEW_PARAMS.NODE_TYPE) ?? DeploymentNodeType.CD
213+
214+
// Use flatMap to flatten all nodes, then find the matching node
215+
const allNodes = workflows.flatMap((workflow) => workflow.nodes)
216+
217+
const foundNode = allNodes.find((n) => cdNodeId === n.id && n.type === nodeType)
218+
219+
if (foundNode) {
220+
return foundNode
221+
}
222+
223+
showError('Could not find node')
224+
return {} as CommonNodeAttr
225+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ const CDMaterial = ({
310310
const materialsResult: CDMaterialResponseType = responseList?.[0]
311311
const deploymentWindowMetadata = responseList?.[1] ?? {}
312312

313-
const { onClickCDMaterial } = useContext<TriggerViewContextType>(TriggerViewContext)
313+
const { onClickApprovalNode } = useContext<TriggerViewContextType>(TriggerViewContext)
314314
const [noMoreImages, setNoMoreImages] = useState<boolean>(false)
315315
const [tagsEditable, setTagsEditable] = useState<boolean>(false)
316316
const [appReleaseTagNames, setAppReleaseTagNames] = useState<string[]>([])
@@ -662,7 +662,7 @@ const CDMaterial = ({
662662
})
663663
} else {
664664
closeCDModal(e)
665-
onClickCDMaterial(pipelineId, DeploymentNodeType.CD, true)
665+
onClickApprovalNode(pipelineId)
666666
}
667667
}
668668

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ import { importComponentFromFELibrary } from '@Components/common'
2222
const WebhookAddImageButton = importComponentFromFELibrary('WebhookAddImageButton', null, 'function')
2323

2424
export const TriggerViewContext = createContext<TriggerViewContextType>({
25-
onClickCDMaterial: (cdNodeId, nodeType: DeploymentNodeType, isApprovalNode?: boolean, imageTag?: string) => {},
26-
onClickRollbackMaterial: (cdNodeId: number, offset?: number, size?: number) => {},
25+
onClickCDMaterial: (cdNodeId: number, nodeType: DeploymentNodeType) => {},
26+
onClickRollbackMaterial: (cdNodeId: number) => {},
2727
reloadTriggerView: () => {},
28+
onClickApprovalNode: (cdNodeId: number) => {},
2829
})
2930

3031
export enum WorkflowDimensionType {

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -336,8 +336,9 @@ export interface WorkflowProps
336336
}
337337

338338
export interface TriggerViewContextType {
339-
onClickCDMaterial: (cdNodeId, nodeType: DeploymentNodeType, isApprovalNode?: boolean) => void
340-
onClickRollbackMaterial: (cdNodeId: number, offset?: number, size?: number) => void
339+
onClickCDMaterial: (cdNodeId: number, nodeType: DeploymentNodeType) => void
340+
onClickApprovalNode: (cdNodeId: number) => void
341+
onClickRollbackMaterial: (cdNodeId: number) => void
341342
reloadTriggerView: () => void
342343
}
343344

@@ -381,9 +382,6 @@ export interface TriggerViewState {
381382
code: number
382383
view: string
383384
workflows: WorkflowType[]
384-
nodeType: null | 'CI' | 'CD' | 'PRECD' | 'POSTCD' | 'APPROVAL'
385-
cdNodeId: number
386-
materialType: '' | 'inputMaterialList' | 'rollbackMaterialList'
387385
isLoading: boolean
388386
hostURLConfig: HostURLConfig
389387
workflowId: number

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import { WorkflowProps, TriggerViewContextType } from '../types'
3535
import { WebhookNode } from '../../../../workflowEditor/nodes/WebhookNode'
3636
import { GIT_BRANCH_NOT_CONFIGURED } from '../../../../../config'
3737
import { TriggerViewContext } from '../config'
38+
import { TRIGGER_VIEW_PARAMS } from '../Constants'
3839

3940
const ApprovalNodeEdge = importComponentFromFELibrary('ApprovalNodeEdge')
4041
const LinkedCDNode = importComponentFromFELibrary('LinkedCDNode')
@@ -322,7 +323,7 @@ export class Workflow extends Component<WorkflowProps> {
322323
onClickNodeEdge = (nodeId: number) => {
323324
this.context.onClickCDMaterial(nodeId, DeploymentNodeType.CD, true)
324325
this.props.history.push({
325-
search: `approval-node=${nodeId}`,
326+
search: `${TRIGGER_VIEW_PARAMS.APPROVAL_NODE}=${nodeId}`,
326327
})
327328
}
328329

0 commit comments

Comments
 (0)