@@ -12,6 +12,7 @@ import {useAutocompleteData} from './hooks/useAutocompletionData';
12
12
import { initializeQueryDefaults , initializeQueryDefaultsForVariables } from './helpers/initializeQueryDefaults' ;
13
13
import './QueryEditor.css' ;
14
14
import { getAdhocFilters } from './helpers/getAdHocFilters' ;
15
+ import { detectVariableMacroIntersections , createVariableMacroConflictWarning } from './helpers/detectVariableMacroIntersections' ;
15
16
16
17
export function QueryEditor ( props : QueryEditorProps < CHDataSource , CHQuery , CHDataSourceOptions > ) : any {
17
18
const { datasource, query, onChange, onRunQuery, data } = props ;
@@ -41,6 +42,10 @@ export function QueryEditor(props: QueryEditorProps<CHDataSource, CHQuery, CHDat
41
42
const adHocFiltersKey = adHocFilters . map ( ( { key, operator, value } ) => `${ key } ${ operator } ${ value } ` ) . join ( ',' ) ;
42
43
const areAdHocFiltersAvailable = ! ! adHocFilters . length ;
43
44
45
+ // Detect variable/macro name conflicts
46
+ const variableMacroConflicts = detectVariableMacroIntersections ( ) ;
47
+ const conflictWarning = createVariableMacroConflictWarning ( variableMacroConflicts ) ;
48
+
44
49
useEffect ( ( ) => {
45
50
if ( props . app !== CoreApp . Explore ) {
46
51
onChange ( { ...initializedQuery , adHocFilters : adHocFilters } ) ;
@@ -62,6 +67,16 @@ export function QueryEditor(props: QueryEditorProps<CHDataSource, CHQuery, CHDat
62
67
hasAutocompleteError = { hasPermissionError }
63
68
/>
64
69
{ error ? < Alert title = { error } elevated style = { { marginTop : '5px' , marginBottom : '5px' } } /> : null }
70
+ { conflictWarning ? (
71
+ < Alert
72
+ title = "Variable/Macro Name Conflict Warning"
73
+ severity = "warning"
74
+ elevated
75
+ style = { { marginTop : '5px' , marginBottom : '5px' } }
76
+ >
77
+ { conflictWarning }
78
+ </ Alert >
79
+ ) : null }
65
80
{ editorMode === EditorMode . Builder && (
66
81
< QueryBuilder
67
82
query = { initializedQuery }
@@ -122,6 +137,10 @@ export function QueryEditorVariable(props: QueryEditorProps<CHDataSource, CHQuer
122
137
const adHocFiltersKey = adHocFilters . map ( ( { key, operator, value } ) => `${ key } ${ operator } ${ value } ` ) . join ( ',' ) ;
123
138
const areAdHocFiltersAvailable = ! ! adHocFilters . length ;
124
139
140
+ // Detect variable/macro name conflicts
141
+ const variableMacroConflicts = detectVariableMacroIntersections ( ) ;
142
+ const conflictWarning = createVariableMacroConflictWarning ( variableMacroConflicts ) ;
143
+
125
144
useEffect ( ( ) => {
126
145
if ( props . app !== CoreApp . Explore ) {
127
146
onChange ( { ...initializedQuery , adHocFilters : adHocFilters } ) ;
@@ -142,6 +161,16 @@ export function QueryEditorVariable(props: QueryEditorProps<CHDataSource, CHQuer
142
161
hasAutocompleteError = { false }
143
162
/>
144
163
{ error ? < Alert title = { error } elevated style = { { marginTop : '5px' , marginBottom : '5px' } } /> : null }
164
+ { conflictWarning ? (
165
+ < Alert
166
+ title = "Variable/Macro Name Conflict Warning"
167
+ severity = "warning"
168
+ elevated
169
+ style = { { marginTop : '5px' , marginBottom : '5px' } }
170
+ >
171
+ { conflictWarning }
172
+ </ Alert >
173
+ ) : null }
145
174
{ editorMode === EditorMode . Builder && (
146
175
< QueryBuilder
147
176
query = { initializedQuery }
0 commit comments