Skip to content

Commit 839410d

Browse files
committed
refactoring
1 parent 4a28028 commit 839410d

File tree

3 files changed

+39
-78
lines changed

3 files changed

+39
-78
lines changed

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ qx.Class.define("osparc.dashboard.DragDropHelpers", {
2020

2121
statics: {
2222
moveFolder: {
23-
dragStart: function(event, folderOrigin) {
23+
dragStart: function(event, folderOrigin, folderItem) {
2424
event.addAction("move");
2525
event.addType("osparc-moveFolder");
2626
event.addData("osparc-moveFolder", {
@@ -34,6 +34,9 @@ qx.Class.define("osparc.dashboard.DragDropHelpers", {
3434
icon: "@FontAwesome5Solid/folder/16",
3535
});
3636
dragWidget.start();
37+
38+
// make it semi transparent while being dragged
39+
folderItem.setOpacity(0.2);
3740
},
3841

3942
dragOver: function(event, folderDest, folderItem) {
@@ -80,7 +83,16 @@ qx.Class.define("osparc.dashboard.DragDropHelpers", {
8083
},
8184
},
8285

83-
dragEnd: function() {
86+
dragLeave: function(item) {
87+
item.getChildControl("icon").resetTextColor();
88+
const dragWidget = osparc.dashboard.DragWidget.getInstance();
89+
dragWidget.setDropAllowed(false);
90+
},
91+
92+
dragEnd: function(draggedItem) {
93+
// bring back opacity after drag
94+
draggedItem.setOpacity(1);
95+
8496
// hide drag indicator
8597
const dragWidget = osparc.dashboard.DragWidget.getInstance();
8698
dragWidget.end();

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

Lines changed: 19 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -163,38 +163,21 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
163163
this.setDraggable(true);
164164

165165
this.addListener("dragstart", e => {
166-
e.addAction("move");
167-
e.addType("osparc-moveFolder");
168-
e.addData("osparc-moveFolder", {
169-
"folderOrigin": this.getFolder(),
170-
});
171-
172-
// make it semi transparent while being dragged
173-
this.setOpacity(0.2);
174-
// init drag indicator
175-
const dragWidget = osparc.dashboard.DragWidget.getInstance();
176-
dragWidget.getChildControl("dragged-resource").set({
177-
label: this.getTitle(),
178-
icon: "@FontAwesome5Solid/folder/16",
179-
});
180-
dragWidget.start();
166+
const folderOrigin = this.getFolder();
167+
osparc.dashboard.DragDropHelpers.moveFolder.dragStart(e, folderOrigin, this);
181168
});
182169

183170
this.addListener("dragend", () => {
184-
// bring back opacity after drag
185-
this.setOpacity(1);
186-
// hide drag indicator
187-
const dragWidget = osparc.dashboard.DragWidget.getInstance();
188-
dragWidget.end();
171+
osparc.dashboard.DragDropHelpers.dragEnd(this);
189172
});
190173
},
191174

192175
__attachDropHandlers: function() {
193176
this.setDroppable(true);
194177

195178
this.addListener("dragover", e => {
196-
let compatible = false;
197179
if (e.supportsType("osparc-moveStudy")) {
180+
let compatible = false;
198181
const studyData = e.getData("osparc-moveStudy")["studyDataOrigin"];
199182
// Compatibility checks:
200183
// - My workspace
@@ -210,47 +193,27 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
210193
} else {
211194
compatible = true;
212195
}
213-
} else if (e.supportsType("osparc-moveFolder")) {
214-
// Compatibility checks:
215-
// - It's not the same folder
216-
// - My workspace
217-
// - None
218-
// - Shared workspace
219-
// - write access on workspace
220-
const folderOrigin = e.getData("osparc-moveFolder")["folderOrigin"];
221-
compatible = this.getFolder() !== folderOrigin;
222-
const workspaceId = folderOrigin.getWorkspaceId();
223196
if (compatible) {
224-
if (workspaceId) {
225-
const workspace = osparc.store.Workspaces.getInstance().getWorkspace(workspaceId);
226-
if (workspace) {
227-
compatible = workspace.getMyAccessRights()["write"];
228-
}
229-
} else {
230-
compatible = true;
231-
}
197+
this.getChildControl("icon").setTextColor("strong-main");
198+
} else {
199+
this.getChildControl("icon").setTextColor("danger-red");
200+
// do not allow
201+
e.preventDefault();
232202
}
203+
const dragWidget = osparc.dashboard.DragWidget.getInstance();
204+
dragWidget.setDropAllowed(compatible);
205+
} else if (e.supportsType("osparc-moveFolder")) {
206+
const folderDest = this.getFolder();
207+
osparc.dashboard.DragDropHelpers.moveFolder.dragOver(e, folderDest, this);
233208
}
234-
if (compatible) {
235-
this.getChildControl("icon").setTextColor("strong-main");
236-
} else {
237-
this.getChildControl("icon").setTextColor("danger-red");
238-
// do not allow
239-
e.preventDefault();
240-
}
241-
const dragWidget = osparc.dashboard.DragWidget.getInstance();
242-
dragWidget.setDropAllowed(compatible);
243209
});
244210

245211
this.addListener("dragleave", () => {
246-
this.getChildControl("icon").resetTextColor();
247-
const dragWidget = osparc.dashboard.DragWidget.getInstance();
248-
dragWidget.setDropAllowed(false);
212+
osparc.dashboard.DragDropHelpers.dragLeave(this);
249213
});
214+
250215
this.addListener("dragend", () => {
251-
this.getChildControl("icon").resetTextColor();
252-
const dragWidget = osparc.dashboard.DragWidget.getInstance();
253-
dragWidget.setDropAllowed(false);
216+
osparc.dashboard.DragDropHelpers.dragLeave(this);
254217
});
255218

256219
this.addListener("drop", e => {
@@ -262,11 +225,8 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", {
262225
};
263226
this.fireDataEvent("studyToFolderRequested", studyToFolderData);
264227
} else if (e.supportsType("osparc-moveFolder")) {
265-
const folderOrigin = e.getData("osparc-moveFolder")["folderOrigin"];
266-
const folderToFolderData = {
267-
folderId: folderOrigin.getFolderId(),
268-
destFolderId: this.getFolderId(),
269-
};
228+
const folderDest = this.getFolder();
229+
const folderToFolderData = osparc.dashboard.DragDropHelpers.moveFolder.drop(e, folderDest);
270230
this.fireDataEvent("folderToFolderRequested", folderToFolderData);
271231
}
272232
});

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

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -65,24 +65,17 @@ qx.Class.define("osparc.dashboard.WorkspacesAndFoldersTreeItem", {
6565
this.setDraggable(true);
6666

6767
this.addListener("dragstart", e => {
68-
const folder = this.__getFolder();
68+
const folderOrigin = this.__getFolder();
6969
// only folders can be dragged
70-
if (folder == null) {
70+
if (folderOrigin == null) {
7171
e.preventDefault();
7272
return;
7373
}
74-
75-
// make it semi transparent while being dragged
76-
this.setOpacity(0.2);
77-
78-
osparc.dashboard.DragDropHelpers.moveFolder.dragStart(e, folder);
74+
osparc.dashboard.DragDropHelpers.moveFolder.dragStart(e, folderOrigin, this);
7975
});
8076

8177
this.addListener("dragend", () => {
82-
// bring back opacity after drag
83-
this.setOpacity(1);
84-
85-
osparc.dashboard.DragDropHelpers.dragEnd();
78+
osparc.dashboard.DragDropHelpers.dragEnd(this);
8679
});
8780
},
8881

@@ -127,14 +120,10 @@ qx.Class.define("osparc.dashboard.WorkspacesAndFoldersTreeItem", {
127120
});
128121

129122
this.addListener("dragleave", () => {
130-
this.getChildControl("icon").resetTextColor();
131-
const dragWidget = osparc.dashboard.DragWidget.getInstance();
132-
dragWidget.setDropAllowed(false);
123+
osparc.dashboard.DragDropHelpers.dragLeave(this);
133124
});
134125
this.addListener("dragend", () => {
135-
this.getChildControl("icon").resetTextColor();
136-
const dragWidget = osparc.dashboard.DragWidget.getInstance();
137-
dragWidget.setDropAllowed(false);
126+
osparc.dashboard.DragDropHelpers.dragLeave(this);
138127
});
139128

140129
this.addListener("drop", e => {

0 commit comments

Comments
 (0)