mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import clamp from 'lodash/clamp';
|
|
|
|
import ExternalLink from 'sentry/components/links/externalLink';
|
|
import {Tooltip} from 'sentry/components/tooltip';
|
|
import {tct} from 'sentry/locale';
|
|
import {defined} from 'sentry/utils';
|
|
import {NumberContainer} from 'sentry/utils/discover/styles';
|
|
import {
|
|
formatPercentage,
|
|
formatSpanOperation,
|
|
getDuration,
|
|
} from 'sentry/utils/formatters';
|
|
|
|
interface Props {
|
|
containerProps?: React.DetailedHTMLProps<
|
|
React.HTMLAttributes<HTMLDivElement>,
|
|
HTMLDivElement
|
|
>;
|
|
op?: string;
|
|
percentage?: number;
|
|
total?: number;
|
|
}
|
|
|
|
export function TimeSpentCell({percentage, total, op, containerProps}: Props) {
|
|
const formattedPercentage = formatPercentage(clamp(percentage ?? 0, 0, 1));
|
|
const formattedTotal = getDuration((total ?? 0) / 1000, 2, true);
|
|
const tooltip = tct(
|
|
'The application spent [percentage] of its total time on this [span]. Read more about Time Spent in our [documentation:documentation].',
|
|
{
|
|
percentage: formattedPercentage,
|
|
span: formatSpanOperation(op, 'short'),
|
|
documentation: (
|
|
<ExternalLink href="https://docs.sentry.io/product/performance/queries/#what-is-time-spent" />
|
|
),
|
|
}
|
|
);
|
|
|
|
return (
|
|
<NumberContainer {...containerProps}>
|
|
<Tooltip isHoverable title={tooltip} showUnderline>
|
|
{defined(total) ? formattedTotal : '--'}
|
|
</Tooltip>
|
|
</NumberContainer>
|
|
);
|
|
}
|