Skip to content

Commit 2e2eafa

Browse files
feat(crons): Add ownership details to monitors list (#69069)
<img alt="clipboard.png" width="381" src="https://i.imgur.com/5SIadg2.png" />
1 parent 8a4122a commit 2e2eafa

File tree

1 file changed

+29
-27
lines changed

1 file changed

+29
-27
lines changed

static/app/views/monitors/components/overviewTimeline/overviewRow.tsx

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import Tag from 'sentry/components/badge/tag';
77
import {Button} from 'sentry/components/button';
88
import {openConfirmModal} from 'sentry/components/confirm';
99
import {DropdownMenu} from 'sentry/components/dropdownMenu';
10+
import ActorBadge from 'sentry/components/idBadge/actorBadge';
1011
import ProjectBadge from 'sentry/components/idBadge/projectBadge';
11-
import {IconEllipsis} from 'sentry/icons';
12+
import {IconEllipsis, IconTimer} from 'sentry/icons';
1213
import {t, tct} from 'sentry/locale';
1314
import {fadeIn} from 'sentry/styles/animations';
1415
import {space} from 'sentry/styles/space';
1516
import type {ObjectStatus} from 'sentry/types';
16-
import {trimSlug} from 'sentry/utils/trimSlug';
1717
import useOrganization from 'sentry/utils/useOrganization';
1818
import {normalizeUrl} from 'sentry/utils/withDomainRequired';
1919
import type {Monitor} from 'sentry/views/monitors/types';
@@ -73,22 +73,22 @@ export function OverviewRow({
7373
<DetailsHeadline>
7474
<Name>{monitor.name}</Name>
7575
</DetailsHeadline>
76-
<ProjectScheduleDetails>
77-
<DetailsText>{scheduleAsText(monitor.config)}</DetailsText>
78-
<ProjectDetails>
79-
<ProjectBadge
80-
project={monitor.project}
81-
avatarSize={12}
82-
disableLink
83-
hideName
84-
/>
85-
<DetailsText>{trimSlug(monitor.project.slug)}</DetailsText>
86-
</ProjectDetails>
87-
</ProjectScheduleDetails>
88-
<MonitorStatuses>
89-
{monitor.isMuted && <Tag>{t('Muted')}</Tag>}
90-
{isDisabled && <Tag>{t('Disabled')}</Tag>}
91-
</MonitorStatuses>
76+
<DetailsContainer>
77+
<OwnershipDetails>
78+
<ProjectBadge project={monitor.project} avatarSize={12} disableLink />
79+
{organization.features.includes('crons-ownership') && monitor.owner && (
80+
<ActorBadge actor={monitor.owner} avatarSize={12} />
81+
)}
82+
</OwnershipDetails>
83+
<ScheduleDetails>
84+
<IconTimer size="xs" />
85+
{scheduleAsText(monitor.config)}
86+
</ScheduleDetails>
87+
<MonitorStatuses>
88+
{monitor.isMuted && <Tag>{t('Muted')}</Tag>}
89+
{isDisabled && <Tag>{t('Disabled')}</Tag>}
90+
</MonitorStatuses>
91+
</DetailsContainer>
9292
</DetailsLink>
9393
<DetailsActions>
9494
{onToggleStatus && (
@@ -235,34 +235,36 @@ const DetailsActions = styled('div')`
235235
const DetailsHeadline = styled('div')`
236236
display: grid;
237237
gap: ${space(1)};
238-
239238
grid-template-columns: 1fr minmax(30px, max-content);
240239
`;
241240

242-
const ProjectScheduleDetails = styled('div')`
241+
const DetailsContainer = styled('div')`
243242
display: flex;
244-
gap: ${space(1)};
245-
flex-wrap: wrap;
243+
flex-direction: column;
244+
gap: ${space(0.5)};
246245
`;
247246

248-
const ProjectDetails = styled('div')`
247+
const OwnershipDetails = styled('div')`
249248
display: flex;
250-
gap: ${space(0.5)};
249+
gap: ${space(0.75)};
250+
font-size: ${p => p.theme.fontSizeSmall};
251251
`;
252252

253253
const MonitorStatuses = styled('div')`
254254
display: flex;
255255
gap: ${space(0.5)};
256-
margin-top: ${space(1)};
257256
`;
258257

259258
const Name = styled('h3')`
260259
font-size: ${p => p.theme.fontSizeLarge};
261-
margin-bottom: ${space(0.25)};
262260
word-break: break-word;
261+
margin-bottom: ${space(0.5)};
263262
`;
264263

265-
const DetailsText = styled('small')`
264+
const ScheduleDetails = styled('small')`
265+
display: flex;
266+
gap: ${space(0.5)};
267+
align-items: center;
266268
color: ${p => p.theme.subText};
267269
font-size: ${p => p.theme.fontSizeSmall};
268270
`;

0 commit comments

Comments
 (0)