mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge pull request #14215 from grafana/davkal/fix-logging-selector-parsing
Logging: fix query parsing for selectors with multiple labels
This commit is contained in:
commit
8830c133d1
public/app/plugins/datasource/logging
@ -35,4 +35,11 @@ describe('parseQuery', () => {
|
||||
regexp: 'x|y',
|
||||
});
|
||||
});
|
||||
|
||||
it('returns query for selector with two labels', () => {
|
||||
expect(parseQuery('{foo="bar", baz="42"}')).toEqual({
|
||||
query: '{foo="bar", baz="42"}',
|
||||
regexp: '',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -16,26 +16,15 @@ const DEFAULT_QUERY_PARAMS = {
|
||||
query: '',
|
||||
};
|
||||
|
||||
const QUERY_REGEXP = /({\w+="[^"]+"})?\s*(\w[^{]+)?\s*({\w+="[^"]+"})?/;
|
||||
const selectorRegexp = /{[^{]*}/g;
|
||||
export function parseQuery(input: string) {
|
||||
const match = input.match(QUERY_REGEXP);
|
||||
const match = input.match(selectorRegexp);
|
||||
let query = '';
|
||||
let regexp = '';
|
||||
let regexp = input;
|
||||
|
||||
if (match) {
|
||||
if (match[1]) {
|
||||
query = match[1];
|
||||
}
|
||||
if (match[2]) {
|
||||
regexp = match[2].trim();
|
||||
}
|
||||
if (match[3]) {
|
||||
if (match[1]) {
|
||||
query = `${match[1].slice(0, -1)},${match[3].slice(1)}`;
|
||||
} else {
|
||||
query = match[3];
|
||||
}
|
||||
}
|
||||
query = match[0];
|
||||
regexp = input.replace(selectorRegexp, '').trim();
|
||||
}
|
||||
|
||||
return { query, regexp };
|
||||
|
Loading…
Reference in New Issue
Block a user