missingInstrumentation.tsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import {useTheme} from '@emotion/react';
  2. import {IconSpan} from 'sentry/icons';
  3. import {t} from 'sentry/locale';
  4. import {getDuration} from 'sentry/utils/formatters';
  5. import {getTraceTabTitle} from 'sentry/views/performance/newTraceDetails/traceTabs';
  6. import {Row} from 'sentry/views/performance/traceDetails/styles';
  7. import {
  8. makeTraceNodeBarColor,
  9. type MissingInstrumentationNode,
  10. type TraceTree,
  11. type TraceTreeNode,
  12. } from '../../traceTree';
  13. import {TraceDrawerComponents} from './styles';
  14. export function MissingInstrumentationNodeDetails({
  15. node,
  16. onParentClick,
  17. }: {
  18. node: MissingInstrumentationNode;
  19. onParentClick: (node: TraceTreeNode<TraceTree.NodeValue>) => void;
  20. }) {
  21. const theme = useTheme();
  22. const parentTransaction = node.parent_transaction;
  23. return (
  24. <TraceDrawerComponents.DetailContainer>
  25. <TraceDrawerComponents.IconTitleWrapper>
  26. <TraceDrawerComponents.IconBorder
  27. backgroundColor={makeTraceNodeBarColor(theme, node)}
  28. >
  29. <IconSpan size="md" />
  30. </TraceDrawerComponents.IconBorder>
  31. <div style={{fontWeight: 'bold'}}>{t('Missing Instrumentation')}</div>
  32. </TraceDrawerComponents.IconTitleWrapper>
  33. <TraceDrawerComponents.Table className="table key-value">
  34. <tbody>
  35. {parentTransaction ? (
  36. <Row title="Parent Transaction">
  37. <td className="value">
  38. <a href="#" onClick={() => onParentClick(parentTransaction)}>
  39. {getTraceTabTitle(parentTransaction)}
  40. </a>
  41. </td>
  42. </Row>
  43. ) : null}
  44. <Row title={t('Gap Duration')}>
  45. {getDuration(node.value.timestamp - node.value.start_timestamp, 2, true)}
  46. </Row>
  47. <Row title={t('Previous Span')}>
  48. {node.previous.value.op} - {node.previous.value.description}
  49. </Row>
  50. <Row title={t('Next Span')}>
  51. {node.next.value.op} - {node.next.value.description}
  52. </Row>
  53. </tbody>
  54. </TraceDrawerComponents.Table>
  55. </TraceDrawerComponents.DetailContainer>
  56. );
  57. }