瀏覽代碼

fix(prometheus): issue with click label to filter for recording rules in Explore

tolwi 6 年之前
父節點
當前提交
f0109be2bc

+ 5 - 1
public/app/plugins/datasource/prometheus/add_label_to_query.ts

@@ -30,8 +30,12 @@ export function addLabelToQuery(query: string, key: string, value: string, opera
     const insideSelector = isPositionInsideChars(query, offset, '{', '}');
     // Handle "sum by (key) (metric)"
     const previousWordIsKeyWord = previousWord && keywords.split('|').indexOf(previousWord) > -1;
+
+    // check for colon as as "word boundary" symbol
+    const isColonBounded = word.endsWith(':');
+
     previousWord = word;
-    if (!insideSelector && !previousWordIsKeyWord && builtInWords.indexOf(word) === -1) {
+    if (!insideSelector && !isColonBounded && !previousWordIsKeyWord && builtInWords.indexOf(word) === -1) {
       return `${word}{}`;
     }
     return word;

+ 3 - 0
public/app/plugins/datasource/prometheus/specs/add_label_to_query.test.ts

@@ -29,6 +29,9 @@ describe('addLabelToQuery()', () => {
       'foo{bar="baz",instance="my-host.com:9100"}'
     );
     expect(addLabelToQuery('foo:metric:rate1m', 'bar', 'baz')).toBe('foo:metric:rate1m{bar="baz"}');
+    expect(addLabelToQuery('avg(foo:metric:rate1m{a="b"})', 'bar', 'baz')).toBe(
+      'avg(foo:metric:rate1m{a="b",bar="baz"})'
+    );
     expect(addLabelToQuery('foo{list="a,b,c"}', 'bar', 'baz')).toBe('foo{bar="baz",list="a,b,c"}');
   });