import {Fragment, useMemo} from 'react'; import styled from '@emotion/styled'; import {Hovercard} from 'sentry/components/hovercard'; import {t} from 'sentry/locale'; import {space} from 'sentry/styles/space'; import {FullSpanDescription} from 'sentry/views/starfish/components/fullSpanDescription'; import {SpanDescriptionLink} from 'sentry/views/starfish/components/spanDescriptionLink'; import {ModuleName, SpanMetricsField} from 'sentry/views/starfish/types'; import {SQLishFormatter} from 'sentry/views/starfish/utils/sqlish/SQLishFormatter'; const formatter = new SQLishFormatter(); const {SPAN_OP} = SpanMetricsField; interface Props { description: string; moduleName: ModuleName; projectId: number; endpoint?: string; endpointMethod?: string; group?: string; spanOp?: string; } export function SpanDescriptionCell({ description: rawDescription, group, moduleName, spanOp, endpoint, endpointMethod, projectId, }: Props) { const formatterDescription = useMemo(() => { if (moduleName !== ModuleName.DB) { return rawDescription; } return formatter.toSimpleMarkup(rawDescription); }, [moduleName, rawDescription]); if (!rawDescription) { return NULL_DESCRIPTION; } const descriptionLink = ( ); if (moduleName === ModuleName.DB) { return ( } > {descriptionLink} ); } if (moduleName === ModuleName.HTTP) { return ( {t('Example')} } > {descriptionLink} ); } return descriptionLink; } const NULL_DESCRIPTION = <null>; export const WiderHovercard = styled( ({children, className, ...props}: React.ComponentProps) => ( {children} ) )` &.wider { width: auto; max-width: 550px; } `; const TitleWrapper = styled('div')` margin-bottom: ${space(1)}; `;