Frontend/SeriesData: Fix for convert SeriesData to Table format (#17314)

This commit is contained in:
Ryan McKinley
2019-05-28 01:18:09 -07:00
committed by Torkel Ödegaard
parent 4b0ad174ff
commit 382ebd6362
2 changed files with 28 additions and 9 deletions

View File

@@ -6,7 +6,7 @@ import {
guessFieldTypes,
guessFieldTypeFromValue,
} from './processSeriesData';
import { FieldType, TimeSeries } from '../types/data';
import { FieldType, TimeSeries, SeriesData, TableData } from '../types/data';
import { dateTime } from './moment_wrapper';
describe('toSeriesData', () => {
@@ -99,4 +99,25 @@ describe('SerisData backwards compatibility', () => {
expect(isTableData(roundtrip)).toBeTruthy();
expect(roundtrip).toMatchObject(table);
});
it('converts SeriesData to TableData to series and back again', () => {
const series: SeriesData = {
refId: 'Z',
meta: {
somethign: 8,
},
fields: [
{ name: 'T', type: FieldType.time }, // first
{ name: 'N', type: FieldType.number, filterable: true },
{ name: 'S', type: FieldType.string, filterable: true },
],
rows: [[1, 100, '1'], [2, 200, '2'], [3, 300, '3']],
};
const table = toLegacyResponseData(series) as TableData;
expect(table.meta).toBe(series.meta);
expect(table.refId).toBe(series.refId);
const names = table.columns.map(c => c.text);
expect(names).toEqual(['T', 'N', 'S']);
});
});

View File

@@ -4,7 +4,7 @@ import isString from 'lodash/isString';
import isBoolean from 'lodash/isBoolean';
// Types
import { SeriesData, Field, TimeSeries, FieldType, TableData } from '../types/index';
import { SeriesData, Field, TimeSeries, FieldType, TableData, Column } from '../types/index';
import { isDateTime } from './moment_wrapper';
function convertTableToSeriesData(table: TableData): SeriesData {
@@ -171,14 +171,12 @@ export const toLegacyResponseData = (series: SeriesData): TimeSeries | TableData
return {
columns: fields.map(f => {
return {
text: f.name,
filterable: f.filterable,
unit: f.unit,
refId: series.refId,
meta: series.meta,
};
const { name, ...column } = f;
(column as Column).text = name;
return column as Column;
}),
refId: series.refId,
meta: series.meta,
rows,
};
};