Skip to content

Commit 65f58b1

Browse files
committed
Add repositories search box
A simple, webview-only search box for filtering repositories from the remote queries results view.
1 parent 7e872aa commit 65f58b1

3 files changed

Lines changed: 48 additions & 4 deletions

File tree

extensions/ql-vscode/src/remote-queries/view/RemoteQueries.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import CollapsibleItem from './CollapsibleItem';
1919
import { AlertIcon, CodeSquareIcon, FileCodeIcon, RepoIcon, TerminalIcon } from '@primer/octicons-react';
2020
import AnalysisAlertResult from './AnalysisAlertResult';
2121
import RawResultsTable from './RawResultsTable';
22+
import RepositoriesSearch from './RepositoriesSearch';
2223

2324
const numOfReposInContractedMode = 10;
2425

@@ -308,6 +309,7 @@ const AnalysesResults = ({
308309
totalResults: number
309310
}) => {
310311
const totalAnalysesResults = sumAnalysesResults(analysesResults);
312+
const [filterValue, setFilterValue] = React.useState('');
311313

312314
if (totalResults === 0) {
313315
return <></>;
@@ -322,11 +324,19 @@ const AnalysesResults = ({
322324
<AnalysesResultsDescription
323325
queryResult={queryResult}
324326
analysesResults={analysesResults} />
327+
328+
<RepositoriesSearch
329+
filterValue={filterValue}
330+
setFilterValue={setFilterValue} />
331+
325332
<ul className="vscode-codeql__flat-list">
326-
{analysesResults.filter(a => a.interpretedResults.length > 0 || a.rawResults).map(r =>
327-
<li key={r.nwo} className="vscode-codeql__analyses-results-list-item">
328-
<RepoAnalysisResults {...r} />
329-
</li>)}
333+
{analysesResults
334+
.filter(a => a.interpretedResults.length > 0 || a.rawResults)
335+
.filter(a => a.nwo.toLowerCase().includes(filterValue.toLowerCase()))
336+
.map(r =>
337+
<li key={r.nwo} className="vscode-codeql__analyses-results-list-item">
338+
<RepoAnalysisResults {...r} />
339+
</li>)}
330340
</ul>
331341
</>
332342
);
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import * as React from 'react';
2+
import { ChangeEvent } from 'react';
3+
import { TextInput } from '@primer/react';
4+
import { SearchIcon } from '@primer/octicons-react';
5+
6+
interface RepositoriesSearchProps {
7+
filterValue: string;
8+
setFilterValue: (value: string) => void;
9+
}
10+
11+
const RepositoriesSearch = ({ filterValue, setFilterValue }: RepositoriesSearchProps) => {
12+
return <>
13+
<TextInput
14+
block
15+
sx={{
16+
backgroundColor: 'var(--vscode-editor-background);',
17+
color: 'var(--vscode-editor-foreground);'
18+
}}
19+
className="vscode-codeql__repositories-search"
20+
leadingVisual={SearchIcon}
21+
aria-label="Repository search"
22+
name="repository-search"
23+
placeholder="Filter by repository owner/name"
24+
value={filterValue}
25+
onChange={(e: ChangeEvent) => setFilterValue((e.target as HTMLInputElement).value)}
26+
/>
27+
</>;
28+
};
29+
30+
export default RepositoriesSearch;

extensions/ql-vscode/src/remote-queries/view/remoteQueries.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040
color: var(--vscode-editor-foreground);
4141
}
4242

43+
.vscode-codeql__repositories-search {
44+
margin: 1em 0 0 0;
45+
}
46+
4347
.vscode-codeql__flat-list {
4448
list-style-type: none;
4549
margin: 0;

0 commit comments

Comments
 (0)