diff --git a/e2e/fixtures/pages/ExploreProfilesPage.ts b/e2e/fixtures/pages/ExploreProfilesPage.ts index dc5b458b..1647f496 100644 --- a/e2e/fixtures/pages/ExploreProfilesPage.ts +++ b/e2e/fixtures/pages/ExploreProfilesPage.ts @@ -136,9 +136,10 @@ export class ExploreProfilesPage extends PyroscopePage { return this.getByLabel('Quick filter'); } - async assertQuickFilter(explectedPlaceholder: string, expectedValue: string) { + async assertQuickFilter(explectedPlaceholder: string, expectedValue: string, expectedResultsCount: number) { await expect(await this.getQuickFilterInput().getAttribute('placeholder')).toBe(explectedPlaceholder); await expect(this.getQuickFilterInput()).toHaveValue(expectedValue); + await this.assertQuickFilterResultsCount(expectedResultsCount); } async enterQuickFilterText(searchText: string) { @@ -146,6 +147,10 @@ export class ExploreProfilesPage extends PyroscopePage { await this.waitForTimeout(250); // see SceneQuickFilter.DEBOUNCE_DELAY } + async assertQuickFilterResultsCount(expectedCount: number) { + await expect(this.getByTestId('quick-filter-results-count')).toHaveText(String(expectedCount)); + } + /* Layout switcher */ getLayoutSwitcher() { diff --git a/e2e/tests/all-services-view/all-services.spec.ts b/e2e/tests/all-services-view/all-services.spec.ts index a5eb0738..f41da32c 100644 --- a/e2e/tests/all-services-view/all-services.spec.ts +++ b/e2e/tests/all-services-view/all-services.spec.ts @@ -14,7 +14,7 @@ test.describe('All services view', () => { // body scene controls await exploreProfilesPage.assertSelectedProfileType('process_cpu/cpu'); - await exploreProfilesPage.assertQuickFilter('Search services (comma-separated regexes are supported)', ''); + await exploreProfilesPage.assertQuickFilter('Search services (comma-separated regexes are supported)', '', 3); await exploreProfilesPage.assertSelectedLayout('Grid'); // body @@ -53,8 +53,12 @@ test.describe('All services view', () => { }); test('Quick filter', async ({ exploreProfilesPage }) => { + await exploreProfilesPage.assertQuickFilterResultsCount(3); + await exploreProfilesPage.enterQuickFilterText('sharing,load'); + await exploreProfilesPage.assertQuickFilterResultsCount(2); + await expect(exploreProfilesPage.getPanels()).toHaveCount(2); await expect(exploreProfilesPage.getPanelByTitle('load-generator')).toBeVisible(); await expect(exploreProfilesPage.getPanelByTitle('ride-sharing-app')).toBeVisible(); diff --git a/e2e/tests/all-services-view/all-services.spec.ts-snapshots/All-services-view-Panel-actions-Flame-graph-action-1-chromium-linux.png b/e2e/tests/all-services-view/all-services.spec.ts-snapshots/All-services-view-Panel-actions-Flame-graph-action-1-chromium-linux.png index 30925f2b..786d7b22 100644 Binary files a/e2e/tests/all-services-view/all-services.spec.ts-snapshots/All-services-view-Panel-actions-Flame-graph-action-1-chromium-linux.png and b/e2e/tests/all-services-view/all-services.spec.ts-snapshots/All-services-view-Panel-actions-Flame-graph-action-1-chromium-linux.png differ diff --git a/e2e/tests/all-services-view/all-services.spec.ts-snapshots/All-services-view-Panel-actions-Labels-action-1-chromium-linux.png b/e2e/tests/all-services-view/all-services.spec.ts-snapshots/All-services-view-Panel-actions-Labels-action-1-chromium-linux.png index 1815efcd..60710d6d 100644 Binary files a/e2e/tests/all-services-view/all-services.spec.ts-snapshots/All-services-view-Panel-actions-Labels-action-1-chromium-linux.png and b/e2e/tests/all-services-view/all-services.spec.ts-snapshots/All-services-view-Panel-actions-Labels-action-1-chromium-linux.png differ diff --git a/e2e/tests/favorites-view/favorites-view.spec.ts b/e2e/tests/favorites-view/favorites-view.spec.ts index 8b8de43d..50731b26 100644 --- a/e2e/tests/favorites-view/favorites-view.spec.ts +++ b/e2e/tests/favorites-view/favorites-view.spec.ts @@ -29,7 +29,7 @@ test.describe('Favorites view', () => { await exploreProfilesPage.assertSelectedTimeRange('2024-03-13 19:00:00 to 2024-03-13 19:50:00'); // body scene controls - await exploreProfilesPage.assertQuickFilter('Search favorites (comma-separated regexes are supported)', ''); + await exploreProfilesPage.assertQuickFilter('Search favorites (comma-separated regexes are supported)', '', 4); await exploreProfilesPage.assertSelectedLayout('Grid'); await exploreProfilesPage.assertHideNoDataSwitcher(false); @@ -38,8 +38,12 @@ test.describe('Favorites view', () => { }); test('Quick filter', async ({ exploreProfilesPage }) => { + await exploreProfilesPage.assertQuickFilterResultsCount(4); + await exploreProfilesPage.enterQuickFilterText('load,ride'); + await exploreProfilesPage.assertQuickFilterResultsCount(3); + await expect(exploreProfilesPage.getPanels()).toHaveCount(3); await expect(exploreProfilesPage.getPanelByTitle('load-generator · cpu (process_cpu)')).toBeVisible(); await expect(exploreProfilesPage.getPanelByTitle('ride-sharing-app · inuse_space (memory)')).toBeVisible(); diff --git a/e2e/tests/favorites-view/favorites-view.spec.ts-snapshots/Favorites-view-Panel-actions-Labels-action-with-group-by-1-chromium-linux.png b/e2e/tests/favorites-view/favorites-view.spec.ts-snapshots/Favorites-view-Panel-actions-Labels-action-with-group-by-1-chromium-linux.png index 1837f551..d41d57bf 100644 Binary files a/e2e/tests/favorites-view/favorites-view.spec.ts-snapshots/Favorites-view-Panel-actions-Labels-action-with-group-by-1-chromium-linux.png and b/e2e/tests/favorites-view/favorites-view.spec.ts-snapshots/Favorites-view-Panel-actions-Labels-action-with-group-by-1-chromium-linux.png differ diff --git a/e2e/tests/favorites-view/favorites-view.spec.ts-snapshots/Favorites-view-Panel-actions-Labels-action-without-group-by-1-chromium-linux.png b/e2e/tests/favorites-view/favorites-view.spec.ts-snapshots/Favorites-view-Panel-actions-Labels-action-without-group-by-1-chromium-linux.png index c5d61eda..aeedf22f 100644 Binary files a/e2e/tests/favorites-view/favorites-view.spec.ts-snapshots/Favorites-view-Panel-actions-Labels-action-without-group-by-1-chromium-linux.png and b/e2e/tests/favorites-view/favorites-view.spec.ts-snapshots/Favorites-view-Panel-actions-Labels-action-without-group-by-1-chromium-linux.png differ diff --git a/e2e/tests/flame-graph-view/flame-graph.spec.ts-snapshots/Flame-graph-view-Panel-actions-Labels-action-1-chromium-linux.png b/e2e/tests/flame-graph-view/flame-graph.spec.ts-snapshots/Flame-graph-view-Panel-actions-Labels-action-1-chromium-linux.png index bbc7faf0..3eaea95c 100644 Binary files a/e2e/tests/flame-graph-view/flame-graph.spec.ts-snapshots/Flame-graph-view-Panel-actions-Labels-action-1-chromium-linux.png and b/e2e/tests/flame-graph-view/flame-graph.spec.ts-snapshots/Flame-graph-view-Panel-actions-Labels-action-1-chromium-linux.png differ diff --git a/e2e/tests/labels-view/labels.spec.ts b/e2e/tests/labels-view/labels.spec.ts index ef61c4ce..3d08dfa1 100644 --- a/e2e/tests/labels-view/labels.spec.ts +++ b/e2e/tests/labels-view/labels.spec.ts @@ -16,7 +16,7 @@ test.describe('Labels view', () => { await exploreProfilesPage.assertSelectedService('ride-sharing-app'); await exploreProfilesPage.assertSelectedProfileType('process_cpu/cpu'); await exploreProfilesPage.assertFilters([]); - await exploreProfilesPage.assertQuickFilter('Search labels (comma-separated regexes are supported)', ''); + await exploreProfilesPage.assertQuickFilter('Search labels (comma-separated regexes are supported)', '', 7); await exploreProfilesPage.assertSelectedPanelType('Time series'); await exploreProfilesPage.assertSelectedLayout('Grid'); await exploreProfilesPage.assertHideNoDataSwitcher(false); @@ -153,8 +153,12 @@ test.describe('Labels view', () => { }); test('Quick filter', async ({ exploreProfilesPage }) => { + await exploreProfilesPage.assertQuickFilterResultsCount(3); + await exploreProfilesPage.enterQuickFilterText('us-east'); + await exploreProfilesPage.assertQuickFilterResultsCount(1); + await expect(exploreProfilesPage.getGroupByPanels()).toHaveCount(1); await expect(exploreProfilesPage.getPanelByTitle('us-east')).toBeVisible(); }); @@ -229,8 +233,12 @@ test.describe('Labels view', () => { }); test('Quick filter', async ({ exploreProfilesPage }) => { + await exploreProfilesPage.assertQuickFilterResultsCount(7); + await exploreProfilesPage.enterQuickFilterText('region,vehicle'); + await exploreProfilesPage.assertQuickFilterResultsCount(2); + await expect(exploreProfilesPage.getGroupByPanels()).toHaveCount(2); await expect(exploreProfilesPage.getPanelByTitle('region (3)')).toBeVisible(); await expect(exploreProfilesPage.getPanelByTitle('vehicle (4)')).toBeVisible(); diff --git a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Filters-Adding-a-filter-1-chromium-linux.png b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Filters-Adding-a-filter-1-chromium-linux.png index 12efa287..0dfc87bc 100644 Binary files a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Filters-Adding-a-filter-1-chromium-linux.png and b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Filters-Adding-a-filter-1-chromium-linux.png differ diff --git a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Group-by-labels-selector-After-selecting-a-label-Panel-actions-Add-to-filters-action-1-chromium-linux.png b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Group-by-labels-selector-After-selecting-a-label-Panel-actions-Add-to-filters-action-1-chromium-linux.png index eb5b061e..2b9b8449 100644 Binary files a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Group-by-labels-selector-After-selecting-a-label-Panel-actions-Add-to-filters-action-1-chromium-linux.png and b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Group-by-labels-selector-After-selecting-a-label-Panel-actions-Add-to-filters-action-1-chromium-linux.png differ diff --git a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Group-by-labels-selector-Selects-a-label-and-displays-the-breakdown-in-a-new-grid-1-chromium-linux.png b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Group-by-labels-selector-Selects-a-label-and-displays-the-breakdown-in-a-new-grid-1-chromium-linux.png index 467b46f4..a2966340 100644 Binary files a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Group-by-labels-selector-Selects-a-label-and-displays-the-breakdown-in-a-new-grid-1-chromium-linux.png and b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Group-by-labels-selector-Selects-a-label-and-displays-the-breakdown-in-a-new-grid-1-chromium-linux.png differ diff --git a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Layout-switcher-1-chromium-linux.png b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Layout-switcher-1-chromium-linux.png index 726a2396..084d700c 100644 Binary files a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Layout-switcher-1-chromium-linux.png and b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Layout-switcher-1-chromium-linux.png differ diff --git a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Main-UI-elements-1-chromium-linux.png b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Main-UI-elements-1-chromium-linux.png index bbc7faf0..3eaea95c 100644 Binary files a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Main-UI-elements-1-chromium-linux.png and b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Main-UI-elements-1-chromium-linux.png differ diff --git a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-actions-Select-action-1-chromium-linux.png b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-actions-Select-action-1-chromium-linux.png index 467b46f4..a2966340 100644 Binary files a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-actions-Select-action-1-chromium-linux.png and b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-actions-Select-action-1-chromium-linux.png differ diff --git a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-type-switcher-1-chromium-linux.png b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-type-switcher-1-chromium-linux.png index f9d7666f..77641d74 100644 Binary files a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-type-switcher-1-chromium-linux.png and b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-type-switcher-1-chromium-linux.png differ diff --git a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-type-switcher-2-chromium-linux.png b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-type-switcher-2-chromium-linux.png index f7167562..4e20c5bc 100644 Binary files a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-type-switcher-2-chromium-linux.png and b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Panel-type-switcher-2-chromium-linux.png differ diff --git a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Profile-type-selector-1-chromium-linux.png b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Profile-type-selector-1-chromium-linux.png index 1815efcd..60710d6d 100644 Binary files a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Profile-type-selector-1-chromium-linux.png and b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Profile-type-selector-1-chromium-linux.png differ diff --git a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Service-selector-1-chromium-linux.png b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Service-selector-1-chromium-linux.png index 18e59f71..4e254613 100644 Binary files a/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Service-selector-1-chromium-linux.png and b/e2e/tests/labels-view/labels.spec.ts-snapshots/Labels-view-Service-selector-1-chromium-linux.png differ diff --git a/e2e/tests/profile-types-view/profile-types.spec.ts b/e2e/tests/profile-types-view/profile-types.spec.ts index bdb8fa84..5db58339 100644 --- a/e2e/tests/profile-types-view/profile-types.spec.ts +++ b/e2e/tests/profile-types-view/profile-types.spec.ts @@ -10,7 +10,7 @@ async function assertMainUiElements(exploreProfilesPage: ExploreProfilesPage) { // body scene controls await exploreProfilesPage.assertSelectedService('ride-sharing-app'); - await exploreProfilesPage.assertQuickFilter('Search profile types (comma-separated regexes are supported)', ''); + await exploreProfilesPage.assertQuickFilter('Search profile types (comma-separated regexes are supported)', '', 6); await exploreProfilesPage.assertSelectedLayout('Grid'); } @@ -37,8 +37,12 @@ test.describe('Profile types view', () => { }); test('Quick filter', async ({ exploreProfilesPage }) => { + await exploreProfilesPage.assertQuickFilterResultsCount(6); + await exploreProfilesPage.enterQuickFilterText('samples,alloc_space'); + await exploreProfilesPage.assertQuickFilterResultsCount(2); + await expect(exploreProfilesPage.getPanels()).toHaveCount(2); await expect(exploreProfilesPage.getPanelByTitle('samples (process_cpu)')).toBeVisible(); await expect(exploreProfilesPage.getPanelByTitle('alloc_space (memory)')).toBeVisible(); diff --git a/e2e/tests/profile-types-view/profile-types.spec.ts-snapshots/Profile-types-view-Panel-actions-Labels-action-1-chromium-linux.png b/e2e/tests/profile-types-view/profile-types.spec.ts-snapshots/Profile-types-view-Panel-actions-Labels-action-1-chromium-linux.png index 1815efcd..60710d6d 100644 Binary files a/e2e/tests/profile-types-view/profile-types.spec.ts-snapshots/Profile-types-view-Panel-actions-Labels-action-1-chromium-linux.png and b/e2e/tests/profile-types-view/profile-types.spec.ts-snapshots/Profile-types-view-Panel-actions-Labels-action-1-chromium-linux.png differ diff --git a/src/pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/SceneByVariableRepeaterGrid.tsx b/src/pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/SceneByVariableRepeaterGrid.tsx index 07a6a2b3..2b447041 100644 --- a/src/pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/SceneByVariableRepeaterGrid.tsx +++ b/src/pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/SceneByVariableRepeaterGrid.tsx @@ -164,6 +164,12 @@ export class SceneByVariableRepeaterGrid extends SceneObjectBase { + if (newState.items.length !== prevState.items.length) { + quickFilter.setResultsCount(newState.items.length); + } + }); + const onChangeState = (newState: SceneQuickFilterState, prevState?: SceneQuickFilterState) => { if (newState.searchText !== prevState?.searchText) { this.renderGridItems(); diff --git a/src/pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneQuickFilter.tsx b/src/pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneQuickFilter.tsx index 201c276a..06535571 100644 --- a/src/pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneQuickFilter.tsx +++ b/src/pages/ProfilesExplorerView/components/SceneByVariableRepeaterGrid/components/SceneQuickFilter.tsx @@ -1,4 +1,5 @@ import { css } from '@emotion/css'; +import { GrafanaTheme2 } from '@grafana/data'; import { SceneComponentProps, SceneObjectBase, @@ -6,7 +7,7 @@ import { SceneObjectUrlSyncConfig, SceneObjectUrlValues, } from '@grafana/scenes'; -import { Icon, IconButton, Input, useStyles2 } from '@grafana/ui'; +import { Icon, IconButton, Input, Tag, useStyles2 } from '@grafana/ui'; import { reportInteraction } from '@shared/domain/reportInteraction'; import React from 'react'; @@ -14,6 +15,7 @@ export interface SceneQuickFilterState extends SceneObjectState { placeholder: string; searchText: string; onChange?: (searchText: string) => void; + resultsCount: string; } export class SceneQuickFilter extends SceneObjectBase { @@ -28,6 +30,7 @@ export class SceneQuickFilter extends SceneObjectBase { key: 'quick-filter', placeholder, searchText: SceneQuickFilter.DEFAULT_SEARCH_TEXT, + resultsCount: '', }); } @@ -35,6 +38,10 @@ export class SceneQuickFilter extends SceneObjectBase { this.setState({ placeholder }); } + setResultsCount(resultsCount: number) { + this.setState({ resultsCount: String(resultsCount) }); + } + getUrlState() { return { searchText: this.state.searchText, @@ -55,7 +62,11 @@ export class SceneQuickFilter extends SceneObjectBase { this.setState({ searchText: e.target.value }); }; - clear = () => { + reset() { + this.setState({ placeholder: '', searchText: '', resultsCount: '' }); + } + + clearSearchText = () => { this.setState({ searchText: '' }); }; @@ -65,7 +76,7 @@ export class SceneQuickFilter extends SceneObjectBase { static Component = ({ model }: SceneComponentProps) => { const styles = useStyles2(getStyles); - const { placeholder, searchText } = model.useState(); + const { placeholder, searchText, resultsCount } = model.useState(); return (
@@ -75,11 +86,23 @@ export class SceneQuickFilter extends SceneObjectBase { placeholder={placeholder} value={searchText} prefix={} - suffix={} + suffix={ + <> + {resultsCount !== '' && ( + + )} + + + } onChange={model.onChange} onKeyDown={(e: React.KeyboardEvent) => { if (e.key === 'Escape') { - model.clear(); + model.clearSearchText(); } }} onFocus={model.onFocus} @@ -89,9 +112,16 @@ export class SceneQuickFilter extends SceneObjectBase { }; } -const getStyles = () => ({ +const getStyles = (theme: GrafanaTheme2) => ({ filter: css` flex: 1; min-width: 112px; `, + resultsCount: css` + margin-right: ${theme.spacing(1)}; + border-radius: 11px; + padding: 2px 8px; + color: ${theme.colors.text.primary}; + background-color: ${theme.colors.background.secondary}; + `, }); diff --git a/src/pages/ProfilesExplorerView/components/SceneExploreAllServices/SceneExploreAllServices.tsx b/src/pages/ProfilesExplorerView/components/SceneExploreAllServices/SceneExploreAllServices.tsx index 013e84d7..4b475e7e 100644 --- a/src/pages/ProfilesExplorerView/components/SceneExploreAllServices/SceneExploreAllServices.tsx +++ b/src/pages/ProfilesExplorerView/components/SceneExploreAllServices/SceneExploreAllServices.tsx @@ -60,8 +60,9 @@ export class SceneExploreAllServices extends SceneObjectBase { this.openExpandedPanelDrawer(event.payload.item); diff --git a/src/pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/SceneGroupByLabels.tsx b/src/pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/SceneGroupByLabels.tsx index b84b5278..454f6137 100644 --- a/src/pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/SceneGroupByLabels.tsx +++ b/src/pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/SceneGroupByLabels.tsx @@ -111,7 +111,7 @@ export class SceneGroupByLabels extends SceneObjectBase return groupByVariable.subscribeToState((newState, prevState) => { if (newState.value !== prevState?.value) { - quickFilter.clear(); + quickFilter.clearSearchText(); this.renderBody(newState); } diff --git a/src/pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/components/SceneLabelValuesGrid/SceneLabelValuesGrid.tsx b/src/pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/components/SceneLabelValuesGrid/SceneLabelValuesGrid.tsx index 6455c65d..2befddfa 100644 --- a/src/pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/components/SceneLabelValuesGrid/SceneLabelValuesGrid.tsx +++ b/src/pages/ProfilesExplorerView/components/SceneExploreServiceLabels/components/SceneGroupByLabels/components/SceneLabelValuesGrid/SceneLabelValuesGrid.tsx @@ -183,6 +183,12 @@ export class SceneLabelValuesGrid extends SceneObjectBase { + if (newState.items.length !== prevState.items.length) { + quickFilter.setResultsCount(newState.items.length); + } + }); + const onChangeState = (newState: SceneQuickFilterState, prevState?: SceneQuickFilterState) => { if (newState.searchText !== prevState?.searchText) { this.renderGridItems(); diff --git a/src/pages/ProfilesExplorerView/components/SceneExploreServiceProfileTypes/SceneExploreServiceProfileTypes.tsx b/src/pages/ProfilesExplorerView/components/SceneExploreServiceProfileTypes/SceneExploreServiceProfileTypes.tsx index 8ec8441d..d5c79b3d 100644 --- a/src/pages/ProfilesExplorerView/components/SceneExploreServiceProfileTypes/SceneExploreServiceProfileTypes.tsx +++ b/src/pages/ProfilesExplorerView/components/SceneExploreServiceProfileTypes/SceneExploreServiceProfileTypes.tsx @@ -59,8 +59,9 @@ export class SceneExploreServiceProfileTypes extends SceneObjectBase