@@ -1340,9 +1340,25 @@ qx.Class.define("osparc.dashboard.StudyBrowser", {
13401340 const menu = card . getMenu ( ) ;
13411341 const studyData = card . getResourceData ( ) ;
13421342
1343+ const trashed = Boolean ( studyData [ "trashedAt" ] ) ;
13431344 const writeAccess = osparc . data . model . Study . canIWrite ( studyData [ "accessRights" ] ) ;
13441345 const deleteAccess = osparc . data . model . Study . canIDelete ( studyData [ "accessRights" ] ) ;
13451346
1347+ if ( this . getCurrentContext ( ) === "trash" ) {
1348+ if ( trashed ) {
1349+ if ( writeAccess ) {
1350+ const untrashButton = this . __getUntrashStudyMenuButton ( studyData ) ;
1351+ menu . add ( untrashButton ) ;
1352+ }
1353+ if ( deleteAccess ) {
1354+ const deleteButton = this . __getDeleteStudyMenuButton ( studyData , false ) ;
1355+ menu . addSeparator ( ) ;
1356+ menu . add ( deleteButton ) ;
1357+ }
1358+ }
1359+ return ;
1360+ }
1361+
13461362 const openButton = this . _getOpenMenuButton ( studyData ) ;
13471363 if ( openButton ) {
13481364 menu . add ( openButton ) ;
@@ -1401,9 +1417,9 @@ qx.Class.define("osparc.dashboard.StudyBrowser", {
14011417 }
14021418
14031419 if ( deleteAccess ) {
1404- const deleteButton = this . getCurrentContext ( ) === "trash" ? this . __getDeleteStudyMenuButton ( studyData , false ) : this . __getTrashStudyMenuButton ( studyData , false ) ;
1420+ const trashButton = this . __getTrashStudyMenuButton ( studyData , false ) ;
14051421 menu . addSeparator ( ) ;
1406- menu . add ( deleteButton ) ;
1422+ menu . add ( trashButton ) ;
14071423 }
14081424
14091425 card . evaluateMenuButtons ( ) ;
@@ -1618,7 +1634,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", {
16181634
16191635 __getTrashStudyMenuButton : function ( studyData ) {
16201636 const trashButton = new qx . ui . menu . Button ( this . tr ( "Trash" ) , "@FontAwesome5Solid/trash/12" ) ;
1621- trashButton [ "deleteButton " ] = true ;
1637+ trashButton [ "trashButton " ] = true ;
16221638 trashButton . set ( {
16231639 appearance : "menu-button"
16241640 } ) ;
@@ -1627,6 +1643,16 @@ qx.Class.define("osparc.dashboard.StudyBrowser", {
16271643 return trashButton ;
16281644 } ,
16291645
1646+ __getUntrashStudyMenuButton : function ( studyData ) {
1647+ const trashButton = new qx . ui . menu . Button ( this . tr ( "Restore" ) , "@FontAwesome5Solid/trash/12" ) ;
1648+ trashButton [ "untrashButton" ] = true ;
1649+ trashButton . set ( {
1650+ appearance : "menu-button"
1651+ } ) ;
1652+ trashButton . addListener ( "execute" , ( ) => this . __untrashStudy ( studyData ) , this ) ;
1653+ return trashButton ;
1654+ } ,
1655+
16301656 __getDeleteStudyMenuButton : function ( studyData ) {
16311657 const deleteButton = new qx . ui . menu . Button ( this . tr ( "Delete" ) , "@FontAwesome5Solid/trash/12" ) ;
16321658 deleteButton [ "deleteButton" ] = true ;
@@ -1789,6 +1815,16 @@ qx.Class.define("osparc.dashboard.StudyBrowser", {
17891815 req . send ( body ) ;
17901816 } ,
17911817
1818+ __untrashStudy : function ( studyData ) {
1819+ osparc . store . Store . getInstance ( ) . untrashStudy ( studyData . uuid )
1820+ . then ( ( ) => this . __removeFromStudyList ( studyData . uuid ) )
1821+ . catch ( err => {
1822+ console . error ( err ) ;
1823+ osparc . FlashMessenger . getInstance ( ) . logAs ( err , "ERROR" ) ;
1824+ } )
1825+ . finally ( ( ) => this . resetSelection ( ) ) ;
1826+ } ,
1827+
17921828 __trashStudy : function ( studyData ) {
17931829 const myGid = osparc . auth . Data . getInstance ( ) . getGroupId ( ) ;
17941830 const collabGids = Object . keys ( studyData [ "accessRights" ] ) ;
0 commit comments