Skip to content

Commit b539135

Browse files
committed
Merge branch 'twharmon-framework-selection-options'
2 parents b55bc39 + 60fa0af commit b539135

File tree

4 files changed

+39
-1
lines changed

4 files changed

+39
-1
lines changed

webdriver-ts-results/src/components/SelectionToolbar/BenchmarkSelector/BenchmarkSelectorCategory.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { BenchmarkType } from "@/Common";
1+
import { BenchmarkType, FrameworkType } from "@/Common";
22
import { useRootStore } from "@/store";
33
import SelectorContentContainer from "@/components/SelectionToolbar/SelectorContentContainer";
44
import BenchmarkSelectorList from "./BenchmarkSelectorList";

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: 12 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 && selectUnflagged(event);
34+
};
35+
2836
const handleSelectAll = (event: React.MouseEvent) => {
2937
!areAllSelected && selectAll(event);
3038
};
@@ -40,6 +48,10 @@ const SelectorContentContainer = ({
4048
<Button type="text" onClick={handleSelectAll} disabled={areAllSelected} aria-label="Select all">
4149
All
4250
</Button>
51+
{selectUnflagged &&
52+
(<Button type="text" onClick={handleSelectUnflagged} disabled={isUnflaggedSelected} aria-label="Select unflagged">
53+
Unflagged
54+
</Button>)}
4355
</div>
4456
</Flex>
4557
<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)