import {Fragment} from 'react';
import styled from '@emotion/styled';
import {Alert} from 'sentry/components/alert';
import Link from 'sentry/components/links/link';
import LoadingError from 'sentry/components/loadingError';
import LoadingIndicator from 'sentry/components/loadingIndicator';
import {
ErrorDot,
ErrorLevel,
ErrorMessageContent,
ErrorTitle,
} from 'sentry/components/performance/waterfall/rowDetails';
import {t, tct} from 'sentry/locale';
import {space} from 'sentry/styles/space';
import type {Organization} from 'sentry/types';
import DiscoverQuery from 'sentry/utils/discover/discoverQuery';
import type EventView from 'sentry/utils/discover/eventView';
import type {TraceMeta} from 'sentry/utils/performance/quickTrace/types';
interface TraceNotFoundProps {
location: any;
meta: TraceMeta | null;
organization: Organization;
traceEventView: EventView;
traceSlug: string;
}
function TraceNotFound({
meta,
traceEventView,
traceSlug,
organization,
location,
}: TraceNotFoundProps) {
const transactions = meta?.transactions ?? 0;
const errors = meta?.errors ?? 0;
if (transactions === 0 && errors > 0) {
const errorsEventView = traceEventView.withColumns([
{kind: 'field', field: 'project'},
{kind: 'field', field: 'title'},
{kind: 'field', field: 'issue.id'},
{kind: 'field', field: 'level'},
]);
errorsEventView.query = `trace:${traceSlug} !event.type:transaction `;
return (
{({isLoading, tableData, error}) => {
if (isLoading) {
return ;
}
if (error) {
return (
{tct(
'The trace cannot be shown when all events are errors. An error occurred when attempting to fetch these error events: [error]',
{error: error.message}
)}
);
}
return (
{t('The trace cannot be shown when all events are errors.')}
{tableData?.data.map(data => (
{data.level}
{data.title}
))}
);
}}
);
}
return ;
}
const ErrorLabel = styled('div')`
margin-bottom: ${space(1)};
`;
export default TraceNotFound;