28 lines
1.0 KiB
TypeScript
28 lines
1.0 KiB
TypeScript
import { QueryBuilderLabelFilter } from '@grafana/prometheus';
|
|
import { DashboardScene } from 'app/features/dashboard-scene/scene/DashboardScene';
|
|
|
|
import { QueryMetric } from './getQueryMetrics'; // We only support label filters with the '=' operator
|
|
|
|
// We only support label filters with the '=' operator
|
|
export function isEquals(labelFilter: QueryBuilderLabelFilter) {
|
|
return labelFilter.op === '=';
|
|
}
|
|
|
|
export function getTimeRangeStateFromDashboard(dashboard: DashboardScene) {
|
|
return dashboard.state.$timeRange!.state;
|
|
}
|
|
|
|
export function getQueryMetricLabel({ metric, labelFilters }: QueryMetric) {
|
|
// Don't show the filter unless there is more than one entry
|
|
if (labelFilters.length === 0) {
|
|
return metric;
|
|
}
|
|
|
|
const filter = `{${labelFilters.map(({ label, op, value }) => `${label}${op}"${value}"`)}}`;
|
|
return `${metric}${filter}`;
|
|
}
|
|
|
|
export function createAdHocFilters(labels: QueryBuilderLabelFilter[]) {
|
|
return labels?.map((label) => ({ key: label.label, value: label.value, operator: label.op }));
|
|
}
|