Teach extension how to request display of alerts page

This commit is contained in:
Jason Reed
2020-06-29 11:57:44 -04:00
parent b3642bd62e
commit 4030ddbdc2
3 changed files with 39 additions and 2 deletions

View File

@@ -113,6 +113,13 @@ export interface SetStateMsg {
parsedResultSets: ParsedResultSets;
}
export interface ShowInterpretedPageMsg {
t: 'showInterpretedPage';
interpretation: Interpretation;
pageNumber: number;
totalPages: number;
}
/** Advance to the next or previous path no in the path viewer */
export interface NavigatePathMsg {
t: 'navigatePath';
@@ -124,6 +131,7 @@ export interface NavigatePathMsg {
export type IntoResultsViewMsg =
| ResultsUpdatingMsg
| SetStateMsg
| ShowInterpretedPageMsg
| NavigatePathMsg;
export type FromResultsViewMsg =

View File

@@ -28,6 +28,7 @@ import {
SortDirection,
RAW_RESULTS_PAGE_SIZE,
INTERPRETED_RESULTS_PAGE_SIZE,
ALERTS_TABLE_NAME,
} from './interface-types';
import { Logger } from './logging';
import * as messages from './messages';
@@ -244,7 +245,12 @@ export class InterfaceManager extends DisposableObject {
);
break;
case 'changePage':
await this.showPageOfResults(msg.selectedTable, msg.pageNumber);
if (msg.selectedTable === ALERTS_TABLE_NAME) {
await this.showPageOfInterpretedResults(msg.pageNumber);
}
else {
await this.showPageOfRawResults(msg.selectedTable, msg.pageNumber);
}
break;
default:
assertNever(msg);
@@ -380,10 +386,30 @@ export class InterfaceManager extends DisposableObject {
});
}
/**
* Show a page of interpreted results
*/
public async showPageOfInterpretedResults(
pageNumber: number
): Promise<void> {
if (this._interpretation === undefined) {
throw new Error(`Trying to show interpreted results but interpretation was undefined`);
}
if (this._interpretation.sarif.runs[0].results === undefined) {
throw new Error(`Trying to show interpreted results but results were undefined`);
}
await this.postMessage({
t: 'showInterpretedPage',
interpretation: this.getPageOfInterpretedResults(pageNumber),
pageNumber,
totalPages: Math.ceil(this._interpretation.sarif.runs[0].results.length / INTERPRETED_RESULTS_PAGE_SIZE),
});
}
/**
* Show a page of raw results from the chosen table.
*/
public async showPageOfResults(
public async showPageOfRawResults(
selectedTable: string,
pageNumber: number
): Promise<void> {

View File

@@ -195,6 +195,9 @@ class App extends React.Component<{}, ResultsViewState> {
this.loadResults();
break;
case 'showInterpretedPage':
// TODO: show interpreted page
break;
case 'resultsUpdating':
this.setState({
isExpectingResultsUpdate: true,