Merge pull request #2749 from github/shati-patel/implement-dropdown
Make "result format" dropdown determine result display
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
## [UNRELEASED]
|
||||
|
||||
- Update how variant analysis results are displayed. For queries with ["path-problem" or "problem" `@kind`](https://codeql.github.com/docs/writing-codeql-queries/metadata-for-codeql-queries/#metadata-properties), you can choose to display the results as rendered alerts or as a table of raw results. For queries with any other `@kind`, the results are displayed as a table. [#2745](https://github.com/github/vscode-codeql/pull/2745) & [#2749](https://github.com/github/vscode-codeql/pull/2749)
|
||||
- When running variant analyses, don't download artifacts for repositories with no results. [#2736](https://github.com/github/vscode-codeql/pull/2736)
|
||||
- Group the extension settings, so that they're easier to find in the Settings UI. [#2706](https://github.com/github/vscode-codeql/pull/2706)
|
||||
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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}
|
||||
/>
|
||||
|
||||
@@ -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}
|
||||
/>
|
||||
|
||||
@@ -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}
|
||||
/>,
|
||||
);
|
||||
|
||||
@@ -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}
|
||||
/>,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user