diff --git a/packages/grafana-data/src/dataframe/processDataFrame.ts b/packages/grafana-data/src/dataframe/processDataFrame.ts index f0fee32b9fe..d1e10576b54 100644 --- a/packages/grafana-data/src/dataframe/processDataFrame.ts +++ b/packages/grafana-data/src/dataframe/processDataFrame.ts @@ -32,7 +32,7 @@ function convertTableToDataFrame(table: TableData): DataFrame { // TODO: should be Column but type does not exists there so not sure whats up here. const { text, type, ...disp } = c as any; return { - name: text, // rename 'text' to the 'name' field + name: text?.length ? text : c, // rename 'text' to the 'name' field config: (disp || {}) as FieldConfig, values: new ArrayVector(), type: type && Object.values(FieldType).includes(type as FieldType) ? (type as FieldType) : FieldType.other, diff --git a/packages/grafana-data/src/transformations/transformers/ids.ts b/packages/grafana-data/src/transformations/transformers/ids.ts index b2aafaa5cfe..6652199abb6 100644 --- a/packages/grafana-data/src/transformations/transformers/ids.ts +++ b/packages/grafana-data/src/transformations/transformers/ids.ts @@ -28,4 +28,5 @@ export enum DataTransformerID { prepareTimeSeries = 'prepareTimeSeries', convertFieldType = 'convertFieldType', fieldLookup = 'fieldLookup', + extractFields = 'extractFields', } diff --git a/public/app/core/components/TransformersUI/extractFields/ExtractFieldsTransformerEditor.tsx b/public/app/core/components/TransformersUI/extractFields/ExtractFieldsTransformerEditor.tsx new file mode 100644 index 00000000000..d7a868b7c2a --- /dev/null +++ b/public/app/core/components/TransformersUI/extractFields/ExtractFieldsTransformerEditor.tsx @@ -0,0 +1,94 @@ +import React from 'react'; +import { + DataTransformerID, + FieldNamePickerConfigSettings, + PluginState, + SelectableValue, + StandardEditorsRegistryItem, + TransformerRegistryItem, + TransformerUIProps, +} from '@grafana/data'; + +import { InlineField, InlineFieldRow, InlineSwitch, Select } from '@grafana/ui'; +import { FieldNamePicker } from '@grafana/ui/src/components/MatchersUI/FieldNamePicker'; +import { ExtractFieldsOptions, extractFieldsTransformer } from './extractFields'; +import { FieldExtractorID, fieldExtractors } from './fieldExtractors'; + +const fieldNamePickerSettings: StandardEditorsRegistryItem = { + settings: { + width: 30, + placeholderText: 'Select field', + }, + name: '', + id: '', + editor: () => null, +}; + +export const extractFieldsTransformerEditor: React.FC> = ({ + input, + options, + onChange, +}) => { + const onPickSourceField = (source?: string) => { + onChange({ + ...options, + source, + }); + }; + + const onFormatChange = (format?: SelectableValue) => { + onChange({ + ...options, + format: format?.value, + }); + }; + + const onToggleReplace = () => { + onChange({ + ...options, + replace: !options.replace, + }); + }; + + const format = fieldExtractors.selectOptions(options.format ? [options.format] : undefined); + + return ( +
+ + + + + + + +