|
@@ -1,27 +1,33 @@
|
|
|
+import clamp from 'lodash/clamp';
|
|
|
+
|
|
|
import {Tooltip} from 'sentry/components/tooltip';
|
|
|
-import {formatPercentage} from 'sentry/utils/formatters';
|
|
|
+import {tct} from 'sentry/locale';
|
|
|
+import {defined} from 'sentry/utils';
|
|
|
+import {formatPercentage, getDuration} from 'sentry/utils/formatters';
|
|
|
import {TextAlignRight} from 'sentry/views/starfish/components/textAlign';
|
|
|
-import {getTooltip} from 'sentry/views/starfish/views/spans/types';
|
|
|
|
|
|
-export function TimeSpentCell({
|
|
|
- timeSpentPercentage,
|
|
|
- totalSpanTime,
|
|
|
-}: {
|
|
|
- timeSpentPercentage: number;
|
|
|
- totalSpanTime: number;
|
|
|
-}) {
|
|
|
- const toolTip = getTooltip('timeSpent', totalSpanTime);
|
|
|
- const percentage = timeSpentPercentage > 1 ? 1 : timeSpentPercentage;
|
|
|
- const undefinedTimeSpentText = '--%';
|
|
|
+interface Props {
|
|
|
+ percentage?: number;
|
|
|
+ total?: number;
|
|
|
+}
|
|
|
+
|
|
|
+export function TimeSpentCell({percentage, total}: Props) {
|
|
|
+ const formattedPercentage = formatPercentage(clamp(percentage ?? 0, 0, 1));
|
|
|
+ const formattedTotal = getDuration((total ?? 0) / 1000, 1);
|
|
|
+ const tooltip = tct(
|
|
|
+ 'The application spent [percentage] of its total time on this span.',
|
|
|
+ {
|
|
|
+ percentage: formattedPercentage,
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
return (
|
|
|
<TextAlignRight>
|
|
|
- {percentage >= 0 ? (
|
|
|
- <Tooltip isHoverable title={toolTip} showUnderline>
|
|
|
- {formatPercentage(percentage)}
|
|
|
- </Tooltip>
|
|
|
- ) : (
|
|
|
- undefinedTimeSpentText
|
|
|
- )}
|
|
|
+ <Tooltip isHoverable title={tooltip} showUnderline>
|
|
|
+ {defined(total) ? formattedTotal : '--'} {'('}
|
|
|
+ {defined(percentage) ? formattedPercentage : '--%'}
|
|
|
+ {')'}
|
|
|
+ </Tooltip>
|
|
|
</TextAlignRight>
|
|
|
);
|
|
|
}
|