You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

59 lines
1.6 KiB

import { FieldNamePicker } from '../../grafana/MatchersUI/FieldNamePicker';
import { isNumber } from '../../utils';
import { StandardEditorProps } from '@grafana/data';
import { HorizontalGroup, InlineField, InlineSwitch, Input } from '@grafana/ui';
import React from 'react';
import * as _ from 'lodash';
type UseMetricConfig = {
useMetric: boolean;
value?: number;
metricName?: string;
};
const fieldNamePickerSettings = {
settings: { width: 24 },
} as any;
export function UseMetricEditor({ onChange, value, context }: StandardEditorProps<UseMetricConfig>) {
let config: UseMetricConfig = value;
const onFieldChange = (field: keyof UseMetricConfig, value: any) => {
// @ts-ignore
config[field] = value;
onChange(config);
};
return (
<HorizontalGroup>
<InlineField label="Use metric">
<InlineSwitch
value={config?.useMetric}
onChange={(evt) => onFieldChange('useMetric', evt.currentTarget.checked)}
/>
</InlineField>
<InlineField>
{config?.useMetric ? (
<FieldNamePicker
context={context}
value={config?.metricName as string}
onChange={(newVal: any) => onFieldChange('metricName', newVal)}
item={fieldNamePickerSettings}
/>
) : (
<Input
placeholder="value"
value={config?.value}
width={24}
onChange={(evt) => onFieldChange('value', isNumber(evt.currentTarget.value) ? +evt.currentTarget.value : undefined)}
/>
)}
</InlineField>
</HorizontalGroup>
);
}