diff --git a/packages/grafana-data/src/dataframe/processDataFrame.test.ts b/packages/grafana-data/src/dataframe/processDataFrame.test.ts index 7de45a267c1..e7d0e8f7274 100644 --- a/packages/grafana-data/src/dataframe/processDataFrame.test.ts +++ b/packages/grafana-data/src/dataframe/processDataFrame.test.ts @@ -174,6 +174,48 @@ describe('toDataFrame', () => { expect(v0.length).toEqual(1); expect(v0.get(0)).toEqual(input1.datapoints[0]); }); + + it('converts JSON response to dataframes', () => { + const msg = { + schema: { + fields: [ + { + name: 'First', + type: 'string', + }, + { + name: 'Second', + type: 'number', + }, + ], + }, + data: { + values: [ + ['2019-02-15', '2019-03-15', '2019-04-15'], + [3, 9, 16], + ], + }, + }; + const dataFrame = toDataFrame(msg); + expect(dataFrame.fields.map((f) => ({ [f.name]: f.values.toArray() }))).toMatchInlineSnapshot(` + Array [ + Object { + "First": Array [ + "2019-02-15", + "2019-03-15", + "2019-04-15", + ], + }, + Object { + "Second": Array [ + 3, + 9, + 16, + ], + }, + ] + `); + }); }); describe('SeriesData backwards compatibility', () => { diff --git a/packages/grafana-data/src/dataframe/processDataFrame.ts b/packages/grafana-data/src/dataframe/processDataFrame.ts index 33fe81aa8bb..f0fee32b9fe 100644 --- a/packages/grafana-data/src/dataframe/processDataFrame.ts +++ b/packages/grafana-data/src/dataframe/processDataFrame.ts @@ -25,6 +25,7 @@ import { ArrayDataFrame } from './ArrayDataFrame'; import { getFieldDisplayName } from '../field/fieldState'; import { fieldIndexComparer } from '../field/fieldComparers'; import { vectorToArray } from '../vector/vectorToArray'; +import { dataFrameFromJSON } from './DataFrameJSON'; function convertTableToDataFrame(table: TableData): DataFrame { const fields = table.columns.map((c) => { @@ -302,6 +303,9 @@ export function toDataFrame(data: any): DataFrame { } if (data.hasOwnProperty('data')) { + if (data.hasOwnProperty('schema')) { + return dataFrameFromJSON(data); + } return convertGraphSeriesToDataFrame(data); }