Skip to content

Commit f65caa0

Browse files
committed
Remove ExtensionParsedResultSets type
1 parent e7192eb commit f65caa0

4 files changed

Lines changed: 18 additions & 83 deletions

File tree

extensions/ql-vscode/src/adapt.ts

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -103,30 +103,7 @@ export function adaptBqrs(schema: AdaptedSchema, page: DecodedBqrsChunk): RawRes
103103
};
104104
}
105105

106-
/**
107-
* This type has two branches; we are in the process of changing from
108-
* one to the other. The old way is to parse them inside the webview,
109-
* the new way is to parse them in the extension. The main motivation
110-
* for this transition is to make pagination possible in such a way
111-
* that only one page needs to be sent from the extension to the webview.
112-
*/
113-
export type ParsedResultSets = ExtensionParsedResultSets;
114-
115-
/**
116-
* The old method doesn't require any nontrivial information to be included here,
117-
* just a tag to indicate that it is being used.
118-
*/
119-
export interface WebviewParsedResultSets {
120-
t: 'WebviewParsed';
121-
selectedTable?: string; // when undefined, means 'show default table'
122-
}
123-
124-
/**
125-
* The new method includes which bqrs page is being sent, and the
126-
* actual results parsed on the extension side.
127-
*/
128-
export interface ExtensionParsedResultSets {
129-
t: 'ExtensionParsed';
106+
export interface ParsedResultSets {
130107
pageNumber: number;
131108
numPages: number;
132109
numInterpretedPages: number;

extensions/ql-vscode/src/interface.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,6 @@ export class InterfaceManager extends DisposableObject {
354354
const adaptedSchema = adaptSchema(schema);
355355
const resultSet = adaptBqrs(adaptedSchema, chunk);
356356
return {
357-
t: 'ExtensionParsed',
358357
pageNumber: 0,
359358
numPages: numPagesOfResultSet(resultSet),
360359
numInterpretedPages: numInterpretedPages(this._interpretation),
@@ -454,7 +453,6 @@ export class InterfaceManager extends DisposableObject {
454453
const resultSet = adaptBqrs(adaptedSchema, chunk);
455454

456455
const parsedResultSets: ParsedResultSets = {
457-
t: 'ExtensionParsed',
458456
pageNumber,
459457
resultSet: { t: 'RawResultSet', ...resultSet },
460458
numPages: numPagesOfResultSet(resultSet),

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

Lines changed: 15 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
import { PathTable } from './alert-table';
1616
import { RawTable } from './raw-results-table';
1717
import { ResultTableProps, tableSelectionHeaderClassName, toggleDiagnosticsClassName, alertExtrasClassName } from './result-table-utils';
18-
import { ParsedResultSets, ExtensionParsedResultSets } from '../adapt';
18+
import { ParsedResultSets } from '../adapt';
1919
import { vscode } from './vscode-api';
2020

2121

@@ -90,49 +90,23 @@ export class ResultTables
9090
}
9191

9292
private getResultSetNames(resultSets: ResultSet[]): string[] {
93-
if (this.props.parsedResultSets.t === 'ExtensionParsed') {
94-
return this.props.parsedResultSets.resultSetNames.concat([ALERTS_TABLE_NAME]);
95-
}
96-
else {
97-
return resultSets.map(resultSet => resultSet.schema.name);
98-
}
99-
}
100-
101-
/**
102-
* Holds if we have a result set obtained from the extension that came
103-
* from the ExtensionParsed branch of ParsedResultSets. This is evidence
104-
* that the user has the experimental flag turned on that allows extension-side
105-
* bqrs parsing.
106-
*/
107-
paginationAllowed(): boolean {
108-
return this.props.parsedResultSets.t === 'ExtensionParsed';
93+
return this.props.parsedResultSets.resultSetNames.concat([ALERTS_TABLE_NAME]);
10994
}
11095

11196
constructor(props: ResultTablesProps) {
11297
super(props);
11398
const selectedTable = props.parsedResultSets.selectedTable || getDefaultResultSet(this.getResultSets());
114-
let selectedPage: string;
115-
116-
switch (props.parsedResultSets.t) {
117-
case 'ExtensionParsed':
118-
selectedPage = (props.parsedResultSets.pageNumber + 1) + '';
119-
break;
120-
}
99+
const selectedPage = (props.parsedResultSets.pageNumber + 1) + '';
121100
this.state = { selectedTable, selectedPage };
122101
}
123102

124103
private onTableSelectionChange = (event: React.ChangeEvent<HTMLSelectElement>): void => {
125104
const selectedTable = event.target.value;
126-
127-
if (this.paginationAllowed()) {
128-
vscode.postMessage({
129-
t: 'changePage',
130-
pageNumber: 0,
131-
selectedTable
132-
});
133-
}
134-
else
135-
this.setState({ selectedTable });
105+
vscode.postMessage({
106+
t: 'changePage',
107+
pageNumber: 0,
108+
selectedTable
109+
});
136110
}
137111

138112
private alertTableExtras(): JSX.Element | undefined {
@@ -161,13 +135,11 @@ export class ResultTables
161135

162136
getOffset(): number {
163137
const { parsedResultSets } = this.props;
164-
switch (parsedResultSets.t) {
165-
case 'ExtensionParsed':
166-
return parsedResultSets.pageNumber * RAW_RESULTS_PAGE_SIZE;
167-
}
138+
return parsedResultSets.pageNumber * RAW_RESULTS_PAGE_SIZE;
168139
}
169140

170-
renderPageButtons(resultSets: ExtensionParsedResultSets): JSX.Element {
141+
renderPageButtons(): JSX.Element {
142+
const { parsedResultSets } = this.props;
171143
const selectedTable = this.state.selectedTable;
172144

173145
// FIXME: The extension, not the view, should be in charge of deciding whether to initially show
@@ -176,7 +148,7 @@ export class ResultTables
176148
// not interpreted pages, because the extension doesn't know the view will default to showing alerts
177149
// instead.
178150
const numPages = selectedTable == ALERTS_TABLE_NAME ?
179-
resultSets.numInterpretedPages : resultSets.numPages;
151+
parsedResultSets.numInterpretedPages : parsedResultSets.numPages;
180152

181153
const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
182154
this.setState({ selectedPage: e.target.value });
@@ -196,14 +168,14 @@ export class ResultTables
196168
const prevPage = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
197169
vscode.postMessage({
198170
t: 'changePage',
199-
pageNumber: Math.max(resultSets.pageNumber - 1, 0),
171+
pageNumber: Math.max(parsedResultSets.pageNumber - 1, 0),
200172
selectedTable,
201173
});
202174
};
203175
const nextPage = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
204176
vscode.postMessage({
205177
t: 'changePage',
206-
pageNumber: Math.min(resultSets.pageNumber + 1, numPages - 1),
178+
pageNumber: Math.min(parsedResultSets.pageNumber + 1, numPages - 1),
207179
selectedTable,
208180
});
209181
};
@@ -225,13 +197,6 @@ export class ResultTables
225197
</span>;
226198
}
227199

228-
renderButtons(): JSX.Element {
229-
if (this.props.parsedResultSets.t === 'ExtensionParsed' && this.paginationAllowed())
230-
return this.renderPageButtons(this.props.parsedResultSets);
231-
else
232-
return <span />;
233-
}
234-
235200
render(): React.ReactNode {
236201
const { selectedTable } = this.state;
237202
const resultSets = this.getResultSets();
@@ -245,7 +210,7 @@ export class ResultTables
245210
resultSetNames.map(name => <option key={name} value={name}>{name}</option>);
246211

247212
return <div>
248-
{this.renderButtons()}
213+
{this.renderPageButtons()}
249214
<div className={tableSelectionHeaderClassName}>
250215
<select value={selectedTable} onChange={this.onTableSelectionChange}>
251216
{resultSetOptions}

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ class App extends React.Component<{}, ResultsViewState> {
106106
this.updateStateWithNewResultsInfo({
107107
resultsPath: '', // FIXME: Not used for interpreted, refactor so this is not needed
108108
parsedResultSets: {
109-
t: 'ExtensionParsed',
110109
numPages: msg.numPages,
111110
numInterpretedPages: msg.numPages,
112111
resultSetNames: msg.resultSetNames,
@@ -175,11 +174,7 @@ class App extends React.Component<{}, ResultsViewState> {
175174
resultsInfo: ResultsInfo
176175
): Promise<readonly ResultSet[]> {
177176
const parsedResultSets = resultsInfo.parsedResultSets;
178-
switch (parsedResultSets.t) {
179-
case 'ExtensionParsed': {
180-
return [{ t: 'RawResultSet', ...parsedResultSets.resultSet }];
181-
}
182-
}
177+
return [{ t: 'RawResultSet', ...parsedResultSets.resultSet }];
183178
}
184179

185180
private async loadResults(): Promise<void> {
@@ -244,7 +239,7 @@ class App extends React.Component<{}, ResultsViewState> {
244239
displayedResults.resultsInfo !== null
245240
) {
246241
const parsedResultSets = displayedResults.resultsInfo.parsedResultSets;
247-
const key = (parsedResultSets.t === 'ExtensionParsed' ? (parsedResultSets.selectedTable || '') + parsedResultSets.pageNumber : '');
242+
const key = (parsedResultSets.selectedTable || '') + parsedResultSets.pageNumber;
248243
return (
249244
<ResultTables
250245
key={key}

0 commit comments

Comments
 (0)