From acd31ae9f0f9627ccd2d928ea893ca211aeba4d4 Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Tue, 17 May 2022 08:42:52 -0700 Subject: [PATCH] Search: simulate folder mange pages within the playground page (#49041) --- .../app/features/search/page/SearchPage.tsx | 35 +++++++++++++++++-- .../search/page/components/FolderSection.tsx | 16 +++++++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/public/app/features/search/page/SearchPage.tsx b/public/app/features/search/page/SearchPage.tsx index 0f1f6fdf799..aea7f0c6922 100644 --- a/public/app/features/search/page/SearchPage.tsx +++ b/public/app/features/search/page/SearchPage.tsx @@ -5,7 +5,7 @@ import AutoSizer from 'react-virtualized-auto-sizer'; import { GrafanaTheme2, NavModelItem } from '@grafana/data'; import { config } from '@grafana/runtime'; -import { Input, useStyles2, Spinner, InlineSwitch, InlineFieldRow, InlineField, Button } from '@grafana/ui'; +import { Input, useStyles2, Spinner, InlineSwitch, InlineFieldRow, InlineField, Button, Select } from '@grafana/ui'; import Page from 'app/core/components/Page/Page'; import { TermCount } from 'app/core/components/TagFilter/TagFilter'; @@ -15,6 +15,7 @@ import { getGrafanaSearcher, SearchQuery } from '../service'; import { SearchLayout } from '../types'; import { ActionRow, getValidQueryLayout } from './components/ActionRow'; +import { FolderSection } from './components/FolderSection'; import { FolderView } from './components/FolderView'; import { ManageActions } from './components/ManageActions'; import { SearchResultsGrid } from './components/SearchResultsGrid'; @@ -33,7 +34,16 @@ export default function SearchPage() { const styles = useStyles2(getStyles); const { query, onQueryChange, onTagFilterChange, onTagAdd, onDatasourceChange, onSortChange, onLayoutChange } = useSearchQuery({}); + const [showManage, setShowManage] = useState(false); // grid vs list view + const [folder, setFolder] = useState(); // grid vs list view + const folders = useAsync(async () => { + const rsp = await getGrafanaSearcher().search({ + query: '*', + kind: ['folder'], + }); + return rsp.view.map((v) => ({ value: v.uid, label: v.name })); + }, []); const [searchSelection, setSearchSelection] = useState(newSearchSelection()); const layout = getValidQueryLayout(query); @@ -48,10 +58,10 @@ export default function SearchPage() { query: qstr, tags: query.tag as string[], ds_uid: query.datasource as string, + location: folder, // This will scope all results to the prefix }; - console.log('DO QUERY', q); return getGrafanaSearcher().search(q); - }, [query, layout]); + }, [query, layout, folder]); const [inputValue, setInputValue] = useState(''); const onSearchQueryChange = (e: React.ChangeEvent) => { @@ -128,6 +138,17 @@ export default function SearchPage() { const selection = showManage ? searchSelection.isSelected : undefined; if (layout === SearchLayout.Folders) { + if (folder) { + return ( + + ); + } return ; } @@ -178,6 +199,14 @@ export default function SearchPage() { setShowManage(!showManage)} /> + +