Skip to content

Commit 6715669

Browse files
committed
Add "result format" dropdown to MRVA view
1 parent c38a01e commit 6715669

3 files changed

Lines changed: 61 additions & 19 deletions

File tree

extensions/ql-vscode/src/stories/variant-analysis/RepositoriesSearchSortRow.stories.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Meta } from "@storybook/react";
55

66
import { RepositoriesSearchSortRow as RepositoriesSearchSortRowComponent } from "../../view/variant-analysis/RepositoriesSearchSortRow";
77
import { defaultFilterSortState } from "../../variant-analysis/shared/variant-analysis-filter-sort";
8+
import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format";
89

910
export default {
1011
title: "Variant Analysis/Repositories Search and Sort Row",
@@ -19,9 +20,20 @@ export default {
1920
} as Meta<typeof RepositoriesSearchSortRowComponent>;
2021

2122
export const RepositoriesSearchSortRow = () => {
22-
const [value, setValue] = useState(defaultFilterSortState);
23+
const [filterSortValue, setFilterSortValue] = useState(
24+
defaultFilterSortState,
25+
);
26+
27+
const [resultFormatValue, setResultFormatValue] = useState(
28+
ResultFormat.Alerts,
29+
);
2330

2431
return (
25-
<RepositoriesSearchSortRowComponent value={value} onChange={setValue} />
32+
<RepositoriesSearchSortRowComponent
33+
filterSortValue={filterSortValue}
34+
resultFormatValue={resultFormatValue}
35+
onFilterSortChange={setFilterSortValue}
36+
onResultFormatChange={setResultFormatValue}
37+
/>
2638
);
2739
};

extensions/ql-vscode/src/view/variant-analysis/RepositoriesSearchSortRow.tsx

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@ import {
99
import { RepositoriesSearch } from "./RepositoriesSearch";
1010
import { RepositoriesSort } from "./RepositoriesSort";
1111
import { RepositoriesFilter } from "./RepositoriesFilter";
12+
import { RepositoriesResultFormat } from "./RepositoriesResultFormat";
13+
import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format";
1214

1315
type Props = {
14-
value: RepositoriesFilterSortState;
15-
onChange: Dispatch<SetStateAction<RepositoriesFilterSortState>>;
16+
filterSortValue: RepositoriesFilterSortState;
17+
resultFormatValue: ResultFormat;
18+
onFilterSortChange: Dispatch<SetStateAction<RepositoriesFilterSortState>>;
19+
onResultFormatChange: Dispatch<SetStateAction<ResultFormat>>;
1620
};
1721

1822
const Container = styled.div`
@@ -35,51 +39,71 @@ const RepositoriesSortColumn = styled(RepositoriesSort)`
3539
flex: 1;
3640
`;
3741

38-
export const RepositoriesSearchSortRow = ({ value, onChange }: Props) => {
42+
const RepositoriesResultFormatColumn = styled(RepositoriesResultFormat)`
43+
flex: 1;
44+
`;
45+
46+
export const RepositoriesSearchSortRow = ({
47+
filterSortValue,
48+
resultFormatValue,
49+
onFilterSortChange,
50+
onResultFormatChange,
51+
}: Props) => {
3952
const handleSearchValueChange = useCallback(
4053
(searchValue: string) => {
41-
onChange((oldValue) => ({
54+
onFilterSortChange((oldValue) => ({
4255
...oldValue,
4356
searchValue,
4457
}));
4558
},
46-
[onChange],
59+
[onFilterSortChange],
4760
);
4861

4962
const handleFilterKeyChange = useCallback(
5063
(filterKey: FilterKey) => {
51-
onChange((oldValue) => ({
64+
onFilterSortChange((oldValue) => ({
5265
...oldValue,
5366
filterKey,
5467
}));
5568
},
56-
[onChange],
69+
[onFilterSortChange],
5770
);
5871

5972
const handleSortKeyChange = useCallback(
6073
(sortKey: SortKey) => {
61-
onChange((oldValue) => ({
74+
onFilterSortChange((oldValue) => ({
6275
...oldValue,
6376
sortKey,
6477
}));
6578
},
66-
[onChange],
79+
[onFilterSortChange],
80+
);
81+
82+
const handleResultFormatChange = useCallback(
83+
(resultFormat: ResultFormat) => {
84+
onResultFormatChange(resultFormat);
85+
},
86+
[onResultFormatChange],
6787
);
6888

6989
return (
7090
<Container>
7191
<RepositoriesSearchColumn
72-
value={value.searchValue}
92+
value={filterSortValue.searchValue}
7393
onChange={handleSearchValueChange}
7494
/>
7595
<RepositoriesFilterColumn
76-
value={value.filterKey}
96+
value={filterSortValue.filterKey}
7797
onChange={handleFilterKeyChange}
7898
/>
7999
<RepositoriesSortColumn
80-
value={value.sortKey}
100+
value={filterSortValue.sortKey}
81101
onChange={handleSortKeyChange}
82102
/>
103+
<RepositoriesResultFormatColumn
104+
value={resultFormatValue}
105+
onChange={handleResultFormatChange}
106+
/>
83107
</Container>
84108
);
85109
};

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from "react";
2-
import { Dispatch, SetStateAction } from "react";
2+
import { Dispatch, SetStateAction, useState } from "react";
33
import { styled } from "styled-components";
44
import {
55
VSCodeBadge,
@@ -20,6 +20,7 @@ import { VariantAnalysisSkippedRepositoriesTab } from "./VariantAnalysisSkippedR
2020
import { RepositoriesFilterSortState } from "../../variant-analysis/shared/variant-analysis-filter-sort";
2121
import { RepositoriesSearchSortRow } from "./RepositoriesSearchSortRow";
2222
import { FailureReasonAlert } from "./FailureReasonAlert";
23+
import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format";
2324

2425
export type VariantAnalysisOutcomePanelProps = {
2526
variantAnalysis: VariantAnalysis;
@@ -70,6 +71,7 @@ export const VariantAnalysisOutcomePanels = ({
7071
const accessMismatchRepositoryCount =
7172
variantAnalysis.skippedRepos?.accessMismatchRepos?.repositoryCount ?? 0;
7273

74+
const [resultFormat, setResultFormat] = useState(ResultFormat.Alerts);
7375
const warnings = (
7476
<WarningsContainer>
7577
{variantAnalysis.status === VariantAnalysisStatus.Canceled && (
@@ -123,8 +125,10 @@ export const VariantAnalysisOutcomePanels = ({
123125
<>
124126
{warnings}
125127
<RepositoriesSearchSortRow
126-
value={filterSortState}
127-
onChange={setFilterSortState}
128+
filterSortValue={filterSortState}
129+
resultFormatValue={resultFormat}
130+
onFilterSortChange={setFilterSortState}
131+
onResultFormatChange={setResultFormat}
128132
/>
129133
<VariantAnalysisAnalyzedRepos
130134
variantAnalysis={variantAnalysis}
@@ -142,8 +146,10 @@ export const VariantAnalysisOutcomePanels = ({
142146
<>
143147
{warnings}
144148
<RepositoriesSearchSortRow
145-
value={filterSortState}
146-
onChange={setFilterSortState}
149+
filterSortValue={filterSortState}
150+
resultFormatValue={resultFormat}
151+
onFilterSortChange={setFilterSortState}
152+
onResultFormatChange={setResultFormat}
147153
/>
148154
<VSCodePanels>
149155
{scannedReposCount > 0 && (

0 commit comments

Comments
 (0)