Skip to content

Commit f94837e

Browse files
committed
Add filtering and sorting to exported results
This adds filtering (based on search and selected repositories) and sorting to exporting results. This is done in the same way as for copying the repository list, so the changes are fairly minimal.
1 parent dd1ced9 commit f94837e

File tree

5 files changed

+22
-10
lines changed

5 files changed

+22
-10
lines changed

extensions/ql-vscode/src/extension.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,8 +1008,8 @@ async function activateWithInstalledDistribution(
10081008
);
10091009

10101010
ctx.subscriptions.push(
1011-
commandRunner('codeQL.exportVariantAnalysisResults', async (variantAnalysisId: number) => {
1012-
await exportVariantAnalysisResults(ctx, variantAnalysisManager, variantAnalysisId);
1011+
commandRunner('codeQL.exportVariantAnalysisResults', async (variantAnalysisId: number, filterSort?: RepositoriesFilterSortStateWithIds) => {
1012+
await exportVariantAnalysisResults(ctx, variantAnalysisManager, variantAnalysisId, filterSort);
10131013
})
10141014
);
10151015

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,7 @@ export interface CopyRepositoryListMessage {
480480

481481
export interface ExportResultsMessage {
482482
t: 'exportResults';
483+
filterSort?: RepositoriesFilterSortStateWithIds;
483484
}
484485

485486
export interface OpenLogsMessage {

extensions/ql-vscode/src/remote-queries/export-results.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ import {
2424
VariantAnalysisScannedRepository,
2525
VariantAnalysisScannedRepositoryResult
2626
} from './shared/variant-analysis';
27+
import {
28+
filterAndSortRepositoriesWithResults,
29+
RepositoriesFilterSortStateWithIds,
30+
} from '../pure/variant-analysis-filter-sort';
2731

2832
/**
2933
* Exports the results of the currently-selected remote query or variant analysis.
@@ -98,6 +102,7 @@ export async function exportVariantAnalysisResults(
98102
ctx: ExtensionContext,
99103
variantAnalysisManager: VariantAnalysisManager,
100104
variantAnalysisId: number,
105+
filterSort?: RepositoriesFilterSortStateWithIds,
101106
): Promise<void> {
102107
const variantAnalysis = await variantAnalysisManager.getVariantAnalysis(variantAnalysisId);
103108
if (!variantAnalysis) {
@@ -117,7 +122,9 @@ export async function exportVariantAnalysisResults(
117122
return;
118123
}
119124

120-
for (const repo of variantAnalysis.scannedRepos) {
125+
const repositories = filterAndSortRepositoriesWithResults(variantAnalysis.scannedRepos, filterSort);
126+
127+
for (const repo of repositories) {
121128
if (repo.resultCount == 0) {
122129
yield [repo, {
123130
variantAnalysisId: variantAnalysis.id,

extensions/ql-vscode/src/remote-queries/variant-analysis-view.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessag
107107
void commands.executeCommand('codeQL.copyVariantAnalysisRepoList', this.variantAnalysisId, msg.filterSort);
108108
break;
109109
case 'exportResults':
110-
void commands.executeCommand('codeQL.exportVariantAnalysisResults', this.variantAnalysisId);
110+
void commands.executeCommand('codeQL.exportVariantAnalysisResults', this.variantAnalysisId, msg.filterSort);
111111
break;
112112
case 'openLogs':
113113
await this.openLogs();

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,6 @@ const stopQuery = () => {
3737
});
3838
};
3939

40-
const exportResults = () => {
41-
vscode.postMessage({
42-
t: 'exportResults',
43-
});
44-
};
45-
4640
const openLogs = () => {
4741
vscode.postMessage({
4842
t: 'openLogs',
@@ -104,6 +98,16 @@ export function VariantAnalysis({
10498
});
10599
}, [filterSortState, selectedRepositoryIds]);
106100

101+
const exportResults = useCallback(() => {
102+
vscode.postMessage({
103+
t: 'exportResults',
104+
filterSort: {
105+
...filterSortState,
106+
repositoryIds: selectedRepositoryIds,
107+
},
108+
});
109+
}, [filterSortState, selectedRepositoryIds]);
110+
107111
if (variantAnalysis?.actionsWorkflowRunId === undefined) {
108112
return <VariantAnalysisLoading />;
109113
}

0 commit comments

Comments
 (0)