From e0659c05da0c1c8db3cbf0b212e63a48b82fb4ff Mon Sep 17 00:00:00 2001 From: Joey <90795735+joey-grafana@users.noreply.github.com> Date: Fri, 22 Sep 2023 09:02:38 +0100 Subject: [PATCH] Tracing: Span filters reset show matches only (#75150) * Reset show matches only when clear button pressed * Add test * Update test --- .../TracePageHeader/SearchBar/TracePageSearchBar.tsx | 5 +++-- .../TracePageHeader/SpanFilters/SpanFilters.test.tsx | 11 +++++++++-- .../TracePageHeader/SpanFilters/SpanFilters.tsx | 3 ++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx b/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx index e5890f1f6d5..ff8b6397e10 100644 --- a/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx +++ b/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx @@ -64,9 +64,10 @@ export default memo(function TracePageSearchBar(props: TracePageSearchBarProps) search.tags.length > 1 || search.tags.some((tag) => { return tag.key; - }) + }) || + showSpanFilterMatchesOnly ); - }, [search.serviceName, search.spanName, search.from, search.to, search.tags]); + }, [search.serviceName, search.spanName, search.from, search.to, search.tags, showSpanFilterMatchesOnly]); return (
diff --git a/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.test.tsx b/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.test.tsx index 7abb4348814..84fd36a0240 100644 --- a/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.test.tsx +++ b/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.test.tsx @@ -45,12 +45,13 @@ describe('SpanFilters', () => { let user: ReturnType; const SpanFiltersWithProps = ({ showFilters = true }) => { const [search, setSearch] = useState(defaultFilters); + const [showSpanFilterMatchesOnly, setShowSpanFilterMatchesOnly] = useState(false); const props = { trace: trace, showSpanFilters: showFilters, setShowSpanFilters: jest.fn(), - showSpanFilterMatchesOnly: false, - setShowSpanFilterMatchesOnly: jest.fn(), + showSpanFilterMatchesOnly, + setShowSpanFilterMatchesOnly, search, setSearch, spanFilterMatches: undefined, @@ -210,12 +211,18 @@ describe('SpanFilters', () => { await selectAndCheckValue(user, tagKey, 'TagKey0'); await selectAndCheckValue(user, tagValue, 'TagValue0'); + const matchesSwitch = screen.getByRole('checkbox', { name: 'Show matches only switch' }); + expect(matchesSwitch).not.toBeChecked(); + await user.click(matchesSwitch); + expect(matchesSwitch).toBeChecked(); + expect((clearFiltersButton as HTMLButtonElement)['disabled']).toBe(false); await user.click(clearFiltersButton); expect(screen.queryByText('Service0')).not.toBeInTheDocument(); expect(screen.queryByText('Span0')).not.toBeInTheDocument(); expect(screen.queryByText('TagKey0')).not.toBeInTheDocument(); expect(screen.queryByText('TagValue0')).not.toBeInTheDocument(); + expect(matchesSwitch).not.toBeChecked(); }); it('renders buttons when span filters is collapsed', async () => { diff --git a/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx b/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx index bfef4eff74a..2bb219f93a1 100644 --- a/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx +++ b/public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx @@ -69,7 +69,8 @@ export const SpanFilters = memo((props: SpanFilterProps) => { setTagKeys(undefined); setTagValues({}); setSearch(defaultFilters); - }, [setSearch]); + setShowSpanFilterMatchesOnly(false); + }, [setSearch, setShowSpanFilterMatchesOnly]); useEffect(() => { clear();