1
+ import type { DefinitionListItem } from '@gravity-ui/components' ;
1
2
import { Flex , Text } from '@gravity-ui/uikit' ;
2
3
3
4
import { AsyncReplicationState } from '../../../../../components/AsyncReplicationState' ;
4
- import { InfoViewer } from '../../../../../components/InfoViewer ' ;
5
+ import { YDBDefinitionList } from '../../../../../components/YDBDefinitionList/YDBDefinitionList ' ;
5
6
import type { TEvDescribeSchemeResult } from '../../../../../types/api/schema' ;
6
7
import { getEntityName } from '../../../utils' ;
7
8
import { AsyncReplicationPaths } from '../AsyncReplicationPaths' ;
@@ -25,55 +26,53 @@ export function AsyncReplicationInfo({data}: AsyncReplicationProps) {
25
26
) ;
26
27
}
27
28
29
+ const replicationItems = prepareReplicationItems ( data ) ;
30
+
28
31
return (
29
32
< Flex direction = "column" gap = "4" >
30
- < InfoViewer
31
- title = { entityName }
32
- info = { [
33
- {
34
- label : i18n ( 'state.label' ) ,
35
- value : (
36
- < AsyncReplicationState
37
- state = { data . PathDescription ?. ReplicationDescription ?. State }
38
- />
39
- ) ,
40
- } ,
41
- {
42
- label : i18n ( 'srcConnection.endpoint.label' ) ,
43
- value : (
44
- < Text variant = "code-inline-2" >
45
- {
46
- data . PathDescription ?. ReplicationDescription ?. Config
47
- ?. SrcConnectionParams ?. Endpoint
48
- }
49
- </ Text >
50
- ) ,
51
- } ,
52
- {
53
- label : i18n ( 'srcConnection.database.label' ) ,
54
- value : (
55
- < Text variant = "code-inline-2" >
56
- {
57
- data . PathDescription ?. ReplicationDescription ?. Config
58
- ?. SrcConnectionParams ?. Database
59
- }
60
- </ Text >
61
- ) ,
62
- } ,
63
- {
64
- label : i18n ( 'credentials.label' ) ,
65
- value : (
66
- < Credentials
67
- connection = {
68
- data . PathDescription ?. ReplicationDescription ?. Config
69
- ?. SrcConnectionParams
70
- }
71
- />
72
- ) ,
73
- } ,
74
- ] }
75
- />
33
+ < YDBDefinitionList title = { entityName } items = { replicationItems } />
76
34
< AsyncReplicationPaths config = { data . PathDescription ?. ReplicationDescription ?. Config } />
77
35
</ Flex >
78
36
) ;
79
37
}
38
+
39
+ function prepareReplicationItems ( data : TEvDescribeSchemeResult ) {
40
+ const replicationDescription = data . PathDescription ?. ReplicationDescription || { } ;
41
+ const state = replicationDescription . State ;
42
+ const srcConnectionParams = replicationDescription . Config ?. SrcConnectionParams || { } ;
43
+ const { Endpoint, Database} = srcConnectionParams ;
44
+
45
+ const info : DefinitionListItem [ ] = [ ] ;
46
+
47
+ if ( state ) {
48
+ info . push ( {
49
+ name : i18n ( 'state.label' ) ,
50
+ content : < AsyncReplicationState state = { state } /> ,
51
+ } ) ;
52
+ }
53
+
54
+ if ( Endpoint ) {
55
+ info . push ( {
56
+ name : i18n ( 'srcConnection.endpoint.label' ) ,
57
+ copyText : Endpoint ,
58
+ content : < Text variant = "code-inline-2" > { Endpoint } </ Text > ,
59
+ } ) ;
60
+ }
61
+
62
+ if ( Database ) {
63
+ info . push ( {
64
+ name : i18n ( 'srcConnection.database.label' ) ,
65
+ copyText : Database ,
66
+ content : < Text variant = "code-inline-2" > { Database } </ Text > ,
67
+ } ) ;
68
+ }
69
+
70
+ if ( srcConnectionParams ) {
71
+ info . push ( {
72
+ name : i18n ( 'credentials.label' ) ,
73
+ content : < Credentials connection = { srcConnectionParams } /> ,
74
+ } ) ;
75
+ }
76
+
77
+ return info ;
78
+ }
0 commit comments