Skip to content

Commit 9e299cb

Browse files
committed
[skip ci] dragover trashStudy
1 parent d83ad37 commit 9e299cb

File tree

2 files changed

+62
-1
lines changed

2 files changed

+62
-1
lines changed

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

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,55 @@ qx.Class.define("osparc.dashboard.DragDropHelpers", {
169169
},
170170
},
171171

172+
trashStudy: {
173+
dragOver: function(event) {
174+
let compatible = false;
175+
const studyDataOrigin = event.getData("osparc-moveStudy")["studyDataOrigin"];
176+
const workspaceIdOrigin = studyDataOrigin["workspaceId"];
177+
const workspaceOrigin = osparc.store.Workspaces.getInstance().getWorkspace(workspaceIdOrigin);
178+
// Compatibility checks:
179+
// - My Workspace -> Trash (1)
180+
// - Delete on Study
181+
// - Shared Workspace -> Trash (2)
182+
// - Delete on Shared Workspace
183+
if (workspaceIdOrigin === null) { // (0)
184+
compatible = osparc.data.model.Study.canIDelete(studyDataOrigin["accessRights"])
185+
} else if (workspaceIdOrigin !== null) { // (1)
186+
compatible = workspaceOrigin.getMyAccessRights()["delete"];
187+
}
188+
189+
if (!compatible) {
190+
// do not allow
191+
event.preventDefault();
192+
}
193+
194+
const dragWidget = osparc.dashboard.DragWidget.getInstance();
195+
dragWidget.setDropAllowed(compatible);
196+
},
197+
198+
drop: function(event, folderItem, destWorkspaceId, destFolderId) {
199+
const studyData = event.getData("osparc-moveStudy")["studyDataOrigin"];
200+
const studyToFolderData = {
201+
studyData,
202+
destWorkspaceId,
203+
destFolderId,
204+
};
205+
folderItem.getChildControl("icon").resetTextColor();
206+
return studyToFolderData;
207+
},
208+
},
209+
210+
trashFolder: {
211+
212+
},
213+
172214
dragLeave: function(item) {
173215
const dragWidget = osparc.dashboard.DragWidget.getInstance();
174216
dragWidget.setDropAllowed(false);
175217

176-
item.getChildControl("icon").resetTextColor();
218+
if (item) {
219+
item.getChildControl("icon").resetTextColor();
220+
}
177221
},
178222

179223
dragEnd: function(draggedItem) {

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,26 @@ qx.Class.define("osparc.dashboard.ResourceFilter", {
114114
}
115115
});
116116
this.evaluateTrashEmpty();
117+
this.__attachDropHandlers(trashButton);
117118
return trashButton;
118119
},
119120

121+
__attachDropHandlers: function(trashButton) {
122+
trashButton.setDroppable(true);
123+
124+
trashButton.addListener("dragover", e => {
125+
if (e.supportsType("osparc-moveStudy")) {
126+
osparc.dashboard.DragDropHelpers.trashStudy.dragOver(e);
127+
} else if (e.supportsType("osparc-moveFolder")) {
128+
osparc.dashboard.DragDropHelpers.trashFolder.dragOver(e);
129+
}
130+
});
131+
132+
trashButton.addListener("dragleave", () => {
133+
osparc.dashboard.DragDropHelpers.dragLeave();
134+
});
135+
},
136+
120137
evaluateTrashEmpty: function() {
121138
const studiesParams = {
122139
url: {

0 commit comments

Comments
 (0)