Skip to content

Commit 0c19082

Browse files
authored
[TSPS-655] Update pipeline quota details view (#5438)
1 parent ce13707 commit 0c19082

File tree

3 files changed

+38
-51
lines changed

3 files changed

+38
-51
lines changed

src/pages/scientificServices/pipelines/views/RunJob.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import {
3131
} from 'src/pages/scientificServices/pipelines/utils/submission-utils';
3232
import { HelpfulTipsWidget } from 'src/pages/scientificServices/pipelines/widgets/HelpfulTipsWidget';
3333
import { PipelineOutputsWidget } from 'src/pages/scientificServices/pipelines/widgets/PipelineOutputsWidget';
34-
import { QuotaRemainingWidget } from 'src/pages/scientificServices/pipelines/widgets/QuotaRemainingWidget';
34+
import { QuotaDetailsWidget } from 'src/pages/scientificServices/pipelines/widgets/QuotaDetailsWidget';
3535

3636
export const RunJob = () => {
3737
const signal = useCancellation();
@@ -406,7 +406,7 @@ export const RunJob = () => {
406406
)}
407407
</div>
408408
<div>
409-
<QuotaRemainingWidget selectedPipeline={selectedPipeline} />
409+
<QuotaDetailsWidget selectedPipeline={selectedPipeline} />
410410
<PipelineOutputsWidget selectedPipelineDetails={pipelineDetails} />
411411
<HelpfulTipsWidget selectedPipeline={selectedPipeline} />
412412
</div>

src/pages/scientificServices/pipelines/widgets/QuotaRemainingWidget.test.tsx renamed to src/pages/scientificServices/pipelines/widgets/QuotaDetailsWidget.test.tsx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
mockUserPipelineQuotaDetails,
88
} from 'src/pages/scientificServices/pipelines/utils/mock-utils';
99

10-
import { QuotaRemainingWidget } from './QuotaRemainingWidget';
10+
import { QuotaDetailsWidget } from './QuotaDetailsWidget';
1111

1212
jest.mock('src/libs/ajax/teaspoons/Teaspoons', () => ({
1313
Teaspoons: () => ({
@@ -16,19 +16,16 @@ jest.mock('src/libs/ajax/teaspoons/Teaspoons', () => ({
1616
}),
1717
}));
1818

19-
describe('QuotaRemainingWidget', () => {
19+
describe('QuotaDetailsWidget', () => {
2020
it('displays the correct remaining and used quota', async () => {
21-
render(<QuotaRemainingWidget selectedPipeline={mockPipeline('test_pipeline')} />);
21+
render(<QuotaDetailsWidget selectedPipeline={mockPipeline('test_pipeline')} />);
2222

2323
await waitFor(() => expect(screen.getByText('1250', { exact: false })).toBeInTheDocument());
2424
await waitFor(() => expect(screen.getByText('750', { exact: false })).toBeInTheDocument());
25-
26-
const progressBar = screen.getByRole('progressbar');
27-
await expect(progressBar).toHaveStyle('background-color: #5CC88D; width: 62.5%');
2825
});
2926

3027
it('displays the minimum quota consumed for the pipeline', async () => {
31-
render(<QuotaRemainingWidget selectedPipeline={mockPipeline('test_pipeline')} />);
28+
render(<QuotaDetailsWidget selectedPipeline={mockPipeline('test_pipeline')} />);
3229

3330
await waitFor(() => expect(screen.getByText(/every submitted job will consume at least/i)).toBeInTheDocument());
3431

@@ -38,7 +35,7 @@ describe('QuotaRemainingWidget', () => {
3835
});
3936

4037
it('displays a message when no pipeline is selected', () => {
41-
render(<QuotaRemainingWidget selectedPipeline={undefined} />);
38+
render(<QuotaDetailsWidget selectedPipeline={undefined} />);
4239

4340
expect(screen.getByText('Select a pipeline to see quota')).toBeInTheDocument();
4441
});

src/pages/scientificServices/pipelines/widgets/QuotaRemainingWidget.tsx renamed to src/pages/scientificServices/pipelines/widgets/QuotaDetailsWidget.tsx

Lines changed: 31 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import { useUserQuota } from 'src/pages/scientificServices/pipelines/hooks/useUs
77

88
import { PipelineWidgetContainer } from './PipelineWidgetContainer';
99

10-
export const QuotaRemainingWidget = ({ selectedPipeline }: { selectedPipeline?: Pipeline }) => {
10+
export const QuotaDetailsWidget = ({ selectedPipeline }: { selectedPipeline?: Pipeline }) => {
1111
const { quota, pipelineDetails, meetsMinimumQuota } = useUserQuota(selectedPipeline);
1212

1313
return (
14-
<PipelineWidgetContainer title='Quota Remaining' marginBottom='1rem'>
14+
<PipelineWidgetContainer title='Quota Details' marginBottom='1rem'>
1515
{cond(
1616
[!selectedPipeline, () => <div style={{ marginTop: '1rem' }}>Select a pipeline to see quota</div>],
1717
[
@@ -24,48 +24,38 @@ export const QuotaRemainingWidget = ({ selectedPipeline }: { selectedPipeline?:
2424
}
2525
return (
2626
<div style={{ marginTop: '1rem' }}>
27-
<div style={{ fontWeight: 'bold', textTransform: 'capitalize' }}>{quota.quotaUnits}</div>
28-
<div style={{ marginTop: '0.5rem' }}>
29-
<div
30-
style={{
31-
backgroundColor: '#e4e5e6',
32-
borderRadius: '4px',
33-
overflow: 'hidden',
34-
}}
35-
>
27+
<div
28+
style={{
29+
borderLeft: `3px solid ${meetsMinimumQuota ? '#5CC88D' : colors.warning(0.7)}`,
30+
paddingLeft: '1rem',
31+
}}
32+
>
33+
<div style={{ marginTop: '0.5rem', gap: '5rem' }}>
3634
<div
37-
aria-label={`quota: ${quota.quotaLimit - quota.quotaConsumed} remaining, ${
38-
quota.quotaConsumed
39-
} used`}
40-
role='progressbar'
4135
style={{
42-
width: `${((quota.quotaLimit - quota.quotaConsumed) / quota.quotaLimit) * 100}%`,
43-
height: '6px',
44-
backgroundColor: meetsMinimumQuota ? '#5CC88D' : colors.warning(0.6),
36+
display: 'flex',
37+
flexDirection: 'column',
38+
alignItems: 'flex-start',
4539
}}
46-
/>
47-
</div>
48-
</div>
49-
<div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '0.5rem', gap: '5rem' }}>
50-
<div
51-
style={{
52-
display: 'flex',
53-
flexDirection: 'column',
54-
alignItems: 'flex-start',
55-
}}
56-
>
57-
<div style={{ fontWeight: 'bold' }}>{quota.quotaLimit - quota.quotaConsumed}</div>
58-
<div style={{ color: '#6B6C6E', marginTop: '0.125rem' }}>Remaining</div>
59-
</div>
60-
<div
61-
style={{
62-
display: 'flex',
63-
flexDirection: 'column',
64-
alignItems: 'flex-end',
65-
}}
66-
>
67-
<div style={{ fontWeight: 'bold' }}>{quota.quotaConsumed}</div>
68-
<div style={{ color: '#6B6C6E', marginTop: '0.125rem' }}>Used</div>
40+
>
41+
<div style={{ fontWeight: 'bold', fontSize: 16 }}>{quota.quotaLimit - quota.quotaConsumed}</div>
42+
<div style={{ color: '#6B6C6E', marginTop: '0.125rem', fontSize: 13 }}>
43+
{quota.quotaUnits} remaining
44+
</div>
45+
</div>
46+
<div
47+
style={{
48+
marginTop: '0.75rem',
49+
display: 'flex',
50+
flexDirection: 'column',
51+
alignItems: 'flex-start',
52+
}}
53+
>
54+
<div style={{ fontWeight: 'bold', fontSize: 16 }}>{quota.quotaConsumed}</div>
55+
<div style={{ color: '#6B6C6E', marginTop: '0.125rem', fontSize: 13 }}>
56+
{quota.quotaUnits} used
57+
</div>
58+
</div>
6959
</div>
7060
</div>
7161
{pipelineDetails && (

0 commit comments

Comments
 (0)