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.
This commit is contained in:
@@ -385,3 +385,19 @@ Failed.args = {
|
||||
repoStates,
|
||||
repoResults,
|
||||
};
|
||||
|
||||
export const FailedInternal = Template.bind({});
|
||||
FailedInternal.args = {
|
||||
variantAnalysis: {
|
||||
...variantAnalysis,
|
||||
status: VariantAnalysisStatus.Failed,
|
||||
failureReason: VariantAnalysisFailureReason.InternalError,
|
||||
completedAt: new Date(
|
||||
new Date(variantAnalysis.createdAt).getTime() + 100_000,
|
||||
).toISOString(),
|
||||
scannedRepos: [],
|
||||
skippedRepos: {},
|
||||
},
|
||||
repoStates,
|
||||
repoResults,
|
||||
};
|
||||
|
||||
@@ -110,6 +110,14 @@ export const VariantAnalysisOutcomePanels = ({
|
||||
</WarningsContainer>
|
||||
);
|
||||
|
||||
const noPanels =
|
||||
scannedReposCount === 0 &&
|
||||
!noCodeqlDbRepos?.repositoryCount &&
|
||||
!notFoundRepos?.repositoryCount;
|
||||
if (noPanels) {
|
||||
return warnings;
|
||||
}
|
||||
|
||||
if (!noCodeqlDbRepos?.repositoryCount && !notFoundRepos?.repositoryCount) {
|
||||
return (
|
||||
<>
|
||||
@@ -138,12 +146,14 @@ export const VariantAnalysisOutcomePanels = ({
|
||||
onChange={setFilterSortState}
|
||||
/>
|
||||
<VSCodePanels>
|
||||
<Tab>
|
||||
Analyzed
|
||||
<VSCodeBadge appearance="secondary">
|
||||
{formatDecimal(variantAnalysis.scannedRepos?.length ?? 0)}
|
||||
</VSCodeBadge>
|
||||
</Tab>
|
||||
{scannedReposCount > 0 && (
|
||||
<Tab>
|
||||
Analyzed
|
||||
<VSCodeBadge appearance="secondary">
|
||||
{formatDecimal(variantAnalysis.scannedRepos?.length ?? 0)}
|
||||
</VSCodeBadge>
|
||||
</Tab>
|
||||
)}
|
||||
{notFoundRepos?.repositoryCount && (
|
||||
<Tab>
|
||||
No access
|
||||
@@ -160,16 +170,18 @@ export const VariantAnalysisOutcomePanels = ({
|
||||
</VSCodeBadge>
|
||||
</Tab>
|
||||
)}
|
||||
<VSCodePanelView>
|
||||
<VariantAnalysisAnalyzedRepos
|
||||
variantAnalysis={variantAnalysis}
|
||||
repositoryStates={repositoryStates}
|
||||
repositoryResults={repositoryResults}
|
||||
filterSortState={filterSortState}
|
||||
selectedRepositoryIds={selectedRepositoryIds}
|
||||
setSelectedRepositoryIds={setSelectedRepositoryIds}
|
||||
/>
|
||||
</VSCodePanelView>
|
||||
{scannedReposCount > 0 && (
|
||||
<VSCodePanelView>
|
||||
<VariantAnalysisAnalyzedRepos
|
||||
variantAnalysis={variantAnalysis}
|
||||
repositoryStates={repositoryStates}
|
||||
repositoryResults={repositoryResults}
|
||||
filterSortState={filterSortState}
|
||||
selectedRepositoryIds={selectedRepositoryIds}
|
||||
setSelectedRepositoryIds={setSelectedRepositoryIds}
|
||||
/>
|
||||
</VSCodePanelView>
|
||||
)}
|
||||
{notFoundRepos?.repositoryCount && (
|
||||
<VSCodePanelView>
|
||||
<VariantAnalysisSkippedRepositoriesTab
|
||||
|
||||
@@ -2,6 +2,7 @@ import * as React from "react";
|
||||
import { render as reactRender, screen } from "@testing-library/react";
|
||||
import {
|
||||
VariantAnalysis,
|
||||
VariantAnalysisFailureReason,
|
||||
VariantAnalysisRepoStatus,
|
||||
VariantAnalysisStatus,
|
||||
} from "../../../remote-queries/shared/variant-analysis";
|
||||
@@ -144,6 +145,36 @@ describe(VariantAnalysisOutcomePanels.name, () => {
|
||||
expect(screen.getByText("No database")).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("does not render analyzed panel when there are no scanned repos", () => {
|
||||
render({
|
||||
scannedRepos: [],
|
||||
skippedRepos: {
|
||||
notFoundRepos: defaultVariantAnalysis.skippedRepos.notFoundRepos,
|
||||
noCodeqlDbRepos: defaultVariantAnalysis.skippedRepos.noCodeqlDbRepos,
|
||||
},
|
||||
});
|
||||
|
||||
expect(screen.queryByRole("Analyzed")).not.toBeInTheDocument();
|
||||
expect(screen.getByText("No access")).toBeInTheDocument();
|
||||
expect(screen.getByText("No database")).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("does not render any tabs when there are no repos", () => {
|
||||
render({
|
||||
status: VariantAnalysisStatus.Failed,
|
||||
failureReason: VariantAnalysisFailureReason.InternalError,
|
||||
scannedRepos: [],
|
||||
skippedRepos: {},
|
||||
});
|
||||
|
||||
expect(screen.queryByRole("Analyzed")).not.toBeInTheDocument();
|
||||
expect(screen.queryByRole("No access")).not.toBeInTheDocument();
|
||||
expect(screen.queryByRole("No database")).not.toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText("Error: Something unexpected happened"),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("renders warning with canceled variant analysis", () => {
|
||||
render({
|
||||
status: VariantAnalysisStatus.Canceled,
|
||||
|
||||
Reference in New Issue
Block a user