diff --git a/web/src/TracingApp.tsx b/web/src/TracingApp.tsx index 6f3ec93..f593669 100644 --- a/web/src/TracingApp.tsx +++ b/web/src/TracingApp.tsx @@ -1,11 +1,29 @@ import React, { ReactNode } from 'react'; import { QueryParamProvider } from 'use-query-params'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { ReactRouterAdapter } from './react_router_adapter'; interface TracingAppProps { children: ReactNode; } +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + refetchOnWindowFocus: false, + retry: 0, + }, + }, +}); + +/** + * TracingApp is the common entrypoint for all Distributed Tracing UI pages. + * It initializes @tanstack/react-query and use-query-params. + */ export function TracingApp({ children }: TracingAppProps) { - return {children}; + return ( + + {children} + + ); } diff --git a/web/src/components/PersesWrapper.tsx b/web/src/components/PersesWrapper.tsx index ae01e7e..0d4dd05 100644 --- a/web/src/components/PersesWrapper.tsx +++ b/web/src/components/PersesWrapper.tsx @@ -25,7 +25,6 @@ import { } from '@perses-dev/core'; import panelsResource from '@perses-dev/panels-plugin/plugin.json'; import tempoResource from '@perses-dev/tempo-plugin/plugin.json'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { DatasourceApi, DatasourceStoreProvider, VariableProvider } from '@perses-dev/dashboards'; import { ChartThemeColor, getThemeColors } from '@patternfly/react-charts'; import { TempoInstance } from '../hooks/useTempoInstance'; @@ -86,15 +85,6 @@ const pluginLoader = dynamicImportPluginLoader([ }, ]); -const queryClient = new QueryClient({ - defaultOptions: { - queries: { - refetchOnWindowFocus: false, - retry: 0, - }, - }, -}); - interface PersesWrapperProps { children?: React.ReactNode; } @@ -125,9 +115,7 @@ export function PersesWrapper({ children }: PersesWrapperProps) { return ( - - {children} - + {children} ); diff --git a/web/src/pages/TraceDetailPage.tsx b/web/src/pages/TraceDetailPage.tsx index 428684b..8600720 100644 --- a/web/src/pages/TraceDetailPage.tsx +++ b/web/src/pages/TraceDetailPage.tsx @@ -17,16 +17,8 @@ import { TracingApp } from '../TracingApp'; import { memo } from 'react'; function TraceDetailPage() { - const { t } = useTranslation('plugin__distributed-tracing-console-plugin'); - const { traceId } = useParams(); - return ( - - - {t('Trace')} {traceId} · {t('Tracing')} - - @@ -56,9 +48,7 @@ function TraceDetailPageBody() { {t('Trace details')} - - <TraceTitle /> - + @@ -73,19 +63,31 @@ function TraceDetailPageBody() { ); } -function TraceTitle() { +function PageTitle() { + const { t } = useTranslation('plugin__distributed-tracing-console-plugin'); + const traceName = useTraceName(); + + return ( + <> + + + {t('Trace')} {traceName} · {t('Tracing')} + + + {traceName} + + ); +} + +function useTraceName() { const { traceId } = useParams(); const { queryResults } = useDataQueries('TraceQuery'); const trace = queryResults[0]?.data?.trace; if (!trace) { - return <>{traceId}; + return traceId; } - return ( - <> - {trace.rootSpan.resource.serviceName}: {trace.rootSpan.name} - - ); + return `${trace.rootSpan.resource.serviceName}: ${trace.rootSpan.name}`; } const sval = (val?: TraceAttributeValue) =>