import {useMemo} from 'react'; import {Button} from 'sentry/components/button'; import NewTraceDetailsSpanDetail from 'sentry/components/events/interfaces/spans/newTraceDetailsSpanDetails'; import { getSpanOperation, parseTrace, } from 'sentry/components/events/interfaces/spans/utils'; import ProjectBadge from 'sentry/components/idBadge/projectBadge'; import {Tooltip} from 'sentry/components/tooltip'; import {t} from 'sentry/locale'; import useProjects from 'sentry/utils/useProjects'; import type {TraceTreeNodeDetailsProps} from 'sentry/views/performance/newTraceDetails/traceDrawer/tabs/traceTreeNodeDetails'; import type { TraceTree, TraceTreeNode, } from 'sentry/views/performance/newTraceDetails/traceModels/traceTree'; import {ProfileGroupProvider} from 'sentry/views/profiling/profileGroupProvider'; import {ProfileContext, ProfilesProvider} from 'sentry/views/profiling/profilesProvider'; import {TraceDrawerComponents} from './styles'; export function SpanNodeDetails({ node, organization, onTabScrollToNode, onParentClick, }: TraceTreeNodeDetailsProps>) { const {projects} = useProjects(); const span = node.value; const {event} = node.value; const project = projects.find(proj => proj.slug === event?.projectSlug); const profileId = event?.contexts?.profile?.profile_id ?? null; const childTransactions = useMemo(() => { return node.value.childTransaction ? [node.value.childTransaction] : []; }, [node.value.childTransaction]); return (
{t('span')}
{' '} {getSpanOperation(span) + ' - ' + (span.description ?? span.span_id)}
{event.projectSlug ? ( {profiles => ( )} ) : null}
); }