Commit 107bef2d by David Kaltschmidt

Fix rate function hint for series with nulls

parent b0172427
...@@ -30,13 +30,14 @@ export function getQueryHints(series: any[], datasource?: any): any[] { ...@@ -30,13 +30,14 @@ export function getQueryHints(series: any[], datasource?: any): any[] {
const datapoints: number[][] = s.datapoints; const datapoints: number[][] = s.datapoints;
if (query.indexOf('rate(') === -1 && datapoints.length > 1) { if (query.indexOf('rate(') === -1 && datapoints.length > 1) {
let increasing = false; let increasing = false;
const monotonic = datapoints.filter(dp => dp[0] !== null).every((dp, index) => { const nonNullData = datapoints.filter(dp => dp[0] !== null);
const monotonic = nonNullData.every((dp, index) => {
if (index === 0) { if (index === 0) {
return true; return true;
} }
increasing = increasing || dp[0] > datapoints[index - 1][0]; increasing = increasing || dp[0] > nonNullData[index - 1][0];
// monotonic? // monotonic?
return dp[0] >= datapoints[index - 1][0]; return dp[0] >= nonNullData[index - 1][0];
}); });
if (increasing && monotonic) { if (increasing && monotonic) {
const simpleMetric = query.trim().match(/^\w+$/); const simpleMetric = query.trim().match(/^\w+$/);
......
...@@ -15,6 +15,14 @@ describe('getQueryHints()', () => { ...@@ -15,6 +15,14 @@ describe('getQueryHints()', () => {
expect(hints).toEqual([null]); expect(hints).toEqual([null]);
}); });
it('returns no hint for a flat series', () => {
const series = [
{ datapoints: [[null, 1000], [23, 1001], [null, 1002], [23, 1003]], query: 'metric', responseIndex: 0 },
];
const hints = getQueryHints(series);
expect(hints).toEqual([null]);
});
it('returns a rate hint for a monotonously increasing series', () => { it('returns a rate hint for a monotonously increasing series', () => {
const series = [{ datapoints: [[23, 1000], [24, 1001]], query: 'metric', responseIndex: 0 }]; const series = [{ datapoints: [[23, 1000], [24, 1001]], query: 'metric', responseIndex: 0 }];
const hints = getQueryHints(series); const hints = getQueryHints(series);
......
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