From e714c9303e73024dbf4689aa6f44d89654dad248 Mon Sep 17 00:00:00 2001 From: Kyle Cunningham Date: Thu, 2 Nov 2023 10:25:48 -0500 Subject: [PATCH] Timeseries to table transformation: Update Output Changes (#77415) * Break out labels into separate fields * More Updates * Minor test changes * Use 'A' for transformed refId * Make sure tests pass * Add additional test * Prettier * Remove dead comment * Update time field selection options * remove console.log --------- Co-authored-by: Victor Marin --- .../TimeSeriesTableTransformEditor.tsx | 68 ++++---- .../timeSeriesTableTransformer.test.ts | 85 ++++++---- .../timeSeriesTableTransformer.ts | 148 ++++++++++-------- 3 files changed, 171 insertions(+), 130 deletions(-) diff --git a/public/app/features/transformers/timeSeriesTable/TimeSeriesTableTransformEditor.tsx b/public/app/features/transformers/timeSeriesTable/TimeSeriesTableTransformEditor.tsx index 13eefd29ef4..6e996eed2a9 100644 --- a/public/app/features/transformers/timeSeriesTable/TimeSeriesTableTransformEditor.tsx +++ b/public/app/features/transformers/timeSeriesTable/TimeSeriesTableTransformEditor.tsx @@ -7,9 +7,10 @@ import { ReducerID, isReducerID, SelectableValue, - getFieldDisplayName, + Field, + FieldType, } from '@grafana/data'; -import { InlineFieldRow, InlineField, StatsPicker, InlineSwitch, Select } from '@grafana/ui'; +import { InlineFieldRow, InlineField, StatsPicker, Select, InlineLabel } from '@grafana/ui'; import { timeSeriesTableTransformer, @@ -22,19 +23,8 @@ export function TimeSeriesTableTransformEditor({ options, onChange, }: TransformerUIProps) { - const timeFields: Array> = []; const refIdMap = getRefData(input); - // Retrieve time fields - for (const frame of input) { - for (const field of frame.fields) { - if (field.type === 'time') { - const name = getFieldDisplayName(field, frame, input); - timeFields.push({ label: name, value: name }); - } - } - } - const onSelectTimefield = useCallback( (refId: string, value: SelectableValue) => { const val = value?.value !== undefined ? value.value : ''; @@ -65,32 +55,45 @@ export function TimeSeriesTableTransformEditor({ [onChange, options] ); - const onMergeSeriesToggle = useCallback( - (refId: string) => { - const mergeSeries = options[refId]?.mergeSeries !== undefined ? !options[refId].mergeSeries : false; - onChange({ - ...options, - [refId]: { - ...options[refId], - mergeSeries, - }, - }); - }, - [onChange, options] - ); - let configRows = []; for (const refId of Object.keys(refIdMap)) { + // Get time fields for the current refId + const timeFields: Record> = {}; + const timeValues: Array> = []; + + // Get a map of time fields, we map + // by field name and assume that time fields + // in the same query with the same name + // are the same + for (const frame of input) { + if (frame.refId === refId) { + for (const field of frame.fields) { + if (field.type === 'time') { + timeFields[field.name] = field; + } + } + } + } + + for (const timeField of Object.values(timeFields)) { + const { name } = timeField; + timeValues.push({ label: name, value: name }); + } + configRows.push( + + {`Trend #${refId}`} +