@@ -10,10 +10,11 @@ import { IConnectionModelType } from '@/models/connection';
1010import { IWorkspaceModelType } from '@/models/workspace' ;
1111import Tree from '../Tree' ;
1212import { treeConfig } from '../Tree/treeConfig' ;
13- import { TreeNodeType } from '@/constants' ;
13+ import { TreeNodeType , ConsoleStatus } from '@/constants' ;
1414import { ITreeNode } from '@/typings' ;
1515import { IConsole } from '@/typings' ;
1616import styles from './index.less' ;
17+ import { State } from '@/components/StateIndicator' ;
1718
1819interface IProps {
1920 className ?: string ;
@@ -52,8 +53,8 @@ interface IProps {
5253
5354function handleDatabaseAndSchema ( databaseAndSchema : IWorkspaceModelType [ 'state' ] [ 'databaseAndSchema' ] ) {
5455 let newCascaderOptions : Option [ ] = [ ] ;
55- if ( databaseAndSchema . databases ) {
56- newCascaderOptions = databaseAndSchema . databases . map ( t => {
56+ if ( databaseAndSchema ? .databases ) {
57+ newCascaderOptions = databaseAndSchema ? .databases . map ( t => {
5758 let schemasList : Option [ ] = [ ]
5859 if ( t . schemas ) {
5960 schemasList = t . schemas . map ( t => {
@@ -84,11 +85,12 @@ const RenderSelectDatabase = dvaModel(function (props: IProps) {
8485 const { connectionModel, workspaceModel, dispatch } = props ;
8586 const { databaseAndSchema, curWorkspaceParams } = workspaceModel ;
8687 const { curConnection } = connectionModel ;
88+ const [ currentSelectedName , setCurrentSelectedName ] = useState ( '' ) ;
8789
8890 const cascaderOptions = useMemo ( ( ) => {
8991 const res = handleDatabaseAndSchema ( databaseAndSchema ) ;
90- // 如果databaseAndSchema 发生切变 并且没选中确切的database时,需要默认选中第一个
91- if ( ! curWorkspaceParams . dataSourceId ) {
92+ if ( ! curWorkspaceParams ?. dataSourceId || curWorkspaceParams ?. dataSourceId !== curConnection ?. id ) {
93+ // 如果databaseAndSchema 发生切变 并且没选中确切的database时,需要默认选中第一个
9294 const curWorkspaceParams = {
9395 dataSourceId : curConnection ?. id ,
9496 databaseSourceName : curConnection ?. alias ,
@@ -104,6 +106,14 @@ const RenderSelectDatabase = dvaModel(function (props: IProps) {
104106 return res
105107 } , [ databaseAndSchema ] )
106108
109+ useEffect ( ( ) => {
110+ if ( curWorkspaceParams ) {
111+ const { databaseName, schemaName, databaseSourceName } = curWorkspaceParams ;
112+ const currentSelectedArr = [ databaseSourceName , databaseName , schemaName ] . filter ( ( t ) => t ) ;
113+ setCurrentSelectedName ( currentSelectedArr . join ( '/' ) ) ;
114+ }
115+ } , [ curWorkspaceParams ] )
116+
107117 const onChange : any = ( valueArr : any , selectedOptions : any ) => {
108118 let labelArr : string [ ] = [ ] ;
109119 labelArr = selectedOptions . map ( ( t : any ) => {
@@ -130,12 +140,6 @@ const RenderSelectDatabase = dvaModel(function (props: IProps) {
130140 </ div >
131141 ) ;
132142
133- function renderCurrentSelected ( ) {
134- const { databaseName, schemaName, databaseSourceName } = curWorkspaceParams ;
135- const currentSelectedArr = [ databaseSourceName , databaseName , schemaName ] . filter ( ( t ) => t ) ;
136- return currentSelectedArr . join ( '/' ) ;
137- }
138-
139143 return (
140144 < div className = { styles . selectDatabaseBox } >
141145 < Cascader
@@ -146,7 +150,7 @@ const RenderSelectDatabase = dvaModel(function (props: IProps) {
146150 dropdownRender = { dropdownRender }
147151 >
148152 < div className = { styles . currentDatabase } >
149- < div className = { styles . name } > { renderCurrentSelected ( ) || < span style = { { 'opacity' : 0.8 } } > { i18n ( 'workspace.cascader.placeholder' ) } </ span > } </ div >
153+ < div className = { styles . name } > { currentSelectedName || < span style = { { 'opacity' : 0.8 } } > { i18n ( 'workspace.cascader.placeholder' ) } </ span > } </ div >
150154 < Iconfont code = "" />
151155 </ div >
152156 </ Cascader >
@@ -165,7 +169,7 @@ const RenderTableBox = dvaModel(function (props: any) {
165169 const [ initialData , setInitialData ] = useState < ITreeNode [ ] > ( [ ] ) ;
166170
167171 useEffect ( ( ) => {
168- if ( curWorkspaceParams . dataSourceId ) {
172+ if ( curWorkspaceParams ? .dataSourceId ) {
169173 getInitialData ( ) ;
170174 }
171175 } , [ curWorkspaceParams ] ) ;
@@ -177,8 +181,6 @@ const RenderTableBox = dvaModel(function (props: any) {
177181 ...curWorkspaceParams ,
178182 extraParams : curWorkspaceParams ,
179183 } ) . then ( ( res ) => {
180- console . log ( res )
181-
182184 setInitialData ( res ) ;
183185 } ) ;
184186 }
@@ -194,32 +196,27 @@ const RenderTableBox = dvaModel(function (props: any) {
194196} )
195197
196198const RenderSaveBox = dvaModel ( function ( props : any ) {
197- const [ savedList , setSaveList ] = useState < IConsole [ ] > ( [ ] ) ;
198- const { workspaceModel } = props ;
199- const { curWorkspaceParams } = workspaceModel ;
199+ const { workspaceModel, dispatch } = props ;
200+ const { curWorkspaceParams, consoleList } = workspaceModel ;
200201
201202 useEffect ( ( ) => {
202- getSaveList ( ) ;
203- } , [ curWorkspaceParams ] )
204-
205- function getSaveList ( ) {
206- let p : any = {
207- pageNo : 1 ,
208- pageSize : 999 ,
209- ...curWorkspaceParams
210- }
211-
212- historyService . getSaveList ( p ) . then ( res => {
213- setSaveList ( res . data )
203+ dispatch ( {
204+ type : 'workspace/fetchGetSavedConsole' ,
205+ payload : {
206+ pageNo : 1 ,
207+ pageSize : 999 ,
208+ status : ConsoleStatus . RELEASE ,
209+ ...curWorkspaceParams
210+ }
214211 } )
215- }
212+ } , [ curWorkspaceParams ] )
216213
217214 return < div className = { styles . save_box } >
218215 < div className = { styles . left_box_title } > Saved</ div >
219216 < div className = { styles . saveBoxList } >
220- < LoadingContent data = { savedList } handleEmpty >
217+ < LoadingContent data = { consoleList } handleEmpty >
221218 {
222- savedList ?. map ( t => {
219+ consoleList ?. map ( ( t : IConsole ) => {
223220 return < div key = { t . id } className = { styles . saveItem } >
224221 { t . name }
225222 </ div >
0 commit comments