mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 16:45:43 -06:00
* Geomap: add initial text labels layer * add fontsize to text labels layer * refactor feature styles in marker and text layers * hide template and pick default field Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
108 lines
3.2 KiB
TypeScript
108 lines
3.2 KiB
TypeScript
import React, { FC, useCallback } from 'react';
|
|
import {
|
|
FieldNamePickerConfigSettings,
|
|
StandardEditorProps,
|
|
StandardEditorsRegistryItem,
|
|
StringFieldConfigSettings,
|
|
} from '@grafana/data';
|
|
import { TextDimensionConfig, TextDimensionMode, TextDimensionOptions } from '../types';
|
|
import { InlineField, InlineFieldRow, RadioButtonGroup, StringValueEditor } from '@grafana/ui';
|
|
import { FieldNamePicker } from '../../../../../packages/grafana-ui/src/components/MatchersUI/FieldNamePicker';
|
|
|
|
const textOptions = [
|
|
{ label: 'Fixed', value: TextDimensionMode.Fixed, description: 'Fixed value' },
|
|
{ label: 'Field', value: TextDimensionMode.Field, description: 'Display field value' },
|
|
// { label: 'Template', value: TextDimensionMode.Template, description: 'use template text' },
|
|
];
|
|
|
|
const dummyFieldSettings: StandardEditorsRegistryItem<string, FieldNamePickerConfigSettings> = {
|
|
settings: {},
|
|
} as any;
|
|
|
|
const dummyStringSettings: StandardEditorsRegistryItem<string, StringFieldConfigSettings> = {
|
|
settings: {},
|
|
} as any;
|
|
|
|
export const TextDimensionEditor: FC<StandardEditorProps<TextDimensionConfig, TextDimensionOptions, any>> = (props) => {
|
|
const { value, context, onChange } = props;
|
|
const labelWidth = 9;
|
|
|
|
const onModeChange = useCallback(
|
|
(mode) => {
|
|
onChange({
|
|
...value,
|
|
mode,
|
|
});
|
|
},
|
|
[onChange, value]
|
|
);
|
|
|
|
const onFieldChange = useCallback(
|
|
(field) => {
|
|
onChange({
|
|
...value,
|
|
field,
|
|
});
|
|
},
|
|
[onChange, value]
|
|
);
|
|
|
|
const onFixedChange = useCallback(
|
|
(fixed) => {
|
|
onChange({
|
|
...value,
|
|
fixed,
|
|
});
|
|
},
|
|
[onChange, value]
|
|
);
|
|
|
|
const mode = value?.mode ?? TextDimensionMode.Fixed;
|
|
|
|
return (
|
|
<>
|
|
<InlineFieldRow>
|
|
<InlineField label="Source" labelWidth={labelWidth} grow={true}>
|
|
<RadioButtonGroup value={mode} options={textOptions} onChange={onModeChange} fullWidth />
|
|
</InlineField>
|
|
</InlineFieldRow>
|
|
{mode !== TextDimensionMode.Fixed && (
|
|
<InlineFieldRow>
|
|
<InlineField label="Field" labelWidth={labelWidth} grow={true}>
|
|
<FieldNamePicker
|
|
context={context}
|
|
value={value.field ?? ''}
|
|
onChange={onFieldChange}
|
|
item={dummyFieldSettings}
|
|
/>
|
|
</InlineField>
|
|
</InlineFieldRow>
|
|
)}
|
|
{mode === TextDimensionMode.Fixed && (
|
|
<InlineFieldRow>
|
|
<InlineField label={'Value'} labelWidth={labelWidth} grow={true}>
|
|
<StringValueEditor
|
|
context={context}
|
|
value={value?.fixed}
|
|
onChange={onFixedChange}
|
|
item={dummyStringSettings}
|
|
/>
|
|
</InlineField>
|
|
</InlineFieldRow>
|
|
)}
|
|
{mode === TextDimensionMode.Template && (
|
|
<InlineFieldRow>
|
|
<InlineField label="Template" labelWidth={labelWidth} grow={true}>
|
|
<StringValueEditor // This could be a code editor
|
|
context={context}
|
|
value={value?.fixed}
|
|
onChange={onFixedChange}
|
|
item={dummyStringSettings}
|
|
/>
|
|
</InlineField>
|
|
</InlineFieldRow>
|
|
)}
|
|
</>
|
|
);
|
|
};
|