123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import {Fragment} from 'react';
- import {Link} from 'react-router';
- import type {GridColumnHeader, GridColumnOrder} from 'sentry/components/gridEditable';
- import GridEditable, {COL_WIDTH_UNDEFINED} from 'sentry/components/gridEditable';
- import Pagination from 'sentry/components/pagination';
- import {useLocation} from 'sentry/utils/useLocation';
- import {useInteractionQuery} from 'sentry/views/performance/browser/interactionSummary/useInteractionQuery';
- import {DurationCell} from 'sentry/views/starfish/components/tableCells/durationCell';
- import {renderHeadCell} from 'sentry/views/starfish/components/tableCells/renderHeadCell';
- type Row = {
- eventId: string;
- project: string;
- 'transaction.duration': number;
- };
- type Column = GridColumnHeader<keyof Row>;
- function InteractionSampleTable() {
- const location = useLocation();
- const columnOrder: GridColumnOrder<keyof Row>[] = [
- {key: 'eventId', width: COL_WIDTH_UNDEFINED, name: 'event'},
- {key: 'transaction.duration', width: COL_WIDTH_UNDEFINED, name: 'duration'},
- ];
- const {data, isLoading, pageLinks} = useInteractionQuery();
- const tableData: Row[] = data.length ? data : [];
- const renderBodyCell = (col: Column, row: Row) => {
- const {key} = col;
- if (key === 'transaction.duration') {
- return <DurationCell milliseconds={row[key]} />;
- }
- if (key === 'eventId') {
- return (
- <Link to={`/performance/${row.project}:${row.eventId}`}>
- {row.eventId.slice(0, 8)}
- </Link>
- );
- }
- return <span>{row[key]}</span>;
- };
- return (
- <Fragment>
- <GridEditable
- data={tableData}
- isLoading={isLoading}
- columnOrder={columnOrder}
- columnSortBy={[]}
- grid={{
- renderHeadCell: column =>
- renderHeadCell({
- column,
- location,
- }),
- renderBodyCell,
- }}
- location={location}
- />
- <Pagination pageLinks={pageLinks} />
- </Fragment>
- );
- }
- export default InteractionSampleTable;
|