3
0
mirror of https://github.com/grafana/grafana.git synced 2025-02-25 18:55:37 -06:00
grafana/public/app/plugins/datasource/opentsdb/components/OpenTsdbDetails.tsx
Itamar Turner-Trauring 70e38ec352 OpenTSDB: Adding lookup limit to OpenTSDB datasource settings ()
* feat: adding lookup limit to OpenTSDB settings

Adding lookup to OpenTSDB datasource settings and using it in the datasource for tag value lookup and suggest

* Document the change.

* feat: UI for configuring OpenTSDB lookup limit.

* Apply prettier.

* Fix compilation error.
2019-12-12 09:02:50 +01:00

81 lines
2.2 KiB
TypeScript

import React, { SyntheticEvent } from 'react';
import { FormLabel, Select, Input } from '@grafana/ui';
import { DataSourceSettings, SelectableValue } from '@grafana/data';
import { OpenTsdbOptions } from '../types';
const tsdbVersions = [
{ label: '<=2.1', value: 1 },
{ label: '==2.2', value: 2 },
{ label: '==2.3', value: 3 },
];
const tsdbResolutions = [
{ label: 'second', value: 1 },
{ label: 'millisecond', value: 2 },
];
interface Props {
value: DataSourceSettings<OpenTsdbOptions>;
onChange: (value: DataSourceSettings<OpenTsdbOptions>) => void;
}
export const OpenTsdbDetails = (props: Props) => {
const { onChange, value } = props;
return (
<>
<h5>OpenTSDB settings</h5>
<div className="gf-form">
<FormLabel width={7}>Version</FormLabel>
<Select
options={tsdbVersions}
value={tsdbVersions.find(version => version.value === value.jsonData.tsdbVersion) ?? tsdbVersions[0]}
onChange={onSelectChangeHandler('tsdbVersion', value, onChange)}
/>
</div>
<div className="gf-form">
<FormLabel width={7}>Resolution</FormLabel>
<Select
options={tsdbResolutions}
value={
tsdbResolutions.find(resolution => resolution.value === value.jsonData.tsdbResolution) ?? tsdbResolutions[0]
}
onChange={onSelectChangeHandler('tsdbResolution', value, onChange)}
/>
</div>
<div className="gf-form">
<FormLabel width={7}>Lookup Limit</FormLabel>
<Input
type="number"
value={value.jsonData.lookupLimit ?? 1000}
onChange={onInputChangeHandler('lookupLimit', value, onChange)}
/>
</div>
</>
);
};
const onSelectChangeHandler = (key: keyof OpenTsdbOptions, value: Props['value'], onChange: Props['onChange']) => (
newValue: SelectableValue
) => {
onChange({
...value,
jsonData: {
...value.jsonData,
[key]: newValue.value,
},
});
};
const onInputChangeHandler = (key: keyof OpenTsdbOptions, value: Props['value'], onChange: Props['onChange']) => (
event: SyntheticEvent<HTMLInputElement>
) => {
onChange({
...value,
jsonData: {
...value.jsonData,
[key]: event.currentTarget.value,
},
});
};