Skip to content

Commit 4030ddb

Browse files
committed
Teach extension how to request display of alerts page
1 parent b3642bd commit 4030ddb

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

extensions/ql-vscode/src/interface-types.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,13 @@ export interface SetStateMsg {
113113
parsedResultSets: ParsedResultSets;
114114
}
115115

116+
export interface ShowInterpretedPageMsg {
117+
t: 'showInterpretedPage';
118+
interpretation: Interpretation;
119+
pageNumber: number;
120+
totalPages: number;
121+
}
122+
116123
/** Advance to the next or previous path no in the path viewer */
117124
export interface NavigatePathMsg {
118125
t: 'navigatePath';
@@ -124,6 +131,7 @@ export interface NavigatePathMsg {
124131
export type IntoResultsViewMsg =
125132
| ResultsUpdatingMsg
126133
| SetStateMsg
134+
| ShowInterpretedPageMsg
127135
| NavigatePathMsg;
128136

129137
export type FromResultsViewMsg =

extensions/ql-vscode/src/interface.ts

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
SortDirection,
2929
RAW_RESULTS_PAGE_SIZE,
3030
INTERPRETED_RESULTS_PAGE_SIZE,
31+
ALERTS_TABLE_NAME,
3132
} from './interface-types';
3233
import { Logger } from './logging';
3334
import * as messages from './messages';
@@ -244,7 +245,12 @@ export class InterfaceManager extends DisposableObject {
244245
);
245246
break;
246247
case 'changePage':
247-
await this.showPageOfResults(msg.selectedTable, msg.pageNumber);
248+
if (msg.selectedTable === ALERTS_TABLE_NAME) {
249+
await this.showPageOfInterpretedResults(msg.pageNumber);
250+
}
251+
else {
252+
await this.showPageOfRawResults(msg.selectedTable, msg.pageNumber);
253+
}
248254
break;
249255
default:
250256
assertNever(msg);
@@ -380,10 +386,30 @@ export class InterfaceManager extends DisposableObject {
380386
});
381387
}
382388

389+
/**
390+
* Show a page of interpreted results
391+
*/
392+
public async showPageOfInterpretedResults(
393+
pageNumber: number
394+
): Promise<void> {
395+
if (this._interpretation === undefined) {
396+
throw new Error(`Trying to show interpreted results but interpretation was undefined`);
397+
}
398+
if (this._interpretation.sarif.runs[0].results === undefined) {
399+
throw new Error(`Trying to show interpreted results but results were undefined`);
400+
}
401+
await this.postMessage({
402+
t: 'showInterpretedPage',
403+
interpretation: this.getPageOfInterpretedResults(pageNumber),
404+
pageNumber,
405+
totalPages: Math.ceil(this._interpretation.sarif.runs[0].results.length / INTERPRETED_RESULTS_PAGE_SIZE),
406+
});
407+
}
408+
383409
/**
384410
* Show a page of raw results from the chosen table.
385411
*/
386-
public async showPageOfResults(
412+
public async showPageOfRawResults(
387413
selectedTable: string,
388414
pageNumber: number
389415
): Promise<void> {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,9 @@ class App extends React.Component<{}, ResultsViewState> {
195195

196196
this.loadResults();
197197
break;
198+
case 'showInterpretedPage':
199+
// TODO: show interpreted page
200+
break;
198201
case 'resultsUpdating':
199202
this.setState({
200203
isExpectingResultsUpdate: true,

0 commit comments

Comments
 (0)