FieldValues: Use simple array in transformations and grafana/data (#66702)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
This commit is contained in:
Ryan McKinley
2023-04-17 14:02:51 -07:00
committed by GitHub
co-authored by Leon Sorokin
parent 19ebb079ba
commit 50cb4f8998
55 changed files with 197 additions and 214 deletions
@@ -32,7 +32,7 @@ export class DataFrameView<T = any> extends FunctionalVector<T> {
}
fields[field.name] = field;
const getter = () => field.values.get(this.index);
const getter = () => field.values.get(this.index); // .get() to support all Vector types
if (!(obj as any).hasOwnProperty(field.name)) {
Object.defineProperty(obj, field.name, {
@@ -92,7 +92,7 @@ describe('FieldCache', () => {
it('should get the first field with a duplicate name', () => {
const field = fieldCache.getFieldByName('value');
expect(field!.name).toEqual('value');
expect(field!.values.toArray()).toEqual([1, 2, 3]);
expect(field!.values).toEqual([1, 2, 3]);
});
it('should return index of the field', () => {
@@ -29,11 +29,11 @@ export const getColumnFromDimension = (dimension: Dimension, column: number) =>
};
export const getValueFromDimension = (dimension: Dimension, column: number, row: number) => {
return dimension.columns[column].values.get(row);
return dimension.columns[column].values[row];
};
export const getAllValuesFromDimension = (dimension: Dimension, column: number, row: number) => {
return dimension.columns.map((c) => c.values.get(row));
return dimension.columns.map((c) => c.values[row]);
};
export const getDimensionByName = (dimensions: Dimensions, name: string) => dimensions[name];
@@ -198,7 +198,7 @@ describe('toDataFrame', () => {
},
};
const dataFrame = toDataFrame(msg);
expect(dataFrame.fields.map((f) => ({ [f.name]: f.values.toArray() }))).toMatchInlineSnapshot(`
expect(dataFrame.fields.map((f) => ({ [f.name]: f.values }))).toMatchInlineSnapshot(`
[
{
"First": [
@@ -366,14 +366,14 @@ describe('sorted DataFrame', () => {
it('Should sort numbers', () => {
const sorted = sortDataFrame(frame, 0, true);
expect(sorted.length).toEqual(3);
expect(sorted.fields[0].values.toArray()).toEqual([3, 2, 1]);
expect(sorted.fields[1].values.toArray()).toEqual(['c', 'b', 'a']);
expect(sorted.fields[0].values).toEqual([3, 2, 1]);
expect(sorted.fields[1].values).toEqual(['c', 'b', 'a']);
});
it('Should sort strings', () => {
const sorted = sortDataFrame(frame, 1, true);
expect(sorted.length).toEqual(3);
expect(sorted.fields[0].values.toArray()).toEqual([3, 2, 1]);
expect(sorted.fields[1].values.toArray()).toEqual(['c', 'b', 'a']);
expect(sorted.fields[0].values).toEqual([3, 2, 1]);
expect(sorted.fields[1].values).toEqual(['c', 'b', 'a']);
});
});
@@ -261,7 +261,7 @@ export function guessFieldTypeForField(field: Field): FieldType | undefined {
// 2. Check the first non-null value
for (let i = 0; i < field.values.length; i++) {
const v = field.values.get(i);
const v = field.values[i];
if (v != null) {
return guessFieldTypeFromValue(v);
}
@@ -362,8 +362,8 @@ export const toLegacyResponseData = (frame: DataFrame): TimeSeries | TableData =
// Make sure it is [value,time]
for (let i = 0; i < rowCount; i++) {
rows.push([
valueField.values.get(i), // value
timeField.values.get(i), // time
valueField.values[i], // value
timeField.values[i], // time
]);
}
@@ -381,7 +381,7 @@ export const toLegacyResponseData = (frame: DataFrame): TimeSeries | TableData =
for (let i = 0; i < rowCount; i++) {
const row: any[] = [];
for (let j = 0; j < fields.length; j++) {
row.push(fields[j].values.get(i));
row.push(fields[j].values[i]);
}
rows.push(row);
}
@@ -463,7 +463,7 @@ export function reverseDataFrame(data: DataFrame): DataFrame {
export function getDataFrameRow(data: DataFrame, row: number): any[] {
const values: any[] = [];
for (const field of data.fields) {
values.push(field.values.get(row));
values.push(field.values[row]);
}
return values;
}