diff --git a/ui/src/pages/ExchangeDetail/ExchangeDetail.tsx b/ui/src/pages/ExchangeDetail/ExchangeDetail.tsx index d4579cfe..ffdfeaed 100644 --- a/ui/src/pages/ExchangeDetail/ExchangeDetail.tsx +++ b/ui/src/pages/ExchangeDetail/ExchangeDetail.tsx @@ -2,10 +2,12 @@ import React, { useState, useMemo } from 'react'; import { useParams, useNavigate } from 'react-router'; import { Badge, StatusDot, MonoText, CodeBlock, InfoCallout, - ProcessorTimeline, Breadcrumb, Spinner, + ProcessorTimeline, Breadcrumb, Spinner, SegmentedTabs, RouteFlow, } from '@cameleer/design-system'; import { useExecutionDetail, useProcessorSnapshot } from '../../api/queries/executions'; import { useCorrelationChain } from '../../api/queries/correlation'; +import { useDiagramByRoute } from '../../api/queries/diagrams'; +import { mapDiagramToRouteNodes } from '../../utils/diagram-mapping'; import styles from './ExchangeDetail.module.css'; function countProcessors(nodes: any[]): number { @@ -17,8 +19,10 @@ export default function ExchangeDetail() { const navigate = useNavigate(); const { data: detail, isLoading } = useExecutionDetail(id ?? null); const [selectedProcessor, setSelectedProcessor] = useState(null); + const [viewMode, setViewMode] = useState<'timeline' | 'flow'>('timeline'); const { data: snapshot } = useProcessorSnapshot(id ?? null, selectedProcessor); const { data: correlationData } = useCorrelationChain(detail?.correlationId ?? null); + const { data: diagram } = useDiagramByRoute(detail?.groupName, detail?.routeId); const processors = useMemo(() => { if (!detail?.children) return []; @@ -115,18 +119,38 @@ export default function ExchangeDetail() {
- Processor Timeline + Processors + setViewMode(v as 'timeline' | 'flow')} + />
- {processors.length > 0 ? ( - setSelectedProcessor(i)} - selectedIndex={selectedProcessor ?? undefined} - /> + {viewMode === 'timeline' ? ( + processors.length > 0 ? ( + setSelectedProcessor(i)} + selectedIndex={selectedProcessor ?? undefined} + /> + ) : ( + No processor data available + ) ) : ( - No processor data available + diagram ? ( + setSelectedProcessor(i)} + selectedIndex={selectedProcessor ?? undefined} + /> + ) : ( + + ) )}