Canvas: Update metric value text for no data (#65372)

This commit is contained in:
Adela Almasan 2023-03-27 12:26:34 -05:00 committed by GitHub
parent f43ef18732
commit a8adfe83b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -22,20 +22,36 @@ const dummyFieldSettings: StandardEditorsRegistryItem<string, FieldNamePickerCon
} as StandardEditorsRegistryItem<string, FieldNamePickerConfigSettings>;
const MetricValueDisplay = (props: CanvasElementProps<TextConfig, TextData>) => {
const { data, isSelected } = props;
const { data, isSelected, config } = props;
const styles = useStyles2(getStyles(data));
const context = usePanelContext();
const scene = context.instanceState?.scene;
let panelData: DataFrame[];
panelData = context.instanceState?.scene?.data.series;
const isEditMode = useObservable<boolean>(scene?.editModeEnabled ?? of(false));
const getDisplayValue = () => {
if (panelData && config.text?.field && fieldNotFound()) {
return 'Field not found';
}
return data?.text ? data.text : 'Double click to set field';
};
const fieldNotFound = () => {
const field = panelData.filter((series) => series.fields.find((field) => field.name === config.text?.field));
return !field.length;
};
if (isEditMode && isSelected) {
return <MetricValueEdit {...props} />;
}
return (
<div className={styles.container}>
<span className={styles.span}>{data?.text ? data.text : 'Double click to set field'}</span>
<span className={styles.span}>{getDisplayValue()}</span>
</div>
);
};
@ -48,6 +64,7 @@ const MetricValueEdit = (props: CanvasElementProps<TextConfig, TextData>) => {
const onFieldChange = useCallback(
(field) => {
console.log('onfieldchange', field);
let selectedElement: ElementState;
selectedElement = context.instanceState?.selected[0];
if (selectedElement) {