Skip to content

Commit fa5d2e4

Browse files
authored
Merge pull request #2961 from devtron-labs/feat/segregate-listing
feat: app list segregation and chart store
2 parents e219e44 + ec0f810 commit fa5d2e4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+467
-644
lines changed

.env

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ FEATURE_ASK_DEVTRON_EXPERT=false
7272
FEATURE_MANAGE_TRAFFIC_ENABLE=false
7373
FEATURE_REDFISH_NODE_ENABLE=false
7474
FEATURE_INFRA_PROVISION_INFO_BLOCK_HIDE=false
75-
FEATURE_GROUPED_APP_LIST_FILTERS_ENABLE=false
7675
FEATURE_FLUX_DEPLOYMENTS_ENABLE=false
7776
FEATURE_LINK_EXTERNAL_FLUX_ENABLE=false
7877
FEATURE_CANARY_ROLLOUT_PROGRESS_ENABLE=true

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.20.6-pre-30",
7+
"@devtron-labs/devtron-fe-common-lib": "1.20.6-pre-31",
88
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
99
"@rjsf/core": "^5.13.3",
1010
"@rjsf/utils": "^5.13.3",

src/Pages-Devtron-2.0/ApplicationManagement/Configurations/ConfigurationsRouter.tsx

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -112,21 +112,22 @@ export const Configurations = () => {
112112
>
113113
{(props) => <Notifications {...props} isSuperAdmin={isSuperAdmin} />}
114114
</Route>
115-
{...serverMode !== SERVER_MODE.EA_ONLY &&
116-
window._env_.ENABLE_SCOPED_VARIABLES && [
117-
<Route
118-
key={COMMON_URLS.APPLICATION_MANAGEMENT_CONFIGURATIONS_SCOPED_VARIABLES}
119-
path={COMMON_URLS.APPLICATION_MANAGEMENT_CONFIGURATIONS_SCOPED_VARIABLES}
120-
>
121-
<ScopedVariables isSuperAdmin={isSuperAdmin} />
122-
</Route>,
123-
<Route
124-
key={COMMON_URLS.APPLICATION_MANAGEMENT_CONFIGURATIONS_BUILD_INFRA}
125-
path={COMMON_URLS.APPLICATION_MANAGEMENT_CONFIGURATIONS_BUILD_INFRA}
126-
>
127-
<BuildInfra isSuperAdmin={isSuperAdmin} />
128-
</Route>,
129-
]}
115+
{...serverMode !== SERVER_MODE.EA_ONLY && window._env_.ENABLE_SCOPED_VARIABLES
116+
? [
117+
<Route
118+
key={COMMON_URLS.APPLICATION_MANAGEMENT_CONFIGURATIONS_SCOPED_VARIABLES}
119+
path={COMMON_URLS.APPLICATION_MANAGEMENT_CONFIGURATIONS_SCOPED_VARIABLES}
120+
>
121+
<ScopedVariables isSuperAdmin={isSuperAdmin} />
122+
</Route>,
123+
<Route
124+
key={COMMON_URLS.APPLICATION_MANAGEMENT_CONFIGURATIONS_BUILD_INFRA}
125+
path={COMMON_URLS.APPLICATION_MANAGEMENT_CONFIGURATIONS_BUILD_INFRA}
126+
>
127+
<BuildInfra isSuperAdmin={isSuperAdmin} />
128+
</Route>,
129+
]
130+
: []}
130131
<Redirect to={getDefaultRoute()} />
131132
</Switch>
132133
</div>

src/Pages/App/Details/ExternalFlux/ExternalFluxAppDetailsRoute.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
import { lazy, Suspense } from 'react'
1818
import { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom'
1919

20-
import { AppListConstants, Progressing, URLS } from '@devtron-labs/devtron-fe-common-lib'
20+
import { AppListConstants, Progressing } from '@devtron-labs/devtron-fe-common-lib'
21+
22+
import { URLS } from '@Config/routes'
2123

2224
import EAHeaderComponent from '../../../../components/v2/headers/EAHeader.component'
2325

@@ -30,7 +32,7 @@ const ExternalFluxAppDetailsRoute = () => {
3032
<>
3133
<EAHeaderComponent
3234
title={AppListConstants.AppTabs.FLUX_APPS}
33-
redirectURL={`${URLS.APPLICATION_MANAGEMENT_APP}/${URLS.APP_LIST}/${AppListConstants.AppType.FLUX_APPS}`}
35+
redirectURL={URLS.FLUX_APP_LIST}
3436
showAppDetailsOnly
3537
breadCrumbConfig={{
3638
':namespace': null,

src/Pages/ChartStore/ChartDetails/ChartDetails.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { Route, Switch, useRouteMatch } from 'react-router-dom'
2020
import {
2121
APIResponseHandler,
2222
BreadCrumb,
23-
getApplicationManagementBreadcrumb,
23+
getInfrastructureManagementBreadcrumb,
2424
handleAnalyticsEvent,
2525
PageHeader,
2626
SegmentedControl,
@@ -84,7 +84,7 @@ export const ChartDetails = () => {
8484
const { breadcrumbs } = useBreadcrumb(
8585
{
8686
alias: {
87-
...getApplicationManagementBreadcrumb(),
87+
...getInfrastructureManagementBreadcrumb(),
8888
discover: {
8989
component: 'Chart Store',
9090
linked: true,

src/Pages/ChartStore/ChartDetails/ChartDetailsReadme.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export const ChartDetailsReadme = ({
8484
errorScreenManagerProps={{
8585
code: error?.code,
8686
reload,
87-
redirectURL: URLS.APPLICATION_MANAGEMENT_CHART_STORE_DISCOVER,
87+
redirectURL: URLS.INFRASTRUCTURE_MANAGEMENT_CHART_STORE_DISCOVER,
8888
}}
8989
>
9090
{!readme ? (

src/Pages/ChartStore/ChartDetails/ChartDetailsTableComponents.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import {
3535
SearchBar,
3636
SERVER_MODE,
3737
stringComparatorBySortOrder,
38+
URLS as CommonURLS,
3839
UserIdentifier,
3940
} from '@devtron-labs/devtron-fe-common-lib'
4041

@@ -260,8 +261,8 @@ const DeploymentsTableLinkCellComponent = ({ row }: DeploymentsTableCellComponen
260261
className="flex left fs-13 lh-20 dc__truncate dc__w-fit-content"
261262
to={
262263
appOfferingMode === SERVER_MODE.EA_ONLY
263-
? `${URLS.APPLICATION_MANAGEMENT_APP}/${URLS.EXTERNAL_APPS}/${getAppId({ clusterId, namespace, appName })}/${appName}`
264-
: `${URLS.APPLICATION_MANAGEMENT_APP}/${URLS.DEVTRON_CHARTS}/deployments/${installedAppId}/env/${environmentId}`
264+
? `${CommonURLS.INFRASTRUCTURE_MANAGEMENT_APP}/${URLS.EXTERNAL_APPS}/${getAppId({ clusterId, namespace, appName })}/${appName}`
265+
: `${CommonURLS.INFRASTRUCTURE_MANAGEMENT_APP}/${URLS.DEVTRON_CHARTS}/deployments/${installedAppId}/env/${environmentId}`
265266
}
266267
>
267268
{row.data.appName}

src/Pages/Shared/CommandBar/utils.tsx

Lines changed: 45 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import { generatePath } from 'react-router-dom'
2+
13
import {
24
Icon,
35
ImageWithFallback,
6+
InfrastructureManagementAppListType,
7+
NavigationItemID,
48
SERVER_MODE,
59
URL_FILTER_KEYS,
610
URLS as COMMON_URLS,
@@ -33,28 +37,30 @@ export const getNewSelectedIndex = (prevIndex: number, type: 'up' | 'down', tota
3337
return prevIndex === totalItems - 1 ? 0 : prevIndex + 1
3438
}
3539

36-
const getAppManagementAdditionalNavItems = (
37-
serverMode: SERVER_MODE,
38-
isSuperAdmin: boolean,
39-
): CommandBarGroupType['items'] => [
40+
const getAppManagementNavItemsBreakdown = (serverMode: SERVER_MODE): CommandBarGroupType['items'] => [
4041
...(serverMode === SERVER_MODE.FULL
4142
? [
4243
{
4344
id: 'app-management-devtron-app-list',
4445
title: 'Devtron Applications',
4546
icon: 'ic-devtron-app',
4647
iconColor: 'none',
47-
href: URLS.DEVTRON_APP_LIST,
48+
href: COMMON_URLS.APPLICATION_MANAGEMENT_APP_LIST,
4849
keywords: [],
4950
} satisfies CommandBarGroupType['items'][number],
5051
]
5152
: []),
53+
]
54+
55+
const getInfraManagementNavItemsBreakdown = (isSuperAdmin: boolean): CommandBarGroupType['items'] => [
5256
{
5357
id: 'app-management-helm-app-list',
5458
title: 'Helm Applications',
5559
icon: 'ic-helm-app',
5660
iconColor: 'none',
57-
href: URLS.HELM_APP_LIST,
61+
href: generatePath(COMMON_URLS.INFRASTRUCTURE_MANAGEMENT_APP_LIST, {
62+
appType: InfrastructureManagementAppListType.HELM,
63+
}),
5864
keywords: [],
5965
},
6066
...(window._env_?.ENABLE_EXTERNAL_ARGO_CD && isSuperAdmin
@@ -64,7 +70,9 @@ const getAppManagementAdditionalNavItems = (
6470
title: 'ArgoCD Applications',
6571
icon: 'ic-argocd-app',
6672
iconColor: 'none',
67-
href: URLS.ARGO_APP_LIST,
73+
href: generatePath(COMMON_URLS.INFRASTRUCTURE_MANAGEMENT_APP_LIST, {
74+
appType: InfrastructureManagementAppListType.ARGO_CD,
75+
}),
6876
keywords: [],
6977
} satisfies CommandBarGroupType['items'][number],
7078
]
@@ -76,18 +84,32 @@ const getAppManagementAdditionalNavItems = (
7684
title: 'FluxCD Applications',
7785
icon: 'ic-fluxcd-app',
7886
iconColor: 'none',
79-
href: URLS.FLUX_APP_LIST,
87+
href: generatePath(COMMON_URLS.INFRASTRUCTURE_MANAGEMENT_APP_LIST, {
88+
appType: InfrastructureManagementAppListType.FLUX_CD,
89+
}),
8090
keywords: [],
8191
} satisfies CommandBarGroupType['items'][number],
8292
]
8393
: []),
8494
]
8595

96+
const getNavItemBreakdownItems = (
97+
rootId: NavigationItemID,
98+
serverMode: SERVER_MODE,
99+
isSuperAdmin: boolean,
100+
): CommandBarGroupType['items'] => {
101+
switch (rootId) {
102+
case 'application-management-devtron-applications':
103+
return getAppManagementNavItemsBreakdown(serverMode)
104+
case 'infrastructure-management-applications':
105+
return getInfraManagementNavItemsBreakdown(isSuperAdmin)
106+
default:
107+
return []
108+
}
109+
}
110+
86111
export const getNavigationGroups = (serverMode: SERVER_MODE, isSuperAdmin: boolean): CommandBarGroupType[] =>
87112
NAVIGATION_LIST.map<CommandBarGroupType>((group) => {
88-
const isAppManagementBlock = group.id === 'application-management'
89-
const additionalItems = isAppManagementBlock ? getAppManagementAdditionalNavItems(serverMode, isSuperAdmin) : []
90-
91113
const parsedItems = group.items.flatMap<CommandBarGroupType['items'][number]>(
92114
({ hasSubMenu, subItems, title, href, id, icon, keywords }) => {
93115
if (hasSubMenu && subItems?.length) {
@@ -102,6 +124,12 @@ export const getNavigationGroups = (serverMode: SERVER_MODE, isSuperAdmin: boole
102124
}))
103125
}
104126

127+
const breakdownItems = getNavItemBreakdownItems(id, serverMode, isSuperAdmin)
128+
129+
if (breakdownItems.length) {
130+
return breakdownItems
131+
}
132+
105133
return {
106134
title,
107135
id,
@@ -116,7 +144,7 @@ export const getNavigationGroups = (serverMode: SERVER_MODE, isSuperAdmin: boole
116144
return {
117145
title: group.title,
118146
id: group.id,
119-
items: [...additionalItems, ...parsedItems],
147+
items: parsedItems,
120148
}
121149
})
122150

@@ -169,7 +197,7 @@ export const parseChartListToNavItems = (
169197
fallbackImage={<Icon name="ic-helm-app" color={null} size={20} />}
170198
/>
171199
),
172-
href: `${COMMON_URLS.APPLICATION_MANAGEMENT_CHART_STORE_DISCOVER}${URLS.CHART}/${chart.id}`,
200+
href: `${COMMON_URLS.INFRASTRUCTURE_MANAGEMENT_CHART_STORE_DISCOVER}${URLS.CHART}/${chart.id}`,
173201
keywords: [],
174202
})),
175203
},
@@ -224,7 +252,7 @@ export const parseHelmAppListToNavItems = (
224252
fallbackImage={<Icon name="ic-helm-app" color={null} size={20} />}
225253
/>
226254
),
227-
href: `${URLS.APPLICATION_MANAGEMENT_APP}/${URLS.DEVTRON_CHARTS}/deployments/${helmApp.appId}/env/${helmApp.environmentDetail?.environmentId}`,
255+
href: `${COMMON_URLS.INFRASTRUCTURE_MANAGEMENT_APP}/${URLS.DEVTRON_CHARTS}/deployments/${helmApp.appId}/env/${helmApp.environmentDetail?.environmentId}`,
228256
keywords: [],
229257
})),
230258
},
@@ -276,7 +304,7 @@ const getTopFiveAppListGroup = (
276304
return parsedAppList[0]
277305
? topFiveGroupParser(parsedAppList[0], {
278306
id: 'search-app-list-view',
279-
href: `${URLS.DEVTRON_APP_LIST}?${URL_FILTER_KEYS.SEARCH_KEY}=${encodeURIComponent(searchText)}`,
307+
href: `${COMMON_URLS.APPLICATION_MANAGEMENT_APP_LIST}?${URL_FILTER_KEYS.SEARCH_KEY}=${encodeURIComponent(searchText)}`,
280308
})
281309
: parsedAppList
282310
}
@@ -294,7 +322,7 @@ const getTopFiveHelmAppListGroup = (
294322
return parsedHelmAppList[0]
295323
? topFiveGroupParser(parsedHelmAppList[0], {
296324
id: 'search-helm-app-list-view',
297-
href: `${URLS.HELM_APP_LIST}?${URL_FILTER_KEYS.SEARCH_KEY}=${encodeURIComponent(searchText)}`,
325+
href: `${generatePath(COMMON_URLS.INFRASTRUCTURE_MANAGEMENT_APP_LIST, { appType: InfrastructureManagementAppListType.HELM })}?${URL_FILTER_KEYS.SEARCH_KEY}=${encodeURIComponent(searchText)}`,
298326
})
299327
: parsedHelmAppList
300328
}
@@ -332,7 +360,7 @@ const getTopFiveChartListGroup = (
332360
return parsedChartList[0]
333361
? topFiveGroupParser(parsedChartList[0], {
334362
id: 'search-chart-list-view',
335-
href: `${COMMON_URLS.APPLICATION_MANAGEMENT_CHART_STORE_DISCOVER}?${ChartStoreQueryParams.AppStoreName}=${encodeURIComponent(
363+
href: `${COMMON_URLS.INFRASTRUCTURE_MANAGEMENT_CHART_STORE_DISCOVER}?${ChartStoreQueryParams.AppStoreName}=${encodeURIComponent(
336364
searchText,
337365
)}`,
338366
})

src/Pages/Shared/ConfigMapSecret/helpers.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export const renderESOInfo = (isESO: boolean) =>
3535
description={
3636
<p className="m-0 cn-9 fs-13 fw-4 lh-20">
3737
<Link
38-
to={`${URLS.APPLICATION_MANAGEMENT_CHART_STORE_DISCOVER}?appStoreName=external-secret`}
38+
to={`${URLS.INFRASTRUCTURE_MANAGEMENT_CHART_STORE_DISCOVER}?appStoreName=external-secret`}
3939
className="anchor"
4040
target="_blank"
4141
>

src/assets/icons/ic-cloud.svg

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)