mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Tempo: Improve Betterer results (#81338)
This commit is contained in:
parent
f7a425d352
commit
86b8a0af9f
@ -5743,17 +5743,11 @@ exports[`better eslint`] = {
|
|||||||
],
|
],
|
||||||
"public/app/plugins/datasource/tempo/datasource.ts:5381": [
|
"public/app/plugins/datasource/tempo/datasource.ts:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "1"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
[0, 0, 0, "Do not use any type assertions.", "2"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "3"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "4"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "4"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "5"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "5"]
|
||||||
[0, 0, 0, "Do not use any type assertions.", "6"],
|
|
||||||
[0, 0, 0, "Do not use any type assertions.", "7"],
|
|
||||||
[0, 0, 0, "Do not use any type assertions.", "8"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "9"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "10"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "11"]
|
|
||||||
],
|
],
|
||||||
"public/app/plugins/datasource/tempo/language_provider.ts:5381": [
|
"public/app/plugins/datasource/tempo/language_provider.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
||||||
|
@ -123,6 +123,9 @@ class TempoQueryFieldComponent extends React.PureComponent<Props, State> {
|
|||||||
<FileDropzone
|
<FileDropzone
|
||||||
options={{ multiple: false }}
|
options={{ multiple: false }}
|
||||||
onLoad={(result) => {
|
onLoad={(result) => {
|
||||||
|
if (typeof result !== 'string' && result !== null) {
|
||||||
|
throw Error(`Unexpected result type: ${typeof result}`);
|
||||||
|
}
|
||||||
this.props.datasource.uploadedJson = result;
|
this.props.datasource.uploadedJson = result;
|
||||||
onChange({
|
onChange({
|
||||||
...query,
|
...query,
|
||||||
|
@ -18,6 +18,7 @@ import {
|
|||||||
LoadingState,
|
LoadingState,
|
||||||
rangeUtil,
|
rangeUtil,
|
||||||
ScopedVars,
|
ScopedVars,
|
||||||
|
SelectableValue,
|
||||||
TestDataSourceResponse,
|
TestDataSourceResponse,
|
||||||
urlUtil,
|
urlUtil,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
@ -112,7 +113,7 @@ export class TempoDatasource extends DataSourceWithBackend<TempoQuery, TempoJson
|
|||||||
spanStartTimeShift?: string;
|
spanStartTimeShift?: string;
|
||||||
spanEndTimeShift?: string;
|
spanEndTimeShift?: string;
|
||||||
};
|
};
|
||||||
uploadedJson?: string | ArrayBuffer | null = null;
|
uploadedJson?: string | null = null;
|
||||||
spanBar?: SpanBarOptions;
|
spanBar?: SpanBarOptions;
|
||||||
languageProvider: TempoLanguageProvider;
|
languageProvider: TempoLanguageProvider;
|
||||||
|
|
||||||
@ -204,9 +205,9 @@ export class TempoDatasource extends DataSourceWithBackend<TempoQuery, TempoJson
|
|||||||
options = await this.languageProvider.getOptionsV1(labelName);
|
options = await this.languageProvider.getOptionsV1(labelName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return options.filter((option) => option.value !== undefined).map((option) => ({ text: option.value })) as Array<{
|
return options.flatMap((option: SelectableValue<string>) =>
|
||||||
text: string;
|
option.value !== undefined ? [{ text: option.value }] : []
|
||||||
}>;
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
init = async () => {
|
init = async () => {
|
||||||
@ -271,7 +272,8 @@ export class TempoDatasource extends DataSourceWithBackend<TempoQuery, TempoJson
|
|||||||
// Wrap linked query into a data request based on original request
|
// Wrap linked query into a data request based on original request
|
||||||
const linkedRequest: DataQueryRequest = { ...options, targets: targets.search.map((t) => t.linkedQuery!) };
|
const linkedRequest: DataQueryRequest = { ...options, targets: targets.search.map((t) => t.linkedQuery!) };
|
||||||
// Find trace matchers in derived fields of the linked datasource that's identical to this datasource
|
// Find trace matchers in derived fields of the linked datasource that's identical to this datasource
|
||||||
const settings: DataSourceInstanceSettings<LokiOptions> = (linkedDatasource as any).instanceSettings;
|
const settings: DataSourceInstanceSettings<LokiOptions> = (linkedDatasource as TempoDatasource)
|
||||||
|
.instanceSettings;
|
||||||
const traceLinkMatcher: string[] =
|
const traceLinkMatcher: string[] =
|
||||||
settings.jsonData.derivedFields
|
settings.jsonData.derivedFields
|
||||||
?.filter((field) => field.datasourceUid === this.uid && field.matcherRegex)
|
?.filter((field) => field.datasourceUid === this.uid && field.matcherRegex)
|
||||||
@ -285,7 +287,8 @@ export class TempoDatasource extends DataSourceWithBackend<TempoQuery, TempoJson
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return (linkedDatasource.query(linkedRequest) as Observable<DataQueryResponse>).pipe(
|
const response = linkedDatasource.query(linkedRequest);
|
||||||
|
return from(response).pipe(
|
||||||
map((response) =>
|
map((response) =>
|
||||||
response.error ? response : transformTraceList(response, this.uid, this.name, traceLinkMatcher)
|
response.error ? response : transformTraceList(response, this.uid, this.name, traceLinkMatcher)
|
||||||
)
|
)
|
||||||
@ -453,7 +456,7 @@ export class TempoDatasource extends DataSourceWithBackend<TempoQuery, TempoJson
|
|||||||
grafana_version: config.buildInfo.version,
|
grafana_version: config.buildInfo.version,
|
||||||
});
|
});
|
||||||
|
|
||||||
const jsonData = JSON.parse(this.uploadedJson as string);
|
const jsonData = JSON.parse(this.uploadedJson);
|
||||||
const isTraceData = jsonData.batches;
|
const isTraceData = jsonData.batches;
|
||||||
const isServiceGraphData =
|
const isServiceGraphData =
|
||||||
Array.isArray(jsonData) && jsonData.some((df) => df?.meta?.preferredVisualisationType === 'nodeGraph');
|
Array.isArray(jsonData) && jsonData.some((df) => df?.meta?.preferredVisualisationType === 'nodeGraph');
|
||||||
@ -720,16 +723,17 @@ export class TempoDatasource extends DataSourceWithBackend<TempoQuery, TempoJson
|
|||||||
}
|
}
|
||||||
|
|
||||||
getQueryDisplayText(query: TempoQuery) {
|
getQueryDisplayText(query: TempoQuery) {
|
||||||
if (query.queryType === 'nativeSearch') {
|
if (query.queryType !== 'nativeSearch') {
|
||||||
let result = [];
|
return query.query ?? '';
|
||||||
for (const key of ['serviceName', 'spanName', 'search', 'minDuration', 'maxDuration', 'limit']) {
|
|
||||||
if (query.hasOwnProperty(key) && query[key as keyof TempoQuery]) {
|
|
||||||
result.push(`${startCase(key)}: ${query[key as keyof TempoQuery]}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result.join(', ');
|
|
||||||
}
|
}
|
||||||
return query.query ?? '';
|
|
||||||
|
const keys: Array<
|
||||||
|
keyof Pick<TempoQuery, 'serviceName' | 'spanName' | 'search' | 'minDuration' | 'maxDuration' | 'limit'>
|
||||||
|
> = ['serviceName', 'spanName', 'search', 'minDuration', 'maxDuration', 'limit'];
|
||||||
|
return keys
|
||||||
|
.filter((key) => query[key])
|
||||||
|
.map((key) => `${startCase(key)}: ${query[key]}`)
|
||||||
|
.join(', ');
|
||||||
}
|
}
|
||||||
|
|
||||||
buildSearchQuery(query: TempoQuery, timeRange?: { startTime: number; endTime?: number }): SearchQueryParams {
|
buildSearchQuery(query: TempoQuery, timeRange?: { startTime: number; endTime?: number }): SearchQueryParams {
|
||||||
|
Loading…
Reference in New Issue
Block a user