utils.tsx 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import {Location} from 'history';
  2. import {Organization} from 'sentry/types';
  3. import {
  4. canUseMetricsData,
  5. MetricsEnhancedSettingContext,
  6. } from 'sentry/utils/performance/contexts/metricsEnhancedSetting';
  7. import {decodeScalar} from 'sentry/utils/queryString';
  8. import {getMEPQueryParams} from 'sentry/views/performance/landing/widgets/utils';
  9. import {DisplayModes} from 'sentry/views/performance/transactionSummary/utils';
  10. export const DISPLAY_MAP_DENY_LIST = [DisplayModes.TREND, DisplayModes.LATENCY];
  11. export function canUseTransactionMetricsData(organization, location) {
  12. const isUsingMetrics = canUseMetricsData(organization);
  13. if (!isUsingMetrics) {
  14. return false;
  15. }
  16. const display = decodeScalar(
  17. location.query.display,
  18. DisplayModes.DURATION
  19. ) as DisplayModes;
  20. const breakdown = decodeScalar(location.query.breakdown, '');
  21. const query = decodeScalar(location.query.query, '');
  22. // certain charts aren't compatible with metrics
  23. if (DISPLAY_MAP_DENY_LIST.includes(display)) {
  24. return false;
  25. }
  26. // span op breakdown filters aren't compatible with metrics
  27. if (breakdown) {
  28. return false;
  29. }
  30. // in the short term, using any filter will force indexed event search
  31. if (query) {
  32. return false;
  33. }
  34. return true;
  35. }
  36. export function getTransactionMEPParamsIfApplicable(
  37. mepContext: MetricsEnhancedSettingContext,
  38. organization: Organization,
  39. location: Location,
  40. unfiltered: boolean = false
  41. ) {
  42. if (!organization.features.includes('performance-metrics-backed-transaction-summary')) {
  43. return undefined;
  44. }
  45. if (!unfiltered && !canUseTransactionMetricsData(organization, location)) {
  46. return undefined;
  47. }
  48. return getMEPQueryParams(mepContext);
  49. }
  50. export function canUseMetricsInTransactionSummary(organization: Organization) {
  51. return (
  52. canUseMetricsData(organization) &&
  53. organization.features.includes('performance-metrics-backed-transaction-summary')
  54. );
  55. }