From 663f3fcd2ac12d0180ac3e7b852e653d9c58931d Mon Sep 17 00:00:00 2001 From: Sven Grossmann Date: Wed, 6 Jul 2022 16:52:58 +0200 Subject: [PATCH] Loki: Fix error when changing operations with different parameters (#51779) * copy defaultParams when changing an operation * add type and name comparison * removed name check --- .../querybuilder/shared/OperationHeader.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/public/app/plugins/datasource/prometheus/querybuilder/shared/OperationHeader.tsx b/public/app/plugins/datasource/prometheus/querybuilder/shared/OperationHeader.tsx index 7ca2d4630d4..f6acf54caae 100644 --- a/public/app/plugins/datasource/prometheus/querybuilder/shared/OperationHeader.tsx +++ b/public/app/plugins/datasource/prometheus/querybuilder/shared/OperationHeader.tsx @@ -79,7 +79,16 @@ export const OperationHeader = React.memo( if (value.value) { // Operation should exist if it is selectable const newDef = queryModeller.getOperationDef(value.value.id)!; - let changedOp = { ...operation, id: value.value.id }; + + // copy default params, and override with all current params + const newParams = [...newDef.defaultParams]; + for (let i = 0; i < Math.min(operation.params.length, newParams.length); i++) { + if (newDef.params[i].type === def.params[i].type) { + newParams[i] = operation.params[i]; + } + } + + const changedOp = { ...operation, params: newParams, id: value.value.id }; onChange(index, def.changeTypeHandler ? def.changeTypeHandler(changedOp, newDef) : changedOp); } }}