11import * as React from 'react' ;
22import { useMemo } from 'react' ;
33import styled from 'styled-components' ;
4- import { VariantAnalysis , VariantAnalysisRepoStatus } from '../../remote-queries/shared/variant-analysis' ;
4+ import {
5+ getSkippedRepoCount , getTotalResultCount ,
6+ hasRepoScanCompleted ,
7+ VariantAnalysis ,
8+ } from '../../remote-queries/shared/variant-analysis' ;
59import { QueryDetails } from './QueryDetails' ;
610import { VariantAnalysisActions } from './VariantAnalysisActions' ;
711import { VariantAnalysisStats } from './VariantAnalysisStats' ;
@@ -45,31 +49,17 @@ export const VariantAnalysisHeader = ({
4549 onExportResultsClick,
4650 onViewLogsClick,
4751} : VariantAnalysisHeaderProps ) => {
48- const totalRepositoryCount = useMemo ( ( ) => {
52+ const totalScannedRepositoryCount = useMemo ( ( ) => {
4953 return variantAnalysis . scannedRepos ?. length ?? 0 ;
5054 } , [ variantAnalysis . scannedRepos ] ) ;
5155 const completedRepositoryCount = useMemo ( ( ) => {
52- return variantAnalysis . scannedRepos ?. filter ( repo => [
53- // All states that indicates the repository has been scanned and cannot
54- // change status anymore.
55- VariantAnalysisRepoStatus . Succeeded , VariantAnalysisRepoStatus . Failed ,
56- VariantAnalysisRepoStatus . Canceled , VariantAnalysisRepoStatus . TimedOut ,
57- ] . includes ( repo . analysisStatus ) ) ?. length ?? 0 ;
56+ return variantAnalysis . scannedRepos ?. filter ( repo => hasRepoScanCompleted ( repo ) ) ?. length ?? 0 ;
5857 } , [ variantAnalysis . scannedRepos ] ) ;
5958 const resultCount = useMemo ( ( ) => {
60- const reposWithResultCounts = variantAnalysis . scannedRepos ?. filter ( repo => repo . resultCount !== undefined ) ;
61- if ( reposWithResultCounts === undefined || reposWithResultCounts . length === 0 ) {
62- return undefined ;
63- }
64-
65- return reposWithResultCounts . map ( repo => repo . resultCount ?? 0 ) . reduce ( ( a , b ) => a + b , 0 ) ;
59+ return getTotalResultCount ( variantAnalysis . scannedRepos ) ;
6660 } , [ variantAnalysis . scannedRepos ] ) ;
6761 const hasSkippedRepos = useMemo ( ( ) => {
68- if ( ! variantAnalysis . skippedRepos ) {
69- return false ;
70- }
71-
72- return Object . values ( variantAnalysis . skippedRepos ) . some ( skippedRepos => skippedRepos . length > 0 ) ;
62+ return getSkippedRepoCount ( variantAnalysis . skippedRepos ) > 0 ;
7363 } , [ variantAnalysis . skippedRepos ] ) ;
7464
7565 return (
@@ -90,7 +80,7 @@ export const VariantAnalysisHeader = ({
9080 </ Row >
9181 < VariantAnalysisStats
9282 variantAnalysisStatus = { variantAnalysis . status }
93- totalRepositoryCount = { totalRepositoryCount }
83+ totalRepositoryCount = { totalScannedRepositoryCount }
9484 completedRepositoryCount = { completedRepositoryCount }
9585 resultCount = { resultCount }
9686 hasWarnings = { hasSkippedRepos }
0 commit comments