monitorHeader.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import {Breadcrumbs} from 'sentry/components/breadcrumbs';
  2. import IdBadge from 'sentry/components/idBadge';
  3. import * as Layout from 'sentry/components/layouts/thirds';
  4. import {t} from 'sentry/locale';
  5. import type {Monitor} from '../types';
  6. import MonitorHeaderActions from './monitorHeaderActions';
  7. interface Props {
  8. monitor: Monitor;
  9. onUpdate: (data: Monitor) => void;
  10. orgSlug: string;
  11. /**
  12. * TODO(epurkhiser): Remove once crons exists only in alerts
  13. */
  14. linkToAlerts?: boolean;
  15. }
  16. export function MonitorHeader({monitor, orgSlug, onUpdate, linkToAlerts}: Props) {
  17. const crumbs = [
  18. {
  19. label: linkToAlerts ? t('Alerts') : t('Crons'),
  20. to: linkToAlerts
  21. ? `/organizations/${orgSlug}/alerts/rules/`
  22. : `/organizations/${orgSlug}/crons/`,
  23. preservePageFilters: true,
  24. },
  25. {
  26. label: t('Cron Monitor'),
  27. },
  28. ];
  29. return (
  30. <Layout.Header>
  31. <Layout.HeaderContent>
  32. <Breadcrumbs crumbs={crumbs} />
  33. <Layout.Title>
  34. <IdBadge
  35. project={monitor.project}
  36. avatarSize={28}
  37. hideName
  38. avatarProps={{hasTooltip: true, tooltip: monitor.project.slug}}
  39. />
  40. {monitor.name}
  41. </Layout.Title>
  42. </Layout.HeaderContent>
  43. <Layout.HeaderActions>
  44. <MonitorHeaderActions
  45. linkToAlerts={linkToAlerts}
  46. orgSlug={orgSlug}
  47. monitor={monitor}
  48. onUpdate={onUpdate}
  49. />
  50. </Layout.HeaderActions>
  51. </Layout.Header>
  52. );
  53. }