[v10.0.x] Canvas: Fix field not found (#68503)

Canvas: Fix field not found (#68415)

(cherry picked from commit 92d865ccce)

Co-authored-by: Adela Almasan <88068998+adela-almasan@users.noreply.github.com>
This commit is contained in:
Grot (@grafanabot)
2023-05-16 01:41:38 +03:00
committed by GitHub
co-authored by Adela Almasan
parent 9d162ef3f6
commit dd27c4e854
2 changed files with 12 additions and 4 deletions
@@ -31,7 +31,10 @@ export function frameHasName(name: string | undefined, names: FrameFieldsDisplay
/** /**
* Returns the distinct names in a set of frames * Returns the distinct names in a set of frames
*/ */
function getFrameFieldsDisplayNames(data: DataFrame[], filter?: (field: Field) => boolean): FrameFieldsDisplayNames { export function getFrameFieldsDisplayNames(
data: DataFrame[],
filter?: (field: Field) => boolean
): FrameFieldsDisplayNames {
const names: FrameFieldsDisplayNames = { const names: FrameFieldsDisplayNames = {
display: new Set<string>(), display: new Set<string>(),
raw: new Set<string>(), raw: new Set<string>(),
@@ -7,11 +7,12 @@ import { DataFrame, FieldNamePickerConfigSettings, GrafanaTheme2, StandardEditor
import { TextDimensionMode } from '@grafana/schema'; import { TextDimensionMode } from '@grafana/schema';
import { usePanelContext, useStyles2 } from '@grafana/ui'; import { usePanelContext, useStyles2 } from '@grafana/ui';
import { FieldNamePicker } from '@grafana/ui/src/components/MatchersUI/FieldNamePicker'; import { FieldNamePicker } from '@grafana/ui/src/components/MatchersUI/FieldNamePicker';
import { frameHasName, getFrameFieldsDisplayNames } from '@grafana/ui/src/components/MatchersUI/utils';
import { DimensionContext } from 'app/features/dimensions/context'; import { DimensionContext } from 'app/features/dimensions/context';
import { ColorDimensionEditor } from 'app/features/dimensions/editors/ColorDimensionEditor'; import { ColorDimensionEditor } from 'app/features/dimensions/editors/ColorDimensionEditor';
import { TextDimensionEditor } from 'app/features/dimensions/editors/TextDimensionEditor'; import { TextDimensionEditor } from 'app/features/dimensions/editors/TextDimensionEditor';
import { getDataLinks } from 'app/plugins/panel/canvas/utils';
import { getDataLinks } from '../../../plugins/panel/canvas/utils';
import { CanvasElementItem, CanvasElementProps, defaultBgColor, defaultTextColor } from '../element'; import { CanvasElementItem, CanvasElementProps, defaultBgColor, defaultTextColor } from '../element';
import { ElementState } from '../runtime/element'; import { ElementState } from '../runtime/element';
import { Align, TextConfig, TextData, VAlign } from '../types'; import { Align, TextConfig, TextData, VAlign } from '../types';
@@ -37,12 +38,16 @@ const MetricValueDisplay = (props: CanvasElementProps<TextConfig, TextData>) =>
return 'Field not found'; return 'Field not found';
} }
if (panelData && config.text?.field && !data?.text) {
return 'No data';
}
return data?.text ? data.text : 'Double click to set field'; return data?.text ? data.text : 'Double click to set field';
}; };
const fieldNotFound = () => { const fieldNotFound = () => {
const field = panelData.filter((series) => series.fields.find((field) => field.name === config.text?.field)); const fieldNames = getFrameFieldsDisplayNames(panelData);
return !field.length; return !frameHasName(config.text?.field, fieldNames);
}; };
if (isEditMode && isSelected) { if (isEditMode && isSelected) {