Skip to content

Commit 5183da7

Browse files
committed
trash folder workflow
1 parent a957b58 commit 5183da7

File tree

5 files changed

+54
-1
lines changed

5 files changed

+54
-1
lines changed

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

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
4646
"folderSelected": "qx.event.type.Data",
4747
"folderUpdated": "qx.event.type.Data",
4848
"moveFolderToRequested": "qx.event.type.Data",
49-
"deleteFolderRequested": "qx.event.type.Data"
49+
"trashFolderRequested": "qx.event.type.Data",
50+
"deleteFolderRequested": "qx.event.type.Data",
5051
},
5152

5253
properties: {
@@ -196,6 +197,10 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
196197

197198
menu.addSeparator();
198199

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);
203+
199204
const deleteButton = new qx.ui.menu.Button(this.tr("Delete"), "@FontAwesome5Solid/trash/12");
200205
deleteButton.addListener("execute", () => this.__deleteFolderRequested(), this);
201206
menu.add(deleteButton);
@@ -237,6 +242,24 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
237242
folderEditor.addListener("cancel", () => win.close());
238243
},
239244

245+
__trashFolderRequested: function() {
246+
const trashDays = osparc.store.StaticInfo.getInstance().getTrashRetentionDays();
247+
let msg = this.tr("Are you sure you want to move the Folder and all its content to the trash?");
248+
msg += "<br><br>" + this.tr("It will be permanently deleted after ") + trashDays + " days.";
249+
const confirmationWin = new osparc.ui.window.Confirmation(msg).set({
250+
caption: this.tr("Move to Trash"),
251+
confirmText: this.tr("Move to Trash"),
252+
confirmAction: "delete"
253+
});
254+
confirmationWin.center();
255+
confirmationWin.open();
256+
confirmationWin.addListener("close", () => {
257+
if (confirmationWin.getConfirmed()) {
258+
this.fireDataEvent("trashFolderRequested", this.getFolderId());
259+
}
260+
}, this);
261+
},
262+
240263
__deleteFolderRequested: function() {
241264
const msg = this.tr("Are you sure you want to delete") + " <b>" + this.getTitle() + "</b>?";
242265
const confirmationWin = new osparc.ui.window.Confirmation(msg).set({

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ qx.Class.define("osparc.dashboard.ResourceBrowserBase", {
267267
resourcesContainer.addListener("emptyStudyClicked", e => this._deleteResourceRequested(e.getData()));
268268
resourcesContainer.addListener("folderUpdated", e => this._folderUpdated(e.getData()));
269269
resourcesContainer.addListener("moveFolderToRequested", e => this._moveFolderToRequested(e.getData()));
270+
resourcesContainer.addListener("trashFolderRequested", e => this._trashFolderRequested(e.getData()));
270271
resourcesContainer.addListener("deleteFolderRequested", e => this._deleteFolderRequested(e.getData()));
271272
resourcesContainer.addListener("folderSelected", e => {
272273
const folderId = e.getData();
@@ -487,6 +488,10 @@ qx.Class.define("osparc.dashboard.ResourceBrowserBase", {
487488
throw new Error("Abstract method called!");
488489
},
489490

491+
_trashFolderRequested: function(folderId) {
492+
throw new Error("Abstract method called!");
493+
},
494+
490495
_deleteFolderRequested: function(folderId) {
491496
throw new Error("Abstract method called!");
492497
},

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ qx.Class.define("osparc.dashboard.ResourceContainerManager", {
7575
"folderSelected": "qx.event.type.Data",
7676
"folderUpdated": "qx.event.type.Data",
7777
"moveFolderToRequested": "qx.event.type.Data",
78+
"trashFolderRequested": "qx.event.type.Data",
7879
"deleteFolderRequested": "qx.event.type.Data",
7980
"workspaceSelected": "qx.event.type.Data",
8081
"workspaceUpdated": "qx.event.type.Data",
@@ -418,6 +419,7 @@ qx.Class.define("osparc.dashboard.ResourceContainerManager", {
418419
"folderSelected",
419420
"folderUpdated",
420421
"moveFolderToRequested",
422+
"trashFolderRequested",
421423
"deleteFolderRequested",
422424
].forEach(eName => card.addListener(eName, e => this.fireDataEvent(eName, e.getData())));
423425
return card;

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

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

545+
_trashFolderRequested: function(folderId) {
546+
osparc.store.Folders.getInstance().trashFolder(folderId, this.getCurrentWorkspaceId())
547+
.then(() => this.__reloadFolders())
548+
.catch(err => console.error(err));
549+
},
550+
545551
_deleteFolderRequested: function(folderId) {
546552
osparc.store.Folders.getInstance().deleteFolder(folderId, this.getCurrentWorkspaceId())
547553
.then(() => this.__reloadFolders())

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,23 @@ qx.Class.define("osparc.store.Folders", {
122122
});
123123
},
124124

125+
trashFolder: function(folderId, workspaceId) {
126+
const params = {
127+
"url": {
128+
folderId
129+
}
130+
};
131+
return osparc.data.Resources.getInstance().fetch("folders", "trash", params)
132+
.then(() => {
133+
const folder = this.getFolder(folderId);
134+
if (folder) {
135+
this.__deleteFromCache(folderId, workspaceId);
136+
this.fireDataEvent("folderRemoved", folder);
137+
}
138+
})
139+
.catch(console.error);
140+
},
141+
125142
deleteFolder: function(folderId, workspaceId) {
126143
const params = {
127144
"url": {

0 commit comments

Comments
 (0)