mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-12 21:48:58 +08:00
fix: use just keys to check the filters rather than the whole objects (#5918)
This commit is contained in:
parent
c79520c874
commit
b60b26189f
@ -82,7 +82,9 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
);
|
);
|
||||||
const filterSync = currentQuery?.builder.queryData?.[
|
const filterSync = currentQuery?.builder.queryData?.[
|
||||||
lastUsedQuery || 0
|
lastUsedQuery || 0
|
||||||
]?.filters?.items.find((item) => isEqual(item.key, filter.attributeKey));
|
]?.filters?.items.find((item) =>
|
||||||
|
isEqual(item.key?.key, filter.attributeKey.key),
|
||||||
|
);
|
||||||
|
|
||||||
if (filterSync) {
|
if (filterSync) {
|
||||||
if (SELECTED_OPERATORS.includes(filterSync.op)) {
|
if (SELECTED_OPERATORS.includes(filterSync.op)) {
|
||||||
@ -127,8 +129,9 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
() =>
|
() =>
|
||||||
(currentQuery?.builder?.queryData?.[
|
(currentQuery?.builder?.queryData?.[
|
||||||
lastUsedQuery || 0
|
lastUsedQuery || 0
|
||||||
]?.filters?.items?.filter((item) => isEqual(item.key, filter.attributeKey))
|
]?.filters?.items?.filter((item) =>
|
||||||
?.length || 0) > 1,
|
isEqual(item.key?.key, filter.attributeKey.key),
|
||||||
|
)?.length || 0) > 1,
|
||||||
|
|
||||||
[currentQuery?.builder?.queryData, lastUsedQuery, filter.attributeKey],
|
[currentQuery?.builder?.queryData, lastUsedQuery, filter.attributeKey],
|
||||||
);
|
);
|
||||||
@ -149,7 +152,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
items:
|
items:
|
||||||
idx === lastUsedQuery
|
idx === lastUsedQuery
|
||||||
? item.filters.items.filter(
|
? item.filters.items.filter(
|
||||||
(fil) => !isEqual(fil.key, filter.attributeKey),
|
(fil) => !isEqual(fil.key?.key, filter.attributeKey.key),
|
||||||
)
|
)
|
||||||
: [...item.filters.items],
|
: [...item.filters.items],
|
||||||
},
|
},
|
||||||
@ -161,7 +164,9 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
|
|
||||||
const isSomeFilterPresentForCurrentAttribute = currentQuery.builder.queryData?.[
|
const isSomeFilterPresentForCurrentAttribute = currentQuery.builder.queryData?.[
|
||||||
lastUsedQuery || 0
|
lastUsedQuery || 0
|
||||||
]?.filters?.items?.some((item) => isEqual(item.key, filter.attributeKey));
|
]?.filters?.items?.some((item) =>
|
||||||
|
isEqual(item.key?.key, filter.attributeKey.key),
|
||||||
|
);
|
||||||
|
|
||||||
const onChange = (
|
const onChange = (
|
||||||
value: string,
|
value: string,
|
||||||
@ -180,7 +185,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
: 'Only'
|
: 'Only'
|
||||||
: 'Only';
|
: 'Only';
|
||||||
query.filters.items = query.filters.items.filter(
|
query.filters.items = query.filters.items.filter(
|
||||||
(q) => !isEqual(q.key, filter.attributeKey),
|
(q) => !isEqual(q.key?.key, filter.attributeKey.key),
|
||||||
);
|
);
|
||||||
if (isOnlyOrAll === 'Only') {
|
if (isOnlyOrAll === 'Only') {
|
||||||
const newFilterItem: TagFilterItem = {
|
const newFilterItem: TagFilterItem = {
|
||||||
@ -193,12 +198,14 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
}
|
}
|
||||||
} else if (query?.filters?.items) {
|
} else if (query?.filters?.items) {
|
||||||
if (
|
if (
|
||||||
query.filters?.items?.some((item) => isEqual(item.key, filter.attributeKey))
|
query.filters?.items?.some((item) =>
|
||||||
|
isEqual(item.key?.key, filter.attributeKey.key),
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
// if there is already a running filter for the current attribute key then
|
// if there is already a running filter for the current attribute key then
|
||||||
// we split the cases by which particular operator is present right now!
|
// we split the cases by which particular operator is present right now!
|
||||||
const currentFilter = query.filters?.items?.find((q) =>
|
const currentFilter = query.filters?.items?.find((q) =>
|
||||||
isEqual(q.key, filter.attributeKey),
|
isEqual(q.key?.key, filter.attributeKey.key),
|
||||||
);
|
);
|
||||||
if (currentFilter) {
|
if (currentFilter) {
|
||||||
const runningOperator = currentFilter?.op;
|
const runningOperator = currentFilter?.op;
|
||||||
@ -213,7 +220,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
value: [...currentFilter.value, value],
|
value: [...currentFilter.value, value],
|
||||||
};
|
};
|
||||||
query.filters.items = query.filters.items.map((item) => {
|
query.filters.items = query.filters.items.map((item) => {
|
||||||
if (isEqual(item.key, filter.attributeKey)) {
|
if (isEqual(item.key?.key, filter.attributeKey.key)) {
|
||||||
return newFilter;
|
return newFilter;
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
@ -225,7 +232,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
value: [currentFilter.value as string, value],
|
value: [currentFilter.value as string, value],
|
||||||
};
|
};
|
||||||
query.filters.items = query.filters.items.map((item) => {
|
query.filters.items = query.filters.items.map((item) => {
|
||||||
if (isEqual(item.key, filter.attributeKey)) {
|
if (isEqual(item.key?.key, filter.attributeKey.key)) {
|
||||||
return newFilter;
|
return newFilter;
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
@ -242,11 +249,11 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
|
|
||||||
if (newFilter.value.length === 0) {
|
if (newFilter.value.length === 0) {
|
||||||
query.filters.items = query.filters.items.filter(
|
query.filters.items = query.filters.items.filter(
|
||||||
(item) => !isEqual(item.key, filter.attributeKey),
|
(item) => !isEqual(item.key?.key, filter.attributeKey.key),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
query.filters.items = query.filters.items.map((item) => {
|
query.filters.items = query.filters.items.map((item) => {
|
||||||
if (isEqual(item.key, filter.attributeKey)) {
|
if (isEqual(item.key?.key, filter.attributeKey.key)) {
|
||||||
return newFilter;
|
return newFilter;
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
@ -255,7 +262,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
} else {
|
} else {
|
||||||
// if not an array remove the whole thing altogether!
|
// if not an array remove the whole thing altogether!
|
||||||
query.filters.items = query.filters.items.filter(
|
query.filters.items = query.filters.items.filter(
|
||||||
(item) => !isEqual(item.key, filter.attributeKey),
|
(item) => !isEqual(item.key?.key, filter.attributeKey.key),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -271,7 +278,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
value: [...currentFilter.value, value],
|
value: [...currentFilter.value, value],
|
||||||
};
|
};
|
||||||
query.filters.items = query.filters.items.map((item) => {
|
query.filters.items = query.filters.items.map((item) => {
|
||||||
if (isEqual(item.key, filter.attributeKey)) {
|
if (isEqual(item.key?.key, filter.attributeKey.key)) {
|
||||||
return newFilter;
|
return newFilter;
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
@ -283,7 +290,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
value: [currentFilter.value as string, value],
|
value: [currentFilter.value as string, value],
|
||||||
};
|
};
|
||||||
query.filters.items = query.filters.items.map((item) => {
|
query.filters.items = query.filters.items.map((item) => {
|
||||||
if (isEqual(item.key, filter.attributeKey)) {
|
if (isEqual(item.key?.key, filter.attributeKey.key)) {
|
||||||
return newFilter;
|
return newFilter;
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
@ -299,11 +306,11 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
|
|
||||||
if (newFilter.value.length === 0) {
|
if (newFilter.value.length === 0) {
|
||||||
query.filters.items = query.filters.items.filter(
|
query.filters.items = query.filters.items.filter(
|
||||||
(item) => !isEqual(item.key, filter.attributeKey),
|
(item) => !isEqual(item.key?.key, filter.attributeKey.key),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
query.filters.items = query.filters.items.map((item) => {
|
query.filters.items = query.filters.items.map((item) => {
|
||||||
if (isEqual(item.key, filter.attributeKey)) {
|
if (isEqual(item.key?.key, filter.attributeKey.key)) {
|
||||||
return newFilter;
|
return newFilter;
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
@ -311,7 +318,7 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
query.filters.items = query.filters.items.filter(
|
query.filters.items = query.filters.items.filter(
|
||||||
(item) => !isEqual(item.key, filter.attributeKey),
|
(item) => !isEqual(item.key?.key, filter.attributeKey.key),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -324,14 +331,14 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
value: [currentFilter.value as string, value],
|
value: [currentFilter.value as string, value],
|
||||||
};
|
};
|
||||||
query.filters.items = query.filters.items.map((item) => {
|
query.filters.items = query.filters.items.map((item) => {
|
||||||
if (isEqual(item.key, filter.attributeKey)) {
|
if (isEqual(item.key?.key, filter.attributeKey.key)) {
|
||||||
return newFilter;
|
return newFilter;
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
} else if (!checked) {
|
} else if (!checked) {
|
||||||
query.filters.items = query.filters.items.filter(
|
query.filters.items = query.filters.items.filter(
|
||||||
(item) => !isEqual(item.key, filter.attributeKey),
|
(item) => !isEqual(item.key?.key, filter.attributeKey.key),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -343,14 +350,14 @@ export default function CheckboxFilter(props: ICheckboxProps): JSX.Element {
|
|||||||
value: [currentFilter.value as string, value],
|
value: [currentFilter.value as string, value],
|
||||||
};
|
};
|
||||||
query.filters.items = query.filters.items.map((item) => {
|
query.filters.items = query.filters.items.map((item) => {
|
||||||
if (isEqual(item.key, filter.attributeKey)) {
|
if (isEqual(item.key?.key, filter.attributeKey.key)) {
|
||||||
return newFilter;
|
return newFilter;
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
} else if (checked) {
|
} else if (checked) {
|
||||||
query.filters.items = query.filters.items.filter(
|
query.filters.items = query.filters.items.filter(
|
||||||
(item) => !isEqual(item.key, filter.attributeKey),
|
(item) => !isEqual(item.key?.key, filter.attributeKey.key),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -233,8 +233,6 @@ export function QueryBuilderProvider({
|
|||||||
timeUpdated ? merge(currentQuery, newQueryState) : newQueryState,
|
timeUpdated ? merge(currentQuery, newQueryState) : newQueryState,
|
||||||
);
|
);
|
||||||
setQueryType(type);
|
setQueryType(type);
|
||||||
// this is required to reset the last used query when navigating or initializing the query builder
|
|
||||||
setLastUsedQuery(0);
|
|
||||||
},
|
},
|
||||||
[prepareQueryBuilderData, currentQuery],
|
[prepareQueryBuilderData, currentQuery],
|
||||||
);
|
);
|
||||||
@ -820,6 +818,8 @@ export function QueryBuilderProvider({
|
|||||||
currentPathnameRef.current = location.pathname;
|
currentPathnameRef.current = location.pathname;
|
||||||
|
|
||||||
setStagedQuery(null);
|
setStagedQuery(null);
|
||||||
|
// reset the last used query to 0 when navigating away from the page
|
||||||
|
setLastUsedQuery(0);
|
||||||
}
|
}
|
||||||
}, [location, stagedQuery, currentQuery]);
|
}, [location, stagedQuery, currentQuery]);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user