FieldValues: Use simple array in panel visualizations (#66706)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
This commit is contained in:
Ryan McKinley
2023-04-17 14:46:29 -07:00
committed by GitHub
co-authored by Leon Sorokin
parent 50cb4f8998
commit 09f03e92bf
60 changed files with 265 additions and 320 deletions
@@ -1,13 +1,4 @@
import {
ArrayVector,
createTheme,
FieldType,
ThresholdsMode,
TimeRange,
toDataFrame,
dateTime,
DataFrame,
} from '@grafana/data';
import { createTheme, FieldType, ThresholdsMode, TimeRange, toDataFrame, dateTime, DataFrame } from '@grafana/data';
import { LegendDisplayMode, VizLegendOptions } from '@grafana/schema';
import {
@@ -70,7 +61,7 @@ describe('prepare timeline graph', () => {
const out = info.frames![0];
const field = out.fields.find((f) => f.name === 'b');
expect(field?.values.toArray()).toMatchInlineSnapshot(`
expect(field?.values).toMatchInlineSnapshot(`
[
1,
1,
@@ -94,7 +85,7 @@ describe('prepare timeline graph', () => {
}),
];
const result = prepareTimelineFields(frames, true, timeRange, theme);
expect(result.frames?.[0].fields[0].values.toArray()).toEqual([1, 2, 3, 4]);
expect(result.frames?.[0].fields[0].values).toEqual([1, 2, 3, 4]);
});
});
@@ -103,7 +94,7 @@ describe('findNextStateIndex', () => {
const field = {
name: 'time',
type: FieldType.number,
values: new ArrayVector([1, undefined, undefined, 2, undefined, undefined]),
values: [1, undefined, undefined, 2, undefined, undefined],
config: {},
};
const result = findNextStateIndex(field, 0);
@@ -114,7 +105,7 @@ describe('findNextStateIndex', () => {
const field = {
name: 'time',
type: FieldType.number,
values: new ArrayVector([1, undefined, undefined, 2, undefined, 3]),
values: [1, undefined, undefined, 2, undefined, 3],
config: {},
};
const result = findNextStateIndex(field, 5);
@@ -125,7 +116,7 @@ describe('findNextStateIndex', () => {
const field = {
name: 'time',
type: FieldType.number,
values: new ArrayVector([1, undefined, undefined, 2, undefined, 3, undefined]),
values: [1, undefined, undefined, 2, undefined, 3, undefined],
config: {},
};
const result = findNextStateIndex(field, 5);
@@ -136,19 +127,7 @@ describe('findNextStateIndex', () => {
const field = {
name: 'time',
type: FieldType.number,
values: new ArrayVector([
1,
undefined,
undefined,
3,
undefined,
undefined,
undefined,
undefined,
2,
undefined,
undefined,
]),
values: [1, undefined, undefined, 3, undefined, undefined, undefined, undefined, 2, undefined, undefined],
config: {},
};
const result = findNextStateIndex(field, 3);
@@ -159,7 +138,7 @@ describe('findNextStateIndex', () => {
const field = {
name: 'time',
type: FieldType.number,
values: new ArrayVector([1, 3, 2]),
values: [1, 3, 2],
config: {},
};
@@ -212,10 +191,10 @@ describe('prepareTimelineLegendItems', () => {
],
},
},
values: new ArrayVector([
values: [
1634092733455, 1634092763455, 1634092793455, 1634092823455, 1634092853455, 1634092883455, 1634092913455,
1634092943455, 1634092973455, 1634093003455,
]),
],
display: (value: string) => ({
text: value,
color: undefined,
@@ -238,7 +217,7 @@ describe('prepareTimelineLegendItems', () => {
],
},
},
values: new ArrayVector(['< -∞', null, null, null, null, null, null, null, null, null]),
values: ['< -∞', null, null, null, null, null, null, null, null, null],
display: (value?: string) => ({
text: value || '',
color: 'green',
@@ -2,7 +2,6 @@ import React from 'react';
import uPlot from 'uplot';
import {
ArrayVector,
DataFrame,
DashboardCursorSync,
DataHoverPayload,
@@ -371,7 +370,7 @@ export function mergeThresholdValues(field: Field, theme: GrafanaTheme2): Field
textToColor.set(items[i].label, items[i].color!);
}
let input = field.values.toArray();
let input = field.values;
const vals = new Array<String | undefined>(field.values.length);
if (thresholds.mode === ThresholdsMode.Percentage) {
const { min, max } = getFieldConfigWithMinMax(field);
@@ -403,7 +402,7 @@ export function mergeThresholdValues(field: Field, theme: GrafanaTheme2): Field
},
},
type: FieldType.string,
values: new ArrayVector(vals),
values: vals,
display: (value) => ({
text: String(value),
color: textToColor.get(String(value)),
@@ -571,7 +570,7 @@ export function getFieldLegendItem(fields: Field[], theme: GrafanaTheme2): VizLe
let stateColors: Map<string, string | undefined> = new Map();
fields.forEach((field) => {
field.values.toArray().forEach((v) => {
field.values.forEach((v) => {
let state = field.display!(v);
if (state.color) {
stateColors.set(state.text, state.color!);