Merge pull request #1574 from github/koesie10/view-loaded-message
Handle `viewLoaded` message
This commit is contained in:
@@ -314,10 +314,6 @@
|
|||||||
"command": "codeQL.exportVariantAnalysisResults",
|
"command": "codeQL.exportVariantAnalysisResults",
|
||||||
"title": "CodeQL: Export Variant Analysis Results"
|
"title": "CodeQL: Export Variant Analysis Results"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"command": "codeQL.mockVariantAnalysisView",
|
|
||||||
"title": "CodeQL: Open Variant Analysis Mock View"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"command": "codeQL.runQueries",
|
"command": "codeQL.runQueries",
|
||||||
"title": "CodeQL: Run Queries in Selected Files"
|
"title": "CodeQL: Run Queries in Selected Files"
|
||||||
@@ -898,10 +894,6 @@
|
|||||||
"command": "codeQL.exportVariantAnalysisResults",
|
"command": "codeQL.exportVariantAnalysisResults",
|
||||||
"when": "config.codeQL.canary"
|
"when": "config.codeQL.canary"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"command": "codeQL.mockVariantAnalysisView",
|
|
||||||
"when": "config.codeQL.canary && config.codeQL.variantAnalysis.liveResults"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"command": "codeQL.runQueries",
|
"command": "codeQL.runQueries",
|
||||||
"when": "false"
|
"when": "false"
|
||||||
|
|||||||
@@ -960,15 +960,6 @@ async function activateWithInstalledDistribution(
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
ctx.subscriptions.push(
|
|
||||||
commandRunner('codeQL.mockVariantAnalysisView', async () => {
|
|
||||||
// Generate a random variant analysis ID for testing
|
|
||||||
const variantAnalysisId: number = Math.floor(Math.random() * 1000000);
|
|
||||||
|
|
||||||
await variantAnalysisManager.showView(variantAnalysisId);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
ctx.subscriptions.push(
|
ctx.subscriptions.push(
|
||||||
commandRunner('codeQL.loadVariantAnalysisRepoResults', async (variantAnalysisId: number, repositoryFullName: string) => {
|
commandRunner('codeQL.loadVariantAnalysisRepoResults', async (variantAnalysisId: number, repositoryFullName: string) => {
|
||||||
await variantAnalysisManager.loadResults(variantAnalysisId, repositoryFullName);
|
await variantAnalysisManager.loadResults(variantAnalysisId, repositoryFullName);
|
||||||
|
|||||||
@@ -71,6 +71,10 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
|
|||||||
return this.views.get(variantAnalysisId);
|
return this.views.get(variantAnalysisId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getVariantAnalysis(variantAnalysisId: number): Promise<VariantAnalysis | undefined> {
|
||||||
|
return this.variantAnalyses.get(variantAnalysisId);
|
||||||
|
}
|
||||||
|
|
||||||
public async loadResults(variantAnalysisId: number, repositoryFullName: string): Promise<void> {
|
public async loadResults(variantAnalysisId: number, repositoryFullName: string): Promise<void> {
|
||||||
const variantAnalysis = this.variantAnalyses.get(variantAnalysisId);
|
const variantAnalysis = this.variantAnalyses.get(variantAnalysisId);
|
||||||
if (!variantAnalysis) {
|
if (!variantAnalysis) {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { VariantAnalysis } from './shared/variant-analysis';
|
||||||
|
|
||||||
export interface VariantAnalysisViewInterface {
|
export interface VariantAnalysisViewInterface {
|
||||||
variantAnalysisId: number;
|
variantAnalysisId: number;
|
||||||
openView(): Promise<void>;
|
openView(): Promise<void>;
|
||||||
@@ -6,4 +8,6 @@ export interface VariantAnalysisViewInterface {
|
|||||||
export interface VariantAnalysisViewManager<T extends VariantAnalysisViewInterface> {
|
export interface VariantAnalysisViewManager<T extends VariantAnalysisViewInterface> {
|
||||||
registerView(view: T): void;
|
registerView(view: T): void;
|
||||||
unregisterView(view: T): void;
|
unregisterView(view: T): void;
|
||||||
|
|
||||||
|
getVariantAnalysis(variantAnalysisId: number): Promise<VariantAnalysis | undefined>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,13 +5,11 @@ import { FromVariantAnalysisMessage, ToVariantAnalysisMessage } from '../pure/in
|
|||||||
import { assertNever } from '../pure/helpers-pure';
|
import { assertNever } from '../pure/helpers-pure';
|
||||||
import {
|
import {
|
||||||
VariantAnalysis,
|
VariantAnalysis,
|
||||||
VariantAnalysisQueryLanguage,
|
|
||||||
VariantAnalysisRepoStatus,
|
|
||||||
VariantAnalysisScannedRepositoryResult,
|
VariantAnalysisScannedRepositoryResult,
|
||||||
VariantAnalysisScannedRepositoryState,
|
VariantAnalysisScannedRepositoryState,
|
||||||
VariantAnalysisStatus
|
|
||||||
} from './shared/variant-analysis';
|
} from './shared/variant-analysis';
|
||||||
import { VariantAnalysisViewInterface, VariantAnalysisViewManager } from './variant-analysis-view-manager';
|
import { VariantAnalysisViewInterface, VariantAnalysisViewManager } from './variant-analysis-view-manager';
|
||||||
|
import { showAndLogWarningMessage } from '../helpers';
|
||||||
|
|
||||||
export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessage, FromVariantAnalysisMessage> implements VariantAnalysisViewInterface {
|
export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessage, FromVariantAnalysisMessage> implements VariantAnalysisViewInterface {
|
||||||
public static readonly viewType = 'codeQL.variantAnalysis';
|
public static readonly viewType = 'codeQL.variantAnalysis';
|
||||||
@@ -82,14 +80,7 @@ export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessag
|
|||||||
protected async onMessage(msg: FromVariantAnalysisMessage): Promise<void> {
|
protected async onMessage(msg: FromVariantAnalysisMessage): Promise<void> {
|
||||||
switch (msg.t) {
|
switch (msg.t) {
|
||||||
case 'viewLoaded':
|
case 'viewLoaded':
|
||||||
this.onWebViewLoaded();
|
await this.onWebViewLoaded();
|
||||||
|
|
||||||
void logger.log('Variant analysis view loaded');
|
|
||||||
|
|
||||||
await this.postMessage({
|
|
||||||
t: 'setVariantAnalysis',
|
|
||||||
variantAnalysis: this.getVariantAnalysis(),
|
|
||||||
});
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'stopVariantAnalysis':
|
case 'stopVariantAnalysis':
|
||||||
@@ -103,152 +94,21 @@ export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessag
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private getVariantAnalysis(): VariantAnalysis {
|
protected async onWebViewLoaded() {
|
||||||
return {
|
super.onWebViewLoaded();
|
||||||
id: this.variantAnalysisId,
|
|
||||||
controllerRepoId: 1,
|
void logger.log('Variant analysis view loaded');
|
||||||
actionsWorkflowRunId: 789263,
|
|
||||||
query: {
|
const variantAnalysis = await this.manager.getVariantAnalysis(this.variantAnalysisId);
|
||||||
name: 'Example query',
|
|
||||||
filePath: 'example.ql',
|
if (!variantAnalysis) {
|
||||||
language: VariantAnalysisQueryLanguage.Javascript,
|
void showAndLogWarningMessage('Unable to load variant analysis');
|
||||||
},
|
return;
|
||||||
databases: {},
|
}
|
||||||
status: VariantAnalysisStatus.InProgress,
|
|
||||||
scannedRepos: [
|
await this.postMessage({
|
||||||
{
|
t: 'setVariantAnalysis',
|
||||||
repository: {
|
variantAnalysis,
|
||||||
id: 1,
|
});
|
||||||
fullName: 'octodemo/hello-world-1',
|
|
||||||
private: false,
|
|
||||||
},
|
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repository: {
|
|
||||||
id: 2,
|
|
||||||
fullName: 'octodemo/hello-world-2',
|
|
||||||
private: false,
|
|
||||||
},
|
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repository: {
|
|
||||||
id: 3,
|
|
||||||
fullName: 'octodemo/hello-world-3',
|
|
||||||
private: false,
|
|
||||||
},
|
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repository: {
|
|
||||||
id: 4,
|
|
||||||
fullName: 'octodemo/hello-world-4',
|
|
||||||
private: false,
|
|
||||||
},
|
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repository: {
|
|
||||||
id: 5,
|
|
||||||
fullName: 'octodemo/hello-world-5',
|
|
||||||
private: false,
|
|
||||||
},
|
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repository: {
|
|
||||||
id: 6,
|
|
||||||
fullName: 'octodemo/hello-world-6',
|
|
||||||
private: false,
|
|
||||||
},
|
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repository: {
|
|
||||||
id: 7,
|
|
||||||
fullName: 'octodemo/hello-world-7',
|
|
||||||
private: false,
|
|
||||||
},
|
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repository: {
|
|
||||||
id: 8,
|
|
||||||
fullName: 'octodemo/hello-world-8',
|
|
||||||
private: false,
|
|
||||||
},
|
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repository: {
|
|
||||||
id: 9,
|
|
||||||
fullName: 'octodemo/hello-world-9',
|
|
||||||
private: false,
|
|
||||||
},
|
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
repository: {
|
|
||||||
id: 10,
|
|
||||||
fullName: 'octodemo/hello-world-10',
|
|
||||||
private: false,
|
|
||||||
},
|
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
skippedRepos: {
|
|
||||||
notFoundRepos: {
|
|
||||||
repositoryCount: 2,
|
|
||||||
repositories: [
|
|
||||||
{
|
|
||||||
fullName: 'octodemo/hello-globe'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
fullName: 'octodemo/hello-planet'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
noCodeqlDbRepos: {
|
|
||||||
repositoryCount: 4,
|
|
||||||
repositories: [
|
|
||||||
{
|
|
||||||
id: 100,
|
|
||||||
fullName: 'octodemo/no-db-1'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 101,
|
|
||||||
fullName: 'octodemo/no-db-2'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 102,
|
|
||||||
fullName: 'octodemo/no-db-3'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 103,
|
|
||||||
fullName: 'octodemo/no-db-4'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
overLimitRepos: {
|
|
||||||
repositoryCount: 1,
|
|
||||||
repositories: [
|
|
||||||
{
|
|
||||||
id: 201,
|
|
||||||
fullName: 'octodemo/over-limit-1'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
accessMismatchRepos: {
|
|
||||||
repositoryCount: 1,
|
|
||||||
repositories: [
|
|
||||||
{
|
|
||||||
id: 205,
|
|
||||||
fullName: 'octodemo/private'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import { ComponentStory, ComponentMeta } from '@storybook/react';
|
import { ComponentMeta, ComponentStory } from '@storybook/react';
|
||||||
|
|
||||||
import { VariantAnalysis as VariantAnalysisComponent } from '../../view/variant-analysis/VariantAnalysis';
|
import { VariantAnalysis as VariantAnalysisComponent } from '../../view/variant-analysis/VariantAnalysis';
|
||||||
import {
|
import {
|
||||||
VariantAnalysis as VariantAnalysisDomainModel,
|
VariantAnalysis as VariantAnalysisDomainModel,
|
||||||
VariantAnalysisQueryLanguage, VariantAnalysisRepoStatus, VariantAnalysisStatus
|
VariantAnalysisQueryLanguage,
|
||||||
|
VariantAnalysisRepoStatus,
|
||||||
|
VariantAnalysisScannedRepositoryDownloadStatus,
|
||||||
|
VariantAnalysisScannedRepositoryResult,
|
||||||
|
VariantAnalysisScannedRepositoryState,
|
||||||
|
VariantAnalysisStatus
|
||||||
} from '../../remote-queries/shared/variant-analysis';
|
} from '../../remote-queries/shared/variant-analysis';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -35,7 +40,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
|
|||||||
fullName: 'octodemo/hello-world-1',
|
fullName: 'octodemo/hello-world-1',
|
||||||
private: false,
|
private: false,
|
||||||
},
|
},
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
repository: {
|
repository: {
|
||||||
@@ -43,7 +48,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
|
|||||||
fullName: 'octodemo/hello-world-2',
|
fullName: 'octodemo/hello-world-2',
|
||||||
private: false,
|
private: false,
|
||||||
},
|
},
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
repository: {
|
repository: {
|
||||||
@@ -51,7 +56,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
|
|||||||
fullName: 'octodemo/hello-world-3',
|
fullName: 'octodemo/hello-world-3',
|
||||||
private: false,
|
private: false,
|
||||||
},
|
},
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
repository: {
|
repository: {
|
||||||
@@ -67,7 +72,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
|
|||||||
fullName: 'octodemo/hello-world-5',
|
fullName: 'octodemo/hello-world-5',
|
||||||
private: false,
|
private: false,
|
||||||
},
|
},
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
analysisStatus: VariantAnalysisRepoStatus.Failed,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
repository: {
|
repository: {
|
||||||
@@ -75,7 +80,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
|
|||||||
fullName: 'octodemo/hello-world-6',
|
fullName: 'octodemo/hello-world-6',
|
||||||
private: false,
|
private: false,
|
||||||
},
|
},
|
||||||
analysisStatus: VariantAnalysisRepoStatus.Pending,
|
analysisStatus: VariantAnalysisRepoStatus.InProgress,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
repository: {
|
repository: {
|
||||||
@@ -164,10 +169,64 @@ const variantAnalysis: VariantAnalysisDomainModel = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const repoStates: VariantAnalysisScannedRepositoryState[] = [
|
||||||
|
{
|
||||||
|
repositoryId: 1,
|
||||||
|
downloadStatus: VariantAnalysisScannedRepositoryDownloadStatus.Succeeded
|
||||||
|
},
|
||||||
|
{
|
||||||
|
repositoryId: 2,
|
||||||
|
downloadStatus: VariantAnalysisScannedRepositoryDownloadStatus.InProgress,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
repositoryId: 3,
|
||||||
|
downloadStatus: VariantAnalysisScannedRepositoryDownloadStatus.Failed,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const repoResults: VariantAnalysisScannedRepositoryResult[] = [
|
||||||
|
{
|
||||||
|
variantAnalysisId: 1,
|
||||||
|
repositoryId: 1,
|
||||||
|
rawResults: {
|
||||||
|
schema: {
|
||||||
|
name: '#select',
|
||||||
|
rows: 1,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
kind: 'i'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
resultSet: {
|
||||||
|
schema: {
|
||||||
|
name: '#select',
|
||||||
|
rows: 1,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
kind: 'i'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
rows: [
|
||||||
|
[
|
||||||
|
60688
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
fileLinkPrefix: 'https://github.com/octodemo/hello-world-1/blob/59a2a6c7d9dde7a6ecb77c2f7e8197d6925c143b',
|
||||||
|
sourceLocationPrefix: '/home/runner/work/bulk-builder/bulk-builder',
|
||||||
|
capped: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
export const Loading = Template.bind({});
|
export const Loading = Template.bind({});
|
||||||
Loading.args = {};
|
Loading.args = {};
|
||||||
|
|
||||||
export const FullExample = Template.bind({});
|
export const FullExample = Template.bind({});
|
||||||
FullExample.args = {
|
FullExample.args = {
|
||||||
variantAnalysis: variantAnalysis,
|
variantAnalysis,
|
||||||
|
repoStates,
|
||||||
|
repoResults,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,43 +12,6 @@ import { VariantAnalysisLoading } from './VariantAnalysisLoading';
|
|||||||
import { ToVariantAnalysisMessage } from '../../pure/interface-types';
|
import { ToVariantAnalysisMessage } from '../../pure/interface-types';
|
||||||
import { vscode } from '../vscode-api';
|
import { vscode } from '../vscode-api';
|
||||||
|
|
||||||
const repositoryResults: VariantAnalysisScannedRepositoryResult[] = [
|
|
||||||
{
|
|
||||||
variantAnalysisId: 1,
|
|
||||||
repositoryId: 1,
|
|
||||||
rawResults: {
|
|
||||||
schema: {
|
|
||||||
name: '#select',
|
|
||||||
rows: 1,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
kind: 'i'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
resultSet: {
|
|
||||||
schema: {
|
|
||||||
name: '#select',
|
|
||||||
rows: 1,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
kind: 'i'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
rows: [
|
|
||||||
[
|
|
||||||
60688
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
fileLinkPrefix: 'https://github.com/octodemo/hello-world-1/blob/59a2a6c7d9dde7a6ecb77c2f7e8197d6925c143b',
|
|
||||||
sourceLocationPrefix: '/home/runner/work/bulk-builder/bulk-builder',
|
|
||||||
capped: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
variantAnalysis?: VariantAnalysisDomainModel;
|
variantAnalysis?: VariantAnalysisDomainModel;
|
||||||
repoStates?: VariantAnalysisScannedRepositoryState[];
|
repoStates?: VariantAnalysisScannedRepositoryState[];
|
||||||
@@ -58,9 +21,9 @@ type Props = {
|
|||||||
export function VariantAnalysis({
|
export function VariantAnalysis({
|
||||||
variantAnalysis: initialVariantAnalysis,
|
variantAnalysis: initialVariantAnalysis,
|
||||||
repoStates: initialRepoStates = [],
|
repoStates: initialRepoStates = [],
|
||||||
repoResults: initialRepoResults = repositoryResults,
|
repoResults: initialRepoResults = [],
|
||||||
}: Props): JSX.Element {
|
}: Props): JSX.Element {
|
||||||
const [variantAnalysis, setVariantAnalysis] = useState<VariantAnalysisDomainModel | undefined>();
|
const [variantAnalysis, setVariantAnalysis] = useState<VariantAnalysisDomainModel | undefined>(initialVariantAnalysis);
|
||||||
const [repoStates, setRepoStates] = useState<VariantAnalysisScannedRepositoryState[]>(initialRepoStates);
|
const [repoStates, setRepoStates] = useState<VariantAnalysisScannedRepositoryState[]>(initialRepoStates);
|
||||||
const [repoResults, setRepoResults] = useState<VariantAnalysisScannedRepositoryResult[]>(initialRepoResults);
|
const [repoResults, setRepoResults] = useState<VariantAnalysisScannedRepositoryResult[]>(initialRepoResults);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user