Skip to content

Commit 3c390ab

Browse files
committed
Minor changes
1 parent 4be1c29 commit 3c390ab

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

src/LogContext/components/LogContextUI.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export function LogContextUI(props: LogContextUIProps ){
3434
const {query, parsedQuery, setQuery, setParsedQuery} = builder;
3535
const [canRunQuery, setCanRunQuery] = useState<boolean>(false);
3636
const { origQuery, updateQuery, runContextQuery } = props;
37-
const [fields, autocompleter] = useDatasourceFields(props.datasource);
37+
const {fields, getSuggestions} = useDatasourceFields(props.datasource);
3838

3939
useEffect(()=>{
4040
setQuery(origQuery?.query || '')
@@ -66,7 +66,7 @@ export function LogContextUI(props: LogContextUIProps ){
6666
<LogContextQueryBuilderSidebar {...props} updateQuery={setParsedQuery} searchableFields={fields}/>
6767
<div className={css`width:100%; display:flex; flex-direction:column; gap:0.5rem; min-width:0;`}>
6868
{ActionBar}
69-
<LuceneQueryEditor builder={builder} autocompleter={autocompleter} onChange={builder.setQuery}/>
69+
<LuceneQueryEditor builder={builder} autocompleter={getSuggestions} onChange={builder.setQuery}/>
7070
</div>
7171
</QueryBuilderContext.Provider>
7272
</DatasourceContext.Provider>

src/components/QueryEditor/index.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export const ElasticSearchQueryField = ({ value, onChange }: { value?: string; o
6262
const builder = useQueryBuilder();
6363
const {setQuery} = builder;
6464
const datasource = useDatasource()
65-
const [fields, autocompleter] = useDatasourceFields(datasource);
65+
const { getSuggestions } = useDatasourceFields(datasource);
6666

6767
useEffect(()=>{
6868
setQuery(value || '')
@@ -75,9 +75,7 @@ export const ElasticSearchQueryField = ({ value, onChange }: { value?: string; o
7575

7676
return (
7777
<div className={styles.queryItem}>
78-
<SearchableFieldsContext.Provider value={fields}>
79-
<LuceneQueryEditor placeholder="Enter a lucene query" builder={builder} autocompleter={autocompleter} onChange={onEditorChange}/>
80-
</SearchableFieldsContext.Provider>
78+
<LuceneQueryEditor placeholder="Enter a lucene query" builder={builder} autocompleter={getSuggestions} onChange={onEditorChange}/>
8179
</div>
8280
);
8381
};

src/datasource.utils.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,31 @@
11
import { QuickwitDataSource } from "datasource";
22
import { useState, useEffect, useCallback } from "react";
3+
import{ MetricFindValue } from '@grafana/data';
34

45
/**
56
* Provide suggestions based on datasource fields
67
*/
78

8-
// TODO : improve autocompleter interface
9+
export type Suggestion = {
10+
from: number,
11+
options: Array<{
12+
label: string,
13+
detail?: string,
14+
type?: string,
15+
}>
16+
}
917

10-
export function useDatasourceFields(datasource: QuickwitDataSource): [any[], (word: string) => any] {
11-
const [fields, setFields] = useState<any[]>([]);
18+
export function useDatasourceFields(datasource: QuickwitDataSource) {
19+
const [fields, setFields] = useState<MetricFindValue[]>([]);
1220

1321
useEffect(() => {
1422
if (datasource.getTagKeys) {
1523
datasource.getTagKeys({ searchable: true }).then(setFields);
1624
}
1725
}, [datasource, setFields]);
1826

19-
const getSuggestions = useCallback(async (word: string) => {
20-
let suggestions: { from: number; options: any[]; } = { from: 0, options: [] };
27+
const getSuggestions = useCallback(async (word: string): Promise<Suggestion> => {
28+
let suggestions: Suggestion = { from: 0, options: [] };
2129

2230
const wordIsField = word.match(/([\w\.]+):"?(\S*)/);
2331
if (wordIsField?.length) {
@@ -40,5 +48,6 @@ export function useDatasourceFields(datasource: QuickwitDataSource): [any[], (wo
4048
return suggestions;
4149

4250
}, [datasource, fields]);
43-
return [fields, getSuggestions];
51+
52+
return {fields, getSuggestions}
4453
}

0 commit comments

Comments
 (0)