refactor: unify /apps routing with application and route filtering
All checks were successful
Build & Publish / publish (push) Successful in 44s
All checks were successful
Build & Publish / publish (push) Successful in 44s
- Table columns: Status, Route, Application, Started (yyyy-mm-dd hh:mm:ss), Duration, Agent (removed Order ID and Customer) - /apps shows all exchanges, /apps/:id filters by application, /apps/:id/:routeId filters by application and route - Route paths changed from /routes/:id to /apps/:appId/:routeId across sidebar, search, breadcrumbs, metrics, and exchange detail - Added buildRouteToAppMap utility for route→application lookup Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
14
src/App.tsx
14
src/App.tsx
@@ -2,7 +2,6 @@ import { useMemo, useCallback } from 'react'
|
||||
import { Routes, Route, Navigate, useNavigate } from 'react-router-dom'
|
||||
import { Dashboard } from './pages/Dashboard/Dashboard'
|
||||
import { Metrics } from './pages/Metrics/Metrics'
|
||||
import { RouteDetail } from './pages/RouteDetail/RouteDetail'
|
||||
import { ExchangeDetail } from './pages/ExchangeDetail/ExchangeDetail'
|
||||
import { AgentHealth } from './pages/AgentHealth/AgentHealth'
|
||||
import { AgentInstance } from './pages/AgentInstance/AgentInstance'
|
||||
@@ -20,32 +19,31 @@ import { buildSearchData } from './mocks/searchData'
|
||||
import { exchanges } from './mocks/exchanges'
|
||||
import { routes } from './mocks/routes'
|
||||
import { agents } from './mocks/agents'
|
||||
import { SIDEBAR_APPS } from './mocks/sidebar'
|
||||
import { SIDEBAR_APPS, buildRouteToAppMap } from './mocks/sidebar'
|
||||
|
||||
const routeToApp = buildRouteToAppMap()
|
||||
|
||||
/** Compute which sidebar path to reveal for a given search result */
|
||||
function computeSidebarRevealPath(result: SearchResult): string | undefined {
|
||||
if (!result.path) return undefined
|
||||
|
||||
if (result.category === 'application') {
|
||||
// /apps/:id — already a sidebar node path
|
||||
return result.path
|
||||
}
|
||||
|
||||
if (result.category === 'route') {
|
||||
// /routes/:id — already a sidebar node path
|
||||
return result.path
|
||||
}
|
||||
|
||||
if (result.category === 'agent') {
|
||||
// /agents/:appId/:agentId — already a sidebar node path
|
||||
return result.path
|
||||
}
|
||||
|
||||
if (result.category === 'exchange') {
|
||||
// /exchanges/:id — no sidebar entry; resolve to the parent route
|
||||
const exchange = exchanges.find((e) => e.id === result.id)
|
||||
if (exchange) {
|
||||
return `/routes/${exchange.route}`
|
||||
const appId = routeToApp.get(exchange.route)
|
||||
if (appId) return `/apps/${appId}/${exchange.route}`
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,8 +81,8 @@ export default function App() {
|
||||
<Route path="/" element={<Navigate to="/apps" replace />} />
|
||||
<Route path="/apps" element={<Dashboard />} />
|
||||
<Route path="/apps/:id" element={<Dashboard />} />
|
||||
<Route path="/apps/:id/:routeId" element={<Dashboard />} />
|
||||
<Route path="/metrics" element={<Metrics />} />
|
||||
<Route path="/routes/:id" element={<RouteDetail />} />
|
||||
<Route path="/exchanges/:id" element={<ExchangeDetail />} />
|
||||
<Route path="/agents/:appId/:instanceId" element={<AgentInstance />} />
|
||||
<Route path="/agents/*" element={<AgentHealth />} />
|
||||
|
||||
Reference in New Issue
Block a user