-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConfigEditor.tsx
More file actions
90 lines (82 loc) · 2.87 KB
/
Copy pathConfigEditor.tsx
File metadata and controls
90 lines (82 loc) · 2.87 KB
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import React, { ChangeEvent } from 'react';
import { InlineField, InlineSwitch, Input, SecretInput } from '@grafana/ui';
import { DataSourcePluginOptionsEditorProps } from '@grafana/data';
import { HaystackDataSourceOptions, HaystackSecureJsonData } from '../types';
interface Props extends DataSourcePluginOptionsEditorProps<HaystackDataSourceOptions> {}
export function ConfigEditor(props: Props) {
const { onOptionsChange, options } = props;
const onUrlChange = (event: ChangeEvent<HTMLInputElement>) => {
const jsonData = {
...options.jsonData,
url: event.target.value,
};
onOptionsChange({ ...options, jsonData });
};
const onUsernameChange = (event: ChangeEvent<HTMLInputElement>) => {
const jsonData = {
...options.jsonData,
username: event.target.value,
};
onOptionsChange({ ...options, jsonData });
};
// Secure field (only sent to the backend)
const onPasswordChange = (event: ChangeEvent<HTMLInputElement>) => {
onOptionsChange({
...options,
secureJsonData: {
password: event.target.value,
},
});
};
const onSkipTlsVerifyChange = (event: ChangeEvent<HTMLInputElement>) => {
onOptionsChange({ ...options, jsonData: { ...options.jsonData, skipTlsVerify: event.target.checked } });
};
const onResetPassword = () => {
onOptionsChange({
...options,
secureJsonFields: {
...options.secureJsonFields,
password: false,
},
secureJsonData: {
...options.secureJsonData,
password: '',
},
});
};
const { jsonData, secureJsonFields } = options;
const secureJsonData = (options.secureJsonData || {}) as HaystackSecureJsonData;
return (
<div className="gf-form-group">
<InlineField label="URL" labelWidth={12}>
<Input
onChange={onUrlChange}
value={jsonData.url || ''}
placeholder="e.g. http://mywebsite.com/api/"
width={60}
/>
</InlineField>
<InlineField label="Username" labelWidth={12}>
<Input
onChange={onUsernameChange}
value={jsonData.username || ''}
placeholder="It's a good idea to create a user specifically for this connection"
width={60}
/>
</InlineField>
<InlineField label="Password" labelWidth={12}>
<SecretInput
isConfigured={(secureJsonFields && secureJsonFields.password) as boolean}
value={secureJsonData.password || ''}
placeholder=""
width={60}
onReset={onResetPassword}
onChange={onPasswordChange}
/>
</InlineField>
<InlineField label="Skip TLS Verify" labelWidth={18} tooltip="Skip TLS certificate verification. Use only for development or trusted networks.">
<InlineSwitch value={jsonData.skipTlsVerify || false} onChange={onSkipTlsVerifyChange} />
</InlineField>
</div>
);
}