mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Prometheus: Fix label value suggestion (#21294)
* Prometheus: Fix label value suggestion - remove quotes from typeahead input to suggest correct label values - fix acceptance of partial label values * Disable mid-word suggestions * Fix test
This commit is contained in:
@@ -88,7 +88,10 @@ export default class PromQlLanguageProvider extends LanguageProvider {
|
||||
cleanText(s: string) {
|
||||
const parts = s.split(PREFIX_DELIMITER_REGEX);
|
||||
const last = parts.pop();
|
||||
return last.trimLeft().replace(/"$/, '');
|
||||
return last
|
||||
.trimLeft()
|
||||
.replace(/"$/, '')
|
||||
.replace(/^"/, '');
|
||||
}
|
||||
|
||||
get syntax() {
|
||||
@@ -297,8 +300,15 @@ export default class PromQlLanguageProvider extends LanguageProvider {
|
||||
labelKey,
|
||||
value,
|
||||
}: TypeaheadInput): Promise<TypeaheadOutput> => {
|
||||
const suggestions: CompletionItemGroup[] = [];
|
||||
const line = value.anchorBlock.getText();
|
||||
const cursorOffset = value.selection.anchor.offset;
|
||||
const nextChar = line[cursorOffset];
|
||||
const isValueContext = wrapperClasses.includes('attr-value');
|
||||
if (!nextChar.match(/["}]/)) {
|
||||
// Don't suggest anything inside a value
|
||||
return { suggestions };
|
||||
}
|
||||
|
||||
// Get normalized selector
|
||||
let selector;
|
||||
@@ -313,7 +323,6 @@ export default class PromQlLanguageProvider extends LanguageProvider {
|
||||
const containsMetric = selector.includes('__name__=');
|
||||
const existingKeys = parsedSelector ? parsedSelector.labelKeys : [];
|
||||
|
||||
const suggestions: CompletionItemGroup[] = [];
|
||||
let labelValues;
|
||||
// Query labels for selector
|
||||
if (selector) {
|
||||
@@ -326,7 +335,7 @@ export default class PromQlLanguageProvider extends LanguageProvider {
|
||||
}
|
||||
|
||||
let context: string;
|
||||
if ((text && text.match(/^!?=~?/)) || wrapperClasses.includes('attr-value')) {
|
||||
if ((text && text.match(/^!?=~?/)) || isValueContext) {
|
||||
// Label values
|
||||
if (labelKey && labelValues[labelKey]) {
|
||||
context = 'context-label-values';
|
||||
|
||||
Reference in New Issue
Block a user