mirror of
https://github.com/grafana/grafana.git
synced 2026-09-05 04:40:13 -05:00
FieldValues: Use simple array in panel visualizations (#66706)
Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
This commit is contained in:
co-authored by
Leon Sorokin
parent
50cb4f8998
commit
09f03e92bf
@@ -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!);
|
||||
|
||||
Reference in New Issue
Block a user