Skip to content

Commit ceb4415

Browse files
committed
Merge branch 'framework-selection-options' of github.com:twharmon/js-framework-benchmark into twharmon-framework-selection-options
2 parents b55bc39 + e6e8863 commit ceb4415

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

webdriver-ts-results/src/components/SelectionToolbar/FrameworkSelector/FrameworkSelectorCategory.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,22 @@ const FrameworkSelectorCategory = ({ label, frameworkType }: Props) => {
1414
const selectedFrameworks = useRootStore((state) => state.selectedFrameworks);
1515
const frameworks = useRootStore((state) => state.frameworkLists[frameworkType]);
1616
const isNoneSelected = useRootStore((state) => state.isNoneFrameworkSelected);
17+
const isUnflaggedSelected = useRootStore((state) => state.isUnflaggedFrameworkSelected);
1718
const areAllSelected = useRootStore((state) => state.areAllFrameworksSelected);
1819

1920
const selectFramework = useRootStore((state) => state.selectFramework);
2021
const selectAllFrameworks = useRootStore((state) => state.selectAllFrameworks);
22+
const selectUnflaggedFrameworks = useRootStore((state) => state.selectUnflaggedFrameworks);
2123

2224
return (
2325
<SelectorContentContainer
2426
grid
2527
isNoneSelected={isNoneSelected(frameworkType)}
28+
isUnflaggedSelected={isUnflaggedSelected(frameworkType)}
2629
areAllSelected={areAllSelected(frameworkType)}
2730
selectNone={() => selectAllFrameworks(frameworkType, false)}
2831
selectAll={() => selectAllFrameworks(frameworkType, true)}
32+
selectUnflagged={() => selectUnflaggedFrameworks(frameworkType)}
2933
label={label}
3034
>
3135
<FrameworkSelectorList

webdriver-ts-results/src/components/SelectionToolbar/SelectorContentContainer/SelectionContentContainer.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ import { Button, Flex } from "antd";
55
interface Props {
66
children: React.ReactElement;
77
selectNone: (event: React.SyntheticEvent) => void;
8+
selectUnflagged: (event: React.SyntheticEvent) => void;
89
selectAll: (event: React.SyntheticEvent) => void;
910
isNoneSelected: boolean;
11+
isUnflaggedSelected: boolean;
1012
areAllSelected: boolean;
1113
grid?: boolean;
1214
label: string;
@@ -15,7 +17,9 @@ interface Props {
1517
const SelectorContentContainer = ({
1618
selectAll,
1719
selectNone,
20+
selectUnflagged,
1821
isNoneSelected,
22+
isUnflaggedSelected,
1923
areAllSelected,
2024
children,
2125
grid = false,
@@ -25,6 +29,10 @@ const SelectorContentContainer = ({
2529
!isNoneSelected && selectNone(event);
2630
};
2731

32+
const handleSelectUnflagged = (event: React.MouseEvent) => {
33+
!isUnflaggedSelected && selectUnflagged(event);
34+
};
35+
2836
const handleSelectAll = (event: React.MouseEvent) => {
2937
!areAllSelected && selectAll(event);
3038
};
@@ -40,6 +48,9 @@ const SelectorContentContainer = ({
4048
<Button type="text" onClick={handleSelectAll} disabled={areAllSelected} aria-label="Select all">
4149
All
4250
</Button>
51+
<Button type="text" onClick={handleSelectUnflagged} disabled={isUnflaggedSelected} aria-label="Select unflagged">
52+
Unflagged
53+
</Button>
4354
</div>
4455
</Flex>
4556
<div className={`selector-content-container__content ${grid ? "grid" : ""}`}>

webdriver-ts-results/src/store.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,10 @@ interface Actions {
9191
isNoneBenchmarkSelected: (type: BenchmarkType) => boolean;
9292
areAllFrameworksSelected: (type: FrameworkType) => boolean;
9393
isNoneFrameworkSelected: (type: FrameworkType) => boolean;
94+
isUnflaggedFrameworkSelected: (type: FrameworkType) => boolean;
9495
selectFramework: (framework: Framework, add: boolean) => void;
9596
selectAllFrameworks: (frameworkType: FrameworkType, add: boolean) => void;
97+
selectUnflaggedFrameworks: (frameworkType: FrameworkType) => void;
9698
selectCategory: (categoryId: number, add: boolean) => void;
9799
selectBenchmark: (benchmark: Benchmark, add: boolean) => void;
98100
selectAllBenchmarks: (benchmarkType: BenchmarkType, add: boolean) => void;
@@ -232,6 +234,9 @@ export const useRootStore = create<State & Actions>((set, get) => ({
232234
isNoneFrameworkSelected: (type) => {
233235
return get().frameworkLists[type].every((framework) => !get().selectedFrameworks.has(framework));
234236
},
237+
isUnflaggedFrameworkSelected: (type) => {
238+
return get().frameworkLists[type].every((framework) => framework.issues.length ? !get().selectedFrameworks.has(framework) : get().selectedFrameworks.has(framework));
239+
},
235240
// Actions
236241
selectFramework: (framework: Framework, add: boolean) => {
237242
const newSelectedFramework = new Set(get().selectedFrameworks);
@@ -241,6 +246,23 @@ export const useRootStore = create<State & Actions>((set, get) => ({
241246
const t = { ...get(), selectedFrameworks: newSelectedFramework };
242247
return set(() => ({ ...t, resultTables: updateResultTable(t) }));
243248
},
249+
selectUnflaggedFrameworks: (frameworkType: FrameworkType) => {
250+
const newSelectedFramework = new Set(get().selectedFrameworks);
251+
const frameworks =
252+
frameworkType === FrameworkType.KEYED
253+
? get().frameworkLists[FrameworkType.KEYED]
254+
: get().frameworkLists[FrameworkType.NON_KEYED];
255+
256+
for (const framework of frameworks) {
257+
framework.issues.length ? newSelectedFramework.delete(framework) : newSelectedFramework.add(framework);
258+
}
259+
260+
const t = { ...get(), selectedFrameworks: newSelectedFramework };
261+
return set(() => ({
262+
...t,
263+
resultTables: updateResultTable(t),
264+
}));
265+
},
244266
selectAllFrameworks: (frameworkType: FrameworkType, add: boolean) => {
245267
const newSelectedFramework = new Set(get().selectedFrameworks);
246268
const frameworks =

0 commit comments

Comments
 (0)