@@ -33,6 +33,8 @@ interface Props {
33
33
// if specified, only show images with dockerSizeGb set and <= maxDockerSizeGb
34
34
// Ignored if advanced is selected
35
35
maxDockerSizeGb ?: number ;
36
+ // show a warning if dockerSizeGb is bigger than this:
37
+ warnBigGb ?: number ;
36
38
}
37
39
38
40
export default function SelectImage ( {
@@ -45,9 +47,13 @@ export default function SelectImage({
45
47
googleImages,
46
48
arch,
47
49
maxDockerSizeGb,
50
+ warnBigGb,
48
51
} : Props ) {
49
52
const [ advanced , setAdvanced ] = useState < boolean > ( false ) ;
50
53
const [ IMAGES , ImagesError ] = useImages ( ) ;
54
+ const [ dockerSizeGb , setDockerSizeGb ] = useState < number | undefined > (
55
+ undefined ,
56
+ ) ;
51
57
const [ value , setValue ] = useState < string | undefined > ( configuration . image ) ;
52
58
useEffect ( ( ) => {
53
59
setValue ( configuration . image ) ;
@@ -103,6 +109,7 @@ export default function SelectImage({
103
109
for ( const option of options ) {
104
110
if ( option . value == val ) {
105
111
x . tag = option . tag ;
112
+ setDockerSizeGb ( option . dockerSizeGb ) ;
106
113
break ;
107
114
}
108
115
}
@@ -121,6 +128,21 @@ export default function SelectImage({
121
128
configuration = { configuration }
122
129
/>
123
130
) }
131
+ { warnBigGb && ( dockerSizeGb ?? 0 ) > warnBigGb && (
132
+ < Alert
133
+ style = { { margin : "15px 0" } }
134
+ showIcon
135
+ type = "warning"
136
+ message = "Large Image"
137
+ description = {
138
+ < >
139
+ The compute server will take < b > several extra minutes</ b > to start
140
+ the first time, because the { dockerSizeGb } GB Docker image must be
141
+ pulled and decompressed. Please be patient!
142
+ </ >
143
+ }
144
+ />
145
+ ) }
124
146
</ div >
125
147
) ;
126
148
}
@@ -151,6 +173,7 @@ function getOptions({
151
173
value : string ;
152
174
search : string ;
153
175
label : JSX . Element ;
176
+ dockerSizeGb ?: number ;
154
177
} [ ] = [ ] ;
155
178
for ( const name in IMAGES ) {
156
179
const image = IMAGES [ name ] ;
@@ -217,7 +240,7 @@ function getOptions({
217
240
}
218
241
}
219
242
}
220
- if ( advanced && dockerSizeGb ) {
243
+ if ( dockerSizeGb ) {
221
244
extra += ` - ${ dockerSizeGb } GB` ;
222
245
}
223
246
@@ -227,6 +250,7 @@ function getOptions({
227
250
priority,
228
251
search : label ?. toLowerCase ( ) ?? "" ,
229
252
tag,
253
+ dockerSizeGb,
230
254
label : (
231
255
< div style = { { fontSize : "12pt" } } >
232
256
< div style = { { float : "right" } } > { versionLabel } </ div >
0 commit comments