|
1 | 1 | import React, { useCallback } from 'react'; |
2 | | -import { DataSourceHttpSettings, Input, InlineField, FieldSet } from '@grafana/ui'; |
3 | | -import { DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data'; |
4 | | -import { QuickwitOptions } from '../quickwit'; |
| 2 | +import { DataSourceHttpSettings, Input, InlineField, FieldSet, RadioButtonGroup } from '@grafana/ui'; |
| 3 | +import { DataSourcePluginOptionsEditorProps, DataSourceSettings, SelectableValue } from '@grafana/data'; |
| 4 | +import { FilterAutocompleteChainMode, QuickwitOptions } from '../quickwit'; |
5 | 5 | import { coerceOptions } from './utils'; |
6 | 6 | import { Divider } from '../components/Divider'; |
7 | 7 | import { DataLinks } from './DataLinks'; |
8 | 8 | import _ from 'lodash'; |
9 | 9 |
|
10 | 10 | interface Props extends DataSourcePluginOptionsEditorProps<QuickwitOptions> {} |
11 | 11 |
|
| 12 | +const filterChainModeOptions: Array<SelectableValue<FilterAutocompleteChainMode>> = [ |
| 13 | + { label: 'No chain', value: 'none' }, |
| 14 | + { label: 'Sample', value: 'sample' }, |
| 15 | + { label: 'Full', value: 'full' }, |
| 16 | +]; |
| 17 | + |
12 | 18 | export const ConfigEditor = (props: Props) => { |
13 | 19 | const { options: originalOptions, onOptionsChange } = props; |
14 | 20 | const options = coerceOptions(originalOptions); |
@@ -103,6 +109,47 @@ export const QuickwitDetails = ({ value, onChange }: DetailsProps) => { |
103 | 109 | width={40} |
104 | 110 | /> |
105 | 111 | </InlineField> |
| 112 | + <InlineField |
| 113 | + label="Filter autocomplete limit" |
| 114 | + labelWidth={26} |
| 115 | + tooltip="Maximum number of values returned for filter autocomplete. Use 0 for no terms limit." |
| 116 | + > |
| 117 | + <Input |
| 118 | + id="quickwit_filter_autocomplete_limit" |
| 119 | + type="number" |
| 120 | + min={0} |
| 121 | + value={value.jsonData.filterAutocompleteLimit} |
| 122 | + onChange={(event) => |
| 123 | + onChange({ |
| 124 | + ...value, |
| 125 | + jsonData: { ...value.jsonData, filterAutocompleteLimit: event.currentTarget.value }, |
| 126 | + }) |
| 127 | + } |
| 128 | + placeholder="1000" |
| 129 | + width={40} |
| 130 | + /> |
| 131 | + </InlineField> |
| 132 | + <InlineField |
| 133 | + label="Filter chain mode" |
| 134 | + labelWidth={26} |
| 135 | + tooltip="Controls whether earlier filters narrow later autocomplete suggestions. Sample is fast and approximate for field names; Full scans all matching documents and can be slower." |
| 136 | + > |
| 137 | + <RadioButtonGroup |
| 138 | + id="quickwit_filter_autocomplete_chains" |
| 139 | + options={filterChainModeOptions} |
| 140 | + value={value.jsonData.filterAutocompleteChainMode} |
| 141 | + onChange={(mode) => |
| 142 | + onChange({ |
| 143 | + ...value, |
| 144 | + jsonData: { |
| 145 | + ...value.jsonData, |
| 146 | + filterAutocompleteChainMode: mode, |
| 147 | + filterAutocompleteUseFilterChains: mode !== 'none', |
| 148 | + }, |
| 149 | + }) |
| 150 | + } |
| 151 | + /> |
| 152 | + </InlineField> |
106 | 153 | </FieldSet> |
107 | 154 | </div> |
108 | 155 | </> |
|
0 commit comments