Skip to content

Commit 2ff0ee5

Browse files
Move ResultCount to a separate component
1 parent 194c8d5 commit 2ff0ee5

File tree

2 files changed

+31
-21
lines changed

2 files changed

+31
-21
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import * as React from "react";
2+
import { ResultSet } from "../../common/interface-types";
3+
import { tableHeaderItemClassName } from "./result-table-utils";
4+
5+
interface Props {
6+
resultSet?: ResultSet;
7+
}
8+
9+
function getResultCount(resultSet: ResultSet): number {
10+
switch (resultSet.t) {
11+
case "RawResultSet":
12+
return resultSet.schema.rows;
13+
case "InterpretedResultSet":
14+
return resultSet.interpretation.numTotalResults;
15+
}
16+
}
17+
18+
export function ResultCount(props: Props): JSX.Element | null {
19+
if (!props.resultSet) {
20+
return null;
21+
}
22+
23+
const resultCount = getResultCount(props.resultSet);
24+
return (
25+
<span className={tableHeaderItemClassName}>
26+
{resultCount} {resultCount === 1 ? "result" : "results"}
27+
</span>
28+
);
29+
}

extensions/ql-vscode/src/view/results/ResultTables.tsx

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import {
1616
} from "../../common/interface-types";
1717
import {
1818
tableHeaderClassName,
19-
tableHeaderItemClassName,
2019
toggleDiagnosticsClassName,
2120
alertExtrasClassName,
2221
} from "./result-table-utils";
@@ -25,6 +24,7 @@ import { sendTelemetry } from "../common/telemetry";
2524
import { ResultTable } from "./ResultTable";
2625
import { ResultTablesHeader } from "./ResultTablesHeader";
2726
import { useCallback, useEffect, useMemo, useState } from "react";
27+
import { ResultCount } from "./ResultCount";
2828

2929
/**
3030
* Properties for the `ResultTables` component.
@@ -47,24 +47,6 @@ interface ResultTablesProps {
4747
const UPDATING_RESULTS_TEXT_CLASS_NAME =
4848
"vscode-codeql__result-tables-updating-text";
4949

50-
function getResultCount(resultSet: ResultSet): number {
51-
switch (resultSet.t) {
52-
case "RawResultSet":
53-
return resultSet.schema.rows;
54-
case "InterpretedResultSet":
55-
return resultSet.interpretation.numTotalResults;
56-
}
57-
}
58-
59-
function renderResultCountString(resultSet: ResultSet): JSX.Element {
60-
const resultCount = getResultCount(resultSet);
61-
return (
62-
<span className={tableHeaderItemClassName}>
63-
{resultCount} {resultCount === 1 ? "result" : "results"}
64-
</span>
65-
);
66-
}
67-
6850
function getInterpretedTableName(interpretation: Interpretation): string {
6951
return interpretation.data.t === "GraphInterpretationData"
7052
? GRAPH_TABLE_NAME
@@ -256,7 +238,6 @@ export function ResultTables(props: ResultTablesProps) {
256238
const nonemptyRawResults = resultSets.some(
257239
(resultSet) => resultSet.t === "RawResultSet" && resultSet.rows.length > 0,
258240
);
259-
const numberOfResults = resultSet && renderResultCountString(resultSet);
260241

261242
const resultSetOptions = resultSetNames.map((name) => (
262243
<option key={name} value={name}>
@@ -271,7 +252,7 @@ export function ResultTables(props: ResultTablesProps) {
271252
<select value={selectedTable} onChange={onTableSelectionChange}>
272253
{resultSetOptions}
273254
</select>
274-
{numberOfResults}
255+
<ResultCount resultSet={resultSet} />
275256
{alertTableExtras}
276257
{isLoadingNewResults ? (
277258
<span className={UPDATING_RESULTS_TEXT_CLASS_NAME}>

0 commit comments

Comments
 (0)