123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- import {Fragment, memo} from 'react';
- import styled from '@emotion/styled';
- import GroupReleaseChart from 'app/components/group/releaseChart';
- import SeenInfo from 'app/components/group/seenInfo';
- import Placeholder from 'app/components/placeholder';
- import Tooltip from 'app/components/tooltip';
- import {IconQuestion} from 'app/icons';
- import {t} from 'app/locale';
- import space from 'app/styles/space';
- import {CurrentRelease, Environment, Group, Organization, Project} from 'app/types';
- import getDynamicText from 'app/utils/getDynamicText';
- import SidebarSection from './sidebarSection';
- type Props = {
- organization: Organization;
- project: Project;
- environments: Environment[];
- allEnvironments: Group | undefined;
- group: Group | undefined;
- currentRelease: CurrentRelease | undefined;
- };
- const GroupReleaseStats = ({
- organization,
- project,
- environments,
- allEnvironments,
- group,
- currentRelease,
- }: Props) => {
- const environmentLabel =
- environments.length > 0
- ? environments.map(env => env.displayName).join(', ')
- : t('All Environments');
- const shortEnvironmentLabel =
- environments.length > 1
- ? t('selected environments')
- : environments.length === 1
- ? environments[0].displayName
- : undefined;
- const projectId = project.id;
- const projectSlug = project.slug;
- const hasRelease = new Set(project.features).has('releases');
- const releaseTrackingUrl = `/settings/${organization.slug}/projects/${project.slug}/release-tracking/`;
- return (
- <SidebarSection title={<span data-test-id="env-label">{environmentLabel}</span>}>
- {!group || !allEnvironments ? (
- <Placeholder height="288px" />
- ) : (
- <Fragment>
- <GroupReleaseChart
- group={allEnvironments}
- environment={environmentLabel}
- environmentStats={group.stats}
- release={currentRelease?.release}
- releaseStats={currentRelease?.stats}
- statsPeriod="24h"
- title={t('Last 24 Hours')}
- firstSeen={group.firstSeen}
- lastSeen={group.lastSeen}
- />
- <GroupReleaseChart
- group={allEnvironments}
- environment={environmentLabel}
- environmentStats={group.stats}
- release={currentRelease?.release}
- releaseStats={currentRelease?.stats}
- statsPeriod="30d"
- title={t('Last 30 Days')}
- className="bar-chart-small"
- firstSeen={group.firstSeen}
- lastSeen={group.lastSeen}
- />
- <SidebarSection
- secondary
- title={
- <span>
- {t('Last seen')}
- <TooltipWrapper>
- <Tooltip
- title={t('When the most recent event in this issue was captured.')}
- disableForVisualTest
- >
- <StyledIconQuest size="xs" color="gray200" />
- </Tooltip>
- </TooltipWrapper>
- </span>
- }
- >
- <SeenInfo
- organization={organization}
- projectId={projectId}
- projectSlug={projectSlug}
- date={getDynamicText({
- value: group.lastSeen,
- fixed: '2016-01-13T03:08:25Z',
- })}
- dateGlobal={allEnvironments.lastSeen}
- hasRelease={hasRelease}
- environment={shortEnvironmentLabel}
- release={group.lastRelease || null}
- title={t('Last seen')}
- />
- </SidebarSection>
- <SidebarSection
- secondary
- title={
- <span>
- {t('First seen')}
- <TooltipWrapper>
- <Tooltip
- title={t('When the first event in this issue was captured.')}
- disableForVisualTest
- >
- <StyledIconQuest size="xs" color="gray200" />
- </Tooltip>
- </TooltipWrapper>
- </span>
- }
- >
- <SeenInfo
- organization={organization}
- projectId={projectId}
- projectSlug={projectSlug}
- date={getDynamicText({
- value: group.firstSeen,
- fixed: '2015-08-13T03:08:25Z',
- })}
- dateGlobal={allEnvironments.firstSeen}
- hasRelease={hasRelease}
- environment={shortEnvironmentLabel}
- release={group.firstRelease || null}
- title={t('First seen')}
- />
- </SidebarSection>
- {!hasRelease ? (
- <SidebarSection secondary title={t('Releases not configured')}>
- <a href={releaseTrackingUrl}>{t('Setup Releases')}</a>{' '}
- {t(' to make issues easier to fix.')}
- </SidebarSection>
- ) : null}
- </Fragment>
- )}
- </SidebarSection>
- );
- };
- export default memo(GroupReleaseStats);
- const TooltipWrapper = styled('span')`
- margin-left: ${space(0.5)};
- `;
- const StyledIconQuest = styled(IconQuestion)`
- position: relative;
- top: 2px;
- `;
|