import {Component} from 'react'; import type {Location} from 'history'; import type {Client} from 'sentry/api'; import * as Layout from 'sentry/components/layouts/thirds'; import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle'; import {t} from 'sentry/locale'; import type {PageFilters} from 'sentry/types/core'; import type {Organization} from 'sentry/types/organization'; import type {Project} from 'sentry/types/project'; import type EventView from 'sentry/utils/discover/eventView'; import {MetricsCardinalityProvider} from 'sentry/utils/performance/contexts/metricsCardinality'; import withApi from 'sentry/utils/withApi'; import withOrganization from 'sentry/utils/withOrganization'; import withPageFilters from 'sentry/utils/withPageFilters'; import withProjects from 'sentry/utils/withProjects'; import {generatePerformanceEventView} from '../data'; import TrendsContent from './content'; type Props = { api: Client; location: Location; organization: Organization; projects: Project[]; selection: PageFilters; }; type State = { eventView: EventView; error?: string; }; class TrendsSummary extends Component { static getDerivedStateFromProps(nextProps: Readonly, prevState: State): State { return { ...prevState, eventView: generatePerformanceEventView( nextProps.location, nextProps.projects, { isTrends: true, }, nextProps.organization ), }; } state: State = { eventView: generatePerformanceEventView( this.props.location, this.props.projects, { isTrends: true, }, this.props.organization ), error: undefined, }; getDocumentTitle(): string { return [t('Trends'), t('Performance')].join(' — '); } setError = (error: string | undefined) => { this.setState({error}); }; renderContent() { const {organization, location, projects} = this.props; const {eventView} = this.state; return ( ); } render() { const {organization, location} = this.props; return ( {this.renderContent()} ); } } export default withOrganization(withProjects(withPageFilters(withApi(TrendsSummary))));