@@ -18,14 +18,15 @@ import { useGetAggregateValues } from 'hooks/queryBuilder/useGetAggregateValues'
1818import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder' ;
1919import { useGetQueryKeyValueSuggestions } from 'hooks/querySuggestions/useGetQueryKeyValueSuggestions' ;
2020import useDebouncedFn from 'hooks/useDebouncedFunction' ;
21- import { cloneDeep , isArray , isEqual , isFunction } from 'lodash-es' ;
21+ import { cloneDeep , isArray , isFunction } from 'lodash-es' ;
2222import { ChevronDown , ChevronRight } from 'lucide-react' ;
2323import { DataTypes } from 'types/api/queryBuilder/queryAutocompleteResponse' ;
2424import { Query , TagFilterItem } from 'types/api/queryBuilder/queryBuilderData' ;
2525import { DataSource } from 'types/common/queryBuilder' ;
2626import { v4 as uuid } from 'uuid' ;
2727
2828import LogsQuickFilterEmptyState from './LogsQuickFilterEmptyState' ;
29+ import { isKeyMatch } from './utils' ;
2930
3031import './Checkbox.styles.scss' ;
3132
@@ -84,7 +85,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
8485 currentQuery . builder . queryData ?. [
8586 activeQueryIndex
8687 ] ?. filters ?. items ?. some ( ( item ) =>
87- isEqual ( item . key ?. key , filter . attributeKey . key ) ,
88+ isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ,
8889 ) ,
8990 [ currentQuery . builder . queryData , activeQueryIndex , filter . attributeKey . key ] ,
9091 ) ;
@@ -189,7 +190,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
189190 const filterSync = currentQuery ?. builder . queryData ?. [
190191 activeQueryIndex
191192 ] ?. filters ?. items . find ( ( item ) =>
192- isEqual ( item . key ?. key , filter . attributeKey . key ) ,
193+ isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ,
193194 ) ;
194195
195196 if ( filterSync ) {
@@ -236,7 +237,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
236237 ( currentQuery ?. builder ?. queryData ?. [
237238 activeQueryIndex
238239 ] ?. filters ?. items ?. filter ( ( item ) =>
239- isEqual ( item . key ?. key , filter . attributeKey . key ) ,
240+ isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ,
240241 ) ?. length || 0 ) > 1 ,
241242
242243 [ currentQuery ?. builder ?. queryData , activeQueryIndex , filter . attributeKey ] ,
@@ -280,7 +281,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
280281 items :
281282 idx === activeQueryIndex
282283 ? item . filters ?. items ?. filter (
283- ( fil ) => ! isEqual ( fil . key ?. key , filter . attributeKey . key ) ,
284+ ( fil ) => ! isKeyMatch ( fil . key ?. key , filter . attributeKey . key ) ,
284285 ) || [ ]
285286 : [ ...( item . filters ?. items || [ ] ) ] ,
286287 op : item . filters ?. op || 'AND' ,
@@ -313,7 +314,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
313314 : 'Only'
314315 : 'Only' ;
315316 query . filters . items = query . filters . items . filter (
316- ( q ) => ! isEqual ( q . key ?. key , filter . attributeKey . key ) ,
317+ ( q ) => ! isKeyMatch ( q . key ?. key , filter . attributeKey . key ) ,
317318 ) ;
318319
319320 if ( query . filter ?. expression ) {
@@ -335,13 +336,13 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
335336 } else if ( query ?. filters ?. items ) {
336337 if (
337338 query . filters ?. items ?. some ( ( item ) =>
338- isEqual ( item . key ?. key , filter . attributeKey . key ) ,
339+ isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ,
339340 )
340341 ) {
341342 // if there is already a running filter for the current attribute key then
342343 // we split the cases by which particular operator is present right now!
343344 const currentFilter = query . filters ?. items ?. find ( ( q ) =>
344- isEqual ( q . key ?. key , filter . attributeKey . key ) ,
345+ isKeyMatch ( q . key ?. key , filter . attributeKey . key ) ,
345346 ) ;
346347 if ( currentFilter ) {
347348 const runningOperator = currentFilter ?. op ;
@@ -356,7 +357,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
356357 value : [ ...currentFilter . value , value ] ,
357358 } ;
358359 query . filters . items = query . filters . items . map ( ( item ) => {
359- if ( isEqual ( item . key ?. key , filter . attributeKey . key ) ) {
360+ if ( isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ) {
360361 return newFilter ;
361362 }
362363 return item ;
@@ -368,7 +369,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
368369 value : [ currentFilter . value as string , value ] ,
369370 } ;
370371 query . filters . items = query . filters . items . map ( ( item ) => {
371- if ( isEqual ( item . key ?. key , filter . attributeKey . key ) ) {
372+ if ( isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ) {
372373 return newFilter ;
373374 }
374375 return item ;
@@ -385,11 +386,11 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
385386
386387 if ( newFilter . value . length === 0 ) {
387388 query . filters . items = query . filters . items . filter (
388- ( item ) => ! isEqual ( item . key ?. key , filter . attributeKey . key ) ,
389+ ( item ) => ! isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ,
389390 ) ;
390391 } else {
391392 query . filters . items = query . filters . items . map ( ( item ) => {
392- if ( isEqual ( item . key ?. key , filter . attributeKey . key ) ) {
393+ if ( isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ) {
393394 return newFilter ;
394395 }
395396 return item ;
@@ -398,7 +399,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
398399 } else {
399400 // if not an array remove the whole thing altogether!
400401 query . filters . items = query . filters . items . filter (
401- ( item ) => ! isEqual ( item . key ?. key , filter . attributeKey . key ) ,
402+ ( item ) => ! isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ,
402403 ) ;
403404 }
404405 }
@@ -414,7 +415,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
414415 value : [ ...currentFilter . value , value ] ,
415416 } ;
416417 query . filters . items = query . filters . items . map ( ( item ) => {
417- if ( isEqual ( item . key ?. key , filter . attributeKey . key ) ) {
418+ if ( isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ) {
418419 return newFilter ;
419420 }
420421 return item ;
@@ -426,7 +427,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
426427 value : [ currentFilter . value as string , value ] ,
427428 } ;
428429 query . filters . items = query . filters . items . map ( ( item ) => {
429- if ( isEqual ( item . key ?. key , filter . attributeKey . key ) ) {
430+ if ( isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ) {
430431 return newFilter ;
431432 }
432433 return item ;
@@ -441,7 +442,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
441442 } ;
442443 if ( newFilter . value . length === 0 ) {
443444 query . filters . items = query . filters . items . filter (
444- ( item ) => ! isEqual ( item . key ?. key , filter . attributeKey . key ) ,
445+ ( item ) => ! isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ,
445446 ) ;
446447 if ( query . filter ?. expression ) {
447448 query . filter . expression = removeKeysFromExpression (
@@ -451,7 +452,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
451452 }
452453 } else {
453454 query . filters . items = query . filters . items . map ( ( item ) => {
454- if ( isEqual ( item . key ?. key , filter . attributeKey . key ) ) {
455+ if ( isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ) {
455456 return newFilter ;
456457 }
457458 return item ;
@@ -469,7 +470,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
469470 ) ;
470471 }
471472 query . filters . items = query . filters . items . filter (
472- ( item ) => ! isEqual ( item . key ?. key , filter . attributeKey . key ) ,
473+ ( item ) => ! isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ,
473474 ) ;
474475 }
475476 }
@@ -482,14 +483,14 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
482483 value : [ currentFilter . value as string , value ] ,
483484 } ;
484485 query . filters . items = query . filters . items . map ( ( item ) => {
485- if ( isEqual ( item . key ?. key , filter . attributeKey . key ) ) {
486+ if ( isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ) {
486487 return newFilter ;
487488 }
488489 return item ;
489490 } ) ;
490491 } else if ( ! checked ) {
491492 query . filters . items = query . filters . items . filter (
492- ( item ) => ! isEqual ( item . key ?. key , filter . attributeKey . key ) ,
493+ ( item ) => ! isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ,
493494 ) ;
494495 }
495496 break ;
@@ -501,14 +502,14 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
501502 value : [ currentFilter . value as string , value ] ,
502503 } ;
503504 query . filters . items = query . filters . items . map ( ( item ) => {
504- if ( isEqual ( item . key ?. key , filter . attributeKey . key ) ) {
505+ if ( isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ) {
505506 return newFilter ;
506507 }
507508 return item ;
508509 } ) ;
509510 } else if ( checked ) {
510511 query . filters . items = query . filters . items . filter (
511- ( item ) => ! isEqual ( item . key ?. key , filter . attributeKey . key ) ,
512+ ( item ) => ! isKeyMatch ( item . key ?. key , filter . attributeKey . key ) ,
512513 ) ;
513514 }
514515 break ;
0 commit comments