From e17c2f1cb510a67206d2bc7bb8ab2389da10692a Mon Sep 17 00:00:00 2001 From: Hamas Shafiq Date: Thu, 1 Sep 2022 22:49:27 +0100 Subject: [PATCH] Tempo: Add an options component under the TraceQL query field (#54435) --- .../datasource/tempo/traceql/QueryEditor.tsx | 25 +++++++++--- .../traceql/TempoQueryBuilderOptions.tsx | 39 +++++++++++++++++++ 2 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 public/app/plugins/datasource/tempo/traceql/TempoQueryBuilderOptions.tsx diff --git a/public/app/plugins/datasource/tempo/traceql/QueryEditor.tsx b/public/app/plugins/datasource/tempo/traceql/QueryEditor.tsx index 054502cc9d6..1af0c990a06 100644 --- a/public/app/plugins/datasource/tempo/traceql/QueryEditor.tsx +++ b/public/app/plugins/datasource/tempo/traceql/QueryEditor.tsx @@ -1,25 +1,38 @@ +import { css } from '@emotion/css'; import { defaults } from 'lodash'; import React from 'react'; import { QueryEditorProps } from '@grafana/data'; +import { useStyles2 } from '@grafana/ui'; import { TempoDatasource, TempoQuery } from '../datasource'; import { defaultQuery, MyDataSourceOptions } from '../types'; +import { TempoQueryBuilderOptions } from './TempoQueryBuilderOptions'; import { TraceQLEditor } from './TraceQLEditor'; type Props = QueryEditorProps; export function QueryEditor(props: Props) { - function onEditorChange(value: string) { - props.onChange({ ...props.query, query: value }); - } + const styles = useStyles2(getStyles); + const query = defaults(props.query, defaultQuery); - let query = defaults(props.query, defaultQuery); + const onEditorChange = (value: string) => { + props.onChange({ ...query, query: value }); + }; return ( -
+ <> -
+
+ +
+ ); } + +const getStyles = () => ({ + optionsContainer: css` + margin-top: 10px; + `, +}); diff --git a/public/app/plugins/datasource/tempo/traceql/TempoQueryBuilderOptions.tsx b/public/app/plugins/datasource/tempo/traceql/TempoQueryBuilderOptions.tsx new file mode 100644 index 00000000000..3d2eaa11b35 --- /dev/null +++ b/public/app/plugins/datasource/tempo/traceql/TempoQueryBuilderOptions.tsx @@ -0,0 +1,39 @@ +import React from 'react'; + +import { AutoSizeInput, EditorField, EditorRow } from '@grafana/ui'; +import { QueryOptionGroup } from 'app/plugins/datasource/prometheus/querybuilder/shared/QueryOptionGroup'; + +import { TempoQuery } from '../datasource'; + +interface Props { + onChange: (value: TempoQuery) => void; + query: Partial & TempoQuery; +} + +export const TempoQueryBuilderOptions = React.memo(({ onChange, query }) => { + const onLimitChange = (e: React.FormEvent) => { + onChange({ ...query, limit: parseInt(e.currentTarget.value, 10) }); + }; + + return ( + <> + + + + + + + + + ); +}); + +TempoQueryBuilderOptions.displayName = 'TempoQueryBuilderOptions';