1
- import React , { useState } from 'react' ;
2
- import { SelectableValue } from '@grafana/data' ;
3
- import { Button , Input , MultiSelect , RadioButtonGroup , Select } from '@grafana/ui' ;
4
- import { Filter , FilterOperator , FullField , NullFilter } from '../../types' ;
1
+ import React , { useState } from 'react' ;
2
+ import { SelectableValue } from '@grafana/data' ;
3
+ import { Button , Input , MultiSelect , RadioButtonGroup , Select } from '@grafana/ui' ;
4
+ import { Filter , FilterOperator , FullField , NullFilter } from '../../types' ;
5
5
import * as utils from './utils' ;
6
- import { selectors } from '../../selectors' ;
7
- import { styles } from '../../styles' ;
8
- import { EditorField , EditorFieldGroup } from '@grafana/experimental ' ;
6
+ import { selectors } from '../../selectors' ;
7
+ import { styles } from '../../styles' ;
8
+ import { EditorField , EditorFieldGroup } from '@grafana/plugin-ui ' ;
9
9
10
10
const boolValues : Array < SelectableValue < boolean > > = [
11
11
{ value : true , label : 'True' } ,
@@ -38,12 +38,12 @@ const filterOperators: Array<SelectableValue<FilterOperator>> = [
38
38
{ value : FilterOperator . OutsideGrafanaTimeRange , label : 'OUTSIDE DASHBOARD TIME RANGE' } ,
39
39
] ;
40
40
const standardTimeOptions : Array < SelectableValue < string > > = [
41
- { value : ' date_trunc(\ 'day\ ', now())' , label : 'TODAY' } ,
42
- { value : ' date_trunc(\ 'day\ ', dateadd(\'d\ ', -1, now()))' , label : 'YESTERDAY' } ,
41
+ { value : " date_trunc('day', now())" , label : 'TODAY' } ,
42
+ { value : " date_trunc('day', dateadd('d ', -1, now()))" , label : 'YESTERDAY' } ,
43
43
{ value : 'now()' , label : 'NOW' } ,
44
- { value : ' date_trunc(\ 'day\ ', dateadd(\'w\ ', -1, now()))' , label : 'WEEK AGO' } ,
45
- { value : ' date_trunc(\ 'day\ ', dateadd(\'M\ ', -1, now()))' , label : 'MONTH AGO' } ,
46
- { value : ' date_trunc(\ 'day\ ', dateadd(\'y\ ', -1, now()))' , label : 'YEAR AGO' } ,
44
+ { value : " date_trunc('day', dateadd('w ', -1, now()))" , label : 'WEEK AGO' } ,
45
+ { value : " date_trunc('day', dateadd('M ', -1, now()))" , label : 'MONTH AGO' } ,
46
+ { value : " date_trunc('day', dateadd('y ', -1, now()))" , label : 'YEAR AGO' } ,
47
47
{ value : 'GRAFANA_START_TIME' , label : 'DASHBOARD START TIME' } ,
48
48
{ value : 'GRAFANA_END_TIME' , label : 'DASHBOARD END TIME' } ,
49
49
] ;
@@ -67,7 +67,9 @@ const FilterValueNumberItem = (props: { value: number; onChange: (value: number)
67
67
type = "number"
68
68
value = { value }
69
69
onChange = { ( e ) => setValue ( e . currentTarget . value . replace ( / [ ^ 0 - 9 , - ] / , '' ) ) }
70
- onBlur = { ( e ) => { props . onChange ( Number ( value ) ) ; } }
70
+ onBlur = { ( e ) => {
71
+ props . onChange ( Number ( value ) ) ;
72
+ } }
71
73
/>
72
74
</ div >
73
75
) ;
@@ -114,13 +116,13 @@ export const FilterValueEditor = (props: {
114
116
} ;
115
117
if ( filter . type === 'picklist' ) {
116
118
return (
117
- < div data-testid = "query-builder-filters-multi-picklist-value-container" >
118
- < MultiSelect
119
- value = { filter . value }
120
- options = { getOptions ( ) }
121
- onChange = { ( e ) => onMultiFilterValueChange ( e . map ( ( v ) => v . value ! ) ) }
122
- />
123
- </ div >
119
+ < div data-testid = "query-builder-filters-multi-picklist-value-container" >
120
+ < MultiSelect
121
+ value = { filter . value }
122
+ options = { getOptions ( ) }
123
+ onChange = { ( e ) => onMultiFilterValueChange ( e . map ( ( v ) => v . value ! ) ) }
124
+ />
125
+ </ div >
124
126
) ;
125
127
}
126
128
return < FilterValueMultiStringItem value = { filter . value } onChange = { onMultiFilterValueChange } /> ;
@@ -134,18 +136,16 @@ export const FilterValueEditor = (props: {
134
136
</ div >
135
137
) ;
136
138
} else if ( utils . isNumberFilter ( filter ) /*&& !utils.isSetFilter(filter)*/ ) {
137
- return < FilterValueNumberItem value = { filter . value }
138
- onChange = { ( value ) => onFilterChange ( { ...filter , value } ) } /> ;
139
+ return < FilterValueNumberItem value = { filter . value } onChange = { ( value ) => onFilterChange ( { ...filter , value } ) } /> ;
139
140
} else if ( utils . isDateFilter ( filter ) ) {
140
141
const onDateFilterValueChange = ( value : string ) => {
141
142
onFilterChange ( { ...filter , value } ) ;
142
143
} ;
143
144
//
144
- return utils . isDateFilterWithOutValue ( filter ) ? null :
145
- (
145
+ return utils . isDateFilterWithOutValue ( filter ) ? null : (
146
146
< div data-testid = "query-builder-filters-date-value-container" >
147
147
< Select
148
- value = { filter . value }
148
+ value = { filter . value }
149
149
onChange = { ( e ) => onDateFilterValueChange ( e . value ! ) }
150
150
allowCustomValue = { true }
151
151
options = { [ ...standardTimeOptions ] }
@@ -162,9 +162,7 @@ export const FilterValueEditor = (props: {
162
162
) {
163
163
return (
164
164
< div data-testid = "query-builder-filters-single-picklist-value-container" >
165
- < Select value = { filter . value }
166
- onChange = { ( e ) => onStringFilterValueChange ( e . value ! ) }
167
- options = { getOptions ( ) } />
165
+ < Select value = { filter . value } onChange = { ( e ) => onStringFilterValueChange ( e . value ! ) } options = { getOptions ( ) } />
168
166
</ div >
169
167
) ;
170
168
}
@@ -204,15 +202,11 @@ export const FilterEditor = (props: {
204
202
return filterOperators . filter ( ( f ) => [ FilterOperator . Equals , FilterOperator . NotEquals ] . includes ( f . value ! ) ) ;
205
203
} else if ( utils . isGeoHashType ( type ) ) {
206
204
return filterOperators . filter ( ( f ) =>
207
- [
208
- FilterOperator . IsNull ,
209
- FilterOperator . IsNotNull ,
210
- FilterOperator . Equals ,
211
- FilterOperator . NotEquals ,
212
- ] . includes ( f . value ! )
205
+ [ FilterOperator . IsNull , FilterOperator . IsNotNull , FilterOperator . Equals , FilterOperator . NotEquals ] . includes (
206
+ f . value !
207
+ )
213
208
) ;
214
- }
215
- else if ( utils . isNumberType ( type ) ) {
209
+ } else if ( utils . isNumberType ( type ) ) {
216
210
let list = [
217
211
FilterOperator . Equals ,
218
212
FilterOperator . NotEquals ,
@@ -221,15 +215,13 @@ export const FilterEditor = (props: {
221
215
FilterOperator . GreaterThan ,
222
216
FilterOperator . GreaterThanOrEqual ,
223
217
FilterOperator . In ,
224
- FilterOperator . NotIn
218
+ FilterOperator . NotIn ,
225
219
] ;
226
- if ( utils . isNullableNumberType ( type ) ) {
220
+ if ( utils . isNullableNumberType ( type ) ) {
227
221
list . push ( FilterOperator . IsNull ) ;
228
222
list . push ( FilterOperator . IsNotNull ) ;
229
223
}
230
- return filterOperators . filter ( ( f ) =>
231
- list . includes ( f . value ! )
232
- ) ;
224
+ return filterOperators . filter ( ( f ) => list . includes ( f . value ! ) ) ;
233
225
} else if ( utils . isDateType ( type ) ) {
234
226
return filterOperators . filter ( ( f ) =>
235
227
[
@@ -268,29 +260,26 @@ export const FilterEditor = (props: {
268
260
) ;
269
261
} else if ( utils . isIPv4Type ( type ) ) {
270
262
return filterOperators . filter ( ( f ) =>
271
- [
272
- FilterOperator . IsNull ,
273
- FilterOperator . IsNotNull ,
274
- FilterOperator . Equals ,
275
- FilterOperator . NotEquals ,
276
- FilterOperator . GreaterThan ,
277
- FilterOperator . GreaterThanOrEqual ,
278
- FilterOperator . LessThan ,
279
- FilterOperator . LessThanOrEqual ,
280
- FilterOperator . ContainedBy ,
281
- FilterOperator . ContainedByOrEqual ,
282
- FilterOperator . In ,
283
- FilterOperator . NotIn ,
284
- ] . includes ( f . value ! )
263
+ [
264
+ FilterOperator . IsNull ,
265
+ FilterOperator . IsNotNull ,
266
+ FilterOperator . Equals ,
267
+ FilterOperator . NotEquals ,
268
+ FilterOperator . GreaterThan ,
269
+ FilterOperator . GreaterThanOrEqual ,
270
+ FilterOperator . LessThan ,
271
+ FilterOperator . LessThanOrEqual ,
272
+ FilterOperator . ContainedBy ,
273
+ FilterOperator . ContainedByOrEqual ,
274
+ FilterOperator . In ,
275
+ FilterOperator . NotIn ,
276
+ ] . includes ( f . value ! )
285
277
) ;
286
278
} else {
287
279
return filterOperators . filter ( ( f ) =>
288
- [
289
- FilterOperator . IsNull ,
290
- FilterOperator . IsNotNull ,
291
- FilterOperator . Equals ,
292
- FilterOperator . NotEquals
293
- ] . includes ( f . value ! )
280
+ [ FilterOperator . IsNull , FilterOperator . IsNotNull , FilterOperator . Equals , FilterOperator . NotEquals ] . includes (
281
+ f . value !
282
+ )
294
283
) ;
295
284
}
296
285
} ;
@@ -337,7 +326,7 @@ export const FilterEditor = (props: {
337
326
type : filterData . type as 'date' ,
338
327
condition : filter . condition || 'AND' ,
339
328
operator : FilterOperator . Equals ,
340
- value : '' , //TODAY
329
+ value : '' , //TODAY
341
330
} ;
342
331
} else {
343
332
newFilter = {
@@ -418,33 +407,33 @@ export const FiltersEditor = (props: {
418
407
return (
419
408
< EditorField tooltip = { tooltip } label = { label } >
420
409
< EditorFieldGroup >
421
- < div style = { { flexDirection : 'column' } } >
410
+ < div style = { { flexDirection : 'column' } } >
422
411
< Button
423
- data-testid = "query-builder-filters-add-button"
424
- icon = "plus-circle"
425
- variant = "secondary"
426
- size = "sm"
427
- className = ' gf-form'
428
- onClick = { addFilter }
412
+ data-testid = "query-builder-filters-add-button"
413
+ icon = "plus-circle"
414
+ variant = "secondary"
415
+ size = "sm"
416
+ className = " gf-form"
417
+ onClick = { addFilter }
429
418
>
430
419
{ AddLabel }
431
420
</ Button >
432
421
433
422
{ filters . map ( ( filter , index ) => {
434
423
return (
435
- < div className = "gf-form" key = { index } >
436
- < FilterEditor fieldsList = { fieldsList } filter = { filter } onFilterChange = { onFilterChange } index = { index } />
437
- < Button
438
- data-testid = "query-builder-filters-remove-button"
439
- icon = "trash-alt"
440
- variant = "destructive"
441
- size = "sm"
442
- className = { styles . Common . smallBtn }
443
- onClick = { ( ) => removeFilter ( index ) }
444
- >
445
- { RemoveLabel }
446
- </ Button >
447
- </ div >
424
+ < div className = "gf-form" key = { index } >
425
+ < FilterEditor fieldsList = { fieldsList } filter = { filter } onFilterChange = { onFilterChange } index = { index } />
426
+ < Button
427
+ data-testid = "query-builder-filters-remove-button"
428
+ icon = "trash-alt"
429
+ variant = "destructive"
430
+ size = "sm"
431
+ className = { styles . Common . smallBtn }
432
+ onClick = { ( ) => removeFilter ( index ) }
433
+ >
434
+ { RemoveLabel }
435
+ </ Button >
436
+ </ div >
448
437
) ;
449
438
} ) }
450
439
</ div >
0 commit comments