-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathConfigEditor.tsx
61 lines (57 loc) · 2.04 KB
/
ConfigEditor.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import React, { useCallback } from 'react';
import { DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data';
import { DataSourceOptions } from './types';
import { FieldSet, Form, InlineField, Input } from '@grafana/ui';
interface Props extends DataSourcePluginOptionsEditorProps<DataSourceOptions> {}
export const ConfigEditor = ({ options, onOptionsChange }: Props): JSX.Element => {
const onSettingsChange = useCallback(
(change: Partial<DataSourceSettings<DataSourceOptions>>) => {
onOptionsChange({
...options,
...change,
});
},
[options, onOptionsChange]
);
return (
<div className="gf-form-group">
<Form onSubmit={onOptionsChange}>
{() => (
<>
<FieldSet label="Connection">
<InlineField label="Host" labelWidth={20}>
<Input
value={options.jsonData.host}
onChange={(event) =>
onSettingsChange({ jsonData: { ...options.jsonData, host: event.currentTarget.value } })
}
/>
</InlineField>
<InlineField label="Port" labelWidth={20}>
<Input
type="number"
value={options.jsonData.port}
placeholder="6875"
onChange={(event) =>
onSettingsChange({
jsonData: { ...options.jsonData, port: parseInt(event.currentTarget.value, 10) },
})
}
/>
</InlineField>
<InlineField label="Username" labelWidth={20}>
<Input
value={options.jsonData.username}
placeholder="materialize"
onChange={(event) =>
onSettingsChange({ jsonData: { ...options.jsonData, username: event.currentTarget.value } })
}
/>
</InlineField>
</FieldSet>
</>
)}
</Form>
</div>
);
};