Skip to content

Commit 6e5681c

Browse files
committed
Split website by categories too
1 parent db4b693 commit 6e5681c

File tree

4 files changed

+42
-8
lines changed

4 files changed

+42
-8
lines changed

web/src/App.svelte

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,30 @@
22
import data from "./data/adtests.json";
33
import modelDefinitions from "./data/model_definitions.json";
44
5+
// Parse data into nice JS objects.
6+
// Obviously, the nested strings are a bit ugly. From outer to inner, they are:
7+
// category -> model_name -> adtype -> result
8+
let categorisedData = new Map<
9+
string,
10+
Map<string, Map<string, string | number>>
11+
>();
12+
for (const [model_name, results] of Object.entries(data)) {
13+
let category = results.__category__;
14+
delete results.__category__;
15+
let resultsMap = new Map<string, string | number>();
16+
for (const [adtype, result] of Object.entries(results)) {
17+
resultsMap.set(adtype, result);
18+
}
19+
if (!categorisedData.has(category)) {
20+
categorisedData.set(
21+
category,
22+
new Map<string, Map<string, string | number>>(),
23+
);
24+
}
25+
categorisedData.get(category).set(model_name, resultsMap);
26+
}
27+
console.log(categorisedData);
28+
529
import Manifest from "./lib/Manifest.svelte";
630
import ResultsTable from "./lib/ResultsTable.svelte";
731
</script>
@@ -78,7 +102,10 @@
78102
>Download the raw data (JSON)</a
79103
>
80104
</p>
81-
<ResultsTable {data} {modelDefinitions} />
105+
{#each categorisedData.entries() as [category, modelData]}
106+
<h3>{category}</h3>
107+
<ResultsTable data={modelData} {modelDefinitions} />
108+
{/each}
82109

83110
<h2>Manifest</h2>
84111
<p>The tests above were run with the following package versions:</p>

web/src/lib/Manifest.svelte

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
<script lang="ts">
2-
import manifest from "../data/manifest.json";
2+
import manifestObj from "../data/manifest.json";
3+
4+
// convert manifest to a Map
5+
let manifest = new Map<string, string | null>();
6+
for (const [packageName, version] of Object.entries(manifestObj)) {
7+
manifest.set(packageName, version === "" ? null : version);
8+
}
39
410
import { getSortedEntries } from "./utils";
511
</script>

web/src/lib/ResultsTable.svelte

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
import { getSortedEntries } from "./utils";
66
77
interface Props {
8-
data: object;
8+
// model name -> adtype -> result
9+
data: Map<string, Map<string, string | number>>;
910
modelDefinitions: object;
1011
}
1112
const { data, modelDefinitions }: Props = $props();
1213
13-
const models = Object.keys(data);
14-
const adtypes = Object.keys(data[models[0]]);
14+
const models = [...data.keys()];
15+
const adtypes = data.get(models[0]).keys();
1516
1617
// Known errors
1718
const ENZYME_FWD_BLAS = "https://github.com/EnzymeAD/Enzyme.jl/issues/1995";

web/src/lib/utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
export function getSortedEntries(obj: object) {
2-
return Object.entries(obj).sort(([a, _x], [b, _y]) =>
3-
a.localeCompare(b),
1+
export function getSortedEntries(m: Map<string, any>) {
2+
return [...m.entries()].sort(([k1, _v1], [k2, _v2]) =>
3+
k1.localeCompare(k2),
44
);
55
}

0 commit comments

Comments
 (0)