5
5
*--------------------------------------------------------------------------
6
6
*/
7
7
8
- import { Box , Checkbox , FormControlLabel , Typography } from '@material-ui/core'
8
+ import {
9
+ Box ,
10
+ Checkbox ,
11
+ FormControlLabel ,
12
+ Typography ,
13
+ Snackbar ,
14
+ } from '@material-ui/core'
9
15
import { useState , useEffect } from 'react'
10
16
import { withStyles , makeStyles } from '@material-ui/core/styles'
11
17
import { Modal } from '@postgres.ai/shared/components/Modal'
@@ -56,10 +62,13 @@ export const Configuration = observer(
56
62
getFullConfig,
57
63
fullConfig,
58
64
testDbSource,
59
- updateConfigError,
65
+ configError,
66
+ dbSourceError,
60
67
getFullConfigError,
68
+ instanceRetrieval,
61
69
} = stores . main
62
70
const configData = config && JSON . parse ( JSON . stringify ( config ) )
71
+ const isConfigurationActive = instanceRetrieval ?. mode !== 'physical'
63
72
const [ submitMessage , setSubmitMessage ] = useState <
64
73
string | React . ReactNode | null
65
74
> ( '' )
@@ -165,6 +174,12 @@ export const Configuration = observer(
165
174
166
175
return (
167
176
< div className = { styles . root } >
177
+ < Snackbar
178
+ anchorOrigin = { { vertical : "bottom" , horizontal : 'right' } }
179
+ open = { ! isConfigurationActive && ! isOpen }
180
+ message = { 'Configuration editing is only available in logical mode' }
181
+ className = { styles . snackbar }
182
+ />
168
183
< Box >
169
184
< Header retrievalMode = "logical" setOpen = { handleModalClick } />
170
185
< Box >
@@ -174,6 +189,7 @@ export const Configuration = observer(
174
189
< Checkbox
175
190
name = "debug"
176
191
checked = { formik . values . debug }
192
+ disabled = { ! isConfigurationActive }
177
193
onChange = { ( e ) =>
178
194
formik . setFieldValue ( 'debug' , e . target . checked )
179
195
}
@@ -196,6 +212,7 @@ export const Configuration = observer(
196
212
value = { formik . values . dockerImage }
197
213
error = { formik . errors . dockerImage }
198
214
tooltipText = { tooltipText . dockerImage }
215
+ disabled = { ! isConfigurationActive }
199
216
onChange = { ( e ) =>
200
217
formik . setFieldValue ( 'dockerImage' , e . target . value )
201
218
}
@@ -211,6 +228,7 @@ export const Configuration = observer(
211
228
label = "configs.shared_buffers"
212
229
value = { formik . values . sharedBuffers }
213
230
tooltipText = { tooltipText . sharedBuffers }
231
+ disabled = { ! isConfigurationActive }
214
232
onChange = { ( e ) =>
215
233
formik . setFieldValue ( 'sharedBuffers' , e . target . value )
216
234
}
@@ -219,6 +237,7 @@ export const Configuration = observer(
219
237
label = "configs.shared_preload_libraries"
220
238
value = { formik . values . sharedPreloadLibraries }
221
239
tooltipText = { tooltipText . sharedPreloadLibraries }
240
+ disabled = { ! isConfigurationActive }
222
241
onChange = { ( e ) =>
223
242
formik . setFieldValue ( 'sharedPreloadLibraries' , e . target . value )
224
243
}
@@ -238,27 +257,31 @@ export const Configuration = observer(
238
257
value = { formik . values . host }
239
258
error = { formik . errors . host }
240
259
tooltipText = { tooltipText . host }
260
+ disabled = { ! isConfigurationActive }
241
261
onChange = { ( e ) => formik . setFieldValue ( 'host' , e . target . value ) }
242
262
/>
243
263
< InputWithTooltip
244
264
label = "source.connection.port"
245
265
value = { formik . values . port }
246
266
error = { formik . errors . port }
247
267
tooltipText = { tooltipText . port }
268
+ disabled = { ! isConfigurationActive }
248
269
onChange = { ( e ) => formik . setFieldValue ( 'port' , e . target . value ) }
249
270
/>
250
271
< InputWithTooltip
251
272
label = "source.connection.username"
252
273
value = { formik . values . username }
253
274
error = { formik . errors . username }
254
275
tooltipText = { tooltipText . username }
276
+ disabled = { ! isConfigurationActive }
255
277
onChange = { ( e ) =>
256
278
formik . setFieldValue ( 'username' , e . target . value )
257
279
}
258
280
/>
259
281
< InputWithTooltip
260
282
label = "source.connection.password"
261
283
tooltipText = { tooltipText . password }
284
+ disabled = { ! isConfigurationActive }
262
285
onChange = { ( e ) =>
263
286
formik . setFieldValue ( 'password' , e . target . value )
264
287
}
@@ -268,6 +291,7 @@ export const Configuration = observer(
268
291
value = { formik . values . dbname }
269
292
error = { formik . errors . dbname }
270
293
tooltipText = { tooltipText . dbname }
294
+ disabled = { ! isConfigurationActive }
271
295
onChange = { ( e ) =>
272
296
formik . setFieldValue ( 'dbname' , e . target . value )
273
297
}
@@ -278,6 +302,7 @@ export const Configuration = observer(
278
302
id = "databases"
279
303
tooltipText = { tooltipText . databases }
280
304
handleDeleteDatabase = { handleDeleteDatabase }
305
+ disabled = { ! isConfigurationActive }
281
306
onChange = { ( e ) =>
282
307
formik . setFieldValue ( 'databases' , e . target . value )
283
308
}
@@ -287,18 +312,20 @@ export const Configuration = observer(
287
312
variant = "primary"
288
313
size = "medium"
289
314
onClick = { onTestConnectionClick }
290
- isDisabled = { isTestConnectionLoading }
315
+ isDisabled = {
316
+ isTestConnectionLoading || ! isConfigurationActive
317
+ }
291
318
>
292
319
Test connection
293
320
{ isTestConnectionLoading && (
294
321
< Spinner size = "sm" className = { styles . spinner } />
295
322
) }
296
323
</ Button >
297
324
</ Box >
298
- { connectionStatus && connectionResponse ? (
325
+ { ( connectionStatus && connectionResponse ) || dbSourceError ? (
299
326
< ResponseMessage
300
- type = { connectionStatus }
301
- message = { connectionResponse }
327
+ type = { dbSourceError ? 'error' : connectionStatus }
328
+ message = { dbSourceError || connectionResponse }
302
329
/>
303
330
) : null }
304
331
</ Box >
@@ -307,12 +334,14 @@ export const Configuration = observer(
307
334
label = "pg_dump jobs"
308
335
value = { formik . values . pg_dump }
309
336
tooltipText = { tooltipText . pg_dump }
337
+ disabled = { ! isConfigurationActive }
310
338
onChange = { ( e ) => formik . setFieldValue ( 'pg_dump' , e . target . value ) }
311
339
/>
312
340
< InputWithTooltip
313
341
label = "pg_restore jobs"
314
342
value = { formik . values . pg_restore }
315
343
tooltipText = { tooltipText . pg_restore }
344
+ disabled = { ! isConfigurationActive }
316
345
onChange = { ( e ) =>
317
346
formik . setFieldValue ( 'pg_restore' , e . target . value )
318
347
}
@@ -340,6 +369,7 @@ export const Configuration = observer(
340
369
label = "timetable"
341
370
value = { formik . values . timetable }
342
371
tooltipText = { tooltipText . timetable }
372
+ disabled = { ! isConfigurationActive }
343
373
onChange = { ( e ) =>
344
374
formik . setFieldValue ( 'timetable' , e . target . value )
345
375
}
@@ -357,7 +387,7 @@ export const Configuration = observer(
357
387
variant = "primary"
358
388
size = "medium"
359
389
onClick = { formik . submitForm }
360
- isDisabled = { formik . isSubmitting }
390
+ isDisabled = { formik . isSubmitting || ! isConfigurationActive }
361
391
>
362
392
Apply changes
363
393
{ formik . isSubmitting && (
@@ -374,10 +404,10 @@ export const Configuration = observer(
374
404
</ Button >
375
405
</ Box >
376
406
</ Box >
377
- { ( submitStatus && submitMessage ) || updateConfigError ? (
407
+ { ( submitStatus && submitMessage ) || configError ? (
378
408
< ResponseMessage
379
- type = { updateConfigError ? 'error' : submitStatus }
380
- message = { updateConfigError || submitMessage }
409
+ type = { configError ? 'error' : submitStatus }
410
+ message = { configError || submitMessage }
381
411
/>
382
412
) : null }
383
413
</ Box >
0 commit comments