|
|
|
@ -6,12 +6,12 @@ import { map, filter, catchError, switchMap } from 'rxjs/operators'; |
|
|
|
|
// Services & Utils
|
|
|
|
|
import { DataFrame, dateMath, FieldCache } from '@grafana/data'; |
|
|
|
|
import { getBackendSrv } from '@grafana/runtime'; |
|
|
|
|
import { addLabelToSelector, keepSelectorFilters } from 'app/plugins/datasource/prometheus/add_label_to_query'; |
|
|
|
|
import { addLabelToQuery } from 'app/plugins/datasource/prometheus/add_label_to_query'; |
|
|
|
|
import { DatasourceRequestOptions } from 'app/core/services/backend_srv'; |
|
|
|
|
import { TemplateSrv } from 'app/features/templating/template_srv'; |
|
|
|
|
import { safeStringifyValue, convertToWebSocketUrl } from 'app/core/utils/explore'; |
|
|
|
|
import { lokiResultsToTableModel, processRangeQueryResponse, lokiStreamResultToDataFrame } from './result_transformer'; |
|
|
|
|
import { formatQuery, parseQuery, getHighlighterExpressionsFromQuery } from './query_utils'; |
|
|
|
|
import { parseQuery, getHighlighterExpressionsFromQuery } from './query_utils'; |
|
|
|
|
|
|
|
|
|
// Types
|
|
|
|
|
import { |
|
|
|
@ -344,27 +344,20 @@ export class LokiDatasource extends DataSourceApi<LokiQuery, LokiOptions> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
modifyQuery(query: LokiQuery, action: any): LokiQuery { |
|
|
|
|
const parsed = parseQuery(query.expr || ''); |
|
|
|
|
let { query: selector } = parsed; |
|
|
|
|
let selectorLabels, selectorFilters; |
|
|
|
|
let expression = query.expr ?? ''; |
|
|
|
|
switch (action.type) { |
|
|
|
|
case 'ADD_FILTER': { |
|
|
|
|
selectorLabels = addLabelToSelector(selector, action.key, action.value); |
|
|
|
|
selectorFilters = keepSelectorFilters(selector); |
|
|
|
|
selector = `${selectorLabels} ${selectorFilters}`.trim(); |
|
|
|
|
expression = addLabelToQuery(expression, action.key, action.value); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case 'ADD_FILTER_OUT': { |
|
|
|
|
selectorLabels = addLabelToSelector(selector, action.key, action.value, '!='); |
|
|
|
|
selectorFilters = keepSelectorFilters(selector); |
|
|
|
|
selector = `${selectorLabels} ${selectorFilters}`.trim(); |
|
|
|
|
expression = addLabelToQuery(expression, action.key, action.value, '!='); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
default: |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const expression = formatQuery(selector, parsed.regexp); |
|
|
|
|
return { ...query, expr: expression }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|