Teach extension to accept ShowInterpretedPageMsg

This commit is contained in:
Jason Reed
2020-06-29 12:24:36 -04:00
parent 4030ddbdc2
commit fe02a58e45
3 changed files with 26 additions and 2 deletions

View File

@@ -116,8 +116,10 @@ export interface SetStateMsg {
export interface ShowInterpretedPageMsg { export interface ShowInterpretedPageMsg {
t: 'showInterpretedPage'; t: 'showInterpretedPage';
interpretation: Interpretation; interpretation: Interpretation;
database: DatabaseInfo;
metadata?: QueryMetadata;
pageNumber: number; pageNumber: number;
totalPages: number; numPages: number;
} }
/** Advance to the next or previous path no in the path viewer */ /** Advance to the next or previous path no in the path viewer */

View File

@@ -392,6 +392,9 @@ export class InterfaceManager extends DisposableObject {
public async showPageOfInterpretedResults( public async showPageOfInterpretedResults(
pageNumber: number pageNumber: number
): Promise<void> { ): Promise<void> {
if (this._displayedQuery === undefined) {
throw new Error(`Trying to show interpreted results but displayed query was undefined`);
}
if (this._interpretation === undefined) { if (this._interpretation === undefined) {
throw new Error(`Trying to show interpreted results but interpretation was undefined`); throw new Error(`Trying to show interpreted results but interpretation was undefined`);
} }
@@ -401,6 +404,8 @@ export class InterfaceManager extends DisposableObject {
await this.postMessage({ await this.postMessage({
t: 'showInterpretedPage', t: 'showInterpretedPage',
interpretation: this.getPageOfInterpretedResults(pageNumber), interpretation: this.getPageOfInterpretedResults(pageNumber),
database: this._displayedQuery.database,
metadata: this._displayedQuery.query.metadata,
pageNumber, pageNumber,
totalPages: Math.ceil(this._interpretation.sarif.runs[0].results.length / INTERPRETED_RESULTS_PAGE_SIZE), totalPages: Math.ceil(this._interpretation.sarif.runs[0].results.length / INTERPRETED_RESULTS_PAGE_SIZE),
}); });

View File

@@ -17,6 +17,7 @@ import {
NavigatePathMsg, NavigatePathMsg,
QueryMetadata, QueryMetadata,
ResultsPaths, ResultsPaths,
ALERTS_TABLE_NAME,
} from '../interface-types'; } from '../interface-types';
import { EventHandlers as EventHandlerList } from './event-handler-list'; import { EventHandlers as EventHandlerList } from './event-handler-list';
import { ResultTables } from './result-tables'; import { ResultTables } from './result-tables';
@@ -196,7 +197,23 @@ class App extends React.Component<{}, ResultsViewState> {
this.loadResults(); this.loadResults();
break; break;
case 'showInterpretedPage': case 'showInterpretedPage':
// TODO: show interpreted page this.updateStateWithNewResultsInfo({
resultsPath: '...', // XXX
parsedResultSets: {
t: 'ExtensionParsed',
numPages: msg.numPages,
resultSetNames: ['alerts'], // XXX get the other result set names from the extension
pageNumber: msg.pageNumber,
resultSet: undefined as any, // XXX this is awkward
selectedTable: ALERTS_TABLE_NAME,
},
origResultsPaths: undefined as any,
sortedResultsMap: undefined as any,
database: msg.database,
interpretation: msg.interpretation,
shouldKeepOldResultsWhileRendering: false,
metadata: msg.metadata,
});
break; break;
case 'resultsUpdating': case 'resultsUpdating':
this.setState({ this.setState({