Skip to content

Commit 48174c3

Browse files
authored
Merge pull request #1246 from github/aeisenberg/repo-filter
Add repositories search box
2 parents 4ff4e48 + 43f2539 commit 48174c3

4 files changed

Lines changed: 63 additions & 17 deletions

File tree

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ const shouldHighlightLine = (lineNumber: number, highlightedRegion: HighlightedR
3737
const Container = styled.div`
3838
font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
3939
font-size: x-small;
40-
width: 55em;
4140
`;
4241

4342
const TitleContainer = styled.div`

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

Lines changed: 29 additions & 16 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,20 @@ const AnalysesResults = ({
322324
<AnalysesResultsDescription
323325
queryResult={queryResult}
324326
analysesResults={analysesResults} />
327+
328+
<VerticalSpace size={2} />
329+
<RepositoriesSearch
330+
filterValue={filterValue}
331+
setFilterValue={setFilterValue} />
332+
325333
<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>)}
334+
{analysesResults
335+
.filter(a => a.interpretedResults.length > 0 || a.rawResults)
336+
.filter(a => a.nwo.toLowerCase().includes(filterValue.toLowerCase()))
337+
.map(r =>
338+
<li key={r.nwo} className="vscode-codeql__analyses-results-list-item">
339+
<RepoAnalysisResults {...r} />
340+
</li>)}
330341
</ul>
331342
</>
332343
);
@@ -358,18 +369,20 @@ export function RemoteQueries(): JSX.Element {
358369
}
359370

360371
try {
361-
return <div>
362-
<ThemeProvider colorMode="auto">
363-
<ViewTitle>{queryResult.queryTitle}</ViewTitle>
364-
<QueryInfo {...queryResult} />
365-
<Failures {...queryResult} />
366-
<Summary queryResult={queryResult} analysesResults={analysesResults} />
367-
<AnalysesResults
368-
queryResult={queryResult}
369-
analysesResults={analysesResults}
370-
totalResults={queryResult.totalResultCount} />
371-
</ThemeProvider>
372-
</div>;
372+
return (
373+
<div className="vscode-codeql__remote-queries">
374+
<ThemeProvider colorMode="auto">
375+
<ViewTitle>{queryResult.queryTitle}</ViewTitle>
376+
<QueryInfo {...queryResult} />
377+
<Failures {...queryResult} />
378+
<Summary queryResult={queryResult} analysesResults={analysesResults} />
379+
<AnalysesResults
380+
queryResult={queryResult}
381+
analysesResults={analysesResults}
382+
totalResults={queryResult.totalResultCount} />
383+
</ThemeProvider>
384+
</div>
385+
);
373386
} catch (err) {
374387
console.error(err);
375388
return <div>There was an error displaying the view.</div>;
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+
width: 'calc(100% - 14px)',
19+
}}
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
@@ -1,3 +1,7 @@
1+
.vscode-codeql__remote-queries {
2+
max-width: 55em;
3+
}
4+
15
.vscode-codeql__query-info-link {
26
text-decoration: none;
37
padding-right: 1em;

0 commit comments

Comments
 (0)