Skip to content

Commit f0edc20

Browse files
committed
untrash and context binding
1 parent 8191c76 commit f0edc20

File tree

5 files changed

+68
-14
lines changed

5 files changed

+68
-14
lines changed

services/static-webserver/client/source/class/osparc/dashboard/FolderButtonItem.js

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
4747
"folderUpdated": "qx.event.type.Data",
4848
"moveFolderToRequested": "qx.event.type.Data",
4949
"trashFolderRequested": "qx.event.type.Data",
50+
"untrashFolderRequested": "qx.event.type.Data",
5051
"deleteFolderRequested": "qx.event.type.Data",
5152
},
5253

@@ -85,7 +86,14 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
8586
check: "Date",
8687
nullable: true,
8788
apply: "__applyLastModified"
88-
}
89+
},
90+
91+
currentContext: {
92+
check: ["studiesAndFolders", "workspaces", "search", "trash"],
93+
nullable: false,
94+
init: "studiesAndFolders",
95+
event: "changeCurrentContext"
96+
},
8997
},
9098

9199
members: {
@@ -187,23 +195,30 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
187195
position: "bottom-right"
188196
});
189197

190-
const editButton = new qx.ui.menu.Button(this.tr("Rename..."), "@FontAwesome5Solid/pencil-alt/12");
191-
editButton.addListener("execute", () => this.__editFolder(), this);
192-
menu.add(editButton);
198+
if (this.getCurrentContext() === "trash") {
199+
const trashButton = new qx.ui.menu.Button(this.tr("Restore"), "@MaterialIcons/restore_from_trash/16");
200+
trashButton.addListener("execute", () => this.fireDataEvent("untrashFolderRequested", this.getFolderId()), this);
201+
202+
menu.addSeparator();
193203

194-
const moveToButton = new qx.ui.menu.Button(this.tr("Move to..."), "@FontAwesome5Solid/folder/12");
195-
moveToButton.addListener("execute", () => this.fireDataEvent("moveFolderToRequested", this.getFolderId()), this);
196-
menu.add(moveToButton);
204+
const deleteButton = new qx.ui.menu.Button(this.tr("Delete"), "@FontAwesome5Solid/trash/12");
205+
deleteButton.addListener("execute", () => this.__deleteFolderRequested(), this);
206+
menu.add(deleteButton);
207+
} else {
208+
const editButton = new qx.ui.menu.Button(this.tr("Rename..."), "@FontAwesome5Solid/pencil-alt/12");
209+
editButton.addListener("execute", () => this.__editFolder(), this);
210+
menu.add(editButton);
197211

198-
menu.addSeparator();
212+
const moveToButton = new qx.ui.menu.Button(this.tr("Move to..."), "@FontAwesome5Solid/folder/12");
213+
moveToButton.addListener("execute", () => this.fireDataEvent("moveFolderToRequested", this.getFolderId()), this);
214+
menu.add(moveToButton);
199215

200-
const trashButton = new qx.ui.menu.Button(this.tr("Trash"), "@FontAwesome5Solid/trash/12");
201-
trashButton.addListener("execute", () => this.__trashFolderRequested(), this);
202-
menu.add(trashButton);
216+
menu.addSeparator();
203217

204-
const deleteButton = new qx.ui.menu.Button(this.tr("Delete"), "@FontAwesome5Solid/trash/12");
205-
deleteButton.addListener("execute", () => this.__deleteFolderRequested(), this);
206-
menu.add(deleteButton);
218+
const trashButton = new qx.ui.menu.Button(this.tr("Trash"), "@FontAwesome5Solid/trash/12");
219+
trashButton.addListener("execute", () => this.__trashFolderRequested(), this);
220+
menu.add(trashButton);
221+
}
207222

208223
menuButton.setMenu(menu);
209224
},

services/static-webserver/client/source/class/osparc/dashboard/ResourceBrowserBase.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ qx.Class.define("osparc.dashboard.ResourceBrowserBase", {
268268
resourcesContainer.addListener("folderUpdated", e => this._folderUpdated(e.getData()));
269269
resourcesContainer.addListener("moveFolderToRequested", e => this._moveFolderToRequested(e.getData()));
270270
resourcesContainer.addListener("trashFolderRequested", e => this._trashFolderRequested(e.getData()));
271+
resourcesContainer.addListener("untrashFolderRequested", e => this._untrashFolderRequested(e.getData()));
271272
resourcesContainer.addListener("deleteFolderRequested", e => this._deleteFolderRequested(e.getData()));
272273
resourcesContainer.addListener("folderSelected", e => {
273274
const folderId = e.getData();
@@ -492,6 +493,10 @@ qx.Class.define("osparc.dashboard.ResourceBrowserBase", {
492493
throw new Error("Abstract method called!");
493494
},
494495

496+
_untrashFolderRequested: function(folderId) {
497+
throw new Error("Abstract method called!");
498+
},
499+
495500
_deleteFolderRequested: function(folderId) {
496501
throw new Error("Abstract method called!");
497502
},

services/static-webserver/client/source/class/osparc/dashboard/ResourceContainerManager.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ qx.Class.define("osparc.dashboard.ResourceContainerManager", {
4949
},
5050

5151
properties: {
52+
currentContext: {
53+
check: ["studiesAndFolders", "workspaces", "search", "trash"],
54+
nullable: false,
55+
init: "studiesAndFolders",
56+
event: "changeCurrentContext"
57+
},
58+
5259
mode: {
5360
check: ["grid", "list"],
5461
init: "grid",
@@ -76,6 +83,7 @@ qx.Class.define("osparc.dashboard.ResourceContainerManager", {
7683
"folderUpdated": "qx.event.type.Data",
7784
"moveFolderToRequested": "qx.event.type.Data",
7885
"trashFolderRequested": "qx.event.type.Data",
86+
"untrashFolderRequested": "qx.event.type.Data",
7987
"deleteFolderRequested": "qx.event.type.Data",
8088
"workspaceSelected": "qx.event.type.Data",
8189
"workspaceUpdated": "qx.event.type.Data",
@@ -415,11 +423,13 @@ qx.Class.define("osparc.dashboard.ResourceContainerManager", {
415423

416424
__createFolderCard: function(folder) {
417425
const card = new osparc.dashboard.FolderButtonItem(folder);
426+
this.bind("currentContext", card, "currentContext");
418427
[
419428
"folderSelected",
420429
"folderUpdated",
421430
"moveFolderToRequested",
422431
"trashFolderRequested",
432+
"untrashFolderRequested",
423433
"deleteFolderRequested",
424434
].forEach(eName => card.addListener(eName, e => this.fireDataEvent(eName, e.getData())));
425435
return card;

services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,12 @@ qx.Class.define("osparc.dashboard.StudyBrowser", {
548548
.catch(err => console.error(err));
549549
},
550550

551+
_untrashFolderRequested: function(folderId) {
552+
osparc.store.Folders.getInstance().untrashFolder(folderId)
553+
.then(() => this.__reloadFolders())
554+
.catch(err => console.error(err));
555+
},
556+
551557
_deleteFolderRequested: function(folderId) {
552558
osparc.store.Folders.getInstance().deleteFolder(folderId, this.getCurrentWorkspaceId())
553559
.then(() => this.__reloadFolders())
@@ -871,6 +877,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", {
871877
}
872878

873879
this._createResourcesLayout();
880+
this.bind("currentContext", this._resourcesContainer, "currentContext");
874881

875882
const list = this._resourcesContainer.getFlatList();
876883
if (list) {

services/static-webserver/client/source/class/osparc/store/Folders.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,23 @@ qx.Class.define("osparc.store.Folders", {
139139
.catch(console.error);
140140
},
141141

142+
untrashFolder: function(folderId, workspaceId) {
143+
const params = {
144+
"url": {
145+
folderId
146+
}
147+
};
148+
return osparc.data.Resources.getInstance().fetch("folders", "trash", params)
149+
.then(() => {
150+
console.log("untrashed");
151+
/*
152+
const folder = this.__addToCache(folderData);
153+
this.fireDataEvent("folderAdded", folder);
154+
*/
155+
})
156+
.catch(console.error);
157+
},
158+
142159
deleteFolder: function(folderId, workspaceId) {
143160
const params = {
144161
"url": {

0 commit comments

Comments
 (0)