Skip to content

Commit 690f63a

Browse files
committed
Add a checkbox for enabling selection filtering
For now the checkbox doesn't do anything, we just wire up the state
1 parent 3a1349e commit 690f63a

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { ResultTablesHeader } from "./ResultTablesHeader";
2222
import { useCallback, useEffect, useMemo, useState } from "react";
2323
import { ResultCount } from "./ResultCount";
2424
import { ProblemsViewCheckbox } from "./ProblemsViewCheckbox";
25+
import { SelectionFilterCheckbox } from "./SelectionFilterCheckbox";
2526
import { assertNever } from "../../common/helpers-pure";
2627

2728
/**
@@ -43,6 +44,8 @@ interface ResultTablesProps {
4344
queryPath: string;
4445
selectedTable: string;
4546
onSelectedTableChange: (tableName: string) => void;
47+
selectionFilterEnabled: boolean;
48+
onSelectionFilterEnabledChange: (value: boolean) => void;
4649
problemsViewSelected: boolean;
4750
onProblemsViewSelectedChange: (selected: boolean) => void;
4851
}
@@ -105,6 +108,8 @@ export function ResultTables(props: ResultTablesProps) {
105108
sortStates,
106109
selectedTable,
107110
onSelectedTableChange,
111+
selectionFilterEnabled,
112+
onSelectionFilterEnabledChange,
108113
problemsViewSelected,
109114
onProblemsViewSelectedChange,
110115
} = props;
@@ -185,6 +190,15 @@ export function ResultTables(props: ResultTablesProps) {
185190
<div>
186191
<ResultTablesHeader {...props} selectedTable={selectedTable} />
187192
<div className={tableHeaderClassName}></div>
193+
<div
194+
className={tableHeaderClassName}
195+
style={{ justifyContent: "flex-end" }}
196+
>
197+
<SelectionFilterCheckbox
198+
checked={selectionFilterEnabled}
199+
onChange={(e) => onSelectionFilterEnabledChange(e.target.checked)}
200+
/>
201+
</div>
188202
<div className={tableHeaderClassName}>
189203
<select value={selectedTable} onChange={onTableSelectionChange}>
190204
{resultSetOptions}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ interface ResultsViewState {
6565
displayedResults: ResultsState;
6666
nextResultsInfo: ResultsInfo | null;
6767
isExpectingResultsUpdate: boolean;
68+
selectionFilterEnabled: boolean;
6869
selectedTable: string | undefined;
6970
}
7071

@@ -80,6 +81,7 @@ export function ResultsApp() {
8081
},
8182
nextResultsInfo: null,
8283
isExpectingResultsUpdate: true,
84+
selectionFilterEnabled: false,
8385
selectedTable: undefined,
8486
});
8587

@@ -271,6 +273,10 @@ export function ResultsApp() {
271273
queryPath={displayedResults.resultsInfo.queryPath}
272274
selectedTable={state.selectedTable ?? ""}
273275
onSelectedTableChange={onSelectedTableChange}
276+
selectionFilterEnabled={state.selectionFilterEnabled}
277+
onSelectionFilterEnabledChange={(selectionFilterEnabled) => {
278+
setState((prev) => ({ ...prev, selectionFilterEnabled }));
279+
}}
274280
problemsViewSelected={problemsViewSelected}
275281
onProblemsViewSelectedChange={setProblemsViewSelected}
276282
/>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import {
2+
alertExtrasClassName,
3+
toggleDiagnosticsClassName,
4+
} from "./result-table-utils";
5+
6+
interface Props {
7+
checked: boolean;
8+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
9+
}
10+
11+
export function SelectionFilterCheckbox({
12+
checked,
13+
onChange,
14+
}: Props): React.JSX.Element {
15+
return (
16+
<div className={alertExtrasClassName}>
17+
<div className={toggleDiagnosticsClassName}>
18+
<input
19+
type="checkbox"
20+
id="restrict-to-selection"
21+
name="restrict-to-selection"
22+
onChange={onChange}
23+
checked={checked}
24+
/>
25+
<label htmlFor="restrict-to-selection">
26+
Filter results to current file or selection
27+
</label>
28+
</div>
29+
</div>
30+
);
31+
}

0 commit comments

Comments
 (0)