details.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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 (
  54. <ErrorNodeDetails
  55. node={node}
  56. organization={organization}
  57. location={location}
  58. scrollToNode={scrollToNode}
  59. />
  60. );
  61. }
  62. if (isParentAutogroupedNode(node)) {
  63. return <ParentAutogroupNodeDetails node={node} />;
  64. }
  65. if (isSiblingAutogroupedNode(node)) {
  66. return <SiblingAutogroupNodeDetails node={node} />;
  67. }
  68. if (isMissingInstrumentationNode(node)) {
  69. return <MissingInstrumentationNodeDetails node={node} />;
  70. }
  71. throw new Error('Unknown clicked node type');
  72. }