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[] {
const datapoints: number[][] = s.datapoints;
if (query.indexOf('rate(') === -1 && datapoints.length > 1) {
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) {
return true;
}
increasing = increasing || dp[0] > datapoints[index - 1][0];
increasing = increasing || dp[0] > nonNullData[index - 1][0];
// monotonic?
return dp[0] >= datapoints[index - 1][0];
return dp[0] >= nonNullData[index - 1][0];
});
if (increasing && monotonic) {
const simpleMetric = query.trim().match(/^\w+$/);
......
......@@ -15,6 +15,14 @@ describe('getQueryHints()', () => {
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', () => {
const series = [{ datapoints: [[23, 1000], [24, 1001]], query: 'metric', responseIndex: 0 }];
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