1- import React , { memo , useEffect , useRef , useState } from 'react' ;
1+ import React , { memo , useEffect , useState } from 'react' ;
22import styles from './index.less' ;
33import classnames from 'classnames' ;
44import { IConnectionDetails , IDatabase } from '@/typings' ;
5- import ConnectionEdit , { ICreateConnectionFunction } from '@/components/ConnectionEdit' ;
5+ import ConnectionEdit from '@/components/ConnectionEdit' ;
66import { databaseTypeList } from '@/constants' ;
77import Iconfont from '@/components/Iconfont' ;
88
9+ // IConnectionDetails 全部信息代表修改
10+ // null 展示因增列表
11+ // { type: string } 只有数据库类型代表新增
12+ type IEditConnectionDetail = IConnectionDetails | null | Pick < IConnectionDetails , 'type' > ;
13+
914interface IProps {
1015 className ?: string ;
1116 onSubmit ?: ( data : IConnectionDetails ) => void ; // 点击保存或修改的回调,我会把数据给你
12- connectionDetail ?: IConnectionDetails ; // 如果你想编辑,就直接传入完成的数据就好
17+ connectionDetail : IEditConnectionDetail ;
18+ noPermission ?: boolean ;
1319}
1420
1521export default memo < IProps > ( ( props ) => {
16- const { className, onSubmit, connectionDetail } = props ;
17- const [ curConnection , setCurConnection ] = useState < Partial < IConnectionDetails > > ( { } ) ;
18- const createConnectionRef = useRef < ICreateConnectionFunction > ( ) ;
22+ const { className, onSubmit, connectionDetail : externalConnectionDetail } = props ;
23+ const [ connectionDetail , setConnectionDetail ] = useState < IEditConnectionDetail > ( externalConnectionDetail ) ;
1924
2025 useEffect ( ( ) => {
21- if ( connectionDetail ) {
22- setCurConnection ( connectionDetail ) ;
23- } else {
24- setCurConnection ( { } ) ;
25- }
26- } , [ connectionDetail ] ) ;
26+ setConnectionDetail ( externalConnectionDetail ) ;
27+ } , [ externalConnectionDetail ] ) ;
2728
2829 function handleCreateConnections ( database : IDatabase ) {
29- setCurConnection ( {
30+ setConnectionDetail ( {
3031 type : database . code ,
3132 } ) ;
3233 }
@@ -37,47 +38,61 @@ export default memo<IProps>((props) => {
3738
3839 return (
3940 < div className = { classnames ( styles . box , className ) } >
40- { curConnection && Object . keys ( curConnection ) . length ? (
41+ { connectionDetail && (
4142 < div
4243 className = { classnames ( styles . createConnections , {
43- [ styles . showCreateConnections ] : Object . keys ( curConnection ) . length ,
44+ [ styles . showCreateConnections ] : connectionDetail ,
4445 } ) }
4546 >
46- {
47- < ConnectionEdit
48- ref = { createConnectionRef as any }
49- closeCreateConnection = { ( ) => {
50- setCurConnection ( { } ) ;
51- } }
52- connectionData = { curConnection as any }
53- submit = { handleSubmit }
54- />
55- }
47+ < ConnectionEdit connectionData = { connectionDetail as any } submit = { handleSubmit } />
5648 </ div >
57- ) : (
58- < div className = { styles . dataBaseList } >
59- { databaseTypeList . map ( ( t ) => {
60- return (
61- < div key = { t . code } className = { styles . databaseItem } onClick = { handleCreateConnections . bind ( null , t ) } >
62- < div className = { styles . databaseItemMain } >
63- < div className = { styles . databaseItemLeft } >
64- < div className = { styles . logoBox } >
65- < Iconfont code = { t . icon } />
49+ ) }
50+ { ! connectionDetail && (
51+ < div className = { styles . dataBaseListBox } >
52+ < div className = { styles . dataBaseList } >
53+ { databaseTypeList . map ( ( t ) => {
54+ return (
55+ < div key = { t . code } className = { styles . databaseItem } onClick = { handleCreateConnections . bind ( null , t ) } >
56+ < div className = { styles . databaseItemMain } >
57+ < div className = { styles . databaseItemLeft } >
58+ < div className = { styles . logoBox } >
59+ < Iconfont code = { t . icon } />
60+ </ div >
61+ { t . name }
62+ </ div >
63+ < div className = { styles . databaseItemRight } >
64+ < Iconfont code = "" />
6665 </ div >
67- { t . name }
68- </ div >
69- < div className = { styles . databaseItemRight } >
70- < Iconfont code = "" />
7166 </ div >
7267 </ div >
73- </ div >
74- ) ;
75- } ) }
76- { Array . from ( { length : 20 } ) . map ( ( t , index ) => {
77- return < div key = { index } className = { styles . databaseItemSpacer } /> ;
78- } ) }
68+ ) ;
69+ } ) }
70+ { Array . from ( { length : 20 } ) . map ( ( t , index ) => {
71+ return < div key = { index } className = { styles . databaseItemSpacer } /> ;
72+ } ) }
73+ </ div >
7974 </ div >
8075 ) }
8176 </ div >
8277 ) ;
8378} ) ;
79+
80+
81+ { /* <div className={styles.notPermission}>
82+ <div className={styles.notPermissionIconBox}>
83+ <Iconfont className={styles.notPermissionIcon} code="" />
84+ </div>
85+ <div className={styles.notPermissionIconTips}>{i18n('connection.tips.noConnectionTips')}</div>
86+ <div className={styles.connectButtonBox}>
87+ <Button
88+ type="primary"
89+ className={styles.connectButton}
90+ icon={<Iconfont code="" />}
91+ onClick={() => {
92+ handleMenuItemDoubleClick(curConnection);
93+ }}
94+ >
95+ {i18n('connection.button.connect')}
96+ </Button>
97+ </div>
98+ </div> */ }
0 commit comments