metrics.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import {useEffect} from 'react';
  2. import PageFiltersContainer from 'sentry/components/organizations/pageFilters/container';
  3. import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle';
  4. import {t} from 'sentry/locale';
  5. import {trackAnalytics} from 'sentry/utils/analytics';
  6. import useOrganization from 'sentry/utils/useOrganization';
  7. import {MetricsContextProvider, useMetricsContext} from 'sentry/views/metrics/context';
  8. import {MetricsLayout} from 'sentry/views/metrics/layout';
  9. function WrappedPageFiltersContainer({children}: {children: React.ReactNode}) {
  10. const {isDefaultQuery} = useMetricsContext();
  11. return (
  12. <PageFiltersContainer disablePersistence={isDefaultQuery}>
  13. {children}
  14. </PageFiltersContainer>
  15. );
  16. }
  17. function Metrics() {
  18. const organization = useOrganization();
  19. useEffect(() => {
  20. trackAnalytics('ddm.page-view', {
  21. organization,
  22. });
  23. // eslint-disable-next-line react-hooks/exhaustive-deps
  24. }, []);
  25. return (
  26. <SentryDocumentTitle title={t('Metrics')} orgSlug={organization.slug}>
  27. {
  28. <MetricsContextProvider>
  29. <WrappedPageFiltersContainer>
  30. <MetricsLayout />
  31. </WrappedPageFiltersContainer>
  32. </MetricsContextProvider>
  33. }
  34. </SentryDocumentTitle>
  35. );
  36. }
  37. export default Metrics;