Post message to view when variant analysis is updated

This commit is contained in:
Koen Vlaswinkel
2022-10-03 14:29:12 +02:00
parent 15579012f1
commit 2baa53a149
3 changed files with 40 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ import * as sarif from 'sarif';
import { AnalysisResults } from '../remote-queries/shared/analysis-result';
import { AnalysisSummary, RemoteQueryResult } from '../remote-queries/shared/remote-query-result';
import { RawResultSet, ResultRow, ResultSetSchema, Column, ResolvableLocationValue } from './bqrs-cli-types';
import { VariantAnalysis } from '../remote-queries/shared/variant-analysis';
/**
* This module contains types and code that are shared between
@@ -429,3 +430,14 @@ export interface CopyRepoListMessage {
t: 'copyRepoList';
queryId: string;
}
export interface SetVariantAnalysisMessage {
t: 'setVariantAnalysis';
variantAnalysis: VariantAnalysis;
}
export type ToVariantAnalysisMessage =
| SetVariantAnalysisMessage;
export type FromVariantAnalysisMessage =
| ViewLoadedMsg;

View File

@@ -26,6 +26,7 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
) {
super();
this.variantAnalysisMonitor = this.push(new VariantAnalysisMonitor(ctx, logger));
this.variantAnalysisMonitor.onVariantAnalysisChange(this.onVariantAnalysisUpdated.bind(this));
}
public async showView(variantAnalysisId: number): Promise<void> {
@@ -51,6 +52,19 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
this.views.delete(view.variantAnalysisId);
}
private async onVariantAnalysisUpdated(variantAnalysis: VariantAnalysis | undefined): Promise<void> {
if (!variantAnalysis) {
return;
}
const view = this.views.get(variantAnalysis.id);
if (!view) {
return;
}
await view.updateView(variantAnalysis);
}
public async monitorVariantAnalysis(
variantAnalysis: VariantAnalysis,
cancellationToken: CancellationToken

View File

@@ -3,8 +3,10 @@ import { AbstractWebview, WebviewPanelConfig } from '../abstract-webview';
import { WebviewMessage } from '../interface-utils';
import { logger } from '../logging';
import { VariantAnalysisViewInterface, VariantAnalysisViewManager } from './variant-analysis-view-manager';
import { VariantAnalysis } from './shared/variant-analysis';
import { FromVariantAnalysisMessage, ToVariantAnalysisMessage } from '../pure/interface-types';
export class VariantAnalysisView extends AbstractWebview<WebviewMessage, WebviewMessage> implements VariantAnalysisViewInterface {
export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessage, FromVariantAnalysisMessage> implements VariantAnalysisViewInterface {
public constructor(
ctx: ExtensionContext,
public readonly variantAnalysisId: number,
@@ -19,6 +21,17 @@ export class VariantAnalysisView extends AbstractWebview<WebviewMessage, Webview
this.getPanel().reveal(undefined, true);
}
public async updateView(variantAnalysis: VariantAnalysis): Promise<void> {
if (!this.isShowingPanel) {
return;
}
await this.postMessage({
t: 'setVariantAnalysis',
variantAnalysis,
});
}
protected getPanelConfig(): WebviewPanelConfig {
return {
viewId: 'variantAnalysisView',