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')} {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)}; `;