Skip to content

Commit 4ea1bb5

Browse files
authored
Merge pull request #2427 from github/koesie10/export-copy-selected-text
Update export/copy buttons copy when repositories are selected
2 parents a3f2b7b + 8f3fe74 commit 4ea1bb5

File tree

4 files changed

+77
-2
lines changed

4 files changed

+77
-2
lines changed

extensions/ql-vscode/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
- Add settings `codeQL.variantAnalysis.defaultResultsFilter` and `codeQL.variantAnalysis.defaultResultsSort` for configuring how variant analysis results are filtered and sorted in the results view. The default is to show all repositories, and to sort by the number of results. [#2392](https://github.com/github/vscode-codeql/pull/2392)
66
- Fix bug to ensure error messages have complete stack trace in message logs. [#2425](https://github.com/github/vscode-codeql/pull/2425)
77
- Fix bug where the `CodeQL: Compare Query` command did not work for comparing quick-eval queries. [#2422](https://github.com/github/vscode-codeql/pull/2422)
8+
- Update text of copy and export buttons in variant analysis results view to clarify that they only copy/export the selected/filtered results. [#2427](https://github.com/github/vscode-codeql/pull/2427)
89

910
## 1.8.4 - 3 May 2023
1011

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ export type VariantAnalysisActionsProps = {
1414
onExportResultsClick: () => void;
1515
copyRepositoryListDisabled?: boolean;
1616
exportResultsDisabled?: boolean;
17+
18+
hasSelectedRepositories?: boolean;
19+
hasFilteredRepositories?: boolean;
1720
};
1821

1922
const Container = styled.div`
@@ -26,6 +29,28 @@ const Button = styled(VSCodeButton)`
2629
white-space: nowrap;
2730
`;
2831

32+
const chooseText = ({
33+
hasSelectedRepositories,
34+
hasFilteredRepositories,
35+
normalText,
36+
selectedText,
37+
filteredText,
38+
}: {
39+
hasSelectedRepositories?: boolean;
40+
hasFilteredRepositories?: boolean;
41+
normalText: string;
42+
selectedText: string;
43+
filteredText: string;
44+
}) => {
45+
if (hasSelectedRepositories) {
46+
return selectedText;
47+
}
48+
if (hasFilteredRepositories) {
49+
return filteredText;
50+
}
51+
return normalText;
52+
};
53+
2954
export const VariantAnalysisActions = ({
3055
variantAnalysisStatus,
3156
onStopQueryClick,
@@ -35,6 +60,8 @@ export const VariantAnalysisActions = ({
3560
onExportResultsClick,
3661
copyRepositoryListDisabled,
3762
exportResultsDisabled,
63+
hasSelectedRepositories,
64+
hasFilteredRepositories,
3865
}: VariantAnalysisActionsProps) => {
3966
return (
4067
<Container>
@@ -45,14 +72,26 @@ export const VariantAnalysisActions = ({
4572
onClick={onCopyRepositoryListClick}
4673
disabled={copyRepositoryListDisabled}
4774
>
48-
Copy repository list
75+
{chooseText({
76+
hasSelectedRepositories,
77+
hasFilteredRepositories,
78+
normalText: "Copy repository list",
79+
selectedText: "Copy selected repositories as a list",
80+
filteredText: "Copy filtered repositories as a list",
81+
})}
4982
</Button>
5083
<Button
5184
appearance="primary"
5285
onClick={onExportResultsClick}
5386
disabled={exportResultsDisabled}
5487
>
55-
Export results
88+
{chooseText({
89+
hasSelectedRepositories,
90+
hasFilteredRepositories,
91+
normalText: "Export results",
92+
selectedText: "Export selected results",
93+
filteredText: "Export filtered results",
94+
})}
5695
</Button>
5796
</>
5897
)}

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisHeader.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,13 @@ export const VariantAnalysisHeader = ({
131131
stopQueryDisabled={!variantAnalysis.actionsWorkflowRunId}
132132
exportResultsDisabled={!hasDownloadedRepos}
133133
copyRepositoryListDisabled={!hasReposWithResults}
134+
hasFilteredRepositories={
135+
variantAnalysis.scannedRepos?.length !==
136+
filteredRepositories?.length
137+
}
138+
hasSelectedRepositories={
139+
selectedRepositoryIds && selectedRepositoryIds.length > 0
140+
}
134141
/>
135142
</Row>
136143
<VariantAnalysisStats

extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisActions.spec.tsx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,32 @@ describe(VariantAnalysisActions.name, () => {
9393

9494
expect(container.querySelectorAll("vscode-button").length).toEqual(0);
9595
});
96+
97+
it("changes the text on the buttons when repositories are selected", async () => {
98+
render({
99+
variantAnalysisStatus: VariantAnalysisStatus.Succeeded,
100+
showResultActions: true,
101+
hasSelectedRepositories: true,
102+
hasFilteredRepositories: true,
103+
});
104+
105+
expect(screen.getByText("Export selected results")).toBeInTheDocument();
106+
expect(
107+
screen.getByText("Copy selected repositories as a list"),
108+
).toBeInTheDocument();
109+
});
110+
111+
it("changes the text on the buttons when repositories are filtered", async () => {
112+
render({
113+
variantAnalysisStatus: VariantAnalysisStatus.Succeeded,
114+
showResultActions: true,
115+
hasSelectedRepositories: false,
116+
hasFilteredRepositories: true,
117+
});
118+
119+
expect(screen.getByText("Export filtered results")).toBeInTheDocument();
120+
expect(
121+
screen.getByText("Copy filtered repositories as a list"),
122+
).toBeInTheDocument();
123+
});
96124
});

0 commit comments

Comments
 (0)