Revert "convert dataframe response to metricFindValues with properties"

This reverts commit c5bff2df50.
This commit is contained in:
yesoreyeram
2026-01-13 16:17:02 +00:00
parent c5bff2df50
commit 2b82490e88
+21 -38
View File
@@ -9,7 +9,6 @@ import {
QueryEditorProps, QueryEditorProps,
Field, Field,
DataFrame, DataFrame,
MetricFindValue,
} from '@grafana/data'; } from '@grafana/data';
import { t } from '@grafana/i18n'; import { t } from '@grafana/i18n';
import { EditorMode, EditorRows, EditorRow, EditorField } from '@grafana/plugin-ui'; import { EditorMode, EditorRows, EditorRow, EditorField } from '@grafana/plugin-ui';
@@ -36,9 +35,13 @@ export class SQLVariableSupport extends CustomVariableSupport<SqlDatasource, SQL
const updatedQuery = migrateVariableQuery(request.targets[0]); const updatedQuery = migrateVariableQuery(request.targets[0]);
return this.datasource.query({ ...request, targets: [updatedQuery] }).pipe( return this.datasource.query({ ...request, targets: [updatedQuery] }).pipe(
map((d: DataQueryResponse) => { map((d: DataQueryResponse) => {
const frames = d.data || []; return {
const metricFindValues = convertDataFramesToMetricFindValues(frames, updatedQuery.meta); ...d,
return { data: metricFindValues }; data: (d.data || []).map((frame: DataFrame) => ({
...frame,
fields: convertOriginalFieldsToVariableFields(frame.fields, updatedQuery.meta),
})),
};
}) })
); );
} }
@@ -135,40 +138,20 @@ const migrateVariableQuery = (rawQuery: string | SQLQuery): SQLVariableQuery =>
}; };
}; };
const convertDataFramesToMetricFindValues = (frames: DataFrame[], meta?: SQLQueryMeta): MetricFindValue[] => { const convertOriginalFieldsToVariableFields = (original_fields: Field[], meta?: SQLQueryMeta): Field[] => {
if (!frames.length) { if (original_fields.length < 1) {
throw new Error('no results found'); throw new Error('at least one field expected for variable');
} }
let tf = original_fields.find((f) => f.name === '__text');
const frame = frames[0]; let vf = original_fields.find((f) => f.name === '__value');
if (meta) {
const fields = frame.fields; tf = meta.textField ? original_fields.find((f) => f.name === meta.textField) : undefined;
vf = meta.valueField ? original_fields.find((f) => f.name === meta.valueField) : undefined;
if (fields.length < 1) {
throw new Error('no fields found in the response');
} }
const textField = tf || vf || original_fields[0];
let textField = fields.find((f) => f.name === '__text'); const valueField = vf || tf || original_fields[0];
let valueField = fields.find((f) => f.name === '__value'); return [
if (meta?.textField) { { ...textField, name: 'text' },
textField = fields.find((f) => f.name === meta.textField); { ...valueField, name: 'value' },
} ];
if (meta?.valueField) {
valueField = fields.find((f) => f.name === meta.valueField);
}
const resolvedTextField = textField || valueField || fields[0];
const resolvedValueField = valueField || textField || fields[0];
const results: MetricFindValue[] = [];
const rowCount = frame.length;
for (let i = 0; i < rowCount; i++) {
const text = String(resolvedTextField.values[i] ?? '');
const value = String(resolvedValueField.values[i] ?? '');
const properties: Record<string, string> = {};
for (const field of fields) {
properties[field.name] = String(field.values[i] ?? '');
}
results.push({ text, value, properties });
}
return results;
}; };