content.tsx 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import {useCallback} from 'react';
  2. import Feature from 'sentry/components/acl/feature';
  3. import {Button} from 'sentry/components/button';
  4. import ButtonBar from 'sentry/components/buttonBar';
  5. import {FeatureBadge} from 'sentry/components/core/badge/featureBadge';
  6. import FeedbackWidgetButton from 'sentry/components/feedback/widget/feedbackWidgetButton';
  7. import * as Layout from 'sentry/components/layouts/thirds';
  8. import {usePrefersStackedNav} from 'sentry/components/nav/prefersStackedNav';
  9. import PageFiltersContainer from 'sentry/components/organizations/pageFilters/container';
  10. import {PageHeadingQuestionTooltip} from 'sentry/components/pageHeadingQuestionTooltip';
  11. import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle';
  12. import {t} from 'sentry/locale';
  13. import {useLocation} from 'sentry/utils/useLocation';
  14. import {useNavigate} from 'sentry/utils/useNavigate';
  15. import useOrganization from 'sentry/utils/useOrganization';
  16. import {SpansTabContent} from 'sentry/views/explore/spans/spansTab';
  17. import {limitMaxPickableDays} from 'sentry/views/explore/utils';
  18. export function ExploreContent() {
  19. const organization = useOrganization();
  20. const {defaultPeriod, maxPickableDays, relativeOptions} =
  21. limitMaxPickableDays(organization);
  22. const prefersStackedNav = usePrefersStackedNav();
  23. const location = useLocation();
  24. const navigate = useNavigate();
  25. const switchToOldTraceExplorer = useCallback(() => {
  26. navigate({
  27. ...location,
  28. query: {
  29. ...location.query,
  30. view: 'trace',
  31. },
  32. });
  33. }, [location, navigate]);
  34. return (
  35. <SentryDocumentTitle title={t('Traces')} orgSlug={organization?.slug}>
  36. <PageFiltersContainer maxPickableDays={maxPickableDays}>
  37. <Layout.Page>
  38. <Layout.Header unified={prefersStackedNav}>
  39. <Layout.HeaderContent unified={prefersStackedNav}>
  40. <Layout.Title>
  41. {t('Traces')}
  42. <PageHeadingQuestionTooltip
  43. docsUrl="https://github.com/getsentry/sentry/discussions/81239"
  44. title={t(
  45. 'Find problematic spans/traces or compute real-time metrics via aggregation.'
  46. )}
  47. linkLabel={t('Read the Discussion')}
  48. />
  49. <FeatureBadge
  50. tooltipProps={{
  51. title: t(
  52. 'This feature is available for early adopters and the UX may change'
  53. ),
  54. }}
  55. type="beta"
  56. />
  57. </Layout.Title>
  58. </Layout.HeaderContent>
  59. <Layout.HeaderActions>
  60. <ButtonBar gap={1}>
  61. <Feature organization={organization} features="visibility-explore-admin">
  62. <Button onClick={switchToOldTraceExplorer} size="sm">
  63. {t('Switch to Old Trace Explore')}
  64. </Button>
  65. </Feature>
  66. <FeedbackWidgetButton />
  67. </ButtonBar>
  68. </Layout.HeaderActions>
  69. </Layout.Header>
  70. <SpansTabContent
  71. defaultPeriod={defaultPeriod}
  72. maxPickableDays={maxPickableDays}
  73. relativeOptions={relativeOptions}
  74. />
  75. </Layout.Page>
  76. </PageFiltersContainer>
  77. </SentryDocumentTitle>
  78. );
  79. }