Skip to content

Commit c08ef0e

Browse files
authored
Merge pull request #3805 from github/tausbn/compare-perf-add-sorting-options
compare-perf: Add support for sorting options
2 parents f7caf01 + 2abe45b commit c08ef0e

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type { ChangeEvent } from "react";
12
import { useMemo, useState, Fragment } from "react";
23
import type {
34
SetPerformanceComparisonQueries,
@@ -178,6 +179,8 @@ const PipelineStepTR = styled.tr`
178179
}
179180
`;
180181

182+
const SortOrderDropdown = styled.select``;
183+
181184
interface PipelineStepProps {
182185
before: number | undefined;
183186
after: number | undefined;
@@ -204,6 +207,20 @@ function PipelineStep(props: PipelineStepProps) {
204207
);
205208
}
206209

210+
type TRow = {
211+
name: string;
212+
before: PredicateInfo;
213+
after: PredicateInfo;
214+
diff: number;
215+
};
216+
217+
function getSortOrder(sortOrder: "delta" | "absDelta") {
218+
if (sortOrder === "absDelta") {
219+
return orderBy((row: TRow) => -Math.abs(row.diff));
220+
}
221+
return orderBy((row: TRow) => row.diff);
222+
}
223+
207224
function Chevron({ expanded }: { expanded: boolean }) {
208225
return <Codicon name={expanded ? "chevron-down" : "chevron-right"} />;
209226
}
@@ -247,6 +264,8 @@ export function ComparePerformance(_: Record<string, never>) {
247264

248265
const [hideCacheHits, setHideCacheHits] = useState(false);
249266

267+
const [sortOrder, setSortOrder] = useState<"delta" | "absDelta">("delta");
268+
250269
if (!datasets) {
251270
return <div>Loading performance comparison...</div>;
252271
}
@@ -280,7 +299,7 @@ export function ComparePerformance(_: Record<string, never>) {
280299
return { name, before, after, diff };
281300
})
282301
.filter((x) => !!x)
283-
.sort(orderBy((row) => row.diff));
302+
.sort(getSortOrder(sortOrder));
284303

285304
let totalBefore = 0;
286305
let totalAfter = 0;
@@ -314,6 +333,15 @@ export function ComparePerformance(_: Record<string, never>) {
314333
</label>
315334
</WarningBox>
316335
)}
336+
<SortOrderDropdown
337+
onChange={(e: ChangeEvent<HTMLSelectElement>) =>
338+
setSortOrder(e.target.value as "delta" | "absDelta")
339+
}
340+
value={sortOrder}
341+
>
342+
<option value="delta">Delta</option>
343+
<option value="absDelta">Absolute delta</option>
344+
</SortOrderDropdown>
317345
<Table>
318346
<thead>
319347
<tr>

0 commit comments

Comments
 (0)