Skip to content

Commit 7c183d0

Browse files
authored
Merge pull request #193 from jcreedcmu/result-count
Show number of results in results view
2 parents 8d0d4bb + 4af7348 commit 7c183d0

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed

extensions/ql-vscode/src/view/result-tables.tsx

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,24 @@ const ALERTS_TABLE_NAME = 'alerts';
2929
const SELECT_TABLE_NAME = '#select';
3030
const 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
}

extensions/ql-vscode/src/view/resultsView.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,3 +134,7 @@ td.vscode-codeql__location-cell {
134134
.octicon-light {
135135
opacity: 0.6;
136136
}
137+
138+
.number-of-results {
139+
padding-left: 3em;
140+
}

0 commit comments

Comments
 (0)