From f4cc9f9fbb5bcff03b5e9426a49b05a3ef3b6460 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Tue, 5 Dec 2023 16:55:54 +0100 Subject: [PATCH] Move columns in compare view to result The columns are part of the result, so they should be moved there. This is in preparation of showing SARIF results in the same view, which don't have columns. --- extensions/ql-vscode/src/common/interface-types.ts | 6 +++--- extensions/ql-vscode/src/compare/compare-view.ts | 11 +++++------ extensions/ql-vscode/src/compare/resultsDiff.ts | 5 +++-- .../src/stories/compare/CompareTable.stories.tsx | 10 +++++----- extensions/ql-vscode/src/view/compare/Compare.tsx | 7 +++---- .../ql-vscode/src/view/compare/CompareTable.tsx | 14 +++++++------- 6 files changed, 26 insertions(+), 27 deletions(-) diff --git a/extensions/ql-vscode/src/common/interface-types.ts b/extensions/ql-vscode/src/common/interface-types.ts index abadb6ac6..3aeb37a64 100644 --- a/extensions/ql-vscode/src/common/interface-types.ts +++ b/extensions/ql-vscode/src/common/interface-types.ts @@ -353,10 +353,9 @@ export interface SetComparisonsMessage { time: string; }; }; - readonly columns: readonly BqrsColumn[]; readonly commonResultSetNames: string[]; readonly currentResultSetName: string; - readonly rows: QueryCompareResult | undefined; + readonly result: RawQueryCompareResult | undefined; readonly message: string | undefined; readonly databaseUri: string; } @@ -370,7 +369,8 @@ export interface SetComparisonsMessage { * If an array element is null, that means that the element was removed * (or added) in the comparison. */ -export type QueryCompareResult = { +export type RawQueryCompareResult = { + columns: readonly BqrsColumn[]; from: ResultRow[]; to: ResultRow[]; }; diff --git a/extensions/ql-vscode/src/compare/compare-view.ts b/extensions/ql-vscode/src/compare/compare-view.ts index 80dce8248..971f29f00 100644 --- a/extensions/ql-vscode/src/compare/compare-view.ts +++ b/extensions/ql-vscode/src/compare/compare-view.ts @@ -2,7 +2,7 @@ import { ViewColumn } from "vscode"; import { FromCompareViewMessage, - QueryCompareResult, + RawQueryCompareResult, ToCompareViewMessage, } from "../common/interface-types"; import { Logger, showAndLogExceptionWithTelemetry } from "../common/logging"; @@ -93,10 +93,10 @@ export class CompareView extends AbstractWebview< selectedResultSetName, ); if (currentResultSetDisplayName) { - let rows: QueryCompareResult | undefined; + let result: RawQueryCompareResult | undefined; let message: string | undefined; try { - rows = this.compareResults(fromResultSet, toResultSet); + result = this.compareResults(fromResultSet, toResultSet); } catch (e) { message = getErrorMessage(e); } @@ -118,10 +118,9 @@ export class CompareView extends AbstractWebview< time: to.startTime, }, }, - columns: fromResultSet.columns, + result, commonResultSetNames, currentResultSetName: currentResultSetDisplayName, - rows, message, databaseUri: to.initialInfo.databaseInfo.databaseUri, }); @@ -240,7 +239,7 @@ export class CompareView extends AbstractWebview< private compareResults( fromResults: DecodedBqrsChunk, toResults: DecodedBqrsChunk, - ): QueryCompareResult { + ): RawQueryCompareResult { // Only compare columns that have the same name return resultsDiff(fromResults, toResults); } diff --git a/extensions/ql-vscode/src/compare/resultsDiff.ts b/extensions/ql-vscode/src/compare/resultsDiff.ts index 27477d0fc..6501b59c1 100644 --- a/extensions/ql-vscode/src/compare/resultsDiff.ts +++ b/extensions/ql-vscode/src/compare/resultsDiff.ts @@ -1,5 +1,5 @@ import { DecodedBqrsChunk } from "../common/bqrs-cli-types"; -import { QueryCompareResult } from "../common/interface-types"; +import { RawQueryCompareResult } from "../common/interface-types"; /** * Compare the rows of two queries. Use deep equality to determine if @@ -22,7 +22,7 @@ import { QueryCompareResult } from "../common/interface-types"; export default function resultsDiff( fromResults: DecodedBqrsChunk, toResults: DecodedBqrsChunk, -): QueryCompareResult { +): RawQueryCompareResult { if (fromResults.columns.length !== toResults.columns.length) { throw new Error("CodeQL Compare: Columns do not match."); } @@ -36,6 +36,7 @@ export default function resultsDiff( } const results = { + columns: fromResults.columns, from: arrayDiff(fromResults.tuples, toResults.tuples), to: arrayDiff(toResults.tuples, fromResults.tuples), }; diff --git a/extensions/ql-vscode/src/stories/compare/CompareTable.stories.tsx b/extensions/ql-vscode/src/stories/compare/CompareTable.stories.tsx index b338b2c77..2bf41cd22 100644 --- a/extensions/ql-vscode/src/stories/compare/CompareTable.stories.tsx +++ b/extensions/ql-vscode/src/stories/compare/CompareTable.stories.tsx @@ -31,13 +31,13 @@ CompareTable.args = { time: "8/16/2023, 3:07:21 PM", }, }, - columns: [ - { name: "a", kind: "Entity" }, - { name: "b", kind: "Entity" }, - ], commonResultSetNames: ["edges", "nodes", "subpaths", "#select"], currentResultSetName: "edges", - rows: { + result: { + columns: [ + { name: "a", kind: "Entity" }, + { name: "b", kind: "Entity" }, + ], from: [], to: [ [ diff --git a/extensions/ql-vscode/src/view/compare/Compare.tsx b/extensions/ql-vscode/src/view/compare/Compare.tsx index 8a1033274..57e3fc2bf 100644 --- a/extensions/ql-vscode/src/view/compare/Compare.tsx +++ b/extensions/ql-vscode/src/view/compare/Compare.tsx @@ -14,8 +14,7 @@ import "../results/resultsView.css"; const emptyComparison: SetComparisonsMessage = { t: "setComparisons", stats: {}, - rows: undefined, - columns: [], + result: undefined, commonResultSetNames: [], currentResultSetName: "", databaseUri: "", @@ -28,8 +27,8 @@ export function Compare(_: Record): JSX.Element { const message = comparison.message || "Empty comparison"; const hasRows = - comparison.rows && - (comparison.rows.to.length || comparison.rows.from.length); + comparison.result && + (comparison.result.to.length || comparison.result.from.length); useEffect(() => { const listener = (evt: MessageEvent) => { diff --git a/extensions/ql-vscode/src/view/compare/CompareTable.tsx b/extensions/ql-vscode/src/view/compare/CompareTable.tsx index eabc72929..14d375da8 100644 --- a/extensions/ql-vscode/src/view/compare/CompareTable.tsx +++ b/extensions/ql-vscode/src/view/compare/CompareTable.tsx @@ -22,7 +22,7 @@ const OpenButton = styled(TextButton)` export default function CompareTable(props: Props) { const comparison = props.comparison; - const rows = props.comparison.rows!; + const result = props.comparison.result!; async function openQuery(kind: "from" | "to") { vscode.postMessage({ @@ -69,8 +69,8 @@ export default function CompareTable(props: Props) { {comparison.stats.toQuery?.time} - {rows.from.length} rows removed - {rows.to.length} rows added + {result.from.length} rows removed + {result.to.length} rows added @@ -78,21 +78,21 @@ export default function CompareTable(props: Props) { - {createRows(rows.from, comparison.databaseUri)} + {createRows(result.from, comparison.databaseUri)}
- {createRows(rows.to, comparison.databaseUri)} + {createRows(result.to, comparison.databaseUri)}