import {InjectedRouter} from 'react-router'; import {Query} from 'history'; import ChartZoom from 'sentry/components/charts/chartZoom'; import ErrorPanel from 'sentry/components/charts/errorPanel'; import {LineChart, LineChartProps} from 'sentry/components/charts/lineChart'; import ReleaseSeries from 'sentry/components/charts/releaseSeries'; import TransitionChart from 'sentry/components/charts/transitionChart'; import TransparentLoadingMask from 'sentry/components/charts/transparentLoadingMask'; import Placeholder from 'sentry/components/placeholder'; import {IconWarning} from 'sentry/icons'; import {t} from 'sentry/locale'; import {Series} from 'sentry/types/echarts'; import { axisLabelFormatter, getDurationUnit, tooltipFormatter, } from 'sentry/utils/discover/charts'; import getDynamicText from 'sentry/utils/getDynamicText'; import {Theme} from 'sentry/utils/theme'; import {transformEventStatsSmoothed} from '../../../trends/utils'; type Props = { errored: boolean; loading: boolean; queryExtra: Query; reloading: boolean; router: InjectedRouter; theme: Theme; series?: Series[]; timeFrame?: { end: number; start: number; }; } & Omit, 'children' | 'queryExtra'> & Pick; function Content({ errored, theme, series: data, timeFrame, start, end, period, projects, environments, loading, reloading, legend, utc, queryExtra, router, onLegendSelectChanged, }: Props) { if (errored) { return ( ); } const series = data ? data .map(values => { return { ...values, color: theme.purple300, lineStyle: { opacity: 0.75, width: 1, }, }; }) .reverse() : []; const durationUnit = getDurationUnit(series, legend); const chartOptions: Omit = { grid: { left: '10px', right: '10px', top: '40px', bottom: '0px', }, seriesOptions: { showSymbol: false, }, tooltip: { trigger: 'axis', valueFormatter: (value: number | null) => tooltipFormatter(value, 'duration'), }, xAxis: timeFrame ? { min: timeFrame.start, max: timeFrame.end, } : undefined, yAxis: { min: 0, minInterval: durationUnit, axisLabel: { color: theme.chartLabel, formatter: (value: number) => axisLabelFormatter(value, 'duration', undefined, durationUnit), }, }, }; const {smoothedResults} = transformEventStatsSmoothed(data, t('Smoothed')); const smoothedSeries = smoothedResults ? smoothedResults.map(values => { return { ...values, color: theme.purple300, lineStyle: { opacity: 1, }, }; }) : []; return ( {zoomRenderProps => ( {({releaseSeries}) => ( {getDynamicText({ value: ( ), fixed: , })} )} )} ); } export default Content;