12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import {useMemo} from 'react';
- import {useTheme} from '@emotion/react';
- import {Button} from 'sentry/components/button';
- import {IconGroup} from 'sentry/icons';
- import {t, tct} from 'sentry/locale';
- import type {TraceTreeNodeDetailsProps} from 'sentry/views/performance/newTraceDetails/traceDrawer/tabs/traceTreeNodeDetails';
- import {getTraceTabTitle} from 'sentry/views/performance/newTraceDetails/traceTabs';
- import {Row} from 'sentry/views/performance/traceDetails/styles';
- import {makeTraceNodeBarColor, type SiblingAutogroupNode} from '../../traceTree';
- import {IssueList} from './issues/issues';
- import {TraceDrawerComponents} from './styles';
- export function SiblingAutogroupNodeDetails({
- node,
- organization,
- onParentClick,
- scrollToNode,
- }: TraceTreeNodeDetailsProps<SiblingAutogroupNode>) {
- const theme = useTheme();
- const issues = useMemo(() => {
- return [...node.errors, ...node.performance_issues];
- }, [node.errors, node.performance_issues]);
- const parentTransaction = node.parent_transaction;
- return (
- <TraceDrawerComponents.DetailContainer>
- <TraceDrawerComponents.HeaderContainer>
- <TraceDrawerComponents.Title>
- <TraceDrawerComponents.IconTitleWrapper>
- <TraceDrawerComponents.IconBorder
- backgroundColor={makeTraceNodeBarColor(theme, node)}
- >
- <IconGroup />
- </TraceDrawerComponents.IconBorder>
- <div style={{fontWeight: 'bold'}}>{t('Autogroup')}</div>
- </TraceDrawerComponents.IconTitleWrapper>
- </TraceDrawerComponents.Title>
- <TraceDrawerComponents.Actions>
- <Button size="xs" onClick={_e => scrollToNode(node)}>
- {t('Show in view')}
- </Button>
- </TraceDrawerComponents.Actions>
- </TraceDrawerComponents.HeaderContainer>
- <IssueList issues={issues} node={node} organization={organization} />
- <TraceDrawerComponents.Table className="table key-value">
- <tbody>
- {parentTransaction ? (
- <Row title="Parent Transaction">
- <td className="value">
- <a href="#" onClick={() => onParentClick(parentTransaction)}>
- {getTraceTabTitle(parentTransaction)}
- </a>
- </td>
- </Row>
- ) : null}
- <Row title={t('Grouping Logic')}>
- {t('5 or more sibling spans with the same operation and description.')}
- </Row>
- <Row title={t('Group Count')}>{node.groupCount}</Row>
- <Row title={t('Grouping Key')}>
- {tct('Span operation: [operation] and description: [description]', {
- operation: node.value.op,
- description: node.value.description,
- })}
- </Row>
- </tbody>
- </TraceDrawerComponents.Table>
- </TraceDrawerComponents.DetailContainer>
- );
- }
|