fix: add hideSpanScopeSelector prop to QueryBuilderSearchV2 and hide from non qb consumers (#7716)

* feat: add hideSpanScopeSelector prop to QueryBuilderSearchV2 and hide from non qb consumers

* fix: update the tests to check rendering based on hideSpanScopeSelector

* feat: display span selector in exceptions page
This commit is contained in:
Shaheer Kochai 2025-05-06 19:02:57 +04:30 committed by GitHub
parent 6e0b50dd60
commit 08579242eb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 9 additions and 8 deletions

View File

@ -458,6 +458,7 @@ export const Query = memo(function Query({
query={query}
onChange={handleChangeTagFilters}
whereClauseConfig={filterConfigs?.filters}
hideSpanScopeSelector={query.dataSource !== DataSource.TRACES}
/>
) : (
<QueryBuilderSearch

View File

@ -92,6 +92,7 @@ interface QueryBuilderSearchV2Props {
suffixIcon?: React.ReactNode;
hardcodedAttributeKeys?: BaseAutocompleteData[];
operatorConfigKey?: OperatorConfigKeys;
hideSpanScopeSelector?: boolean;
}
export interface Option {
@ -126,6 +127,7 @@ function QueryBuilderSearchV2(
whereClauseConfig,
hardcodedAttributeKeys,
operatorConfigKey,
hideSpanScopeSelector,
} = props;
const { registerShortcut, deregisterShortcut } = useKeyboardHotkeys();
@ -936,11 +938,6 @@ function QueryBuilderSearchV2(
);
};
const isTracesDataSource = useMemo(
() => query.dataSource === DataSource.TRACES,
[query.dataSource],
);
return (
<div className="query-builder-search-v2">
<Select
@ -1025,7 +1022,7 @@ function QueryBuilderSearchV2(
);
})}
</Select>
{isTracesDataSource && <SpanScopeSelector queryName={query.queryName} />}
{!hideSpanScopeSelector && <SpanScopeSelector queryName={query.queryName} />}
</div>
);
}
@ -1037,6 +1034,7 @@ QueryBuilderSearchV2.defaultProps = {
whereClauseConfig: {},
hardcodedAttributeKeys: undefined,
operatorConfigKey: undefined,
hideSpanScopeSelector: true,
};
export default QueryBuilderSearchV2;

View File

@ -26,7 +26,7 @@ const queryClient = new QueryClient({
});
describe('Span scope selector', () => {
it('should render span scope selector when data source is TRACES', () => {
it('should render span scope selector when hideSpanScopeSelector is false', () => {
const { getByTestId } = render(
<QueryClientProvider client={queryClient}>
<QueryBuilderSearchV2
@ -34,6 +34,7 @@ describe('Span scope selector', () => {
...initialQueryBuilderFormValues,
dataSource: DataSource.TRACES,
}}
hideSpanScopeSelector={false}
onChange={jest.fn()}
/>
</QueryClientProvider>,
@ -42,7 +43,7 @@ describe('Span scope selector', () => {
expect(getByTestId('span-scope-selector')).toBeInTheDocument();
});
it('should not render span scope selector for non-TRACES data sources', () => {
it('should not render span scope selector by default (i.e. when hideSpanScopeSelector is true)', () => {
const { queryByTestId } = render(
<QueryClientProvider client={queryClient}>
<QueryBuilderSearchV2

View File

@ -52,6 +52,7 @@ function ResourceAttributesFilter(): JSX.Element | null {
query={query}
onChange={handleChangeTagFilters}
operatorConfigKey={OperatorConfigKeys.EXCEPTIONS}
hideSpanScopeSelector={false}
/>
</div>
);