useProjectWebVitalsQuery.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {useDiscoverQuery} from 'sentry/utils/discover/discoverQuery';
  2. import EventView from 'sentry/utils/discover/eventView';
  3. import {DiscoverDatasets} from 'sentry/utils/discover/types';
  4. import {useLocation} from 'sentry/utils/useLocation';
  5. import useOrganization from 'sentry/utils/useOrganization';
  6. import usePageFilters from 'sentry/utils/usePageFilters';
  7. type Props = {
  8. transaction?: string;
  9. };
  10. export const useProjectWebVitalsQuery = ({transaction}: Props = {}) => {
  11. const organization = useOrganization();
  12. const pageFilters = usePageFilters();
  13. const location = useLocation();
  14. const projectEventView = EventView.fromNewQueryWithPageFilters(
  15. {
  16. fields: [
  17. 'p75(measurements.lcp)',
  18. 'p75(measurements.fcp)',
  19. 'p75(measurements.cls)',
  20. 'p75(measurements.ttfb)',
  21. 'p75(measurements.fid)',
  22. 'count()',
  23. 'failure_count()',
  24. 'p95(transaction.duration)',
  25. 'eps()',
  26. ],
  27. name: 'Web Vitals',
  28. query:
  29. 'transaction.op:pageload' + (transaction ? ` transaction:"${transaction}"` : ''),
  30. version: 2,
  31. dataset: DiscoverDatasets.METRICS,
  32. },
  33. pageFilters.selection
  34. );
  35. return useDiscoverQuery({
  36. eventView: projectEventView,
  37. limit: 50,
  38. location,
  39. orgSlug: organization.slug,
  40. options: {
  41. enabled: pageFilters.isReady,
  42. refetchOnWindowFocus: false,
  43. },
  44. });
  45. };