import {browserHistory} from 'react-router';
import styled from '@emotion/styled';
import {Breadcrumbs} from 'sentry/components/breadcrumbs';
import FeatureBadge from 'sentry/components/featureBadge';
import type {ControlProps} from 'sentry/components/forms/controls/selectControl';
import SelectControl from 'sentry/components/forms/controls/selectControl';
import * as Layout from 'sentry/components/layouts/thirds';
import {DatePageFilter} from 'sentry/components/organizations/datePageFilter';
import PageFilterBar from 'sentry/components/organizations/pageFilterBar';
import {ProjectPageFilter} from 'sentry/components/organizations/projectPageFilter';
import {t} from 'sentry/locale';
import {space} from 'sentry/styles/space';
import {useLocation} from 'sentry/utils/useLocation';
import useOrganization from 'sentry/utils/useOrganization';
import {normalizeUrl} from 'sentry/utils/withDomainRequired';
import InteractionsTable from 'sentry/views/performance/browser/interactionTable';
import {
BrowserStarfishFields,
useBrowserModuleFilters,
} from 'sentry/views/performance/browser/useBrowserFilters';
import {useBrowserSort} from 'sentry/views/performance/browser/useBrowserSort';
import {useInteractionElementQuery} from 'sentry/views/performance/browser/useInteractionElementQuery';
import {usePagesQuery} from 'sentry/views/performance/browser/usePageQuery';
import {ModulePageProviders} from 'sentry/views/performance/modulePageProviders';
const {COMPONENT, PAGE, TRANSACTION_OP} = BrowserStarfishFields;
type Option = {
label: string;
value: string;
};
function InteractionsLandingPage() {
const organization = useOrganization();
const filters = useBrowserModuleFilters();
const sort = useBrowserSort();
return (
{t('Interactions')}
);
}
function ComponentSelector({value}: {value?: string}) {
const location = useLocation();
const {data, isLoading} = useInteractionElementQuery();
const options: Option[] =
!isLoading && data.length
? [
{label: 'All', value: ''},
...data.map(element => ({
label: element,
value: element,
})),
]
: [];
return (
{
browserHistory.push({
...location,
query: {
...location.query,
[COMPONENT]: newValue?.value,
},
});
}}
/>
);
}
function ActionSelector({value}: {value?: string}) {
const location = useLocation();
const options: Option[] = [
{value: '', label: 'All'},
{value: 'ui.action.click', label: 'Click'},
{value: 'ui.action.right.click', label: 'Right Click'},
];
return (
{
browserHistory.push({
...location,
query: {
...location.query,
[TRANSACTION_OP]: newValue?.value,
},
});
}}
/>
);
}
function PageSelector({value}: {value?: string}) {
const location = useLocation();
const {data: pages, isLoading} = usePagesQuery();
const options: Option[] =
!isLoading && pages.length
? [
{label: 'All', value: ''},
...pages.map(page => ({
value: page,
label: page,
})),
]
: [];
return (
{
browserHistory.push({
...location,
query: {
...location.query,
[PAGE]: newValue?.value,
},
});
}}
/>
);
}
function SelectControlWithProps(props: ControlProps & {options: Option[]}) {
return ;
}
export const PaddedContainer = styled('div')`
margin-bottom: ${space(2)};
`;
const FilterOptionsContainer = styled('div')`
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: ${space(2)};
margin-bottom: ${space(2)};
max-width: 800px;
`;
export default InteractionsLandingPage;