Skip to content

Commit 0125d10

Browse files
committed
Take filtered state into account for buttons text
When the user filters the repositories, the buttons should reflect that the results are filtered and that the user is not exporting or copying all the results. If the user has selected repositories, the buttons should still say that they are exporting selected results.
1 parent fa39bd1 commit 0125d10

File tree

3 files changed

+57
-6
lines changed

3 files changed

+57
-6
lines changed

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

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export type VariantAnalysisActionsProps = {
1616
exportResultsDisabled?: boolean;
1717

1818
hasSelectedRepositories?: boolean;
19+
hasFilteredRepositories?: boolean;
1920
};
2021

2122
const Container = styled.div`
@@ -28,6 +29,28 @@ const Button = styled(VSCodeButton)`
2829
white-space: nowrap;
2930
`;
3031

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+
3154
export const VariantAnalysisActions = ({
3255
variantAnalysisStatus,
3356
onStopQueryClick,
@@ -38,6 +61,7 @@ export const VariantAnalysisActions = ({
3861
copyRepositoryListDisabled,
3962
exportResultsDisabled,
4063
hasSelectedRepositories,
64+
hasFilteredRepositories,
4165
}: VariantAnalysisActionsProps) => {
4266
return (
4367
<Container>
@@ -48,18 +72,26 @@ export const VariantAnalysisActions = ({
4872
onClick={onCopyRepositoryListClick}
4973
disabled={copyRepositoryListDisabled}
5074
>
51-
{hasSelectedRepositories
52-
? "Copy selected repositories as a list"
53-
: "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+
})}
5482
</Button>
5583
<Button
5684
appearance="primary"
5785
onClick={onExportResultsClick}
5886
disabled={exportResultsDisabled}
5987
>
60-
{hasSelectedRepositories
61-
? "Export selected results"
62-
: "Export results"}
88+
{chooseText({
89+
hasSelectedRepositories,
90+
hasFilteredRepositories,
91+
normalText: "Export results",
92+
selectedText: "Export selected results",
93+
filteredText: "Export filtered results",
94+
})}
6395
</Button>
6496
</>
6597
)}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ export const VariantAnalysisHeader = ({
131131
stopQueryDisabled={!variantAnalysis.actionsWorkflowRunId}
132132
exportResultsDisabled={!hasDownloadedRepos}
133133
copyRepositoryListDisabled={!hasReposWithResults}
134+
hasFilteredRepositories={
135+
variantAnalysis.scannedRepos?.length !==
136+
filteredRepositories?.length
137+
}
134138
hasSelectedRepositories={
135139
selectedRepositoryIds && selectedRepositoryIds.length > 0
136140
}

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,26 @@ describe(VariantAnalysisActions.name, () => {
9999
variantAnalysisStatus: VariantAnalysisStatus.Succeeded,
100100
showResultActions: true,
101101
hasSelectedRepositories: true,
102+
hasFilteredRepositories: true,
102103
});
103104

104105
expect(screen.getByText("Export selected results")).toBeInTheDocument();
105106
expect(
106107
screen.getByText("Copy selected repositories as a list"),
107108
).toBeInTheDocument();
108109
});
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+
});
109124
});

0 commit comments

Comments
 (0)