diff --git a/packages/grafana-data/src/dataframe/MutableDataFrame.ts b/packages/grafana-data/src/dataframe/MutableDataFrame.ts index 77abfa58204..94c8a599cde 100644 --- a/packages/grafana-data/src/dataframe/MutableDataFrame.ts +++ b/packages/grafana-data/src/dataframe/MutableDataFrame.ts @@ -7,6 +7,7 @@ import { FunctionalVector } from '../vector/FunctionalVector'; import { guessFieldTypeFromValue, guessFieldTypeForField, toDataFrameDTO } from './processDataFrame'; +/** @deprecated */ export type MutableField = Field; type MutableVectorCreator = (buffer?: any[]) => any[]; @@ -65,14 +66,14 @@ export class MutableDataFrame extends FunctionalVector implements Da return this.first.length; } - addFieldFor(value: unknown, name?: string): MutableField { + addFieldFor(value: unknown, name?: string): Field { return this.addField({ name: name || '', // Will be filled in type: guessFieldTypeFromValue(value), }); } - addField(f: Field | FieldDTO, startLength?: number): MutableField { + addField(f: Field | FieldDTO, startLength?: number): Field { let buffer: any[] | undefined = undefined; if (f.values) { @@ -98,7 +99,7 @@ export class MutableDataFrame extends FunctionalVector implements Da name = `Field ${this.fields.length + 1}`; } - const field: MutableField = { + const field: Field = { ...f, name, type, diff --git a/packages/grafana-data/src/transformations/transformers/groupBy.ts b/packages/grafana-data/src/transformations/transformers/groupBy.ts index 03f24ff68b6..5f990c59ec0 100644 --- a/packages/grafana-data/src/transformations/transformers/groupBy.ts +++ b/packages/grafana-data/src/transformations/transformers/groupBy.ts @@ -1,6 +1,5 @@ import { map } from 'rxjs/operators'; -import { MutableField } from '../../dataframe/MutableDataFrame'; import { guessFieldTypeForField } from '../../dataframe/processDataFrame'; import { getFieldDisplayName } from '../../field/fieldState'; import { DataFrame, Field, FieldType } from '../../types/dataFrame'; @@ -63,7 +62,7 @@ export const groupByTransformer: DataTransformerInfo // Group the values by fields and groups so we can get all values for a // group for a given field. - const valuesByGroupKey = new Map>(); + const valuesByGroupKey = new Map>(); for (let rowIndex = 0; rowIndex < frame.length; rowIndex++) { const groupKey = String(groupByFields.map((field) => field.values[rowIndex])); const valuesByField = valuesByGroupKey.get(groupKey) ?? {}; diff --git a/public/app/plugins/datasource/prometheus/result_transformer.ts b/public/app/plugins/datasource/prometheus/result_transformer.ts index 19e63367190..f430483e8c8 100644 --- a/public/app/plugins/datasource/prometheus/result_transformer.ts +++ b/public/app/plugins/datasource/prometheus/result_transformer.ts @@ -15,7 +15,6 @@ import { formatLabels, getDisplayProcessor, Labels, - MutableField, PreferredVisualisationType, ScopedVars, TIME_SERIES_TIME_FIELD_NAME, @@ -208,7 +207,7 @@ export function transformDFToTable(dfs: DataFrame[]): DataFrame[] { const valueText = getValueText(refIds.length, refId); const valueField = getValueField({ data: [], valueName: valueText }); const timeField = getTimeField([]); - const labelFields: MutableField[] = []; + const labelFields: Field[] = []; // Fill labelsFields with labels from dataFrames dataFramesByRefId[refId].forEach((df) => { @@ -329,14 +328,13 @@ export function transform( // Return early if result type is scalar if (prometheusResult.resultType === 'scalar') { - return [ - { - meta: options.meta, - refId: options.refId, - length: 1, - fields: [getTimeField([prometheusResult.result]), getValueField({ data: [prometheusResult.result] })], - }, - ]; + const df: DataFrame = { + meta: options.meta, + refId: options.refId, + length: 1, + fields: [getTimeField([prometheusResult.result]), getValueField({ data: [prometheusResult.result] })], + }; + return [df]; } // Return early again if the format is table, this needs special transformation. @@ -556,7 +554,7 @@ function getLabelValue(metric: PromMetric, label: string): string | number { return ''; } -function getTimeField(data: PromValue[], isMs = false): MutableField { +function getTimeField(data: PromValue[], isMs = false): Field { return { name: TIME_SERIES_TIME_FIELD_NAME, type: FieldType.time, @@ -579,7 +577,7 @@ function getValueField({ parseValue = true, labels, displayNameFromDS, -}: ValueFieldOptions): MutableField { +}: ValueFieldOptions): Field { return { name: valueName, type: FieldType.number, diff --git a/public/app/plugins/panel/datagrid/components/DatagridContextMenu.tsx b/public/app/plugins/panel/datagrid/components/DatagridContextMenu.tsx index 2189a3a1693..648fbd45160 100644 --- a/public/app/plugins/panel/datagrid/components/DatagridContextMenu.tsx +++ b/public/app/plugins/panel/datagrid/components/DatagridContextMenu.tsx @@ -2,7 +2,7 @@ import { GridSelection } from '@glideapps/glide-data-grid'; import { capitalize } from 'lodash'; import React from 'react'; -import { ArrayVector, DataFrame, FieldType } from '@grafana/data'; +import { DataFrame, FieldType } from '@grafana/data'; import { convertFieldType } from '@grafana/data/src/transformations/transformers/convertFieldType'; import { ContextMenu, MenuGroup, MenuItem } from '@grafana/ui'; import { MenuDivider } from '@grafana/ui/src/components/Menu/MenuDivider'; @@ -111,8 +111,7 @@ export const DatagridContextMenu = ({ label="Clear column" onClick={() => { const field = data.fields[column]; - field.values = new ArrayVector(field.values.toArray().map(() => null)); - + field.values = field.values.map(() => null); saveData({ ...data, });