Skip to content

Commit 9c25851

Browse files
authored
Show collapsible analyses results (#1116)
1 parent e46c0e2 commit 9c25851

5 files changed

Lines changed: 102 additions & 6 deletions

File tree

extensions/ql-vscode/package-lock.json

Lines changed: 24 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

extensions/ql-vscode/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,6 +1013,7 @@
10131013
},
10141014
"dependencies": {
10151015
"@octokit/rest": "^18.5.6",
1016+
"@primer/octicons-react": "^16.3.0",
10161017
"@primer/react": "^34.3.0",
10171018
"child-process-promise": "^2.2.1",
10181019
"classnames": "~2.2.6",
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import * as React from 'react';
2+
import styled from 'styled-components';
3+
import { ChevronDownIcon, ChevronRightIcon } from '@primer/octicons-react';
4+
import { useState } from 'react';
5+
6+
const Container = styled.div`
7+
display: block;
8+
vertical-align: middle;
9+
`;
10+
11+
const TitleContainer = styled.span`
12+
display: inline-block;
13+
`;
14+
15+
const Button = styled.button`
16+
display: inline-block;
17+
background-color: transparent;
18+
border: none;
19+
padding-left: 0;
20+
padding-right: 0.1em;
21+
`;
22+
23+
const CollapsibleItem = ({
24+
title,
25+
children
26+
}: {
27+
title: React.ReactNode;
28+
children: React.ReactNode
29+
}) => {
30+
const [isExpanded, setExpanded] = useState(false);
31+
return (
32+
<>
33+
<Container>
34+
<Button onClick={() => setExpanded(!isExpanded)}>
35+
{isExpanded
36+
? <ChevronDownIcon size={16} />
37+
: <ChevronRightIcon size={16} />
38+
}
39+
</Button>
40+
<TitleContainer>{title}</TitleContainer>
41+
</Container>
42+
{isExpanded && children}
43+
</>
44+
);
45+
};
46+
47+
export default CollapsibleItem;

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import ViewTitle from './ViewTitle';
1616
import DownloadButton from './DownloadButton';
1717
import { AnalysisResults } from '../shared/analysis-result';
1818
import DownloadSpinner from './DownloadSpinner';
19+
import CollapsibleItem from './CollapsibleItem';
1920

2021
const numOfReposInContractedMode = 10;
2122

@@ -214,6 +215,19 @@ const AnalysesResultsDescription = ({ totalAnalysesResults, totalResults }: { to
214215
return <></>;
215216
};
216217

218+
const RepoAnalysisResults = (analysisResults: AnalysisResults) => {
219+
const title = <>
220+
{analysisResults.nwo}
221+
<Badge text={analysisResults.results.length.toString()} />
222+
</>;
223+
224+
return (
225+
<CollapsibleItem title={title}>
226+
{analysisResults.results.map((r, i) => (<p key={i} >{r.message}</p>))}
227+
</CollapsibleItem>
228+
);
229+
};
230+
217231
const AnalysesResults = ({ analysesResults, totalResults }: { analysesResults: AnalysisResults[], totalResults: number }) => {
218232
const totalAnalysesResults = sumAnalysesResults(analysesResults);
219233

@@ -230,6 +244,12 @@ const AnalysesResults = ({ analysesResults, totalResults }: { analysesResults: A
230244
<AnalysesResultsDescription
231245
totalAnalysesResults={totalAnalysesResults}
232246
totalResults={totalResults} />
247+
<ul className="vscode-codeql__analyses-results-list">
248+
{analysesResults.filter(a => a.results.length > 0).map(r =>
249+
<li key={r.nwo} className="vscode-codeql__analyses-results-list-item">
250+
<RepoAnalysisResults {...r} />
251+
</li>)}
252+
</ul>
233253
</>
234254
);
235255
};

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@
3838
margin-top: 0.5em;
3939
}
4040

41+
.vscode-codeql__analyses-results-list {
42+
list-style-type: none;
43+
margin: 0;
44+
padding: 0.5em 0 0 0;
45+
}
46+
47+
.vscode-codeql__analyses-results-list-item {
48+
padding-top: 0.5em;
49+
}
50+
4151
.vscode-codeql__analysis-item {
4252
padding-right: 0.1em;
4353
}

0 commit comments

Comments
 (0)