123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /* eslint-disable no-alert */
- import {Fragment} from 'react';
- import styled from '@emotion/styled';
- import {Button, LinkButton} from 'sentry/components/button';
- import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle';
- import {ActionsProvider} from 'sentry/components/workflowEngine/layout/actions';
- import {BreadcrumbsProvider} from 'sentry/components/workflowEngine/layout/breadcrumbs';
- import DetailLayout from 'sentry/components/workflowEngine/layout/detail';
- import Section from 'sentry/components/workflowEngine/ui/section';
- import {useWorkflowEngineFeatureGate} from 'sentry/components/workflowEngine/useWorkflowEngineFeatureGate';
- import {IconArrow, IconEdit} from 'sentry/icons';
- import {t} from 'sentry/locale';
- import {space} from 'sentry/styles/space';
- import getDuration from 'sentry/utils/duration/getDuration';
- import {ConnectedAutomationsList} from 'sentry/views/detectors/components/connectedAutomationList';
- import DetailsPanel from 'sentry/views/detectors/components/detailsPanel';
- import IssuesList from 'sentry/views/detectors/components/issuesList';
- type Priority = {
- sensitivity: string;
- threshold: number;
- };
- const priorities: Priority[] = [
- {sensitivity: 'medium', threshold: 4},
- {sensitivity: 'high', threshold: 10},
- ];
- export default function DetectorDetail() {
- useWorkflowEngineFeatureGate({redirect: true});
- return (
- <SentryDocumentTitle title={'/endpoint'} noSuffix>
- <BreadcrumbsProvider crumb={{label: t('Monitors'), to: '/monitors'}}>
- <ActionsProvider actions={<Actions />}>
- <DetailLayout project={{slug: 'project-slug', platform: 'javascript-astro'}}>
- <DetailLayout.Main>
- {/* TODO: Add chart here */}
- <Section title={t('Ongoing Issues')}>
- <IssuesList />
- </Section>
- <Section title={t('Connected Automations')}>
- <ConnectedAutomationsList />
- </Section>
- </DetailLayout.Main>
- <DetailLayout.Sidebar>
- <Section title={t('Detect')}>
- <DetailsPanel />
- </Section>
- <Section title={t('Assign')}>
- {t('Assign to %s', 'admin@sentry.io')}
- </Section>
- <Section title={t('Prioritize')}>
- <PrioritiesList>
- {priorities.map(priority => (
- <Fragment key={priority.sensitivity}>
- <PriorityDuration>
- {getDuration(priority.threshold, 0, false, true)}
- </PriorityDuration>
- <IconArrow direction="right" />
- <p>{priority.sensitivity}</p>
- </Fragment>
- ))}
- </PrioritiesList>
- </Section>
- <Section title={t('Resolve')}>
- {t('Auto-resolve after %s of inactivity', getDuration(3000000))}
- </Section>
- </DetailLayout.Sidebar>
- </DetailLayout>
- </ActionsProvider>
- </BreadcrumbsProvider>
- </SentryDocumentTitle>
- );
- }
- function Actions() {
- const disable = () => {
- window.alert('disable');
- };
- return (
- <Fragment>
- <Button onClick={disable}>{t('Disable')}</Button>
- <LinkButton to="/monitors/edit" priority="primary" icon={<IconEdit />}>
- {t('Edit')}
- </LinkButton>
- </Fragment>
- );
- }
- const PrioritiesList = styled('div')`
- display: grid;
- grid-template-columns: auto auto auto;
- grid-template-rows: repeat(${priorities.length}, 1fr);
- align-items: center;
- width: fit-content;
- gap: ${space(0.5)} ${space(1)};
- p {
- margin: 0;
- width: fit-content;
- }
- `;
- const PriorityDuration = styled('p')`
- justify-self: flex-end;
- `;
|