mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
parent
9ba56d9349
commit
c6db73f0bf
@ -734,11 +734,36 @@ export function createTableFrameFromTraceQlQuery(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function createTableFrameFromTraceQlQueryAsSpans(
|
export function createTableFrameFromTraceQlQueryAsSpans(
|
||||||
data: TraceSearchMetadata[],
|
data: TraceSearchMetadata[] | undefined,
|
||||||
instanceSettings: DataSourceInstanceSettings
|
instanceSettings: DataSourceInstanceSettings
|
||||||
): DataFrame[] {
|
): DataFrame[] {
|
||||||
const spanDynamicAttrs: Record<string, FieldDTO> = {};
|
const spanDynamicAttrs: Record<string, FieldDTO> = {};
|
||||||
let hasNameAttribute = false;
|
let hasNameAttribute = false;
|
||||||
|
|
||||||
|
data?.forEach((trace) =>
|
||||||
|
getSpanSets(trace).forEach((ss) => {
|
||||||
|
ss.attributes?.forEach((attr) => {
|
||||||
|
spanDynamicAttrs[attr.key] = {
|
||||||
|
name: attr.key,
|
||||||
|
type: FieldType.string,
|
||||||
|
config: { displayNameFromDS: attr.key },
|
||||||
|
};
|
||||||
|
});
|
||||||
|
ss.spans.forEach((span) => {
|
||||||
|
if (span.name) {
|
||||||
|
hasNameAttribute = true;
|
||||||
|
}
|
||||||
|
span.attributes?.forEach((attr) => {
|
||||||
|
spanDynamicAttrs[attr.key] = {
|
||||||
|
name: attr.key,
|
||||||
|
type: FieldType.string,
|
||||||
|
config: { displayNameFromDS: attr.key },
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
const frame = new MutableDataFrame({
|
const frame = new MutableDataFrame({
|
||||||
name: 'Spans',
|
name: 'Spans',
|
||||||
refId: 'traces',
|
refId: 'traces',
|
||||||
@ -830,41 +855,10 @@ export function createTableFrameFromTraceQlQueryAsSpans(
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// According to the parameter type, `data` should never be undefined of null, but the old code had
|
if (!data || !data.length) {
|
||||||
// entries such as `!data` or `data?`, so we keep this check just for safety
|
|
||||||
if (data === undefined || data === null) {
|
|
||||||
console.error(`Unexpected ${data} value for \`data\``);
|
|
||||||
return [frame];
|
return [frame];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data.length) {
|
|
||||||
return [frame];
|
|
||||||
}
|
|
||||||
|
|
||||||
data.forEach((trace) =>
|
|
||||||
getSpanSets(trace).forEach((ss) => {
|
|
||||||
ss.attributes?.forEach((attr) => {
|
|
||||||
spanDynamicAttrs[attr.key] = {
|
|
||||||
name: attr.key,
|
|
||||||
type: FieldType.string,
|
|
||||||
config: { displayNameFromDS: attr.key },
|
|
||||||
};
|
|
||||||
});
|
|
||||||
ss.spans.forEach((span) => {
|
|
||||||
if (span.name) {
|
|
||||||
hasNameAttribute = true;
|
|
||||||
}
|
|
||||||
span.attributes?.forEach((attr) => {
|
|
||||||
spanDynamicAttrs[attr.key] = {
|
|
||||||
name: attr.key,
|
|
||||||
type: FieldType.string,
|
|
||||||
config: { displayNameFromDS: attr.key },
|
|
||||||
};
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
data
|
data
|
||||||
// Show the most recent traces
|
// Show the most recent traces
|
||||||
.sort((a, b) => parseInt(b?.startTimeUnixNano!, 10) / 1000000 - parseInt(a?.startTimeUnixNano!, 10) / 1000000)
|
.sort((a, b) => parseInt(b?.startTimeUnixNano!, 10) / 1000000 - parseInt(a?.startTimeUnixNano!, 10) / 1000000)
|
||||||
|
Loading…
Reference in New Issue
Block a user