12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import {formatBytesBase2} from 'sentry/utils/bytes/formatBytesBase2';
- import {formatBytesBase10} from 'sentry/utils/bytes/formatBytesBase10';
- import {ABYTE_UNITS} from 'sentry/utils/discover/fieldRenderers';
- import {DurationUnit, type RateUnit, SizeUnit} from 'sentry/utils/discover/fields';
- import getDuration from 'sentry/utils/duration/getDuration';
- import {formatRate} from 'sentry/utils/formatters';
- import {formatPercentage} from 'sentry/utils/number/formatPercentage';
- import {convertDuration} from 'sentry/utils/unitConversion/convertDuration';
- import {convertSize} from 'sentry/utils/unitConversion/convertSize';
- import {isADurationUnit, isASizeUnit} from '../common/typePredicates';
- export function formatTooltipValue(value: number, type: string, unit?: string): string {
- switch (type) {
- case 'integer':
- case 'number':
- return value.toLocaleString();
- case 'percentage':
- return formatPercentage(value, 2);
- case 'duration':
- const durationUnit = isADurationUnit(unit) ? unit : DurationUnit.MILLISECOND;
- const durationInSeconds = convertDuration(value, durationUnit, DurationUnit.SECOND);
- return getDuration(durationInSeconds, 2, true);
- case 'size':
- const sizeUnit = isASizeUnit(unit) ? unit : SizeUnit.BYTE;
- const sizeInBytes = convertSize(value, sizeUnit, SizeUnit.BYTE);
- const formatter = ABYTE_UNITS.includes(unit ?? 'byte')
- ? formatBytesBase10
- : formatBytesBase2;
- return formatter(sizeInBytes);
- case 'rate':
- // Always show rate in the original dataset's unit. If the unit is not
- // appropriate, always convert the unit in the original dataset first.
- // This way, named rate functions like `epm()` will be shows in per minute
- // units
- return formatRate(value, unit as RateUnit);
- default:
- return value.toString();
- }
- }
|