Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 2710eae

Browse files
committed
Load runtime filter from URL
1 parent ecb1743 commit 2710eae

File tree

4 files changed

+76
-20
lines changed

4 files changed

+76
-20
lines changed

site/frontend/src/pages/compare/compile/common.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export type CompileBenchmarkFilter = {
2323
library: boolean;
2424
};
2525
} & BenchmarkFilter;
26+
2627
export const defaultCompileFilter: CompileBenchmarkFilter = {
2728
name: null,
2829
nonRelevant: false,

site/frontend/src/pages/compare/compile/compile-page.vue

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
} from "./common";
1818
import {BenchmarkInfo} from "../../../api";
1919
import {importantCompileMetrics} from "../metrics";
20+
import {getBoolOrDefault} from "../shared";
2021
2122
const props = defineProps<{
2223
data: CompareResponse;
@@ -28,45 +29,65 @@ function loadFilterFromUrl(
2829
urlParams: Dict<string>,
2930
defaultFilter: CompileBenchmarkFilter
3031
): CompileBenchmarkFilter {
31-
function getBoolOrDefault(name: string, defaultValue: boolean): boolean {
32-
if (urlParams.hasOwnProperty(name)) {
33-
return urlParams[name] === "true";
34-
}
35-
return defaultValue;
36-
}
37-
3832
return {
3933
name: urlParams["name"] ?? defaultFilter.name,
40-
nonRelevant: getBoolOrDefault("nonRelevant", defaultFilter.nonRelevant),
41-
showRawData: getBoolOrDefault("showRawData", defaultFilter.showRawData),
34+
nonRelevant: getBoolOrDefault(
35+
urlParams,
36+
"nonRelevant",
37+
defaultFilter.nonRelevant
38+
),
39+
showRawData: getBoolOrDefault(
40+
urlParams,
41+
"showRawData",
42+
defaultFilter.showRawData
43+
),
4244
profile: {
43-
check: getBoolOrDefault("check", defaultFilter.profile.check),
44-
debug: getBoolOrDefault("debug", defaultFilter.profile.debug),
45-
opt: getBoolOrDefault("opt", defaultFilter.profile.opt),
46-
doc: getBoolOrDefault("doc", defaultFilter.profile.doc),
45+
check: getBoolOrDefault(urlParams, "check", defaultFilter.profile.check),
46+
debug: getBoolOrDefault(urlParams, "debug", defaultFilter.profile.debug),
47+
opt: getBoolOrDefault(urlParams, "opt", defaultFilter.profile.opt),
48+
doc: getBoolOrDefault(urlParams, "doc", defaultFilter.profile.doc),
4749
},
4850
scenario: {
49-
full: getBoolOrDefault("full", defaultFilter.scenario.full),
50-
incrFull: getBoolOrDefault("incrFull", defaultFilter.scenario.incrFull),
51+
full: getBoolOrDefault(urlParams, "full", defaultFilter.scenario.full),
52+
incrFull: getBoolOrDefault(
53+
urlParams,
54+
"incrFull",
55+
defaultFilter.scenario.incrFull
56+
),
5157
incrUnchanged: getBoolOrDefault(
58+
urlParams,
5259
"incrUnchanged",
5360
defaultFilter.scenario.incrUnchanged
5461
),
5562
incrPatched: getBoolOrDefault(
63+
urlParams,
5664
"incrPatched",
5765
defaultFilter.scenario.incrPatched
5866
),
5967
},
6068
category: {
61-
primary: getBoolOrDefault("primary", defaultFilter.category.primary),
69+
primary: getBoolOrDefault(
70+
urlParams,
71+
"primary",
72+
defaultFilter.category.primary
73+
),
6274
secondary: getBoolOrDefault(
75+
urlParams,
6376
"secondary",
6477
defaultFilter.category.secondary
6578
),
6679
},
6780
artifact: {
68-
binary: getBoolOrDefault("binary", defaultFilter.artifact.binary),
69-
library: getBoolOrDefault("library", defaultFilter.artifact.library),
81+
binary: getBoolOrDefault(
82+
urlParams,
83+
"binary",
84+
defaultFilter.artifact.binary
85+
),
86+
library: getBoolOrDefault(
87+
urlParams,
88+
"library",
89+
defaultFilter.artifact.library
90+
),
7091
},
7192
};
7293
}

site/frontend/src/pages/compare/runtime/runtime-page.vue

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,43 @@ import {computeSummary, filterNonRelevant} from "../data";
66
import {
77
computeRuntimeComparisonsWithNonRelevant,
88
defaultRuntimeFilter,
9+
RuntimeBenchmarkFilter,
910
} from "./common";
10-
import {deepCopy} from "../../../utils/copy";
1111
import MetricSelector from "../metric-selector.vue";
1212
import {BenchmarkInfo} from "../../../api";
1313
import {importantRuntimeMetrics} from "../metrics";
1414
import ComparisonsTable from "./comparisons-table.vue";
15+
import {getBoolOrDefault} from "../shared";
16+
import {getUrlParams} from "../../../utils/navigation";
1517
1618
const props = defineProps<{
1719
data: CompareResponse;
1820
selector: CompareSelector;
1921
benchmarkInfo: BenchmarkInfo;
2022
}>();
2123
22-
const filter = ref(deepCopy(defaultRuntimeFilter));
24+
function loadFilterFromUrl(
25+
urlParams: Dict<string>,
26+
defaultFilter: RuntimeBenchmarkFilter
27+
): RuntimeBenchmarkFilter {
28+
return {
29+
name: urlParams["name"] ?? defaultFilter.name,
30+
nonRelevant: getBoolOrDefault(
31+
urlParams,
32+
"nonRelevant",
33+
defaultFilter.nonRelevant
34+
),
35+
showRawData: getBoolOrDefault(
36+
urlParams,
37+
"showRawData",
38+
defaultFilter.showRawData
39+
),
40+
};
41+
}
42+
43+
const urlParams = getUrlParams();
44+
const filter = ref(loadFilterFromUrl(urlParams, defaultRuntimeFilter));
45+
2346
const allComparisons = computed(() =>
2447
computeRuntimeComparisonsWithNonRelevant(
2548
filter.value,

site/frontend/src/pages/compare/shared.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,14 @@ export function formatPercentChange(
6767
export function isValidValue(size: number | undefined): boolean {
6868
return size !== undefined && size !== 0;
6969
}
70+
71+
export function getBoolOrDefault(
72+
params: Dict<string>,
73+
name: string,
74+
defaultValue: boolean
75+
): boolean {
76+
if (params.hasOwnProperty(name)) {
77+
return params[name] === "true";
78+
}
79+
return defaultValue;
80+
}

0 commit comments

Comments
 (0)