less nesting and add test
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { toTableData } from './processTimeSeries';
|
||||
|
||||
describe('toTableData', () => {
|
||||
it('converts timeseries to table skipping nulls', () => {
|
||||
const input = {
|
||||
target: 'Field Name',
|
||||
datapoints: [[100, 1], [200, 2]],
|
||||
};
|
||||
const data = toTableData([null, input, null, null]);
|
||||
expect(data.length).toBe(1);
|
||||
expect(data[0].columns[0].text).toBe(input.target);
|
||||
expect(data[0].rows).toBe(input.datapoints);
|
||||
});
|
||||
|
||||
it('keeps tableData unchanged', () => {
|
||||
const input = {
|
||||
columns: [{ text: 'A' }, { text: 'B' }, { text: 'C' }],
|
||||
rows: [[100, 'A', 1], [200, 'B', 2], [300, 'C', 3]],
|
||||
};
|
||||
const data = toTableData([null, input, null, null]);
|
||||
expect(data.length).toBe(1);
|
||||
expect(data[0]).toBe(input);
|
||||
});
|
||||
|
||||
it('supports null values OK', () => {
|
||||
expect(toTableData([null, null, null, null])).toEqual([]);
|
||||
expect(toTableData(undefined)).toEqual([]);
|
||||
expect(toTableData((null as unknown) as any[])).toEqual([]);
|
||||
expect(toTableData([])).toEqual([]);
|
||||
});
|
||||
});
|
||||
@@ -193,35 +193,35 @@ export function processTimeSeries({ data, xColumn, yColumn, nullValueMode }: Opt
|
||||
|
||||
export const isTableData = (data: any): data is TableData => data && data.hasOwnProperty('columns');
|
||||
|
||||
export const toTableData = (results: any[]): TableData[] => {
|
||||
const tables: TableData[] = [];
|
||||
if (results) {
|
||||
for (let i = 0; i < results.length; i++) {
|
||||
const data = results[i];
|
||||
if (data) {
|
||||
if (data.hasOwnProperty('columns')) {
|
||||
tables.push(data as TableData);
|
||||
} else if (data.hasOwnProperty('datapoints')) {
|
||||
const ts = data as TimeSeries;
|
||||
tables.push({
|
||||
columns: [
|
||||
{
|
||||
text: ts.target,
|
||||
unit: ts.unit,
|
||||
},
|
||||
{
|
||||
text: 'Time',
|
||||
type: 'time',
|
||||
},
|
||||
],
|
||||
rows: ts.datapoints,
|
||||
} as TableData);
|
||||
} else {
|
||||
console.warn('Can not convert', data);
|
||||
throw new Error('Unsupported data format');
|
||||
}
|
||||
}
|
||||
}
|
||||
export const toTableData = (results?: any[]): TableData[] => {
|
||||
if (!results) {
|
||||
return [];
|
||||
}
|
||||
return tables;
|
||||
|
||||
return results
|
||||
.filter(d => !!d)
|
||||
.map(data => {
|
||||
if (data.hasOwnProperty('columns')) {
|
||||
return data as TableData;
|
||||
}
|
||||
if (data.hasOwnProperty('datapoints')) {
|
||||
const ts = data as TimeSeries;
|
||||
return {
|
||||
columns: [
|
||||
{
|
||||
text: ts.target || 'Timeseries',
|
||||
unit: ts.unit,
|
||||
},
|
||||
{
|
||||
text: 'Time',
|
||||
type: 'time',
|
||||
},
|
||||
],
|
||||
rows: ts.datapoints,
|
||||
} as TableData;
|
||||
}
|
||||
// TODO, try to convert JSON to table?
|
||||
console.warn('Can not convert', data);
|
||||
throw new Error('Unsupported data format');
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user