in dashboards-observability/public/components/trace_analytics/requests/traces_request_handler.ts [67:152]
last_updated: moment(bucket.last_updated.value).format(TRACE_ANALYTICS_DATE_FORMAT),
error_count: bucket.error_count.doc_count,
percentile_in_trace_group: binarySearch(
percentileRanges[bucket.trace_group.buckets[0]?.key],
bucket.latency.value
),
actions: '#',
};
})
);
})
.then((newItems) => {
setItems(newItems);
})
.catch((error) => console.error(error));
};
export const handleTraceViewRequest = (traceId, http, fields, setFields) => {
handleDslRequest(http, null, getTracesQuery(traceId))
.then(async (response) => {
const bucket = response.aggregations.traces.buckets[0];
return {
trace_id: bucket.key,
trace_group: bucket.trace_group.buckets[0]?.key,
last_updated: moment(bucket.last_updated.value).format(TRACE_ANALYTICS_DATE_FORMAT),
user_id: 'N/A',
latency: bucket.latency.value,
latency_vs_benchmark: 'N/A',
percentile_in_trace_group: 'N/A',
error_count: bucket.error_count.doc_count,
errors_vs_benchmark: 'N/A',
};
})
.then((newFields) => {
setFields(newFields);
})
.catch((error) => console.error(error));
};
// setColorMap sets serviceName to color mappings
export const handleServicesPieChartRequest = async (
traceId,
http,
setServiceBreakdownData,
setColorMap
) => {
const colors = [
'#7492e7',
'#c33d69',
'#2ea597',
'#8456ce',
'#e07941',
'#3759ce',
'#ce567c',
'#9469d6',
'#4066df',
'#da7596',
'#a783e1',
'#5978e3',
];
const colorMap = {};
let index = 0;
await handleDslRequest(http, null, getServiceBreakdownQuery(traceId))
.then((response) =>
Promise.all(
response.aggregations.service_type.buckets.map((bucket) => {
colorMap[bucket.key] = colors[index++ % colors.length];
return {
name: bucket.key,
color: colorMap[bucket.key],
value: bucket.total_latency.value,
benchmark: 0,
};
})
)
)
.then((newItems) => {
const latencySum = newItems.map((item) => item.value).reduce((a, b) => a + b, 0);
return [
{
values: newItems.map((item) =>
latencySum === 0 ? 100 : (item.value / latencySum) * 100
),
labels: newItems.map((item) => item.name),
benchmarks: newItems.map((item) => item.benchmark),
marker: {