Commit 93677f16 by Torkel Ödegaard Committed by GitHub

Merge pull request #16095 from ryantxu/flot-pairs

calculate flot pairs
parents 3884ac85 2c8e1cbd
import { getFlotPairs } from './flotPairs';
describe('getFlotPairs', () => {
const table = {
rows: [[1, 100, 'a'], [2, 200, 'b'], [3, 300, 'c']],
};
it('should get X and y', () => {
const pairs = getFlotPairs({ rows: table.rows, xIndex: 0, yIndex: 1 });
expect(pairs.length).toEqual(3);
expect(pairs[0].length).toEqual(2);
expect(pairs[0][0]).toEqual(1);
expect(pairs[0][1]).toEqual(100);
});
it('should work with strings', () => {
const pairs = getFlotPairs({ rows: table.rows, xIndex: 0, yIndex: 2 });
expect(pairs.length).toEqual(3);
expect(pairs[0].length).toEqual(2);
expect(pairs[0][0]).toEqual(1);
expect(pairs[0][1]).toEqual('a');
});
});
// Types
import { NullValueMode } from '../types/index';
export interface FloatPairsOptions {
rows: any[][];
xIndex: number;
yIndex: number;
nullValueMode?: NullValueMode;
}
export function getFlotPairs({ rows, xIndex, yIndex, nullValueMode }: FloatPairsOptions): any[][] {
const ignoreNulls = nullValueMode === NullValueMode.Ignore;
const nullAsZero = nullValueMode === NullValueMode.AsZero;
const pairs: any[][] = [];
for (let i = 0; i < rows.length; i++) {
const x = rows[i][xIndex];
let y = rows[i][yIndex];
if (y === null) {
if (ignoreNulls) {
continue;
}
if (nullAsZero) {
y = 0;
}
}
// X must be a value
if (x === null) {
continue;
}
pairs.push([x, y]);
}
return pairs;
}
......@@ -4,6 +4,7 @@ import isNumber from 'lodash/isNumber';
import { colors } from './colors';
// Types
import { getFlotPairs } from './flotPairs';
import { TimeSeriesVMs, NullValueMode, TimeSeriesValue, TableData } from '../types';
interface Options {
......@@ -34,7 +35,14 @@ export function processTimeSeries({ data, xColumn, yColumn, nullValueMode }: Opt
const colorIndex = index % colors.length;
const label = item.columns[yColumn].text;
const result = [];
// Use external calculator just to make sure it works :)
const result = getFlotPairs({
rows: item.rows,
xIndex: xColumn,
yIndex: yColumn,
nullValueMode,
});
// stat defaults
let total = 0;
......@@ -137,8 +145,6 @@ export function processTimeSeries({ data, xColumn, yColumn, nullValueMode }: Opt
allIsZero = false;
}
}
result.push([currentTime, currentValue]);
}
if (max === -Number.MAX_VALUE) {
......
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