Skip to content

Commit a74830b

Browse files
committed
refactor(web): store
1 parent 38be12d commit a74830b

File tree

1 file changed

+53
-43
lines changed

1 file changed

+53
-43
lines changed

webdriver-ts-results/src/store.ts

Lines changed: 53 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { create } from "zustand";
22
import { jStat } from "jstat";
3-
import { frameworks, benchmarks as rawBenchmarks, results as rawResults } from "./results";
3+
import { frameworks as rawFrameworks, benchmarks as rawBenchmarks, results as rawResults } from "./results";
44
import {
55
Benchmark,
66
BenchmarkType,
@@ -16,7 +16,21 @@ import {
1616
knownIssues,
1717
} from "@/Common";
1818

19-
const benchmarks = rawBenchmarks;
19+
const removeKeyedSuffix = (value: string) => {
20+
return value.replace(/-keyed|-non-keyed$/, "");
21+
};
22+
23+
const mappedFrameworks = rawFrameworks.map((f) => ({
24+
name: f.name,
25+
dir: f.dir,
26+
displayname: removeKeyedSuffix(f.name),
27+
issues: f.issues ?? [],
28+
type: f.keyed ? FrameworkType.KEYED : FrameworkType.NON_KEYED,
29+
frameworkHomeURL: f.frameworkHomeURL,
30+
}));
31+
32+
const allBenchmarks = new Set(rawBenchmarks);
33+
const allFrameworks = new Set(mappedFrameworks);
2034

2135
const results: Result[] = [];
2236
for (let result of rawResults) {
@@ -32,28 +46,10 @@ for (let result of rawResults) {
3246
};
3347
values[key] = vals;
3448
}
35-
results.push({ framework: frameworks[result.f].name, benchmark: benchmarks[b.b].id, results: values });
49+
results.push({ framework: rawFrameworks[result.f].name, benchmark: rawBenchmarks[b.b].id, results: values });
3650
}
3751
}
38-
console.log(results)
39-
40-
const removeKeyedSuffix = (value: string) => {
41-
if (value.endsWith("-non-keyed")) return value.slice(0, -10);
42-
else if (value.endsWith("-keyed")) return value.slice(0, -6);
43-
return value;
44-
};
45-
46-
const mappedFrameworks = frameworks.map((f) => ({
47-
name: f.name,
48-
dir: f.dir,
49-
displayname: removeKeyedSuffix(f.name),
50-
issues: f.issues ?? [],
51-
type: f.keyed ? FrameworkType.KEYED : FrameworkType.NON_KEYED,
52-
frameworkHomeURL: f.frameworkHomeURL,
53-
}));
54-
55-
const allBenchmarks = new Set(benchmarks);
56-
const allFrameworks = new Set(mappedFrameworks);
52+
console.log(results);
5753

5854
const resultLookup = convertToMap(results);
5955

@@ -145,40 +141,49 @@ function updateResultTable({
145141
};
146142
}
147143

148-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
149-
function extractState(state: any): Partial<State> {
150-
let t = {};
151-
if (state.benchmarks !== undefined) {
144+
interface ClipboardState {
145+
benchmarks: string[];
146+
frameworks: string[];
147+
displayMode: DisplayMode;
148+
}
149+
150+
function extractClipboardState(state: ClipboardState): Partial<State> {
151+
const newState: Partial<State> = {};
152+
153+
if (state.benchmarks) {
152154
const newSelectedBenchmarks = new Set<Benchmark>();
153-
for (const b of state.benchmarks) {
154-
for (const sb of benchmarks) {
155-
if (b === sb.id) newSelectedBenchmarks.add(sb);
155+
for (const benchmark of state.benchmarks) {
156+
for (const sb of rawBenchmarks) {
157+
if (benchmark === sb.id) newSelectedBenchmarks.add(sb);
156158
}
157159
}
158-
t = { ...t, selectedBenchmarks: newSelectedBenchmarks };
160+
newState.selectedBenchmarks = newSelectedBenchmarks;
159161
}
160-
if (state.frameworks !== undefined) {
162+
163+
if (state.frameworks) {
161164
const newSelectedFramework = new Set<Framework>();
162-
for (const f of state.frameworks) {
165+
for (const framework of state.frameworks) {
163166
for (const sf of mappedFrameworks) {
164-
if (f === sf.dir) newSelectedFramework.add(sf);
167+
if (framework === sf.dir) newSelectedFramework.add(sf);
165168
}
166169
}
167-
t = { ...t, selectedFrameworks: newSelectedFramework };
170+
newState.selectedFrameworks = newSelectedFramework;
168171
}
169-
if (state.displayMode !== undefined) {
170-
t = { ...t, displayMode: state.displayMode };
172+
173+
if (state.displayMode) {
174+
newState.displayMode = state.displayMode;
171175
}
172-
return t;
176+
177+
return newState;
173178
}
174179

175180
const preInitialState: State = {
176181
// State
177-
benchmarks: benchmarks,
182+
benchmarks: rawBenchmarks,
178183
benchmarkLists: {
179-
[BenchmarkType.CPU]: benchmarks.filter((b) => b.type === BenchmarkType.CPU),
180-
[BenchmarkType.MEM]: benchmarks.filter((b) => b.type === BenchmarkType.MEM),
181-
[BenchmarkType.STARTUP]: benchmarks.filter((b) => b.type === BenchmarkType.STARTUP),
184+
[BenchmarkType.CPU]: rawBenchmarks.filter((b) => b.type === BenchmarkType.CPU),
185+
[BenchmarkType.MEM]: rawBenchmarks.filter((b) => b.type === BenchmarkType.MEM),
186+
[BenchmarkType.STARTUP]: rawBenchmarks.filter((b) => b.type === BenchmarkType.STARTUP),
182187
},
183188
frameworks: mappedFrameworks,
184189
frameworkLists: {
@@ -313,7 +318,7 @@ export const useRootStore = create<State & Actions>((set, get) => ({
313318
copyStateToClipboard: () => {
314319
const currentState = get();
315320

316-
const serializedState = {
321+
const serializedState: ClipboardState = {
317322
frameworks: currentState.frameworks.filter((f) => currentState.selectedFrameworks.has(f)).map((f) => f.dir),
318323
benchmarks: currentState.benchmarks.filter((f) => currentState.selectedBenchmarks.has(f)).map((f) => f.id),
319324
displayMode: currentState.displayMode,
@@ -334,7 +339,12 @@ export const useRootStore = create<State & Actions>((set, get) => ({
334339
return;
335340
}
336341

337-
const t = { ...get(), ...extractState(arg) };
342+
console.log(arg);
343+
344+
performance.mark("m1");
345+
const t = { ...get(), ...extractClipboardState(arg as ClipboardState) };
346+
performance.mark("m2");
347+
console.log(performance.measure("State extraction", "m1", "m2"));
338348
return set(() => ({ ...t, resultTables: updateResultTable(t) }));
339349
},
340350
}));

0 commit comments

Comments
 (0)