@@ -108,11 +108,18 @@ qx.Class.define("osparc.dashboard.WorkspacesAndFoldersTree", {
108108 bindItem : ( c , item , id ) => {
109109 c . bindDefaultProperties ( item , id ) ;
110110 c . bindProperty ( "" , "open" , {
111- converter ( value , model , source , target ) {
111+ converter ( value , _model , _source , target ) {
112112 const isOpen = target . isOpen ( ) ;
113- if ( isOpen && ! value . getLoaded ( ) ) {
113+ if ( isOpen ) {
114114 // eslint-disable-next-line no-underscore-dangle
115- that . __populateFolder ( value , value . getWorkspaceId ( ) , value . getFolderId ( ) ) ;
115+ that . __populateFolder ( value , value . getWorkspaceId ( ) , value . getFolderId ( ) )
116+ . then ( folderModels => {
117+ // load next level too
118+ folderModels . forEach ( folderModel => {
119+ // eslint-disable-next-line no-underscore-dangle
120+ that . __populateFolder ( folderModel , folderModel . getWorkspaceId ( ) , folderModel . getFolderId ( ) ) ;
121+ } )
122+ } ) ;
116123 }
117124 that . fireEvent ( "openChanged" ) ;
118125 return isOpen ;
@@ -159,6 +166,9 @@ qx.Class.define("osparc.dashboard.WorkspacesAndFoldersTree", {
159166 const myWorkspaceModel = qx . data . marshal . Json . createModel ( myWorkspaceData , true ) ;
160167 this . __models . push ( myWorkspaceModel ) ;
161168 rootModel . getChildren ( ) . append ( myWorkspaceModel ) ;
169+
170+ // load next level too
171+ this . __populateFolder ( myWorkspaceModel , workspaceId , folderId ) ;
162172 } ,
163173
164174 __addSharedWorkspaces : function ( rootModel ) {
@@ -200,6 +210,9 @@ qx.Class.define("osparc.dashboard.WorkspacesAndFoldersTree", {
200210
201211 const sharedWorkspaceModel = this . __getModel ( - 1 , null ) ;
202212 sharedWorkspaceModel . getChildren ( ) . append ( workspaceModel ) ;
213+
214+ // load next level too
215+ this . __populateFolder ( workspaceModel , workspace . getWorkspaceId ( ) , null ) ;
203216 } ,
204217
205218 __removeWorkspace : function ( workspace ) {
@@ -222,16 +235,22 @@ qx.Class.define("osparc.dashboard.WorkspacesAndFoldersTree", {
222235 this . __models . push ( folderModel ) ;
223236 folder . bind ( "name" , folderModel , "label" ) ;
224237 parentModel . getChildren ( ) . push ( folderModel ) ;
238+ return folderModel ;
225239 } ,
226240
227241 __populateFolder : function ( model , workspaceId , folderId ) {
228- osparc . store . Folders . getInstance ( ) . fetchFolders ( folderId , workspaceId )
242+ if ( model . getLoaded ( ) ) {
243+ return new Promise ( resolve => resolve ( model . getChildren ( ) ) ) ;
244+ }
245+ return osparc . store . Folders . getInstance ( ) . fetchFolders ( folderId , workspaceId )
229246 . then ( folders => {
230247 model . setLoaded ( true ) ;
231248 model . getChildren ( ) . removeAll ( ) ;
249+ const newFolderModels = [ ] ;
232250 folders . forEach ( folder => {
233- this . __addFolder ( folder , model ) ;
251+ newFolderModels . push ( this . __addFolder ( folder , model ) ) ;
234252 } ) ;
253+ return newFolderModels ;
235254 } ) ;
236255 } ,
237256
0 commit comments