topScreensChart.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import {t} from 'sentry/locale';
  2. import {useReleaseSelection} from 'sentry/views/insights/common/queries/useReleases';
  3. import useTruncatedReleaseNames from 'sentry/views/insights/mobile/common/queries/useTruncatedRelease';
  4. import {TOP_SCREENS} from 'sentry/views/insights/mobile/constants';
  5. import {ScreensBarChart} from 'sentry/views/insights/mobile/screenload/components/charts/screenBarChart';
  6. function getChartTitle(yAxis: string, countTopScreens: number) {
  7. const TITLES = {
  8. ['avg(mobile.slow_frames)']: [
  9. t('Top Screen Slow Frames'),
  10. t('Top %s Screen Slow Frames', countTopScreens),
  11. ],
  12. ['avg(mobile.frozen_frames)']: [
  13. t('Top Screen Frozen Frames'),
  14. t('Top %s Screen Frozen Frames', countTopScreens),
  15. ],
  16. ['avg(mobile.frames_delay)']: [
  17. t('Top Screen Frames Delay'),
  18. t('Top %s Screen Frames Delay', countTopScreens),
  19. ],
  20. };
  21. // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message
  22. const [singularTopScreenTitle, pluralTopScreenTitle] = TITLES[yAxis];
  23. return countTopScreens > 1 ? pluralTopScreenTitle : singularTopScreenTitle;
  24. }
  25. export function TopScreensChart({
  26. yAxis,
  27. topTransactions,
  28. transformedReleaseEvents,
  29. chartHeight,
  30. isLoading,
  31. }: any) {
  32. const {primaryRelease, secondaryRelease} = useReleaseSelection();
  33. const {truncatedPrimaryRelease, truncatedSecondaryRelease} = useTruncatedReleaseNames();
  34. const countTopScreens = Math.min(TOP_SCREENS, topTransactions.length);
  35. return (
  36. <ScreensBarChart
  37. chartOptions={[
  38. {
  39. title: getChartTitle(yAxis, countTopScreens),
  40. yAxis,
  41. xAxisLabel: topTransactions,
  42. series: Object.values(transformedReleaseEvents[yAxis]),
  43. subtitle: primaryRelease
  44. ? t(
  45. '%s v. %s',
  46. truncatedPrimaryRelease,
  47. secondaryRelease ? truncatedSecondaryRelease : ''
  48. )
  49. : '',
  50. },
  51. ]}
  52. chartHeight={chartHeight}
  53. isLoading={isLoading}
  54. chartKey={`${yAxis}-screen-chart`}
  55. />
  56. );
  57. }