Prometheus: Adds hint support to dashboard and fixes prometheus link in query editor (#20275)

* Prometheus: moved hints into query editor, and fixed missing refIds in responses

* Minor fix

* Removed unused type import
This commit is contained in:
Torkel Ödegaard
2019-11-11 16:47:17 +01:00
committed by GitHub
parent 78520ac3d1
commit b756aa0bb1
7 changed files with 14 additions and 23 deletions

View File

@@ -221,11 +221,11 @@ class PromQueryField extends React.PureComponent<PromQueryFieldProps, PromQueryF
};
onClickHintFix = () => {
const { datasource, query, onChange, onRunQuery } = this.props;
const { hint } = this.state;
const { onHint } = this.props;
if (onHint && hint && hint.fix) {
onHint(hint.fix.action);
}
onChange(datasource.modifyQuery(query, hint.fix.action));
onRunQuery();
};
onUpdateLanguage = () => {

View File

@@ -75,6 +75,7 @@ export class ResultTransformer {
return {
datapoints: dps,
query: options.query,
refId: options.refId,
target: metricLabel,
tags: metricData.metric,
};
@@ -82,6 +83,8 @@ export class ResultTransformer {
transformMetricDataToTable(md: any, resultCount: number, refId: string, valueWithRefId?: boolean): TableModel {
const table = new TableModel();
table.refId = refId;
let i: number, j: number;
const metricLabels: { [key: string]: number } = {};
@@ -141,7 +144,7 @@ export class ResultTransformer {
let metricLabel = null;
metricLabel = this.createMetricLabel(md.metric, options);
dps.push([parseFloat(md.value[1]), md.value[0] * 1000]);
return { target: metricLabel, datapoints: dps, tags: md.metric };
return { target: metricLabel, datapoints: dps, tags: md.metric, refId: options.refId };
}
createMetricLabel(labelData: { [key: string]: string }, options: any) {

View File

@@ -59,7 +59,7 @@ describe('Prometheus Result Transformer', () => {
};
it('should return table model', () => {
const table = ctx.resultTransformer.transformMetricDataToTable(response.data.result);
const table = ctx.resultTransformer.transformMetricDataToTable(response.data.result, 0, 'A');
expect(table.type).toBe('table');
expect(table.rows).toEqual([
[1443454528000, 'test', '', 'testjob', 3846],
@@ -73,6 +73,7 @@ describe('Prometheus Result Transformer', () => {
{ text: 'Value' },
]);
expect(table.columns[4].filterable).toBeUndefined();
expect(table.refId).toBe('A');
});
it('should column title include refId if response count is more than 2', () => {
@@ -217,6 +218,7 @@ describe('Prometheus Result Transformer', () => {
format: 'timeseries',
start: 0,
end: 2,
refId: 'B',
};
const result = ctx.resultTransformer.transform({ data: response }, options);
@@ -226,6 +228,7 @@ describe('Prometheus Result Transformer', () => {
query: undefined,
datapoints: [[10, 0], [10, 1000], [0, 2000]],
tags: { job: 'testjob' },
refId: 'B',
},
]);
});