details.tsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import type {Location} from 'history';
  2. import type {Organization} from 'sentry/types';
  3. import type {VirtualizedViewManager} from 'sentry/views/performance/newTraceDetails/virtualizedViewManager';
  4. import {
  5. isMissingInstrumentationNode,
  6. isParentAutogroupedNode,
  7. isSiblingAutogroupedNode,
  8. isSpanNode,
  9. isTraceErrorNode,
  10. isTransactionNode,
  11. } from '../../guards';
  12. import type {TraceTree, TraceTreeNode} from '../../traceTree';
  13. import {ErrorNodeDetails} from '../details/error';
  14. import {MissingInstrumentationNodeDetails} from '../details/missingInstrumentation';
  15. import {ParentAutogroupNodeDetails} from '../details/parentAutogroup';
  16. import {SiblingAutogroupNodeDetails} from '../details/siblingAutogroup';
  17. import {SpanNodeDetails} from '../details/span';
  18. import {TransactionNodeDetails} from '../details/transaction';
  19. export default function NodeDetail({
  20. node,
  21. organization,
  22. location,
  23. manager,
  24. scrollToNode,
  25. }: {
  26. location: Location;
  27. manager: VirtualizedViewManager;
  28. node: TraceTreeNode<TraceTree.NodeValue>;
  29. organization: Organization;
  30. scrollToNode: (node: TraceTreeNode<TraceTree.NodeValue>) => void;
  31. }) {
  32. if (isTransactionNode(node)) {
  33. return (
  34. <TransactionNodeDetails
  35. node={node}
  36. organization={organization}
  37. location={location}
  38. manager={manager}
  39. scrollToNode={scrollToNode}
  40. />
  41. );
  42. }
  43. if (isSpanNode(node)) {
  44. return (
  45. <SpanNodeDetails
  46. node={node}
  47. organization={organization}
  48. scrollToNode={scrollToNode}
  49. />
  50. );
  51. }
  52. if (isTraceErrorNode(node)) {
  53. return <ErrorNodeDetails node={node} organization={organization} />;
  54. }
  55. if (isParentAutogroupedNode(node)) {
  56. return <ParentAutogroupNodeDetails node={node} />;
  57. }
  58. if (isSiblingAutogroupedNode(node)) {
  59. return <SiblingAutogroupNodeDetails node={node} />;
  60. }
  61. if (isMissingInstrumentationNode(node)) {
  62. return <MissingInstrumentationNodeDetails node={node} />;
  63. }
  64. throw new Error('Unknown clicked node type');
  65. }