From 2abe45bc64d08fc9155679c56bc3ac50e9615021 Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 13 Nov 2024 13:45:02 +0000 Subject: [PATCH] compare-perf: Add support for sorting options Adds a dropdown with (at present) two options: sorting by delta and sorting by absolute delta. --- .../ComparePerformance.tsx | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx index dafa82aef58..9136553e4fe 100644 --- a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx +++ b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx @@ -1,3 +1,4 @@ +import type { ChangeEvent } from "react"; import { useMemo, useState, Fragment } from "react"; import type { SetPerformanceComparisonQueries, @@ -178,6 +179,8 @@ const PipelineStepTR = styled.tr` } `; +const SortOrderDropdown = styled.select``; + interface PipelineStepProps { before: number | undefined; after: number | undefined; @@ -204,6 +207,20 @@ function PipelineStep(props: PipelineStepProps) { ); } +type TRow = { + name: string; + before: PredicateInfo; + after: PredicateInfo; + diff: number; +}; + +function getSortOrder(sortOrder: "delta" | "absDelta") { + if (sortOrder === "absDelta") { + return orderBy((row: TRow) => -Math.abs(row.diff)); + } + return orderBy((row: TRow) => row.diff); +} + function Chevron({ expanded }: { expanded: boolean }) { return ; } @@ -247,6 +264,8 @@ export function ComparePerformance(_: Record) { const [hideCacheHits, setHideCacheHits] = useState(false); + const [sortOrder, setSortOrder] = useState<"delta" | "absDelta">("delta"); + if (!datasets) { return
Loading performance comparison...
; } @@ -280,7 +299,7 @@ export function ComparePerformance(_: Record) { return { name, before, after, diff }; }) .filter((x) => !!x) - .sort(orderBy((row) => row.diff)); + .sort(getSortOrder(sortOrder)); let totalBefore = 0; let totalAfter = 0; @@ -314,6 +333,15 @@ export function ComparePerformance(_: Record) { )} + ) => + setSortOrder(e.target.value as "delta" | "absDelta") + } + value={sortOrder} + > + + +