@@ -6,60 +6,64 @@ import Skeleton from '@material-ui/lab/Skeleton';
6
6
import { Stack } from 'components/Stack/Stack' ;
7
7
import Box from "@material-ui/core/Box" ;
8
8
9
+ export const Language = {
10
+ of : "of" ,
11
+ workspaceUsed : "workspace used" ,
12
+ workspacesUsed : "workspaces used" ,
13
+ }
14
+
9
15
export interface WorkspaceQuotaProps {
10
- loading : boolean
11
16
count ?: number
12
17
limit ?: number
13
18
}
14
19
15
- export const WorkspaceQuota : FC < WorkspaceQuotaProps > = ( { loading , count, limit } ) => {
20
+ export const WorkspaceQuota : FC < WorkspaceQuotaProps > = ( { count, limit } ) => {
16
21
const styles = useStyles ( )
17
22
18
- const safeCount = count ? count : 0 ;
19
- const safeLimit = limit ? limit : 100 ;
20
- let value = Math . round ( ( safeCount / safeLimit ) * 100 )
23
+ // loading state
24
+ if ( count === undefined || limit === undefined ) {
25
+ return (
26
+ < Box >
27
+ < Stack spacing = { 1 } className = { styles . stack } >
28
+ < LinearProgress
29
+ color = "primary"
30
+ />
31
+ < div className = { styles . label } >
32
+ < Skeleton className = { styles . skeleton } />
33
+ </ div >
34
+ </ Stack >
35
+ </ Box >
36
+ )
37
+ }
38
+
39
+ let value = Math . round ( ( count / limit ) * 100 )
21
40
// we don't want to round down to zero if the count is > 0
22
- if ( safeCount > 0 && value === 0 ) {
41
+ if ( count > 0 && value === 0 ) {
23
42
value = 1
24
43
}
25
- const limitLanguage = limit ? limit : ( < span className = { styles . infinity } > ∞</ span > )
26
44
27
45
return (
28
46
< Box >
29
- < Stack spacing = { 1 } className = { styles . schedule } >
30
- { loading ? (
31
- < >
32
- < LinearProgress
33
- value = { value }
34
- color = "primary"
35
- />
36
- < div className = { styles . scheduleLabel } >
37
- < Skeleton className = { styles . skeleton } />
38
- </ div >
39
- </ >
40
- ) : (
41
- < >
42
- < LinearProgress
43
- value = { value }
44
- variant = "determinate"
45
- color = "primary"
46
- />
47
- < div className = { styles . scheduleLabel } >
48
- { safeCount } of { limitLanguage } workspaces used
49
- </ div >
50
- </ >
51
- ) }
47
+ < Stack spacing = { 1 } className = { styles . stack } >
48
+ < LinearProgress
49
+ value = { value }
50
+ variant = "determinate"
51
+ color = "primary"
52
+ />
53
+ < div className = { styles . label } >
54
+ { count } { Language . of } { limit } { limit === 1 ? Language . workspaceUsed : Language . workspacesUsed }
55
+ </ div >
52
56
</ Stack >
53
57
</ Box >
54
58
)
55
59
}
56
60
57
61
const useStyles = makeStyles ( ( theme ) => ( {
58
- schedule : {
59
- fontFamily : MONOSPACE_FONT_FAMILY ,
62
+ stack : {
60
63
display : 'inline-flex' ,
61
64
} ,
62
- scheduleLabel : {
65
+ label : {
66
+ fontFamily : MONOSPACE_FONT_FAMILY ,
63
67
fontSize : 12 ,
64
68
textTransform : "uppercase" ,
65
69
display : "block" ,
@@ -69,7 +73,4 @@ const useStyles = makeStyles((theme) => ({
69
73
skeleton : {
70
74
minWidth : "150px" ,
71
75
} ,
72
- infinity : {
73
- fontSize : 18 ,
74
- } ,
75
76
} ) )
0 commit comments