grafana/public/app/features/explore/TraceView/TraceViewContainer.tsx
2024-01-08 14:11:05 +00:00

43 lines
1.1 KiB
TypeScript

import React, { useMemo } from 'react';
import { DataFrame, SplitOpen } from '@grafana/data';
import { PanelChrome } from '@grafana/ui';
import { StoreState, useSelector } from 'app/types';
import { TraceView } from './TraceView';
import { transformDataFrames } from './utils/transform';
interface Props {
dataFrames: DataFrame[];
splitOpenFn: SplitOpen;
exploreId: string;
scrollElement?: Element;
}
export function TraceViewContainer(props: Props) {
// At this point we only show single trace
const frame = props.dataFrames[0];
const { dataFrames, splitOpenFn, exploreId, scrollElement } = props;
const traceProp = useMemo(() => transformDataFrames(frame), [frame]);
const datasource = useSelector(
(state: StoreState) => state.explore.panes[props.exploreId]?.datasourceInstance ?? undefined
);
if (!traceProp) {
return null;
}
return (
<PanelChrome padding="none" title="Trace">
<TraceView
exploreId={exploreId}
dataFrames={dataFrames}
splitOpenFn={splitOpenFn}
scrollElement={scrollElement}
traceProp={traceProp}
datasource={datasource}
/>
</PanelChrome>
);
}