compare-perf: Add support for sorting options
Adds a dropdown with (at present) two options: sorting by delta and sorting by absolute delta.
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import type { ChangeEvent } from "react";
|
||||||
import { useMemo, useState, Fragment } from "react";
|
import { useMemo, useState, Fragment } from "react";
|
||||||
import type {
|
import type {
|
||||||
SetPerformanceComparisonQueries,
|
SetPerformanceComparisonQueries,
|
||||||
@@ -184,6 +185,8 @@ const PipelineStepTR = styled.tr`
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
const SortOrderDropdown = styled.select``;
|
||||||
|
|
||||||
interface PipelineStepProps {
|
interface PipelineStepProps {
|
||||||
before: number | undefined;
|
before: number | undefined;
|
||||||
after: number | undefined;
|
after: number | undefined;
|
||||||
@@ -253,6 +256,20 @@ function HighLevelStats(props: HighLevelStatsProps) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 }) {
|
function Chevron({ expanded }: { expanded: boolean }) {
|
||||||
return <Codicon name={expanded ? "chevron-down" : "chevron-right"} />;
|
return <Codicon name={expanded ? "chevron-down" : "chevron-right"} />;
|
||||||
}
|
}
|
||||||
@@ -296,6 +313,8 @@ export function ComparePerformance(_: Record<string, never>) {
|
|||||||
|
|
||||||
const [hideCacheHits, setHideCacheHits] = useState(false);
|
const [hideCacheHits, setHideCacheHits] = useState(false);
|
||||||
|
|
||||||
|
const [sortOrder, setSortOrder] = useState<"delta" | "absDelta">("absDelta");
|
||||||
|
|
||||||
if (!datasets) {
|
if (!datasets) {
|
||||||
return <div>Loading performance comparison...</div>;
|
return <div>Loading performance comparison...</div>;
|
||||||
}
|
}
|
||||||
@@ -329,7 +348,7 @@ export function ComparePerformance(_: Record<string, never>) {
|
|||||||
return { name, before, after, diff };
|
return { name, before, after, diff };
|
||||||
})
|
})
|
||||||
.filter((x) => !!x)
|
.filter((x) => !!x)
|
||||||
.sort(orderBy((row) => row.diff));
|
.sort(getSortOrder(sortOrder));
|
||||||
|
|
||||||
let totalBefore = 0;
|
let totalBefore = 0;
|
||||||
let totalAfter = 0;
|
let totalAfter = 0;
|
||||||
@@ -363,6 +382,15 @@ export function ComparePerformance(_: Record<string, never>) {
|
|||||||
</label>
|
</label>
|
||||||
</WarningBox>
|
</WarningBox>
|
||||||
)}
|
)}
|
||||||
|
<SortOrderDropdown
|
||||||
|
onChange={(e: ChangeEvent<HTMLSelectElement>) =>
|
||||||
|
setSortOrder(e.target.value as "delta" | "absDelta")
|
||||||
|
}
|
||||||
|
value={sortOrder}
|
||||||
|
>
|
||||||
|
<option value="delta">Delta</option>
|
||||||
|
<option value="absDelta">Absolute delta</option>
|
||||||
|
</SortOrderDropdown>
|
||||||
<Table>
|
<Table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
Reference in New Issue
Block a user