spanHistogramQuery.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import omit from 'lodash/omit';
  2. import GenericDiscoverQuery, {
  3. DiscoverQueryProps,
  4. GenericChildrenProps,
  5. } from 'sentry/utils/discover/genericDiscoverQuery';
  6. import {DataFilter, HistogramData} from 'sentry/utils/performance/histogram/types';
  7. import {SpanSlug} from '../suspectSpans/types';
  8. type HistogramProps = {
  9. numBuckets: number;
  10. span: SpanSlug;
  11. dataFilter?: DataFilter;
  12. didReceiveMultiAxis?: (axisCounts: Record<string, number>) => void;
  13. max?: string;
  14. min?: string;
  15. precision?: number;
  16. };
  17. type RequestProps = DiscoverQueryProps & HistogramProps;
  18. export type HistogramQueryChildrenProps = Omit<
  19. GenericChildrenProps<HistogramProps>,
  20. 'tableData'
  21. > & {
  22. histogram: HistogramData | null;
  23. };
  24. type Props = RequestProps & {
  25. children: (props: HistogramQueryChildrenProps) => React.ReactNode;
  26. };
  27. function getHistogramRequestPayload(props: RequestProps) {
  28. const {span, numBuckets, min, max, precision, dataFilter, eventView, location} = props;
  29. const baseApiPayload = {
  30. span: `${span.op}:${span.group}`,
  31. numBuckets,
  32. min,
  33. max,
  34. precision,
  35. dataFilter,
  36. };
  37. const additionalApiPayload = omit(eventView.getEventsAPIPayload(location), [
  38. 'sort',
  39. 'per_page',
  40. 'cursor',
  41. ]);
  42. const apiPayload = {...baseApiPayload, ...additionalApiPayload};
  43. return apiPayload;
  44. }
  45. function SpanHistogramQuery(props: Props) {
  46. return (
  47. <GenericDiscoverQuery<HistogramData, HistogramProps>
  48. route="events-spans-histogram"
  49. getRequestPayload={getHistogramRequestPayload}
  50. {...omit(props, 'children')}
  51. >
  52. {({tableData, ...rest}) => {
  53. return props.children({histogram: tableData, ...rest});
  54. }}
  55. </GenericDiscoverQuery>
  56. );
  57. }
  58. export default SpanHistogramQuery;