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 9946a487a56..c6125673d38 100644 --- a/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx @@ -136,6 +136,9 @@ export const QueryWrapper = ({ } const showVizualisation = data.state !== LoadingState.NotStarted; + // ⚠️ 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 ( @@ -155,7 +158,7 @@ export const QueryWrapper = ({ onRemoveQuery={onRemoveQuery} onAddQuery={() => onDuplicateQuery(cloneDeep(query))} onRunQuery={onRunQueries} - queries={queries} + queries={editorQueries} renderHeaderExtras={() => } app={CoreApp.UnifiedAlerting} hideDisableQuery={true} diff --git a/public/app/plugins/datasource/graphite/state/context.tsx b/public/app/plugins/datasource/graphite/state/context.tsx index cac739a1251..ba48d3a759d 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; }