From 916f152a6f10ab09fb717ec14718b9c2eef5551d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 16 Feb 2022 08:05:16 +0100 Subject: [PATCH] Prometheus: Fixes issue adding rest params (#45364) * Prometheus: Fixing issue adding rest param and adding test * Rebuild when expr changes from outside --- .../components/LabelParamEditor.tsx | 11 ++- .../components/PromQueryBuilder.test.tsx | 7 +- .../PromQueryBuilderContainer.test.tsx | 68 ++++++++++++------- .../components/PromQueryBuilderContainer.tsx | 25 +++++-- .../components/PromQueryBuilderContext.tsx | 12 ---- .../querybuilder/shared/OperationEditor.tsx | 21 ++++-- .../shared/OperationParamEditor.tsx | 11 ++- .../querybuilder/shared/operationUtils.ts | 4 ++ .../prometheus/querybuilder/shared/types.ts | 2 + 9 files changed, 110 insertions(+), 51 deletions(-) delete mode 100644 public/app/plugins/datasource/prometheus/querybuilder/components/PromQueryBuilderContext.tsx diff --git a/public/app/plugins/datasource/prometheus/querybuilder/components/LabelParamEditor.tsx b/public/app/plugins/datasource/prometheus/querybuilder/components/LabelParamEditor.tsx index 51a3bde9d59..e2be9939a7e 100644 --- a/public/app/plugins/datasource/prometheus/querybuilder/components/LabelParamEditor.tsx +++ b/public/app/plugins/datasource/prometheus/querybuilder/components/LabelParamEditor.tsx @@ -3,10 +3,18 @@ import { Select } from '@grafana/ui'; import React, { useState } from 'react'; import { PrometheusDatasource } from '../../datasource'; import { promQueryModeller } from '../PromQueryModeller'; +import { getOperationParamId } from '../shared/operationUtils'; import { QueryBuilderOperationParamEditorProps } from '../shared/types'; import { PromVisualQuery } from '../types'; -export function LabelParamEditor({ onChange, index, value, query, datasource }: QueryBuilderOperationParamEditorProps) { +export function LabelParamEditor({ + onChange, + index, + operationIndex, + value, + query, + datasource, +}: QueryBuilderOperationParamEditorProps) { const [state, setState] = useState<{ options?: Array>; isLoading?: boolean; @@ -14,6 +22,7 @@ export function LabelParamEditor({ onChange, index, value, query, datasource }: return ( { if (evt.key === 'Enter') { @@ -36,7 +38,13 @@ function SimpleInputParamEditor(props: QueryBuilderOperationParamEditorProps) { ); } -function SelectInputParamEditor({ paramDef, value, index, onChange }: QueryBuilderOperationParamEditorProps) { +function SelectInputParamEditor({ + paramDef, + value, + index, + operationIndex, + onChange, +}: QueryBuilderOperationParamEditorProps) { const selectOptions = paramDef.options!.map((option) => ({ label: option as string, value: option as string, @@ -44,6 +52,7 @@ function SelectInputParamEditor({ paramDef, value, index, onChange }: QueryBuild return (