utils.tsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import type {Query} from 'history';
  2. import type {Organization} from 'sentry/types/organization';
  3. import type {SpanSlug} from 'sentry/utils/performance/suspectSpans/types';
  4. import type {DomainView} from 'sentry/views/insights/pages/useFilters';
  5. import {getTransactionSummaryBaseUrl} from 'sentry/views/performance/transactionSummary/utils';
  6. function generateSpanDetailsRoute({
  7. organization,
  8. spanSlug,
  9. view,
  10. }: {
  11. organization: Organization;
  12. spanSlug: SpanSlug;
  13. view?: DomainView;
  14. }): string {
  15. const spanComponent = `${encodeURIComponent(spanSlug.op)}:${spanSlug.group}`;
  16. return `${getTransactionSummaryBaseUrl(organization, view)}/spans/${spanComponent}/`;
  17. }
  18. export function spanDetailsRouteWithQuery({
  19. organization,
  20. transaction,
  21. query,
  22. spanSlug,
  23. projectID,
  24. view,
  25. }: {
  26. organization: Organization;
  27. query: Query;
  28. spanSlug: SpanSlug;
  29. transaction: string;
  30. projectID?: string | string[];
  31. view?: DomainView;
  32. }) {
  33. const pathname = generateSpanDetailsRoute({
  34. organization,
  35. spanSlug,
  36. view,
  37. });
  38. return {
  39. pathname,
  40. query: {
  41. transaction,
  42. project: projectID,
  43. environment: query.environment,
  44. statsPeriod: query.statsPeriod,
  45. start: query.start,
  46. end: query.end,
  47. query: query.query,
  48. },
  49. };
  50. }
  51. export function generateQuerySummaryRoute({
  52. base,
  53. group,
  54. }: {
  55. base: string;
  56. group: string;
  57. }): string {
  58. return `${base}/spans/span/${group}/`;
  59. }
  60. export function querySummaryRouteWithQuery({
  61. base,
  62. query,
  63. group,
  64. projectID,
  65. }: {
  66. base: string;
  67. group: string;
  68. query: Query;
  69. projectID?: string | string[];
  70. }) {
  71. const pathname = generateQuerySummaryRoute({
  72. base,
  73. group,
  74. });
  75. return {
  76. pathname,
  77. query: {
  78. project: projectID,
  79. environment: query.environment,
  80. statsPeriod: query.statsPeriod,
  81. start: query.start,
  82. end: query.end,
  83. },
  84. };
  85. }
  86. export function generateResourceSummaryRoute({
  87. baseUrl,
  88. group,
  89. }: {
  90. baseUrl: string;
  91. group: string;
  92. }): string {
  93. return `${baseUrl}/spans/span/${group}/`;
  94. }
  95. export function resourceSummaryRouteWithQuery({
  96. baseUrl,
  97. query,
  98. group,
  99. projectID,
  100. }: {
  101. baseUrl: string;
  102. group: string;
  103. query: Query;
  104. projectID?: string | string[];
  105. }) {
  106. const pathname = generateResourceSummaryRoute({
  107. baseUrl,
  108. group,
  109. });
  110. return {
  111. pathname,
  112. query: {
  113. project: projectID,
  114. environment: query.environment,
  115. statsPeriod: query.statsPeriod,
  116. start: query.start,
  117. end: query.end,
  118. },
  119. };
  120. }
  121. export enum ZoomKeys {
  122. MIN = 'min',
  123. MAX = 'max',
  124. START = 'start',
  125. END = 'end',
  126. }