diff --git a/web/src/RouteDefinitions.ts b/web/src/RouteDefinitions.ts index ea2624dea..cb3684f1d 100644 --- a/web/src/RouteDefinitions.ts +++ b/web/src/RouteDefinitions.ts @@ -73,8 +73,8 @@ export interface CODERoutes { toCODEWebhookDetails: (args: Required>) => string toCODESettings: (args: Required>) => string - toCODEExecutions: (args: Required>) => string - toCODEExecution: (args: Required>) => string + toCODEExecutions: (args: Required>) => string + toCODEExecution: (args: Required>) => string } export const routes: CODERoutes = { @@ -116,6 +116,6 @@ export const routes: CODERoutes = { toCODEWebhookNew: ({ repoPath }) => `/${repoPath}/webhooks/new`, toCODEWebhookDetails: ({ repoPath, webhookId }) => `/${repoPath}/webhook/${webhookId}`, - toCODEExecutions: ({ pipelinePath }) => `/pipelines/${pipelinePath}`, - toCODEExecution: ({ executionPath }) => `/pipelines/${executionPath}` + toCODEExecutions: ({ space, pipeline }) => `/pipelines/${space}/pipeline/${pipeline}`, + toCODEExecution: ({ space, pipeline, execution }) => `/pipelines/${space}/pipeline/${pipeline}/execution/${execution}` } diff --git a/web/src/RouteDestinations.tsx b/web/src/RouteDestinations.tsx index 3643ddcb9..6b8423925 100644 --- a/web/src/RouteDestinations.tsx +++ b/web/src/RouteDestinations.tsx @@ -34,8 +34,6 @@ import Execution from 'pages/Execution/Execution' export const RouteDestinations: React.FC = React.memo(function RouteDestinations() { const { getString } = useStrings() const repoPath = `${pathProps.space}/${pathProps.repoName}` - const pipelinePath = `${pathProps.space}/${pathProps.pipeline}` - const executionPath = `${pathProps.space}/${pathProps.pipeline}/${pathProps.execution}` const { OPEN_SOURCE_PIPELINES, OPEN_SOURCE_SECRETS } = useFeatureFlag() @@ -159,15 +157,21 @@ export const RouteDestinations: React.FC = React.memo(function RouteDestinations {OPEN_SOURCE_PIPELINES && ( - - - + + + )} {OPEN_SOURCE_PIPELINES && ( - + @@ -175,13 +179,9 @@ export const RouteDestinations: React.FC = React.memo(function RouteDestinations )} {OPEN_SOURCE_PIPELINES && ( - - - + + + )} diff --git a/web/src/layouts/menu/DefaultMenu.tsx b/web/src/layouts/menu/DefaultMenu.tsx index 35be930e7..2f288030e 100644 --- a/web/src/layouts/menu/DefaultMenu.tsx +++ b/web/src/layouts/menu/DefaultMenu.tsx @@ -1,18 +1,20 @@ import React, { useMemo, useState } from 'react' import { Container, Layout } from '@harness/uicore' import { Render } from 'react-jsx-match' -import { useHistory, useRouteMatch } from 'react-router-dom' +import { useHistory, useRouteMatch, useParams } from 'react-router-dom' import { useGetRepositoryMetadata } from 'hooks/useGetRepositoryMetadata' import { useStrings } from 'framework/strings' import { routes } from 'RouteDefinitions' import type { TypesSpace } from 'services/code' import { SpaceSelector } from 'components/SpaceSelector/SpaceSelector' import { useFeatureFlag } from 'hooks/useFeatureFlag' +import type { CODEProps } from 'RouteDefinitions' import { NavMenuItem } from './NavMenuItem' import css from './DefaultMenu.module.scss' export const DefaultMenu: React.FC = () => { const history = useHistory() + const params = useParams() const [selectedSpace, setSelectedSpace] = useState() const { repoMetadata, gitRef, commitRef } = useGetRepositoryMetadata() const { getString } = useStrings() @@ -22,7 +24,7 @@ export const DefaultMenu: React.FC = () => { () => routeMatch.path === '/:space/:repoName' || routeMatch.path.startsWith('/:space/:repoName/edit'), [routeMatch] ) - const isPipelineSelected = routeMatch.path.startsWith('/pipelines/:space/:pipeline') + const isPipelineSelected = routeMatch.path.startsWith('/pipelines/:space*/pipeline/:pipeline') const { OPEN_SOURCE_PIPELINES, OPEN_SOURCE_SECRETS } = useFeatureFlag() @@ -161,7 +163,10 @@ export const DefaultMenu: React.FC = () => { isSubLink isSelected={isPipelineSelected} label={getString('pageTitle.executions')} - to={routes.toCODERepository({ repoPath, gitRef: commitRef || gitRef })} + to={routes.toCODEExecutions({ + space: selectedSpace?.path as string, + pipeline: params?.pipeline || '' + })} /> diff --git a/web/src/pages/ExecutionList/ExecutionList.tsx b/web/src/pages/ExecutionList/ExecutionList.tsx index 2e59dc6b7..8516514cf 100644 --- a/web/src/pages/ExecutionList/ExecutionList.tsx +++ b/web/src/pages/ExecutionList/ExecutionList.tsx @@ -149,12 +149,12 @@ const ExecutionList = () => { className={css.table} columns={columns} data={executions || []} - onRowClick={pipelineInfo => + onRowClick={executionInfo => history.push( routes.toCODEExecution({ - space: pipelineInfo.spaceUid, - pipeline: pipelineInfo.pipelineUid, - execution: pipelineInfo.uid + space: executionInfo.spaceUid, + pipeline: executionInfo.pipelineUid, + execution: executionInfo.uid }) ) } diff --git a/web/src/pages/PipelineList/PipelineList.tsx b/web/src/pages/PipelineList/PipelineList.tsx index e09c4ae78..9ba37bb3c 100644 --- a/web/src/pages/PipelineList/PipelineList.tsx +++ b/web/src/pages/PipelineList/PipelineList.tsx @@ -32,6 +32,7 @@ interface Pipeline { updated: number description?: string isPublic?: boolean + spaceUid: string } const pipelines: Pipeline[] = [ @@ -41,7 +42,8 @@ const pipelines: Pipeline[] = [ name: 'Pipeline 1', updated: 1687234800, description: 'This is a description', - isPublic: true + isPublic: true, + spaceUid: 'root' }, { id: 2, @@ -49,7 +51,8 @@ const pipelines: Pipeline[] = [ name: 'Pipeline 2', updated: 1730275200, description: 'This is a description', - isPublic: true + isPublic: true, + spaceUid: 'root' }, { id: 3, @@ -57,7 +60,8 @@ const pipelines: Pipeline[] = [ name: 'Pipeline 3', updated: 1773315600, description: 'This is a description', - isPublic: false + isPublic: false, + spaceUid: 'root' } ] @@ -142,7 +146,7 @@ const PipelineList = () => { columns={columns} data={pipelines || []} onRowClick={pipelineInfo => - history.push(routes.toCODEExecutions({ space: 'root', pipeline: pipelineInfo.uid as string })) + history.push(routes.toCODEExecutions({ space: pipelineInfo.spaceUid, pipeline: pipelineInfo.uid })) } getRowClassName={row => cx(css.row, !row.original.description && css.noDesc)} />