Tempo: Provide tag value completion items consistently (#43773) (#43863)

(cherry picked from commit 3d6e9076c9)

Co-authored-by: Connor Lindsey <cblindsey3@gmail.com>
This commit is contained in:
Grot (@grafanabot)
2022-01-17 15:13:56 +01:00
committed by GitHub
co-authored by Connor Lindsey
parent 16dc72e3c6
commit 8ae06767a8
@@ -37,7 +37,10 @@ export default class TempoLanguageProvider extends LanguageProvider {
if (!value) {
return emptyResult;
}
if (text === '=') {
const query = value.endText.getText();
const isValue = query[query.indexOf(text) - 1] === '=';
if (isValue || text === '=') {
return this.getTagValueCompletionItems(value);
}
return this.getTagsCompletionItems();
@@ -58,19 +61,17 @@ export default class TempoLanguageProvider extends LanguageProvider {
};
async getTagValueCompletionItems(value: Value) {
const tagNames = value.endText.getText().split(' ');
let tagName = tagNames[0];
// Get last item if multiple tags
if (tagNames.length > 1) {
tagName = tagNames[tagNames.length - 1];
}
tagName = tagName.slice(0, -1);
const tags = value.endText.getText().split(' ');
let tagName = tags[tags.length - 1] ?? '';
tagName = tagName.split('=')[0];
const response = await this.request(`/api/search/tag/${tagName}/values`, []);
const suggestions: CompletionItemGroup[] = [];
if (response && response.tagValues) {
suggestions.push({
label: `TagValues`,
label: `Tag Values`,
items: response.tagValues.map((tagValue: string) => ({ label: tagValue })),
});
}