details.tsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. onParentClick,
  26. }: {
  27. location: Location;
  28. manager: VirtualizedViewManager;
  29. node: TraceTreeNode<TraceTree.NodeValue>;
  30. onParentClick: (node: TraceTreeNode<TraceTree.NodeValue>) => void;
  31. organization: Organization;
  32. scrollToNode: (node: TraceTreeNode<TraceTree.NodeValue>) => void;
  33. }) {
  34. if (isTransactionNode(node)) {
  35. return (
  36. <TransactionNodeDetails
  37. node={node}
  38. organization={organization}
  39. onParentClick={onParentClick}
  40. location={location}
  41. manager={manager}
  42. scrollToNode={scrollToNode}
  43. />
  44. );
  45. }
  46. if (isSpanNode(node)) {
  47. return (
  48. <SpanNodeDetails
  49. node={node}
  50. organization={organization}
  51. onParentClick={onParentClick}
  52. scrollToNode={scrollToNode}
  53. />
  54. );
  55. }
  56. if (isTraceErrorNode(node)) {
  57. return (
  58. <ErrorNodeDetails
  59. node={node}
  60. organization={organization}
  61. onParentClick={onParentClick}
  62. location={location}
  63. scrollToNode={scrollToNode}
  64. />
  65. );
  66. }
  67. if (isParentAutogroupedNode(node)) {
  68. return (
  69. <ParentAutogroupNodeDetails
  70. node={node}
  71. organization={organization}
  72. onParentClick={onParentClick}
  73. />
  74. );
  75. }
  76. if (isSiblingAutogroupedNode(node)) {
  77. return (
  78. <SiblingAutogroupNodeDetails
  79. node={node}
  80. organization={organization}
  81. onParentClick={onParentClick}
  82. />
  83. );
  84. }
  85. if (isMissingInstrumentationNode(node)) {
  86. return (
  87. <MissingInstrumentationNodeDetails node={node} onParentClick={onParentClick} />
  88. );
  89. }
  90. throw new Error('Unknown clicked node type');
  91. }