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)};
`;