src/utils/variables.ts (27 lines of code) (raw):

import { getTemplateSrv } from '@grafana/runtime'; import { TimeBaseQuery } from '../types'; export const getVariables = () => { return getTemplateSrv().getVariables(); }; export const getReplacedValue = (value: any, scopedVars: { [key: string]: any }) => { return getTemplateSrv().replace(value?.toString(), scopedVars, 'csv'); }; export const usedInQuery = (variable: string, query: TimeBaseQuery) => { const name = '${' + variable + '}'; if (query.selectedStream === name || query.selectedSymbols.includes(name) || query.selectedGroups?.includes(name)) { return true; } const usedFilters = query.filters.filter((filter) => filter.field === name || filter.values?.includes(name)); if (usedFilters.length !== 0) { return true; } if (query.selectedInterval?.label === name) { return true; } const usedSelects = query.selects.filter( (select) => select.selectedAggregations.some((a) => a.parameters.some((p) => p.isConstant && p.value === name)) || select.selectedFunction?.parameters.some((p) => p.isConstant && p.value === name) ); return usedSelects.length !== 0; };