Commit d7ccf98b by Hugo Häggmark Committed by GitHub

Prometheus: Prevents panel editor crash when switching to Prometheus datasource (#18616)

* Fix: Fixes panel editor crash when switching to Promehteus
Fixes: #18600

* Refactor: Adds tests
parent 90df8c4b
import { getQueryHints } from './query_hints';
describe('getQueryHints', () => {
describe('when called without datapoints in series', () => {
it('then it should use rows instead and return correct hint', () => {
const series = [
{
fields: [
{
name: 'Some Name',
},
],
rows: [[1], [2]],
},
];
const result = getQueryHints('up', series);
expect(result).toEqual([
{
fix: { action: { query: 'up', type: 'ADD_RATE' }, label: 'Fix by adding rate().' },
label: 'Time series is monotonically increasing.',
type: 'APPLY_RATE',
},
]);
});
});
describe('when called without datapoints and rows in series', () => {
it('then it should use an empty array and return null', () => {
const series = [
{
fields: [
{
name: 'Some Name',
},
],
},
];
const result = getQueryHints('up', series);
expect(result).toEqual(null);
});
});
});
...@@ -29,7 +29,7 @@ export function getQueryHints(query: string, series?: any[], datasource?: any): ...@@ -29,7 +29,7 @@ export function getQueryHints(query: string, series?: any[], datasource?: any):
// Check for monotonicity on series (table results are being ignored here) // Check for monotonicity on series (table results are being ignored here)
if (series && series.length > 0) { if (series && series.length > 0) {
series.forEach(s => { series.forEach(s => {
const datapoints: number[][] = s.datapoints; const datapoints: number[][] = s.datapoints || s.rows || [];
if (query.indexOf('rate(') === -1 && datapoints.length > 1) { if (query.indexOf('rate(') === -1 && datapoints.length > 1) {
let increasing = false; let increasing = false;
const nonNullData = datapoints.filter(dp => dp[0] !== null); const nonNullData = datapoints.filter(dp => dp[0] !== null);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment