12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import {t} from 'sentry/locale';
- import type {Organization} from 'sentry/types';
- import {canUseMetricsData} from 'sentry/utils/performance/contexts/metricsEnhancedSetting';
- const AGGREGATE_ALIAS_VALUE_EXTRACT_PATTERN = /(\d+)$/;
- const FUNCTION_FIELD_VALUE_EXTRACT_PATTERN = /(\d+)\)$/;
- /**
- * Convert a discover response into a barchart compatible series
- */
- export function transformData(
- data: Record<string, number>[],
- useAggregateAlias: boolean = true
- ) {
- const extractedData = Object.keys(data[0])
- .map((key: string) => {
- const nameMatch = (
- useAggregateAlias
- ? AGGREGATE_ALIAS_VALUE_EXTRACT_PATTERN
- : FUNCTION_FIELD_VALUE_EXTRACT_PATTERN
- ).exec(key);
- if (!nameMatch) {
- return [-1, -1];
- }
- let nameValue = Number(nameMatch[1]);
- if (nameValue > 100) {
- nameValue /= 10;
- }
- return [nameValue, data[0][key]];
- })
- .filter(i => i[0] > 0);
- extractedData.sort((a, b) => {
- if (a[0] > b[0]) {
- return 1;
- }
- if (a[0] < b[0]) {
- return -1;
- }
- return 0;
- });
- return [
- {
- seriesName: t('Duration'),
- data: extractedData.map(i => ({value: i[1], name: `${i[0].toLocaleString()}%`})),
- },
- ];
- }
- export function getPercentiles(organization: Organization) {
- const isUsingMetrics = canUseMetricsData(organization);
- const METRICS_PERCENTILES = ['0.25', '0.50', '0.75', '0.90', '0.95', '0.99', '1'];
- const INDEXED_PERCENTILES = [
- '0.10',
- '0.25',
- '0.50',
- '0.75',
- '0.90',
- '0.95',
- '0.99',
- '0.995',
- '0.999',
- '1',
- ];
- return isUsingMetrics ? METRICS_PERCENTILES : INDEXED_PERCENTILES;
- }
|