import {Fragment, useCallback} from 'react';
import styled from '@emotion/styled';
import {openModal} from 'sentry/actionCreators/modal';
import {Button} from 'sentry/components/button';
import {TabList, Tabs} from 'sentry/components/tabs';
import {IconTable} from 'sentry/icons/iconTable';
import {t} from 'sentry/locale';
import {space} from 'sentry/styles/space';
import type {Confidence} from 'sentry/types/organization';
import {
useExploreFields,
useExploreMode,
useSetExploreFields,
} from 'sentry/views/explore/contexts/pageParamsContext';
import {Mode} from 'sentry/views/explore/contexts/pageParamsContext/mode';
import {useSpanTags} from 'sentry/views/explore/contexts/spanTagsContext';
import type {AggregatesTableResult} from 'sentry/views/explore/hooks/useExploreAggregatesTable';
import type {SpansTableResult} from 'sentry/views/explore/hooks/useExploreSpansTable';
import type {TracesTableResult} from 'sentry/views/explore/hooks/useExploreTracesTable';
import {Tab} from 'sentry/views/explore/hooks/useTab';
import {AggregatesTable} from 'sentry/views/explore/tables/aggregatesTable';
import {ColumnEditorModal} from 'sentry/views/explore/tables/columnEditorModal';
import {SpansTable} from 'sentry/views/explore/tables/spansTable';
import {TracesTable} from 'sentry/views/explore/tables/tracesTable/index';
interface BaseExploreTablesProps {
confidences: Confidence[];
samplesTab: Tab;
setSamplesTab: (tab: Tab) => void;
}
interface ExploreTablesProps extends BaseExploreTablesProps {
aggregatesTableResult: AggregatesTableResult;
spansTableResult: SpansTableResult;
tracesTableResult: TracesTableResult;
}
export function ExploreTables(props: ExploreTablesProps) {
const mode = useExploreMode();
return (
{mode === Mode.AGGREGATE && }
{mode === Mode.SAMPLES && }
);
}
interface AggregatesExploreTablesProps extends BaseExploreTablesProps {
aggregatesTableResult: AggregatesTableResult;
}
function ExploreAggregatesTable(props: AggregatesExploreTablesProps) {
return ;
}
interface SamplesExploreTablesProps extends BaseExploreTablesProps {
spansTableResult: SpansTableResult;
tracesTableResult: TracesTableResult;
}
function ExploreSamplesTable(props: SamplesExploreTablesProps) {
const fields = useExploreFields();
const setFields = useSetExploreFields();
const numberTags = useSpanTags('number');
const stringTags = useSpanTags('string');
const openColumnEditor = useCallback(() => {
openModal(
modalProps => (
),
{closeEvents: 'escape-key'}
);
}, [fields, setFields, stringTags, numberTags]);
return (
{t('Span Samples')}
{t('Trace Samples')}
}
>
{t('Edit Table')}
{props.samplesTab === Tab.SPAN && }
{props.samplesTab === Tab.TRACE && }
);
}
const SamplesTableHeader = styled('div')`
display: flex;
flex-direction: row;
justify-content: space-between;
margin-bottom: ${space(2)};
`;