123456789101112131415161718192021222324252627282930313233343536373839 |
- import {useMemo} from 'react';
- import {ALL_ACCESS_PROJECTS} from 'sentry/constants/pageFilters';
- import EventView from 'sentry/utils/discover/eventView';
- import type {TraceViewQueryParams} from './useTraceQueryParams';
- export function useTraceEventView(
- traceSlug: string,
- params: TraceViewQueryParams
- ): EventView {
- return useMemo(() => {
- let startTimeStamp = params.start;
- let endTimeStamp = params.end;
- // If timestamp exists in the query params, we want to use it to set the start and end time
- // with a buffer of 1.5 days, for retrieving events belonging to the trace.
- if (typeof params.timestamp === 'number') {
- const buffer = 36 * 60 * 60 * 1000; // 1.5 days in milliseconds
- const dateFromTimestamp = new Date(params.timestamp * 1000);
- startTimeStamp = new Date(dateFromTimestamp.getTime() - buffer).toISOString();
- endTimeStamp = new Date(dateFromTimestamp.getTime() + buffer).toISOString();
- }
- return EventView.fromSavedQuery({
- id: undefined,
- name: `Events with Trace ID ${traceSlug}`,
- fields: ['title', 'event.type', 'project', 'timestamp'],
- orderby: '-timestamp',
- query: `trace:${traceSlug}`,
- projects: [ALL_ACCESS_PROJECTS],
- version: 2,
- start: startTimeStamp,
- end: endTimeStamp,
- range: !(startTimeStamp || endTimeStamp) ? params.statsPeriod : undefined,
- });
- }, [params, traceSlug]);
- }
|