Skip to content

Commit 96850e4

Browse files
committed
Hide analyzed panel when it's empty
This will hide the "Analyzed" panel when there are no scanned repos and it's completely empty. When all three panels are empty, this will also hide the search bar and filters, and will skip rendering anything for the panels.
1 parent 795a0bc commit 96850e4

File tree

3 files changed

+75
-16
lines changed

3 files changed

+75
-16
lines changed

extensions/ql-vscode/src/stories/variant-analysis/VariantAnalysis.stories.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,3 +385,19 @@ Failed.args = {
385385
repoStates,
386386
repoResults,
387387
};
388+
389+
export const FailedInternal = Template.bind({});
390+
FailedInternal.args = {
391+
variantAnalysis: {
392+
...variantAnalysis,
393+
status: VariantAnalysisStatus.Failed,
394+
failureReason: VariantAnalysisFailureReason.InternalError,
395+
completedAt: new Date(
396+
new Date(variantAnalysis.createdAt).getTime() + 100_000,
397+
).toISOString(),
398+
scannedRepos: [],
399+
skippedRepos: {},
400+
},
401+
repoStates,
402+
repoResults,
403+
};

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

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,14 @@ export const VariantAnalysisOutcomePanels = ({
110110
</WarningsContainer>
111111
);
112112

113+
const noPanels =
114+
scannedReposCount === 0 &&
115+
!noCodeqlDbRepos?.repositoryCount &&
116+
!notFoundRepos?.repositoryCount;
117+
if (noPanels) {
118+
return warnings;
119+
}
120+
113121
if (!noCodeqlDbRepos?.repositoryCount && !notFoundRepos?.repositoryCount) {
114122
return (
115123
<>
@@ -138,12 +146,14 @@ export const VariantAnalysisOutcomePanels = ({
138146
onChange={setFilterSortState}
139147
/>
140148
<VSCodePanels>
141-
<Tab>
142-
Analyzed
143-
<VSCodeBadge appearance="secondary">
144-
{formatDecimal(variantAnalysis.scannedRepos?.length ?? 0)}
145-
</VSCodeBadge>
146-
</Tab>
149+
{scannedReposCount > 0 && (
150+
<Tab>
151+
Analyzed
152+
<VSCodeBadge appearance="secondary">
153+
{formatDecimal(variantAnalysis.scannedRepos?.length ?? 0)}
154+
</VSCodeBadge>
155+
</Tab>
156+
)}
147157
{notFoundRepos?.repositoryCount && (
148158
<Tab>
149159
No access
@@ -160,16 +170,18 @@ export const VariantAnalysisOutcomePanels = ({
160170
</VSCodeBadge>
161171
</Tab>
162172
)}
163-
<VSCodePanelView>
164-
<VariantAnalysisAnalyzedRepos
165-
variantAnalysis={variantAnalysis}
166-
repositoryStates={repositoryStates}
167-
repositoryResults={repositoryResults}
168-
filterSortState={filterSortState}
169-
selectedRepositoryIds={selectedRepositoryIds}
170-
setSelectedRepositoryIds={setSelectedRepositoryIds}
171-
/>
172-
</VSCodePanelView>
173+
{scannedReposCount > 0 && (
174+
<VSCodePanelView>
175+
<VariantAnalysisAnalyzedRepos
176+
variantAnalysis={variantAnalysis}
177+
repositoryStates={repositoryStates}
178+
repositoryResults={repositoryResults}
179+
filterSortState={filterSortState}
180+
selectedRepositoryIds={selectedRepositoryIds}
181+
setSelectedRepositoryIds={setSelectedRepositoryIds}
182+
/>
183+
</VSCodePanelView>
184+
)}
173185
{notFoundRepos?.repositoryCount && (
174186
<VSCodePanelView>
175187
<VariantAnalysisSkippedRepositoriesTab

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as React from "react";
22
import { render as reactRender, screen } from "@testing-library/react";
33
import {
44
VariantAnalysis,
5+
VariantAnalysisFailureReason,
56
VariantAnalysisRepoStatus,
67
VariantAnalysisStatus,
78
} from "../../../remote-queries/shared/variant-analysis";
@@ -144,6 +145,36 @@ describe(VariantAnalysisOutcomePanels.name, () => {
144145
expect(screen.getByText("No database")).toBeInTheDocument();
145146
});
146147

148+
it("does not render analyzed panel when there are no scanned repos", () => {
149+
render({
150+
scannedRepos: [],
151+
skippedRepos: {
152+
notFoundRepos: defaultVariantAnalysis.skippedRepos.notFoundRepos,
153+
noCodeqlDbRepos: defaultVariantAnalysis.skippedRepos.noCodeqlDbRepos,
154+
},
155+
});
156+
157+
expect(screen.queryByRole("Analyzed")).not.toBeInTheDocument();
158+
expect(screen.getByText("No access")).toBeInTheDocument();
159+
expect(screen.getByText("No database")).toBeInTheDocument();
160+
});
161+
162+
it("does not render any tabs when there are no repos", () => {
163+
render({
164+
status: VariantAnalysisStatus.Failed,
165+
failureReason: VariantAnalysisFailureReason.InternalError,
166+
scannedRepos: [],
167+
skippedRepos: {},
168+
});
169+
170+
expect(screen.queryByRole("Analyzed")).not.toBeInTheDocument();
171+
expect(screen.queryByRole("No access")).not.toBeInTheDocument();
172+
expect(screen.queryByRole("No database")).not.toBeInTheDocument();
173+
expect(
174+
screen.getByText("Error: Something unexpected happened"),
175+
).toBeInTheDocument();
176+
});
177+
147178
it("renders warning with canceled variant analysis", () => {
148179
render({
149180
status: VariantAnalysisStatus.Canceled,

0 commit comments

Comments
 (0)