|
@@ -1,9 +1,12 @@
|
|
|
import {Fragment} from 'react';
|
|
|
+import * as qs from 'query-string';
|
|
|
|
|
|
import {getInterval} from 'sentry/components/charts/utils';
|
|
|
import GridEditable, {GridColumnHeader} from 'sentry/components/gridEditable';
|
|
|
import SortLink from 'sentry/components/gridEditable/sortLink';
|
|
|
+import Link from 'sentry/components/links/link';
|
|
|
import Pagination from 'sentry/components/pagination';
|
|
|
+import Truncate from 'sentry/components/truncate';
|
|
|
import {t} from 'sentry/locale';
|
|
|
import {NewQuery} from 'sentry/types';
|
|
|
import {TableDataRow} from 'sentry/utils/discover/discoverQuery';
|
|
@@ -15,10 +18,12 @@ import {MutableSearch} from 'sentry/utils/tokenizeSearch';
|
|
|
import {useLocation} from 'sentry/utils/useLocation';
|
|
|
import useOrganization from 'sentry/utils/useOrganization';
|
|
|
import usePageFilters from 'sentry/utils/usePageFilters';
|
|
|
+import useRouter from 'sentry/utils/useRouter';
|
|
|
import {TableColumn} from 'sentry/views/discover/table/types';
|
|
|
import {SpanFunction, SpanMetricsField} from 'sentry/views/starfish/types';
|
|
|
import {STARFISH_CHART_INTERVAL_FIDELITY} from 'sentry/views/starfish/utils/constants';
|
|
|
import {appendReleaseFilters} from 'sentry/views/starfish/utils/releaseComparison';
|
|
|
+import {useRoutingContext} from 'sentry/views/starfish/utils/routingContext';
|
|
|
import {QueryParameterNames} from 'sentry/views/starfish/views/queryParameters';
|
|
|
import {useTableQuery} from 'sentry/views/starfish/views/screens/screensTable';
|
|
|
import {DataTitles} from 'sentry/views/starfish/views/spans/types';
|
|
@@ -41,6 +46,8 @@ export function ScreenLoadSpansTable({
|
|
|
const location = useLocation();
|
|
|
const {selection} = usePageFilters();
|
|
|
const organization = useOrganization();
|
|
|
+ const routingContext = useRoutingContext();
|
|
|
+ const router = useRouter();
|
|
|
|
|
|
const searchQuery = new MutableSearch([
|
|
|
'transaction.op:ui.load',
|
|
@@ -103,6 +110,31 @@ export function ScreenLoadSpansTable({
|
|
|
return row[column.key];
|
|
|
}
|
|
|
|
|
|
+ if (column.key === SPAN_DESCRIPTION) {
|
|
|
+ const label = row[SpanMetricsField.SPAN_DESCRIPTION];
|
|
|
+
|
|
|
+ const pathname = `${routingContext.baseURL}/pageload/spans`;
|
|
|
+ const query = {
|
|
|
+ ...location.query,
|
|
|
+ transaction,
|
|
|
+ spanGroup: row[SpanMetricsField.SPAN_GROUP],
|
|
|
+ };
|
|
|
+
|
|
|
+ return (
|
|
|
+ <Link
|
|
|
+ to={`${pathname}?${qs.stringify(query)}`}
|
|
|
+ onClick={() => {
|
|
|
+ router.replace({
|
|
|
+ pathname,
|
|
|
+ query,
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <Truncate value={label} maxLength={75} />
|
|
|
+ </Link>
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
const renderer = getFieldRenderer(column.key, data?.meta.fields, false);
|
|
|
const rendered = renderer(row, {
|
|
|
location,
|