@@ -29,6 +29,24 @@ const ALERTS_TABLE_NAME = 'alerts';
2929const SELECT_TABLE_NAME = '#select' ;
3030const UPDATING_RESULTS_TEXT_CLASS_NAME = "vscode-codeql__result-tables-updating-text" ;
3131
32+ function getResultCount ( resultSet : ResultSet ) : number {
33+ switch ( resultSet . t ) {
34+ case 'RawResultSet' :
35+ return resultSet . schema . tupleCount ;
36+ case 'SarifResultSet' :
37+ if ( resultSet . sarif . runs . length === 0 ) return 0 ;
38+ if ( resultSet . sarif . runs [ 0 ] . results === undefined ) return 0 ;
39+ return resultSet . sarif . runs [ 0 ] . results . length + resultSet . numTruncatedResults ;
40+ }
41+ }
42+
43+ function renderResultCountString ( resultSet : ResultSet ) : JSX . Element {
44+ const resultCount = getResultCount ( resultSet ) ;
45+ return < span className = "number-of-results" >
46+ { resultCount } { resultCount === 1 ? 'result' : 'results' }
47+ </ span > ;
48+ }
49+
3250/**
3351 * Displays multiple `ResultTable` tables, where the table to be displayed is selected by a
3452 * dropdown.
@@ -96,6 +114,9 @@ export class ResultTables
96114 < label htmlFor = "toggle-diagnostics" > Show results in Problems view</ label >
97115 </ div > : undefined ;
98116
117+ const resultSet = resultSets . find ( resultSet => resultSet . schema . name == selectedTable ) ;
118+ const numberOfResults = resultSet && renderResultCountString ( resultSet ) ;
119+
99120 return < div >
100121 < div className = { tableSelectionHeaderClassName } >
101122 < select value = { selectedTable } onChange = { this . onChange } >
@@ -107,6 +128,7 @@ export class ResultTables
107128 )
108129 }
109130 </ select >
131+ { numberOfResults }
110132 { diagnosticsCheckBox }
111133 {
112134 this . props . isLoadingNewResults ?
@@ -115,14 +137,11 @@ export class ResultTables
115137 }
116138 </ div >
117139 {
118- resultSets . map ( resultSet =>
119- resultSet . schema . name === selectedTable ?
120- < ResultTable key = { resultSet . schema . name } resultSet = { resultSet }
121- databaseUri = { this . props . database . databaseUri }
122- resultsPath = { this . props . resultsPath }
123- sortState = { this . props . sortStates . get ( resultSet . schema . name ) } /> :
124- undefined
125- )
140+ resultSet &&
141+ < ResultTable key = { resultSet . schema . name } resultSet = { resultSet }
142+ databaseUri = { this . props . database . databaseUri }
143+ resultsPath = { this . props . resultsPath }
144+ sortState = { this . props . sortStates . get ( resultSet . schema . name ) } />
126145 }
127146 </ div > ;
128147 }
0 commit comments