mirror of https://github.com/grafana/grafana
parent
f69f0c2c31
commit
2f8dd898b0
@ -0,0 +1,24 @@ |
||||
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'); |
||||
}); |
||||
}); |
@ -0,0 +1,38 @@ |
||||
// 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; |
||||
} |
Loading…
Reference in new issue