useTraceEventView.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import {useMemo} from 'react';
  2. import {ALL_ACCESS_PROJECTS} from 'sentry/constants/pageFilters';
  3. import type {NewQuery} from 'sentry/types/organization';
  4. import EventView from 'sentry/utils/discover/eventView';
  5. import type {TraceViewQueryParams} from './useTraceQueryParams';
  6. export function useTraceEventView(
  7. traceSlug: string,
  8. params: TraceViewQueryParams,
  9. partialSavedQuery?: Partial<NewQuery>
  10. ): EventView {
  11. return useMemo(() => {
  12. let startTimeStamp = params.start;
  13. let endTimeStamp = params.end;
  14. // If timestamp exists in the query params, we want to use it to set the start and end time
  15. // with a buffer of 1.5 days, for retrieving events belonging to the trace.
  16. if (typeof params.timestamp === 'number') {
  17. const buffer = 36 * 60 * 60 * 1000; // 1.5 days in milliseconds
  18. const dateFromTimestamp = new Date(params.timestamp * 1000);
  19. startTimeStamp = new Date(dateFromTimestamp.getTime() - buffer).toISOString();
  20. endTimeStamp = new Date(dateFromTimestamp.getTime() + buffer).toISOString();
  21. }
  22. return EventView.fromSavedQuery({
  23. id: undefined,
  24. name: `Events with Trace ID ${traceSlug}`,
  25. fields: ['title', 'event.type', 'project', 'timestamp'],
  26. orderby: '-timestamp',
  27. query: `trace:${traceSlug}`,
  28. projects: [ALL_ACCESS_PROJECTS],
  29. version: 2,
  30. start: startTimeStamp,
  31. end: endTimeStamp,
  32. range: !(startTimeStamp || endTimeStamp) ? params.statsPeriod : undefined,
  33. ...partialSavedQuery,
  34. });
  35. }, [params, traceSlug, partialSavedQuery]);
  36. }