import {Location} from 'history'; import {t} from 'sentry/locale'; import {NewQuery, Organization} from 'sentry/types'; import EventView from 'sentry/utils/discover/eventView'; export const UNPARAMETERIZED_TRANSACTION = '<< unparameterized >>'; // Represents 'other' transactions with high cardinality names that were dropped on the metrics dataset. const SHOW_UNPARAM_BANNER = 'showUnparameterizedBanner'; enum DiscoverQueryPageSource { PERFORMANCE = 'performance', DISCOVER = 'discover', } export function createUnnamedTransactionsDiscoverTarget(props: { location: Location; organization: Organization; source?: DiscoverQueryPageSource; }) { const fields = props.source === DiscoverQueryPageSource.DISCOVER ? ['transaction', 'project', 'transaction.source', 'epm()'] : ['transaction', 'project', 'transaction.source', 'epm()', 'p50()', 'p95()']; const query: NewQuery = { id: undefined, name: props.source === DiscoverQueryPageSource.DISCOVER ? t('Unparameterized Transactions') : t('Performance - Unparameterized Transactions'), query: 'event.type:transaction transaction.source:"url"', projects: [], fields, version: 2, }; const discoverEventView = EventView.fromNewQueryWithLocation( query, props.location ).withSorts([{field: 'epm', kind: 'desc'}]); const target = discoverEventView.getResultsViewUrlTarget(props.organization.slug); target.query[SHOW_UNPARAM_BANNER] = 'true'; return target; }