Skip to content

Commit c24a48f

Browse files
Merge pull request #1428 from devtron-labs/fix/cd-materials-architecture
fix: cd materials architecture
2 parents e66ad7e + 91938e0 commit c24a48f

File tree

21 files changed

+2374
-2296
lines changed

21 files changed

+2374
-2296
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": "0.0.37",
7+
"@devtron-labs/devtron-fe-common-lib": "0.0.40",
88
"@sentry/browser": "^7.3.1",
99
"@sentry/integrations": "^7.3.1",
1010
"@sentry/tracing": "^7.3.1",
Lines changed: 7 additions & 0 deletions
Loading

src/components/ApplicationGroup/AppGroup.types.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export interface BulkCDDetailType extends BulkTriggerAppDetailType {
4444
stageType?: DeploymentNodeType
4545
triggerType?: string
4646
envName: string
47+
envId: number
4748
parentPipelineId?: string
4849
parentPipelineType?: WorkflowNodeType
4950
parentEnvironmentName?: string
@@ -89,14 +90,14 @@ export interface BulkCDTriggerType {
8990
closePopup: (e) => void
9091
updateBulkInputMaterial: (materialList: Record<string, any>) => void
9192
onClickTriggerBulkCD: (appsToRetry?: Record<string, boolean>) => void
92-
changeTab: (
93+
changeTab?: (
9394
materrialId: string | number,
9495
artifactId: number,
9596
tab: CDModalTabType,
9697
selectedCDDetail?: { id: number; type: DeploymentNodeType },
9798
) => void
98-
toggleSourceInfo: (materialIndex: number, selectedCDDetail?: { id: number; type: DeploymentNodeType }) => void
99-
selectImage: (
99+
toggleSourceInfo?: (materialIndex: number, selectedCDDetail?: { id: number; type: DeploymentNodeType }) => void
100+
selectImage?: (
100101
index: number,
101102
materialType: string,
102103
selectedCDDetail?: { id: number; type: DeploymentNodeType },

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

Lines changed: 285 additions & 132 deletions
Large diffs are not rendered by default.

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

Lines changed: 182 additions & 401 deletions
Large diffs are not rendered by default.

src/components/app/details/cdDetails/CDDetails.tsx

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,21 @@ export default function CDDetails({ filteredEnvIds }: { filteredEnvIds: string }
245245
return
246246
}
247247
if (triggerId === triggerDetail?.id) {
248-
setTriggerHistory((triggerHistory) => {
249-
triggerHistory.set(triggerId, triggerDetail)
250-
return new Map(triggerHistory)
251-
})
248+
const appliedFilters = triggerHistory.get(triggerId)?.appliedFilters ?? []
249+
const appliedFiltersTimestamp = triggerHistory.get(triggerId)?.appliedFiltersTimestamp
250+
if (appliedFilters.length) {
251+
setTriggerHistory((triggerHistory) => {
252+
triggerHistory.set(triggerId, { ...triggerDetail, appliedFilters, appliedFiltersTimestamp })
253+
return new Map(triggerHistory)
254+
})
255+
}
256+
else {
257+
setTriggerHistory((triggerHistory) => {
258+
triggerHistory.set(triggerId, triggerDetail)
259+
return new Map(triggerHistory)
260+
})
261+
}
262+
252263
if (fetchTriggerIdData === FetchIdDataStatus.FETCHING) {
253264
setFetchTriggerIdData(FetchIdDataStatus.SUCCESS)
254265
}
@@ -374,7 +385,8 @@ export const TriggerOutput: React.FC<{
374385
}>()
375386
const triggerDetails = triggerHistory.get(+triggerId)
376387
const [triggerDetailsLoading, triggerDetailsResult, triggerDetailsError, reloadTriggerDetails] = useAsync(
377-
() => getTriggerDetails({ appId, envId, pipelineId, triggerId }),
388+
() => getTriggerDetails({ appId, envId, pipelineId, triggerId, fetchIdData }),
389+
// TODO: Ask if fetchIdData is required here as dependency
378390
[triggerId, appId, envId],
379391
!!triggerId && !!pipelineId,
380392
)
@@ -663,6 +675,8 @@ const HistoryLogs: React.FC<{
663675
appReleaseTagNames={appReleaseTags}
664676
tagsEditable={tagsEditable}
665677
hideImageTaggingHardDelete={hideImageTaggingHardDelete}
678+
appliedFilters={triggerDetails.appliedFilters ?? []}
679+
appliedFiltersTimestamp={triggerDetails.appliedFiltersTimestamp}
666680
/>
667681
</Route>
668682
{triggerDetails.stage === 'DEPLOY' && (

src/components/app/details/cdDetails/service.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { get, ResponseType } from '@devtron-labs/devtron-fe-common-lib'
22
import { DEPLOYMENT_HISTORY_CONFIGURATION_LIST_MAP, EXTERNAL_TYPES, Routes } from '../../../../config'
3-
import { History } from '../cicdHistory/types'
3+
import { FetchIdDataStatus, History } from '../cicdHistory/types'
44
import {
55
DeploymentTemplateList,
66
HistoryDiffSelectorList,
@@ -63,11 +63,19 @@ interface TriggerDetails extends ResponseType {
6363
result?: History
6464
}
6565

66-
export function getTriggerDetails({ appId, envId, pipelineId, triggerId }): Promise<TriggerDetails> {
66+
const getTriggerDetailsQuery = (fetchIdData) => {
67+
if (fetchIdData && fetchIdData === FetchIdDataStatus.FETCHING) {
68+
return '?SHOW_APPLIED_FILTERS=true'
69+
}
70+
71+
return ''
72+
}
73+
74+
export function getTriggerDetails({ appId, envId, pipelineId, triggerId, fetchIdData }): Promise<TriggerDetails> {
6775
if (triggerId) {
68-
return get(`${Routes.APP}/cd-pipeline/workflow/trigger-info/${appId}/${envId}/${pipelineId}/${triggerId}`)
76+
return get(`${Routes.APP}/cd-pipeline/workflow/trigger-info/${appId}/${envId}/${pipelineId}/${triggerId}${getTriggerDetailsQuery(fetchIdData)}`)
6977
} else {
70-
return get(`${Routes.APP}/cd-pipeline/workflow/trigger-info/${appId}/${envId}/${pipelineId}/last`)
78+
return get(`${Routes.APP}/cd-pipeline/workflow/trigger-info/${appId}/${envId}/${pipelineId}/last${getTriggerDetailsQuery(fetchIdData)}`)
7179
}
7280
}
7381

src/components/app/details/cicdHistory/Artifacts.tsx

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { extractImage } from '../../service'
1919
import { EMPTY_STATE_STATUS } from '../../../../config/constantMessaging'
2020
import { getUserRole } from '../../../userGroups/userGroup.service'
2121

22-
let ApprovalInfoTippy = null
22+
let CIListHeader: React.FC<any> | null = null
2323

2424
export default function Artifacts({
2525
status,
@@ -37,7 +37,7 @@ export default function Artifacts({
3737
appReleaseTagNames,
3838
tagsEditable,
3939
hideImageTaggingHardDelete,
40-
jobCIClass
40+
jobCIClass,
4141
}: ArtifactType) {
4242
const [isSuperAdmin, setSuperAdmin] = useState<boolean>(false)
4343
useEffect(() => {
@@ -167,7 +167,11 @@ export default function Artifacts({
167167
</CIListItem>
168168
)}
169169
{blobStorageEnabled && getArtifactPromise && (type === HistoryComponentType.CD || isArtifactUploaded) && (
170-
<CIListItem isSuperAdmin={isSuperAdmin} type="report" hideImageTaggingHardDelete={hideImageTaggingHardDelete}>
170+
<CIListItem
171+
type="report"
172+
hideImageTaggingHardDelete={hideImageTaggingHardDelete}
173+
isSuperAdmin={isSuperAdmin}
174+
>
171175
<div className="flex column left">
172176

173177
<div className="cn-9 fs-14">Reports.zip</div>
@@ -234,9 +238,15 @@ export const CIListItem = ({
234238
appReleaseTagNames,
235239
tagsEditable,
236240
hideImageTaggingHardDelete,
241+
appliedFilters,
242+
appliedFiltersTimestamp,
237243
isSuperAdmin,
238244
}: CIListItemType) => {
239-
if(!ApprovalInfoTippy) ApprovalInfoTippy = importComponentFromFELibrary('ApprovalInfoTippy')
245+
if (!CIListHeader) {
246+
CIListHeader = importComponentFromFELibrary('CIListHeader')
247+
}
248+
249+
const headerMetaDataPresent = !!userApprovalMetadata || !!appliedFilters?.length
240250
return (
241251
<>
242252
{type === 'deployed-artifact' && (
@@ -246,20 +256,20 @@ export const CIListItem = ({
246256
<div className="w-50 text-underline-dashed-300" />
247257
</div>
248258
)}
249-
{ApprovalInfoTippy && userApprovalMetadata && (
250-
<div className="dc__width-inherit bcn-0 dc__border dc__top-radius-4">
251-
<div className="pt-8 pr-16 pb-8 pl-16 lh-20">
252-
<ApprovalInfoTippy
253-
showCount={true}
254-
userApprovalMetadata={userApprovalMetadata}
255-
triggeredBy={triggeredBy}
256-
/>
257-
</div>
258-
</div>
259+
260+
{!!CIListHeader && headerMetaDataPresent && (
261+
<CIListHeader
262+
userApprovalMetadata={userApprovalMetadata}
263+
showApprovalCounts
264+
triggeredBy={triggeredBy}
265+
appliedFilters={appliedFilters ?? []}
266+
appliedFiltersTimestamp={appliedFiltersTimestamp ?? ''}
267+
/>
259268
)}
269+
260270
<div
261271
className={`dc__h-fit-content ci-artifact ci-artifact--${type} image-tag-parent-card bcn-0 br-4 dc__border p-12 w-100 dc__mxw-800 ${
262-
ApprovalInfoTippy && userApprovalMetadata ? 'dc__no-top-radius dc__no-top-border' : ''
272+
CIListHeader && headerMetaDataPresent ? 'dc__no-top-radius dc__no-top-border' : ''
263273
}`}
264274
data-testid="hover-on-report-artifact"
265275
>

src/components/app/details/cicdHistory/History.components.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,9 @@ export const GitChanges = ({
8585
imageReleaseTags,
8686
appReleaseTagNames,
8787
tagsEditable,
88-
hideImageTaggingHardDelete
88+
hideImageTaggingHardDelete,
89+
appliedFilters,
90+
appliedFiltersTimestamp,
8991
}: GitChangesType) => {
9092
const [isSuperAdmin, setSuperAdmin] = useState<boolean>(false)
9193
useEffect(() => {
@@ -113,6 +115,7 @@ export const GitChanges = ({
113115
/>
114116
)
115117
}
118+
116119
return (
117120
<div className="flex column left w-100 ">
118121
{ciMaterials?.map((ciMaterial, index) => {
@@ -155,6 +158,8 @@ export const GitChanges = ({
155158
appReleaseTagNames={appReleaseTagNames}
156159
tagsEditable={tagsEditable}
157160
hideImageTaggingHardDelete={hideImageTaggingHardDelete}
161+
appliedFilters={appliedFilters}
162+
appliedFiltersTimestamp={appliedFiltersTimestamp}
158163
isSuperAdmin={isSuperAdmin}
159164
>
160165
<div className="flex column left hover-trigger">

src/components/app/details/cicdHistory/types.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { CSSProperties } from 'react'
22
import { TERMINAL_STATUS_MAP } from '../../../../config'
33
import { OptionType } from '../../types'
4-
import { UserApprovalMetadataType, ReleaseTag } from '@devtron-labs/devtron-fe-common-lib'
4+
import { UserApprovalMetadataType, ReleaseTag, FilterConditionsListType } from '@devtron-labs/devtron-fe-common-lib'
55
export interface WebHookData {
66
Id: number
77
EventActionType: string
@@ -36,6 +36,8 @@ export interface History {
3636
imageReleaseTags?: ReleaseTag[]
3737
appReleaseTagNames?: string[]
3838
tagsEditable?: boolean
39+
appliedFilters?: FilterConditionsListType[]
40+
appliedFiltersTimestamp?: string
3941
}
4042

4143
export interface CiMaterial {
@@ -104,6 +106,8 @@ export interface CIListItemType {
104106
appReleaseTagNames?: string[]
105107
tagsEditable?: boolean
106108
hideImageTaggingHardDelete?: boolean
109+
appliedFilters?: FilterConditionsListType[]
110+
appliedFiltersTimestamp?: string
107111
isSuperAdmin?:boolean
108112
}
109113

@@ -142,7 +146,9 @@ export interface GitChangesType {
142146
ciPipelineId?: number
143147
appReleaseTagNames?: string[]
144148
tagsEditable?: boolean
145-
hideImageTaggingHardDelete?: boolean
149+
hideImageTaggingHardDelete?: boolean,
150+
appliedFilters?: FilterConditionsListType[]
151+
appliedFiltersTimestamp?: string
146152
}
147153
export interface EmptyViewType {
148154
imgSrc?: string

0 commit comments

Comments
 (0)