Make "result format" dropdown determine result display

This commit is contained in:
shati-patel
2023-08-24 17:28:54 +01:00
parent f8d542d141
commit 24b93e247c
6 changed files with 41 additions and 2 deletions

View File

@@ -11,6 +11,7 @@ import {
VariantAnalysisScannedRepositoryDownloadStatus,
} from "../../variant-analysis/shared/variant-analysis";
import { Alert } from "../common";
import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format";
const ContentContainer = styled.div`
display: flex;
@@ -37,12 +38,28 @@ const RawResultsContainer = styled.div`
margin-top: 0.5em;
`;
function chooseResultFormat(
interpretedResults: AnalysisAlert[] | undefined,
rawResults: AnalysisRawResults | undefined,
resultFormat: ResultFormat,
): ResultFormat | undefined {
if (interpretedResults && resultFormat === ResultFormat.Alerts) {
return ResultFormat.Alerts;
} else if (rawResults) {
return ResultFormat.RawResults;
} else {
return undefined;
}
}
export type AnalyzedRepoItemContentProps = {
status?: VariantAnalysisRepoStatus;
downloadStatus?: VariantAnalysisScannedRepositoryDownloadStatus;
interpretedResults?: AnalysisAlert[];
rawResults?: AnalysisRawResults;
resultFormat: ResultFormat;
};
export const AnalyzedRepoItemContent = ({
@@ -50,7 +67,13 @@ export const AnalyzedRepoItemContent = ({
downloadStatus,
interpretedResults,
rawResults,
resultFormat,
}: AnalyzedRepoItemContentProps) => {
const chosenResultFormat = chooseResultFormat(
interpretedResults,
rawResults,
resultFormat,
);
return (
<ContentContainer>
{status === VariantAnalysisRepoStatus.Failed && (
@@ -90,7 +113,7 @@ export const AnalyzedRepoItemContent = ({
/>
</AlertContainer>
)}
{interpretedResults && (
{interpretedResults && chosenResultFormat === ResultFormat.Alerts && (
<InterpretedResultsContainer>
{interpretedResults.map((r, i) => (
<InterpretedResultItem key={i}>
@@ -99,7 +122,7 @@ export const AnalyzedRepoItemContent = ({
))}
</InterpretedResultsContainer>
)}
{rawResults && (
{rawResults && chosenResultFormat === ResultFormat.RawResults && (
<RawResultsContainer>
<RawResultsTable
schema={rawResults.schema}

View File

@@ -26,6 +26,7 @@ import { AnalyzedRepoItemContent } from "./AnalyzedRepoItemContent";
import StarCount from "../common/StarCount";
import { useTelemetryOnChange } from "../common/telemetry";
import { DeterminateProgressRing } from "../common/DeterminateProgressRing";
import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format";
// This will ensure that these icons have a className which we can use in the TitleContainer
const ExpandCollapseCodicon = styled(Codicon)``;
@@ -98,6 +99,8 @@ export type RepoRowProps = {
interpretedResults?: AnalysisAlert[];
rawResults?: AnalysisRawResults;
resultFormat?: ResultFormat;
selected?: boolean;
onSelectedChange?: (repositoryId: number, selected: boolean) => void;
};
@@ -168,6 +171,7 @@ export const RepoRow = ({
resultCount,
interpretedResults,
rawResults,
resultFormat = ResultFormat.Alerts,
selected,
onSelectedChange,
}: RepoRowProps) => {
@@ -304,6 +308,7 @@ export const RepoRow = ({
downloadStatus={downloadState?.downloadStatus}
interpretedResults={interpretedResults}
rawResults={rawResults}
resultFormat={resultFormat}
/>
)}
</div>

View File

@@ -11,6 +11,7 @@ import {
filterAndSortRepositoriesWithResultsByName,
RepositoriesFilterSortState,
} from "../../variant-analysis/shared/variant-analysis-filter-sort";
import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format";
const Container = styled.div`
display: flex;
@@ -26,6 +27,8 @@ export type VariantAnalysisAnalyzedReposProps = {
filterSortState?: RepositoriesFilterSortState;
resultFormat: ResultFormat;
selectedRepositoryIds?: number[];
setSelectedRepositoryIds?: Dispatch<SetStateAction<number[]>>;
};
@@ -35,6 +38,7 @@ export const VariantAnalysisAnalyzedRepos = ({
repositoryStates,
repositoryResults,
filterSortState,
resultFormat,
selectedRepositoryIds,
setSelectedRepositoryIds,
}: VariantAnalysisAnalyzedReposProps) => {
@@ -93,6 +97,7 @@ export const VariantAnalysisAnalyzedRepos = ({
resultCount={repository.resultCount}
interpretedResults={results?.interpretedResults}
rawResults={results?.rawResults}
resultFormat={resultFormat}
selected={selectedRepositoryIds?.includes(repository.repository.id)}
onSelectedChange={onSelectedChange}
/>

View File

@@ -136,6 +136,7 @@ export const VariantAnalysisOutcomePanels = ({
repositoryStates={repositoryStates}
repositoryResults={repositoryResults}
filterSortState={filterSortState}
resultFormat={resultFormat}
selectedRepositoryIds={selectedRepositoryIds}
setSelectedRepositoryIds={setSelectedRepositoryIds}
/>
@@ -185,6 +186,7 @@ export const VariantAnalysisOutcomePanels = ({
repositoryStates={repositoryStates}
repositoryResults={repositoryResults}
filterSortState={filterSortState}
resultFormat={resultFormat}
selectedRepositoryIds={selectedRepositoryIds}
setSelectedRepositoryIds={setSelectedRepositoryIds}
/>

View File

@@ -8,12 +8,14 @@ import {
AnalyzedRepoItemContent,
AnalyzedRepoItemContentProps,
} from "../AnalyzedRepoItemContent";
import { ResultFormat } from "../../../variant-analysis/shared/variant-analysis-result-format";
describe(AnalyzedRepoItemContent.name, () => {
const render = (props: Partial<AnalyzedRepoItemContentProps> = {}) => {
return reactRender(
<AnalyzedRepoItemContent
status={VariantAnalysisRepoStatus.Succeeded}
resultFormat={ResultFormat.Alerts}
{...props}
/>,
);

View File

@@ -15,6 +15,7 @@ import { createMockRepositoryWithMetadata } from "../../../../test/factories/var
import { createMockScannedRepo } from "../../../../test/factories/variant-analysis/shared/scanned-repositories";
import { SortKey } from "../../../variant-analysis/shared/variant-analysis-filter-sort";
import { permissiveFilterSortState } from "../../../../test/unit-tests/variant-analysis-filter-sort.test";
import { ResultFormat } from "../../../variant-analysis/shared/variant-analysis-result-format";
describe(VariantAnalysisAnalyzedRepos.name, () => {
const defaultVariantAnalysis = createMockVariantAnalysis({
@@ -99,6 +100,7 @@ describe(VariantAnalysisAnalyzedRepos.name, () => {
return reactRender(
<VariantAnalysisAnalyzedRepos
variantAnalysis={defaultVariantAnalysis}
resultFormat={ResultFormat.Alerts}
{...props}
/>,
);