Merge pull request #1728 from github/koesie10/failed-view
Handle failed status in variant analysis view
This commit is contained in:
@@ -5,6 +5,7 @@ import { ComponentMeta, ComponentStory } from '@storybook/react';
|
||||
import { VariantAnalysis as VariantAnalysisComponent } from '../../view/variant-analysis/VariantAnalysis';
|
||||
import {
|
||||
VariantAnalysis as VariantAnalysisDomainModel,
|
||||
VariantAnalysisFailureReason,
|
||||
VariantAnalysisRepoStatus,
|
||||
VariantAnalysisScannedRepositoryDownloadStatus,
|
||||
VariantAnalysisScannedRepositoryResult,
|
||||
@@ -362,3 +363,23 @@ Canceled.args = {
|
||||
repoStates,
|
||||
repoResults,
|
||||
};
|
||||
|
||||
export const Failed = Template.bind({});
|
||||
Failed.args = {
|
||||
variantAnalysis: {
|
||||
...variantAnalysis,
|
||||
status: VariantAnalysisStatus.Failed,
|
||||
failureReason: VariantAnalysisFailureReason.NoReposQueried,
|
||||
completedAt: new Date(new Date(variantAnalysis.createdAt).getTime() + 100_000).toISOString(),
|
||||
scannedRepos: [],
|
||||
skippedRepos: {
|
||||
...variantAnalysis.skippedRepos,
|
||||
overLimitRepos: {
|
||||
repositoryCount: 0,
|
||||
repositories: [],
|
||||
},
|
||||
}
|
||||
},
|
||||
repoStates,
|
||||
repoResults,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
import * as React from 'react';
|
||||
import { VSCodeButton } from '@vscode/webview-ui-toolkit/react';
|
||||
import { Alert } from '../common';
|
||||
import { vscode } from '../vscode-api';
|
||||
import { VariantAnalysisFailureReason } from '../../remote-queries/shared/variant-analysis';
|
||||
|
||||
type Props = {
|
||||
failureReason: VariantAnalysisFailureReason;
|
||||
showLogsButton: boolean;
|
||||
};
|
||||
|
||||
const getTitle = (failureReason: VariantAnalysisFailureReason): string => {
|
||||
switch (failureReason) {
|
||||
case VariantAnalysisFailureReason.NoReposQueried:
|
||||
return 'No repositories to analyze';
|
||||
case VariantAnalysisFailureReason.InternalError:
|
||||
return 'Something unexpected happened';
|
||||
}
|
||||
};
|
||||
|
||||
const getMessage = (failureReason: VariantAnalysisFailureReason): string => {
|
||||
switch (failureReason) {
|
||||
case VariantAnalysisFailureReason.NoReposQueried:
|
||||
return 'No repositories available after processing. No repositories were analyzed.';
|
||||
case VariantAnalysisFailureReason.InternalError:
|
||||
return 'An internal error occurred while running this variant analysis. Please try again later.';
|
||||
}
|
||||
};
|
||||
|
||||
const openLogs = () => {
|
||||
vscode.postMessage({
|
||||
t: 'openLogs',
|
||||
});
|
||||
};
|
||||
|
||||
export const FailureReasonAlert = ({
|
||||
failureReason,
|
||||
showLogsButton,
|
||||
}: Props) => {
|
||||
return (
|
||||
<Alert
|
||||
type="error"
|
||||
title={getTitle(failureReason)}
|
||||
message={getMessage(failureReason)}
|
||||
actions={showLogsButton && <VSCodeButton appearance="secondary" onClick={openLogs}>View logs</VSCodeButton>}
|
||||
/>
|
||||
);
|
||||
};
|
||||
@@ -7,13 +7,14 @@ import {
|
||||
VariantAnalysis,
|
||||
VariantAnalysisScannedRepositoryResult,
|
||||
VariantAnalysisScannedRepositoryState,
|
||||
VariantAnalysisStatus,
|
||||
VariantAnalysisStatus
|
||||
} from '../../remote-queries/shared/variant-analysis';
|
||||
import { VariantAnalysisAnalyzedRepos } from './VariantAnalysisAnalyzedRepos';
|
||||
import { Alert } from '../common';
|
||||
import { VariantAnalysisSkippedRepositoriesTab } from './VariantAnalysisSkippedRepositoriesTab';
|
||||
import { defaultFilterSortState, RepositoriesFilterSortState } from './filterSort';
|
||||
import { RepositoriesSearchSortRow } from './RepositoriesSearchSortRow';
|
||||
import { FailureReasonAlert } from './FailureReasonAlert';
|
||||
|
||||
export type VariantAnalysisOutcomePanelProps = {
|
||||
variantAnalysis: VariantAnalysis;
|
||||
@@ -63,6 +64,9 @@ export const VariantAnalysisOutcomePanels = ({
|
||||
message="Variant analysis canceled before all queries were complete. Some repositories were not analyzed."
|
||||
/>
|
||||
)}
|
||||
{variantAnalysis.status === VariantAnalysisStatus.Failed && variantAnalysis.failureReason && (
|
||||
<FailureReasonAlert failureReason={variantAnalysis.failureReason} showLogsButton={!!variantAnalysis.actionsWorkflowRunId} />
|
||||
)}
|
||||
{overLimitRepositoryCount > 0 && (
|
||||
<Alert
|
||||
type="warning"
|
||||
|
||||
Reference in New Issue
Block a user