Skip to content

Commit 22cfad6

Browse files
committed
Add variant analysis stats to header component
1 parent cbc2650 commit 22cfad6

3 files changed

Lines changed: 77 additions & 11 deletions

File tree

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ export default {
4747
disable: true,
4848
},
4949
},
50+
onViewLogsClick: {
51+
action: 'view-logs-clicked',
52+
table: {
53+
disable: true,
54+
}
55+
},
5056
}
5157
} as ComponentMeta<typeof VariantAnalysisHeader>;
5258

@@ -59,16 +65,25 @@ InProgress.args = {
5965
queryName: 'Query name',
6066
queryFileName: 'example.ql',
6167
variantAnalysisStatus: VariantAnalysisStatus.InProgress,
68+
totalRepositoryCount: 10,
69+
completedRepositoryCount: 2,
70+
resultCount: 99_999,
6271
};
6372

6473
export const Succeeded = Template.bind({});
6574
Succeeded.args = {
6675
...InProgress.args,
6776
variantAnalysisStatus: VariantAnalysisStatus.Succeeded,
77+
totalRepositoryCount: 1000,
78+
completedRepositoryCount: 1000,
79+
duration: 720_000,
80+
completedAt: new Date(1661263446000),
6881
};
6982

7083
export const Failed = Template.bind({});
7184
Failed.args = {
7285
...InProgress.args,
7386
variantAnalysisStatus: VariantAnalysisStatus.Failed,
87+
duration: 10_000,
88+
completedAt: new Date(1661263446000),
7489
};

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

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,86 @@ import styled from 'styled-components';
33
import { VariantAnalysisStatus } from '../../remote-queries/shared/variant-analysis';
44
import { QueryDetails } from './QueryDetails';
55
import { VariantAnalysisActions } from './VariantAnalysisActions';
6+
import { VariantAnalysisStats } from './VariantAnalysisStats';
67

78
export type VariantAnalysisHeaderProps = {
89
queryName: string;
910
queryFileName: string;
1011
variantAnalysisStatus: VariantAnalysisStatus;
1112

13+
totalRepositoryCount: number;
14+
completedRepositoryCount?: number | undefined;
15+
16+
queryResult?: 'warning' | 'stopped';
17+
18+
resultCount?: number | undefined;
19+
duration?: number | undefined;
20+
completedAt?: Date | undefined;
21+
1222
onOpenQueryFileClick: () => void;
1323
onViewQueryTextClick: () => void;
1424

1525
onStopQueryClick: () => void;
1626

1727
onCopyRepositoryListClick: () => void;
1828
onExportResultsClick: () => void;
29+
30+
onViewLogsClick: () => void;
1931
};
2032

2133
const Container = styled.div`
34+
display: flex;
35+
flex-direction: column;
36+
gap: 2em;
37+
`;
38+
39+
const Row = styled.div`
2240
display: flex;
2341
align-items: center;
2442
`;
2543

2644
export const VariantAnalysisHeader = ({
2745
queryName,
2846
queryFileName,
47+
totalRepositoryCount,
48+
completedRepositoryCount,
49+
queryResult,
50+
resultCount,
51+
duration,
52+
completedAt,
2953
variantAnalysisStatus,
3054
onOpenQueryFileClick,
3155
onViewQueryTextClick,
3256
onStopQueryClick,
3357
onCopyRepositoryListClick,
34-
onExportResultsClick
58+
onExportResultsClick,
59+
onViewLogsClick,
3560
}: VariantAnalysisHeaderProps) => {
3661
return (
3762
<Container>
38-
<QueryDetails
39-
queryName={queryName}
40-
queryFileName={queryFileName}
41-
onOpenQueryFileClick={onOpenQueryFileClick}
42-
onViewQueryTextClick={onViewQueryTextClick}
43-
/>
44-
<VariantAnalysisActions
63+
<Row>
64+
<QueryDetails
65+
queryName={queryName}
66+
queryFileName={queryFileName}
67+
onOpenQueryFileClick={onOpenQueryFileClick}
68+
onViewQueryTextClick={onViewQueryTextClick}
69+
/>
70+
<VariantAnalysisActions
71+
variantAnalysisStatus={variantAnalysisStatus}
72+
onStopQueryClick={onStopQueryClick}
73+
onCopyRepositoryListClick={onCopyRepositoryListClick}
74+
onExportResultsClick={onExportResultsClick}
75+
/>
76+
</Row>
77+
<VariantAnalysisStats
4578
variantAnalysisStatus={variantAnalysisStatus}
46-
onStopQueryClick={onStopQueryClick}
47-
onCopyRepositoryListClick={onCopyRepositoryListClick}
48-
onExportResultsClick={onExportResultsClick}
79+
totalRepositoryCount={totalRepositoryCount}
80+
completedRepositoryCount={completedRepositoryCount}
81+
queryResult={queryResult}
82+
resultCount={resultCount}
83+
duration={duration}
84+
completedAt={completedAt}
85+
onViewLogsClick={onViewLogsClick}
4986
/>
5087
</Container>
5188
);

extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisHeader.spec.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ describe(VariantAnalysisHeader.name, () => {
1010
const onStopQueryClick = jest.fn();
1111
const onCopyRepositoryListClick = jest.fn();
1212
const onExportResultsClick = jest.fn();
13+
const onViewLogsClick = jest.fn();
1314

1415
afterEach(() => {
1516
onOpenQueryFileClick.mockReset();
1617
onViewQueryTextClick.mockReset();
1718
onStopQueryClick.mockReset();
1819
onCopyRepositoryListClick.mockReset();
1920
onExportResultsClick.mockReset();
21+
onViewLogsClick.mockReset();
2022
});
2123

2224
const render = (props: Partial<VariantAnalysisHeaderProps> = {}) =>
@@ -25,11 +27,13 @@ describe(VariantAnalysisHeader.name, () => {
2527
queryName="Query name"
2628
queryFileName="example.ql"
2729
variantAnalysisStatus={VariantAnalysisStatus.InProgress}
30+
totalRepositoryCount={10}
2831
onOpenQueryFileClick={onOpenQueryFileClick}
2932
onViewQueryTextClick={onViewQueryTextClick}
3033
onStopQueryClick={onStopQueryClick}
3134
onCopyRepositoryListClick={onCopyRepositoryListClick}
3235
onExportResultsClick={onExportResultsClick}
36+
onViewLogsClick={onViewLogsClick}
3337
{...props}
3438
/>
3539
);
@@ -80,4 +84,14 @@ describe(VariantAnalysisHeader.name, () => {
8084

8185
expect(container.querySelectorAll('vscode-button').length).toEqual(0);
8286
});
87+
88+
it('renders the view logs link when succeeded', async () => {
89+
render({
90+
variantAnalysisStatus: VariantAnalysisStatus.Succeeded,
91+
completedAt: new Date()
92+
});
93+
94+
await userEvent.click(screen.getByText('View logs'));
95+
expect(onViewLogsClick).toHaveBeenCalledTimes(1);
96+
});
8397
});

0 commit comments

Comments
 (0)