Skip to content

Commit 4ed0055

Browse files
authored
Merge pull request #2768 from devtron-labs/feat/fe-misc-clone
feat: fe misc clone
2 parents 43b8bf2 + c2cb86a commit 4ed0055

File tree

16 files changed

+122
-69
lines changed

16 files changed

+122
-69
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.15.1-pre-5",
7+
"@devtron-labs/devtron-fe-common-lib": "1.15.3",
88
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
99
"@rjsf/core": "^5.13.3",
1010
"@rjsf/utils": "^5.13.3",

src/Pages/App/CreateAppModal/AppClone/AppCloneList.tsx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,17 @@ export const AppCloneList = ({ handleCloneAppClick, isJobView, handleCreationMet
4747
<div className="flexbox-col dc__gap-12 pt-20 px-20">
4848
<h2 className="m-0 fs-15 lh-1-5 fw-6 cn-9">Choose {isJobView ? 'a job' : 'an application'} to clone</h2>
4949

50-
<SearchBar
51-
dataTestId="template-list-search"
52-
initialSearchText={searchKey}
53-
size={ComponentSizeType.medium}
54-
handleEnter={handleSearch}
55-
inputProps={{
56-
placeholder: `Search ${isJobView ? 'job' : 'application'}`,
57-
}}
58-
/>
50+
{!!list.length && !listError && (
51+
<SearchBar
52+
dataTestId="template-list-search"
53+
initialSearchText={searchKey}
54+
size={ComponentSizeType.medium}
55+
handleEnter={handleSearch}
56+
inputProps={{
57+
placeholder: `Search ${isJobView ? 'job' : 'application'}`,
58+
}}
59+
/>
60+
)}
5961
</div>
6062
<div className="flex-grow-1 flexbox-col dc__gap-12 p-20 dc__overflow-auto">
6163
<GenericInfoCardListing

src/components/ApplicationGroup/List/EnvironmentsList.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { useMemo } from 'react'
1818

1919
import {
2020
ErrorScreenManager,
21+
FeatureTitleWithInfo,
2122
FilterChips,
2223
FilterSelectPicker,
2324
GenericEmptyState,
@@ -39,6 +40,18 @@ import EnvironmentsListView from './EnvironmentListView'
3940

4041
import './EnvironmentsList.scss'
4142

43+
const renderAppGroupDescriptionContent = () =>
44+
'Application Groups represent an environment and display all applications deployed to it. They simplify deploying interdependent microservices by allowing you to build and deploy multiple applications together.'
45+
46+
const renderAdditionalHeaderInfo = () => (
47+
<FeatureTitleWithInfo
48+
title="Application Groups"
49+
docLink="APP_GROUP"
50+
showInfoIconTippy
51+
renderDescriptionContent={renderAppGroupDescriptionContent}
52+
/>
53+
)
54+
4255
const EnvironmentsList = ({ isSuperAdmin }: AppGroupAdminType) => {
4356
const urlFilters = useUrlFilters<never, AppGroupUrlFiltersType>({
4457
parseSearchParams,
@@ -199,7 +212,7 @@ const EnvironmentsList = ({ isSuperAdmin }: AppGroupAdminType) => {
199212

200213
return (
201214
<div className="flexbox-col h-100 dc__overflow-auto">
202-
<PageHeader headerName="Application Groups" />
215+
<PageHeader additionalHeaderInfo={renderAdditionalHeaderInfo} />
203216
{renderBody()}
204217
</div>
205218
)

src/components/Jobs/JobList/JobsList.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import {
4141
} from '../Types'
4242
import { getJobStatusLabelFromValue, parseSearchParams } from '../Utils'
4343
import JobListContainer from './JobListContainer'
44+
import { renderAdditionalJobsHeaderInfo } from './utils'
4445

4546
import '../../app/list/list.scss'
4647

@@ -157,7 +158,7 @@ const JobsList = () => {
157158
)}
158159
{dataStateType === JobListViewType.LIST && (
159160
<>
160-
<HeaderWithCreateButton headerName="Jobs" />
161+
<HeaderWithCreateButton headerName="" additionalHeaderInfo={renderAdditionalJobsHeaderInfo} />
161162
{renderCreateJobRouter()}
162163
<JobListContainer
163164
masterFilters={masterFilters}

src/components/Jobs/JobList/utils.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { FeatureTitleWithInfo } from '@devtron-labs/devtron-fe-common-lib'
2+
3+
const renderAppGroupDescriptionContent = () =>
4+
'Job allows execution of repetitive tasks in a manual or automated manner. Execute custom tasks or choose from a library of preset plugins in your job pipeline.'
5+
6+
export const renderAdditionalJobsHeaderInfo = () => (
7+
<FeatureTitleWithInfo
8+
title="Jobs"
9+
docLink="JOBS"
10+
renderDescriptionContent={renderAppGroupDescriptionContent}
11+
showInfoIconTippy
12+
/>
13+
)

src/components/Jobs/Jobs.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
import React from 'react'
1817
import { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom'
1918
import { URLS } from '../../config'
2019
import { ErrorBoundary } from '../common'

src/components/ResourceBrowser/ResourceBrowser.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { DEFAULT_CLUSTER_ID } from '@Pages/GlobalConfigurations/ClustersAndEnvir
3030
import { sortObjectArrayAlphabetically } from '../common'
3131
import { renderNewClusterButton } from './PageHeader.buttons'
3232
import { getClusterListing } from './ResourceBrowser.service'
33+
import { renderAdditionalBrowserHeaderInfo } from './Utils'
3334

3435
const ResourceBrowser: React.FC = () => {
3536
const parentRef = useRef<HTMLDivElement>(null)
@@ -80,8 +81,8 @@ const ResourceBrowser: React.FC = () => {
8081
return (
8182
<div className="flexbox-col h-100 bg__primary" ref={parentRef}>
8283
<PageHeader
84+
additionalHeaderInfo={renderAdditionalBrowserHeaderInfo}
8385
isBreadcrumbs={false}
84-
headerName="Kubernetes Resource Browser"
8586
renderActionButtons={renderNewClusterButton(reloadDetailClusterList)}
8687
/>
8788
{renderContent()}

src/components/ResourceBrowser/ResourceList/ClusterSelector.tsx

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -116,25 +116,27 @@ const ClusterSelector: React.FC<ClusterSelectorType> = ({
116116

117117
{defaultOption?.isProd && <span className="px-6 py-2 br-4 bcb-1 cb-7 fs-12 lh-16 fw-5">Production</span>}
118118

119-
<PopupMenu autoClose>
120-
<PopupMenu.Button rootClassName="flex ml-auto p-4 border__secondary" isKebab>
121-
<MenuDots className="icon-dim-16 fcn-7" data-testid="popup-menu-button" />
122-
</PopupMenu.Button>
123-
124-
<PopupMenu.Body rootClassName="dc__border p-4">
125-
<div className="w-150 flexbox-col">
126-
<button
127-
type="button"
128-
className="dc__outline-none flexbox dc__gap-8 dc__transparent dc__hover-n50 px-12 py-6 dc__align-items-center"
129-
onClick={handleOpenDeleteModal}
130-
data-testid="delete_cluster_button"
131-
>
132-
<Icon name="ic-delete" color="R500" />
133-
<span className="fs-14 lh-1-5 cr-5">Delete</span>
134-
</button>
135-
</div>
136-
</PopupMenu.Body>
137-
</PopupMenu>
119+
{defaultOption?.value !== String(DEFAULT_CLUSTER_ID) && (
120+
<PopupMenu autoClose>
121+
<PopupMenu.Button rootClassName="flex ml-auto p-4 border__secondary" isKebab>
122+
<MenuDots className="icon-dim-16 fcn-7" data-testid="popup-menu-button" />
123+
</PopupMenu.Button>
124+
125+
<PopupMenu.Body rootClassName="dc__border p-4">
126+
<div className="w-150 flexbox-col">
127+
<button
128+
type="button"
129+
className="dc__outline-none flexbox dc__gap-8 dc__transparent dc__hover-n50 px-12 py-6 dc__align-items-center"
130+
onClick={handleOpenDeleteModal}
131+
data-testid="delete_cluster_button"
132+
>
133+
<Icon name="ic-delete" color="R500" />
134+
<span className="fs-14 lh-1-5 cr-5">Delete</span>
135+
</button>
136+
</div>
137+
</PopupMenu.Body>
138+
</PopupMenu>
139+
)}
138140

139141
{openDeleteClusterModal && (
140142
<DeleteClusterConfirmationModal

src/components/ResourceBrowser/Utils.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
ALL_NAMESPACE_OPTION,
2424
ApiResourceGroupType,
2525
DATE_TIME_FORMAT_STRING,
26+
FeatureTitleWithInfo,
2627
GVKType,
2728
InitTabType,
2829
K8sResourceDetailDataType,
@@ -416,3 +417,15 @@ export const getClusterChangeRedirectionUrl = (shouldRedirectToInstallationStatu
416417
: `${URLS.RESOURCE_BROWSER}/${id}/${
417418
ALL_NAMESPACE_OPTION.value
418419
}/${SIDEBAR_KEYS.nodeGVK.Kind.toLowerCase()}/${K8S_EMPTY_GROUP}`
420+
421+
const renderAppGroupDescriptionContent = () =>
422+
'Job allows execution of repetitive tasks in a manual or automated manner. Execute custom tasks or choose from a library of preset plugins in your job pipeline.'
423+
424+
export const renderAdditionalBrowserHeaderInfo = () => (
425+
<FeatureTitleWithInfo
426+
title="Kubernetes Resource Browser"
427+
docLink="RESOURCE_BROWSER"
428+
renderDescriptionContent={renderAppGroupDescriptionContent}
429+
showInfoIconTippy
430+
/>
431+
)

src/components/app/list-new/AppList.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929

3030
import {
3131
AppListConstants,
32+
FeatureTitleWithInfo,
3233
FilterChips,
3334
getNamespaceListMin,
3435
handleUTCTime,
@@ -420,9 +421,11 @@ const AppList = ({ isArgoInstalled }: AppListPropType) => {
420421
)
421422
}
422423

424+
const renderApplicationsInfo = () => <FeatureTitleWithInfo title="Applications" />
425+
423426
return (
424427
<div ref={appListContainerRef} className="flexbox-col h-100 dc__overflow-auto">
425-
<HeaderWithCreateButton headerName="Applications" />
428+
<HeaderWithCreateButton headerName="" additionalHeaderInfo={renderApplicationsInfo} />
426429
<AppListFilters
427430
filterConfig={filterConfig}
428431
appCount={appCount}

0 commit comments

Comments
 (0)