vitalInfo.tsx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import {Location} from 'history';
  2. import {Organization} from 'sentry/types';
  3. import EventView from 'sentry/utils/discover/eventView';
  4. import {WebVital} from 'sentry/utils/fields';
  5. import VitalsCardDiscoverQuery from 'sentry/utils/performance/vitals/vitalsCardsDiscoverQuery';
  6. import toArray from 'sentry/utils/toArray';
  7. import {VitalBar} from '../landing/vitalsCards';
  8. type ViewProps = Pick<
  9. EventView,
  10. 'environment' | 'project' | 'start' | 'end' | 'statsPeriod'
  11. >;
  12. type Props = ViewProps & {
  13. location: Location;
  14. orgSlug: Organization['slug'];
  15. vital: WebVital | WebVital[];
  16. hideBar?: boolean;
  17. hideDurationDetail?: boolean;
  18. hideStates?: boolean;
  19. hideVitalPercentNames?: boolean;
  20. hideVitalThresholds?: boolean;
  21. isLoading?: boolean;
  22. p75AllTransactions?: number;
  23. };
  24. function VitalInfo({
  25. vital,
  26. location,
  27. isLoading,
  28. hideBar,
  29. hideStates,
  30. hideVitalPercentNames,
  31. hideVitalThresholds,
  32. hideDurationDetail,
  33. }: Props) {
  34. const vitals = toArray(vital);
  35. const contentCommonProps = {
  36. vital,
  37. showBar: !hideBar,
  38. showStates: !hideStates,
  39. showVitalPercentNames: !hideVitalPercentNames,
  40. showVitalThresholds: !hideVitalThresholds,
  41. showDurationDetail: !hideDurationDetail,
  42. };
  43. return (
  44. <VitalsCardDiscoverQuery location={location} vitals={vitals}>
  45. {({isLoading: loading, vitalsData}) => (
  46. <VitalBar
  47. {...contentCommonProps}
  48. isLoading={isLoading || loading}
  49. data={vitalsData}
  50. />
  51. )}
  52. </VitalsCardDiscoverQuery>
  53. );
  54. }
  55. export default VitalInfo;