DataFrame: move labels to field (#19926)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { Field, DataFrame, DataFrameDTO, FieldDTO, FieldType } from '../types/dataFrame';
|
||||
import { KeyValue, QueryResultMeta, Labels } from '../types/data';
|
||||
import { KeyValue, QueryResultMeta } from '../types/data';
|
||||
import { guessFieldTypeFromValue, guessFieldTypeForField, toDataFrameDTO } from './processDataFrame';
|
||||
import isArray from 'lodash/isArray';
|
||||
import isString from 'lodash/isString';
|
||||
@@ -16,7 +16,6 @@ export const MISSING_VALUE: any = null;
|
||||
|
||||
export class MutableDataFrame<T = any> implements DataFrame, MutableVector<T> {
|
||||
name?: string;
|
||||
labels?: Labels;
|
||||
refId?: string;
|
||||
meta?: QueryResultMeta;
|
||||
|
||||
@@ -36,13 +35,10 @@ export class MutableDataFrame<T = any> implements DataFrame, MutableVector<T> {
|
||||
|
||||
// Copy values from
|
||||
if (source) {
|
||||
const { name, labels, refId, meta, fields } = source;
|
||||
const { name, refId, meta, fields } = source;
|
||||
if (name) {
|
||||
this.name = name;
|
||||
}
|
||||
if (labels) {
|
||||
this.labels = labels;
|
||||
}
|
||||
if (refId) {
|
||||
this.refId = refId;
|
||||
}
|
||||
@@ -116,6 +112,7 @@ export class MutableDataFrame<T = any> implements DataFrame, MutableVector<T> {
|
||||
type,
|
||||
config: f.config || {},
|
||||
values: this.creator(buffer),
|
||||
labels: f.labels,
|
||||
};
|
||||
|
||||
if (type === FieldType.other) {
|
||||
|
||||
@@ -57,6 +57,13 @@ function convertTableToDataFrame(table: TableData): DataFrame {
|
||||
}
|
||||
|
||||
function convertTimeSeriesToDataFrame(timeSeries: TimeSeries): DataFrame {
|
||||
const times: number[] = [];
|
||||
const values: TimeSeriesValue[] = [];
|
||||
for (const point of timeSeries.datapoints) {
|
||||
values.push(point[0]);
|
||||
times.push(point[1] as number);
|
||||
}
|
||||
|
||||
const fields = [
|
||||
{
|
||||
name: timeSeries.target || 'Value',
|
||||
@@ -64,30 +71,23 @@ function convertTimeSeriesToDataFrame(timeSeries: TimeSeries): DataFrame {
|
||||
config: {
|
||||
unit: timeSeries.unit,
|
||||
},
|
||||
values: new ArrayVector<TimeSeriesValue>(),
|
||||
values: new ArrayVector<TimeSeriesValue>(values),
|
||||
labels: timeSeries.tags,
|
||||
},
|
||||
{
|
||||
name: 'Time',
|
||||
type: FieldType.time,
|
||||
config: {
|
||||
unit: 'dateTimeAsIso',
|
||||
},
|
||||
values: new ArrayVector<number>(),
|
||||
config: {},
|
||||
values: new ArrayVector<number>(times),
|
||||
},
|
||||
];
|
||||
|
||||
for (const point of timeSeries.datapoints) {
|
||||
fields[0].values.buffer.push(point[0]);
|
||||
fields[1].values.buffer.push(point[1] as number);
|
||||
}
|
||||
|
||||
return {
|
||||
name: timeSeries.target,
|
||||
labels: timeSeries.tags,
|
||||
refId: timeSeries.refId,
|
||||
meta: timeSeries.meta,
|
||||
fields,
|
||||
length: timeSeries.datapoints.length,
|
||||
length: values.length,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -132,6 +132,7 @@ function convertJSONDocumentDataToDataFrame(timeSeries: TimeSeries): DataFrame {
|
||||
{
|
||||
name: timeSeries.target,
|
||||
type: FieldType.other,
|
||||
labels: timeSeries.tags,
|
||||
config: {
|
||||
unit: timeSeries.unit,
|
||||
filterable: (timeSeries as any).filterable,
|
||||
@@ -146,7 +147,6 @@ function convertJSONDocumentDataToDataFrame(timeSeries: TimeSeries): DataFrame {
|
||||
|
||||
return {
|
||||
name: timeSeries.target,
|
||||
labels: timeSeries.tags,
|
||||
refId: timeSeries.target,
|
||||
meta: { json: true },
|
||||
fields,
|
||||
@@ -445,6 +445,7 @@ export function toDataFrameDTO(data: DataFrame): DataFrameDTO {
|
||||
type: f.type,
|
||||
config: f.config,
|
||||
values: f.values.toArray(),
|
||||
labels: f.labels,
|
||||
};
|
||||
});
|
||||
|
||||
@@ -453,6 +454,5 @@ export function toDataFrameDTO(data: DataFrame): DataFrameDTO {
|
||||
refId: data.refId,
|
||||
meta: data.meta,
|
||||
name: data.name,
|
||||
labels: data.labels,
|
||||
};
|
||||
}
|
||||
|
||||
+5
-1
@@ -5,6 +5,7 @@ Object {
|
||||
"fields": Array [
|
||||
Object {
|
||||
"config": Object {},
|
||||
"labels": undefined,
|
||||
"name": "Field",
|
||||
"type": "string",
|
||||
"values": Array [
|
||||
@@ -16,6 +17,7 @@ Object {
|
||||
"config": Object {
|
||||
"title": "First",
|
||||
},
|
||||
"labels": undefined,
|
||||
"name": "first",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -27,6 +29,7 @@ Object {
|
||||
"config": Object {
|
||||
"title": "Min",
|
||||
},
|
||||
"labels": undefined,
|
||||
"name": "min",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -38,6 +41,7 @@ Object {
|
||||
"config": Object {
|
||||
"title": "Max",
|
||||
},
|
||||
"labels": undefined,
|
||||
"name": "max",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -49,6 +53,7 @@ Object {
|
||||
"config": Object {
|
||||
"title": "Delta",
|
||||
},
|
||||
"labels": undefined,
|
||||
"name": "delta",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -57,7 +62,6 @@ Object {
|
||||
],
|
||||
},
|
||||
],
|
||||
"labels": undefined,
|
||||
"meta": Object {
|
||||
"transformations": Array [
|
||||
"reduce",
|
||||
|
||||
@@ -56,6 +56,8 @@ export interface Field<T = any, V = Vector<T>> {
|
||||
type: FieldType;
|
||||
config: FieldConfig;
|
||||
values: V; // The raw field values
|
||||
labels?: Labels;
|
||||
|
||||
/**
|
||||
* Cache of reduced values
|
||||
*/
|
||||
@@ -75,7 +77,6 @@ export interface Field<T = any, V = Vector<T>> {
|
||||
export interface DataFrame extends QueryResultBase {
|
||||
name?: string;
|
||||
fields: Field[]; // All fields of equal length
|
||||
labels?: Labels;
|
||||
|
||||
// The number of rows
|
||||
length: number;
|
||||
@@ -89,6 +90,7 @@ export interface FieldDTO<T = any> {
|
||||
type?: FieldType;
|
||||
config?: FieldConfig;
|
||||
values?: Vector<T> | T[]; // toJSON will always be T[], input could be either
|
||||
labels?: Labels;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -96,6 +98,5 @@ export interface FieldDTO<T = any> {
|
||||
*/
|
||||
export interface DataFrameDTO extends QueryResultBase {
|
||||
name?: string;
|
||||
labels?: Labels;
|
||||
fields: Array<FieldDTO | Field>;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ Object {
|
||||
"fields": Array [
|
||||
Object {
|
||||
"config": Object {},
|
||||
"labels": undefined,
|
||||
"name": "Field 1",
|
||||
"type": "string",
|
||||
"values": Array [
|
||||
@@ -16,6 +17,7 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"config": Object {},
|
||||
"labels": undefined,
|
||||
"name": "Field 2",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -27,6 +29,7 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"config": Object {},
|
||||
"labels": undefined,
|
||||
"name": "Field 3",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -38,6 +41,7 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"config": Object {},
|
||||
"labels": undefined,
|
||||
"name": "Field 4",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -48,7 +52,6 @@ Object {
|
||||
],
|
||||
},
|
||||
],
|
||||
"labels": undefined,
|
||||
"meta": undefined,
|
||||
"name": undefined,
|
||||
"refId": undefined,
|
||||
@@ -60,6 +63,7 @@ Object {
|
||||
"fields": Array [
|
||||
Object {
|
||||
"config": Object {},
|
||||
"labels": undefined,
|
||||
"name": "a",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -69,6 +73,7 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"config": Object {},
|
||||
"labels": undefined,
|
||||
"name": "b",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -78,6 +83,7 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"config": Object {},
|
||||
"labels": undefined,
|
||||
"name": "c",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -86,7 +92,6 @@ Object {
|
||||
],
|
||||
},
|
||||
],
|
||||
"labels": undefined,
|
||||
"meta": undefined,
|
||||
"name": undefined,
|
||||
"refId": undefined,
|
||||
@@ -100,6 +105,7 @@ Object {
|
||||
"config": Object {
|
||||
"unit": "ms",
|
||||
},
|
||||
"labels": undefined,
|
||||
"name": "a",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -113,6 +119,7 @@ Object {
|
||||
"config": Object {
|
||||
"unit": "lengthm",
|
||||
},
|
||||
"labels": undefined,
|
||||
"name": "b",
|
||||
"type": "number",
|
||||
"values": Array [
|
||||
@@ -126,6 +133,7 @@ Object {
|
||||
"config": Object {
|
||||
"unit": "s",
|
||||
},
|
||||
"labels": undefined,
|
||||
"name": "c",
|
||||
"type": "boolean",
|
||||
"values": Array [
|
||||
@@ -136,7 +144,6 @@ Object {
|
||||
],
|
||||
},
|
||||
],
|
||||
"labels": undefined,
|
||||
"meta": undefined,
|
||||
"name": undefined,
|
||||
"refId": undefined,
|
||||
|
||||
@@ -6,18 +6,16 @@ describe('getRowContexts', () => {
|
||||
it('then the result should be in correct format', async () => {
|
||||
const firstResult = new MutableDataFrame({
|
||||
refId: 'B',
|
||||
labels: {},
|
||||
fields: [
|
||||
{ name: 'ts', type: FieldType.time, values: [3, 2, 1] },
|
||||
{ name: 'line', type: FieldType.string, values: ['3', '2', '1'] },
|
||||
{ name: 'line', type: FieldType.string, values: ['3', '2', '1'], labels: {} },
|
||||
],
|
||||
});
|
||||
const secondResult = new MutableDataFrame({
|
||||
refId: 'B',
|
||||
labels: {},
|
||||
fields: [
|
||||
{ name: 'ts', type: FieldType.time, values: [6, 5, 4] },
|
||||
{ name: 'line', type: FieldType.string, values: ['6', '5', '4'] },
|
||||
{ name: 'line', type: FieldType.string, values: ['6', '5', '4'], labels: {} },
|
||||
],
|
||||
});
|
||||
const row: LogRowModel = {
|
||||
|
||||
Reference in New Issue
Block a user