diff --git a/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx b/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx index 37154731ce3..b216e254c03 100644 --- a/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx @@ -145,6 +145,10 @@ export const QueryWrapper: FC = ({ } } + // ⚠️ the query editors want the entire array of queries passed as "DataQuery" NOT "AlertQuery" + // TypeScript isn't complaining here because the interfaces just happen to be compatible + const editorQueries = cloneDeep(queries.map((query) => query.model)); + return (
@@ -160,7 +164,7 @@ export const QueryWrapper: FC = ({ onRemoveQuery={onRemoveQuery} onAddQuery={() => onDuplicateQuery(cloneDeep(query))} onRunQuery={onRunQueries} - queries={queries} + queries={editorQueries} renderHeaderExtras={() => } app={CoreApp.UnifiedAlerting} visualization={ diff --git a/public/app/plugins/datasource/graphite/state/context.tsx b/public/app/plugins/datasource/graphite/state/context.tsx index 2565431e5bc..d6f6ea5a49a 100644 --- a/public/app/plugins/datasource/graphite/state/context.tsx +++ b/public/app/plugins/datasource/graphite/state/context.tsx @@ -76,7 +76,7 @@ export const GraphiteQueryEditorContext = ({ () => { if (needsRefresh && state) { setNeedsRefresh(false); - onChange({ ...query, target: state.target.target }); + onChange({ ...query, target: state.target.target, targetFull: state.target.targetFull }); onRunQuery(); } }, @@ -92,8 +92,8 @@ export const GraphiteQueryEditorContext = ({ datasource: datasource, range: range, templateSrv: getTemplateSrv(), - // list of queries is passed only when the editor is in Dashboards. This is to allow interpolation - // of sub-queries which are stored in "targetFull" property used by alerting in the backend. + // list of queries is passed only when the editor is in Dashboards or Alerting. This is to allow interpolation + // of sub-queries which are stored in "targetFull" property. This is used by alerting in the backend. queries: queries || [], refresh: () => { // do not run onChange/onRunQuery straight away to ensure the internal state gets updated first diff --git a/public/app/plugins/datasource/graphite/types.ts b/public/app/plugins/datasource/graphite/types.ts index 0bdd7039ebc..fb2bbe63639 100644 --- a/public/app/plugins/datasource/graphite/types.ts +++ b/public/app/plugins/datasource/graphite/types.ts @@ -14,6 +14,7 @@ export interface GraphiteQuery extends DataQuery { queryType?: string; textEditor?: boolean; target?: string; + targetFull?: string; tags?: string[]; fromAnnotations?: boolean; }