utils.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import * as qs from 'query-string';
  2. import type {PageFilters} from 'sentry/types/core';
  3. import {DiscoverDatasets} from 'sentry/utils/discover/types';
  4. import normalizeUrl from 'sentry/utils/url/normalizeUrl';
  5. import type {Mode} from 'sentry/views/explore/contexts/pageParamsContext/mode';
  6. import type {Visualize} from 'sentry/views/explore/contexts/pageParamsContext/visualizes';
  7. export function getExploreUrl({
  8. orgSlug,
  9. selection,
  10. interval,
  11. mode,
  12. visualize,
  13. query,
  14. groupBy,
  15. sort,
  16. field,
  17. }: {
  18. interval: string;
  19. orgSlug: string;
  20. selection: PageFilters;
  21. visualize: Omit<Visualize, 'label'>[];
  22. field?: string[];
  23. groupBy?: string[];
  24. mode?: Mode;
  25. query?: string;
  26. sort?: string;
  27. }) {
  28. const {start, end, period: statsPeriod, utc} = selection.datetime;
  29. const {environments, projects} = selection;
  30. const queryParams = {
  31. dataset: DiscoverDatasets.SPANS_EAP_RPC,
  32. project: projects,
  33. environment: environments,
  34. statsPeriod,
  35. start,
  36. end,
  37. interval,
  38. mode,
  39. query,
  40. visualize: visualize.map(v => JSON.stringify(v)),
  41. groupBy,
  42. sort,
  43. field,
  44. utc,
  45. };
  46. return normalizeUrl(
  47. `/organizations/${orgSlug}/traces/?${qs.stringify(queryParams, {skipNull: true})}`
  48. );
  49. }