From b21c921b484451bdce740831c7c8aa8585849784 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Mon, 16 Dec 2024 17:33:08 +0100 Subject: [PATCH 01/18] not needed --- .../theme/products/osparc/Appearance.js | 26 ------------------- .../osparc/theme/products/osparc/ThemeDark.js | 2 +- .../theme/products/osparc/ThemeLight.js | 2 +- .../osparc/theme/products/s4l/Appearance.js | 26 ------------------- .../osparc/theme/products/s4l/ThemeDark.js | 2 +- .../osparc/theme/products/s4l/ThemeLight.js | 2 +- .../osparc/theme/products/tis/Appearance.js | 26 ------------------- .../osparc/theme/products/tis/ThemeDark.js | 2 +- .../osparc/theme/products/tis/ThemeLight.js | 2 +- 9 files changed, 6 insertions(+), 84 deletions(-) delete mode 100644 services/static-webserver/client/source/class/osparc/theme/products/osparc/Appearance.js delete mode 100644 services/static-webserver/client/source/class/osparc/theme/products/s4l/Appearance.js delete mode 100644 services/static-webserver/client/source/class/osparc/theme/products/tis/Appearance.js diff --git a/services/static-webserver/client/source/class/osparc/theme/products/osparc/Appearance.js b/services/static-webserver/client/source/class/osparc/theme/products/osparc/Appearance.js deleted file mode 100644 index 4aabe3dfec28..000000000000 --- a/services/static-webserver/client/source/class/osparc/theme/products/osparc/Appearance.js +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************ - - osparc - the simcore frontend - - https://osparc.io - - Copyright: - 2023 IT'IS Foundation, https://itis.swiss - - License: - MIT: https://opensource.org/licenses/MIT - - Authors: - * Odei Maiz (odeimaiz) - -************************************************************************ */ - -qx.Theme.define("osparc.theme.products.osparc.Appearance", { - extend: osparc.theme.Appearance, - - appearances: { - "strong-button": { - include: "form-button" - } - } -}); diff --git a/services/static-webserver/client/source/class/osparc/theme/products/osparc/ThemeDark.js b/services/static-webserver/client/source/class/osparc/theme/products/osparc/ThemeDark.js index 896d57c93ad1..d9fa660e1fc2 100644 --- a/services/static-webserver/client/source/class/osparc/theme/products/osparc/ThemeDark.js +++ b/services/static-webserver/client/source/class/osparc/theme/products/osparc/ThemeDark.js @@ -21,6 +21,6 @@ qx.Theme.define("osparc.theme.products.osparc.ThemeDark", { decoration: osparc.theme.Decoration, font: osparc.theme.Font, icon: qx.theme.icon.Oxygen, - appearance: osparc.theme.products.osparc.Appearance + appearance: osparc.theme.Appearance, } }); diff --git a/services/static-webserver/client/source/class/osparc/theme/products/osparc/ThemeLight.js b/services/static-webserver/client/source/class/osparc/theme/products/osparc/ThemeLight.js index 1db9fae05436..8b145f000a9d 100644 --- a/services/static-webserver/client/source/class/osparc/theme/products/osparc/ThemeLight.js +++ b/services/static-webserver/client/source/class/osparc/theme/products/osparc/ThemeLight.js @@ -21,6 +21,6 @@ qx.Theme.define("osparc.theme.products.osparc.ThemeLight", { decoration: osparc.theme.Decoration, font: osparc.theme.Font, icon: qx.theme.icon.Oxygen, - appearance: osparc.theme.products.osparc.Appearance + appearance: osparc.theme.Appearance, } }); diff --git a/services/static-webserver/client/source/class/osparc/theme/products/s4l/Appearance.js b/services/static-webserver/client/source/class/osparc/theme/products/s4l/Appearance.js deleted file mode 100644 index fe74eb92aa37..000000000000 --- a/services/static-webserver/client/source/class/osparc/theme/products/s4l/Appearance.js +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************ - - osparc - the simcore frontend - - https://osparc.io - - Copyright: - 2023 IT'IS Foundation, https://itis.swiss - - License: - MIT: https://opensource.org/licenses/MIT - - Authors: - * Odei Maiz (odeimaiz) - -************************************************************************ */ - -qx.Theme.define("osparc.theme.products.s4l.Appearance", { - extend: osparc.theme.Appearance, - - appearances: { - "strong-button": { - include: "form-button" - } - } -}); diff --git a/services/static-webserver/client/source/class/osparc/theme/products/s4l/ThemeDark.js b/services/static-webserver/client/source/class/osparc/theme/products/s4l/ThemeDark.js index 50364a0ee316..8f067a599368 100644 --- a/services/static-webserver/client/source/class/osparc/theme/products/s4l/ThemeDark.js +++ b/services/static-webserver/client/source/class/osparc/theme/products/s4l/ThemeDark.js @@ -21,6 +21,6 @@ qx.Theme.define("osparc.theme.products.s4l.ThemeDark", { decoration: osparc.theme.Decoration, font: osparc.theme.Font, icon: qx.theme.icon.Oxygen, - appearance: osparc.theme.products.s4l.Appearance + appearance: osparc.theme.Appearance, } }); diff --git a/services/static-webserver/client/source/class/osparc/theme/products/s4l/ThemeLight.js b/services/static-webserver/client/source/class/osparc/theme/products/s4l/ThemeLight.js index 08c99c6d3827..6988ca531036 100644 --- a/services/static-webserver/client/source/class/osparc/theme/products/s4l/ThemeLight.js +++ b/services/static-webserver/client/source/class/osparc/theme/products/s4l/ThemeLight.js @@ -21,6 +21,6 @@ qx.Theme.define("osparc.theme.products.s4l.ThemeLight", { decoration: osparc.theme.Decoration, font: osparc.theme.Font, icon: qx.theme.icon.Oxygen, - appearance: osparc.theme.products.s4l.Appearance + appearance: osparc.theme.Appearance, } }); diff --git a/services/static-webserver/client/source/class/osparc/theme/products/tis/Appearance.js b/services/static-webserver/client/source/class/osparc/theme/products/tis/Appearance.js deleted file mode 100644 index b259a72698ab..000000000000 --- a/services/static-webserver/client/source/class/osparc/theme/products/tis/Appearance.js +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************ - - osparc - the simcore frontend - - https://osparc.io - - Copyright: - 2023 IT'IS Foundation, https://itis.swiss - - License: - MIT: https://opensource.org/licenses/MIT - - Authors: - * Odei Maiz (odeimaiz) - -************************************************************************ */ - -qx.Theme.define("osparc.theme.products.tis.Appearance", { - extend: osparc.theme.Appearance, - - appearances: { - "strong-button": { - include: "form-button" - } - } -}); diff --git a/services/static-webserver/client/source/class/osparc/theme/products/tis/ThemeDark.js b/services/static-webserver/client/source/class/osparc/theme/products/tis/ThemeDark.js index 438a284d6519..439239fd3256 100644 --- a/services/static-webserver/client/source/class/osparc/theme/products/tis/ThemeDark.js +++ b/services/static-webserver/client/source/class/osparc/theme/products/tis/ThemeDark.js @@ -21,6 +21,6 @@ qx.Theme.define("osparc.theme.products.tis.ThemeDark", { decoration: osparc.theme.Decoration, font: osparc.theme.Font, icon: qx.theme.icon.Oxygen, - appearance: osparc.theme.products.tis.Appearance + appearance: osparc.theme.Appearance, } }); diff --git a/services/static-webserver/client/source/class/osparc/theme/products/tis/ThemeLight.js b/services/static-webserver/client/source/class/osparc/theme/products/tis/ThemeLight.js index 10dc3c9a0791..f4cb4252cf24 100644 --- a/services/static-webserver/client/source/class/osparc/theme/products/tis/ThemeLight.js +++ b/services/static-webserver/client/source/class/osparc/theme/products/tis/ThemeLight.js @@ -21,6 +21,6 @@ qx.Theme.define("osparc.theme.products.tis.ThemeLight", { decoration: osparc.theme.Decoration, font: osparc.theme.Font, icon: qx.theme.icon.Oxygen, - appearance: osparc.theme.products.tis.Appearance + appearance: osparc.theme.Appearance, } }); From 6d6bd2710fbd0aae9a59dbfdd85006d915102b43 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Mon, 16 Dec 2024 17:33:59 +0100 Subject: [PATCH 02/18] [skip ci] minor --- .../client/source/class/osparc/theme/Appearance.js | 1 - 1 file changed, 1 deletion(-) diff --git a/services/static-webserver/client/source/class/osparc/theme/Appearance.js b/services/static-webserver/client/source/class/osparc/theme/Appearance.js index 7f6f8ccfe513..287059ff97ef 100644 --- a/services/static-webserver/client/source/class/osparc/theme/Appearance.js +++ b/services/static-webserver/client/source/class/osparc/theme/Appearance.js @@ -953,7 +953,6 @@ qx.Theme.define("osparc.theme.Appearance", { } }, - // override in product "strong-button": { include: "form-button" }, From 84371f513a745245c61d0221e6a23c72ad6f106f Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 09:59:28 +0100 Subject: [PATCH 03/18] [skpi ci] asdf --- .../client/source/class/osparc/theme/Appearance.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/theme/Appearance.js b/services/static-webserver/client/source/class/osparc/theme/Appearance.js index 287059ff97ef..54ad8c850560 100644 --- a/services/static-webserver/client/source/class/osparc/theme/Appearance.js +++ b/services/static-webserver/client/source/class/osparc/theme/Appearance.js @@ -565,9 +565,10 @@ qx.Theme.define("osparc.theme.Appearance", { const style = { decorator: "form-button", cursor: "pointer", - textColor: "default-button-text", + textColor: "default-button-text", // OM!!!!! padding: 5, - backgroundColor: "default-button" + backgroundColor: "default-button", + center: true, }; if (states.hovered) { style.decorator = "form-button-hovered"; From 53891d31ac899bf25a8e1abc508da46e248b6217 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 10:09:39 +0100 Subject: [PATCH 04/18] whitetext for purchased AnatomicalModelListItem text --- .../source/class/osparc/vipMarket/AnatomicalModelListItem.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/services/static-webserver/client/source/class/osparc/vipMarket/AnatomicalModelListItem.js b/services/static-webserver/client/source/class/osparc/vipMarket/AnatomicalModelListItem.js index 75b33a3229df..ea3897841fa7 100644 --- a/services/static-webserver/client/source/class/osparc/vipMarket/AnatomicalModelListItem.js +++ b/services/static-webserver/client/source/class/osparc/vipMarket/AnatomicalModelListItem.js @@ -163,7 +163,10 @@ qx.Class.define("osparc.vipMarket.AnatomicalModelListItem", { __applyPurchases: function(purchases) { if (purchases.length) { - this.setBackgroundColor("strong-main"); + this.set({ + textColor: "default-button-text", + backgroundColor: "strong-main", + }) } }, From ad1d4afdfef5798d635049567fd92dc16f7f33f2 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 10:16:40 +0100 Subject: [PATCH 05/18] [skip ci] minor --- .../client/source/class/osparc/theme/Appearance.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/theme/Appearance.js b/services/static-webserver/client/source/class/osparc/theme/Appearance.js index 54ad8c850560..f293cde92284 100644 --- a/services/static-webserver/client/source/class/osparc/theme/Appearance.js +++ b/services/static-webserver/client/source/class/osparc/theme/Appearance.js @@ -19,6 +19,15 @@ qx.Theme.define("osparc.theme.Appearance", { extend: osparc.theme.common.Appearance, appearances: { + "strong-ui": { + style: () => { + return { + textColor: "default-button-text", + backgroundColor: "product-color", + }; + } + }, + "dragdrop-no-cursor": { style: () => { return { @@ -561,13 +570,12 @@ qx.Theme.define("osparc.theme.Appearance", { "widget/reset-button": {}, "form-button": { + include: "strong-ui", style: function(states) { const style = { decorator: "form-button", cursor: "pointer", - textColor: "default-button-text", // OM!!!!! padding: 5, - backgroundColor: "default-button", center: true, }; if (states.hovered) { From 800e3228809b3d64b76b73c7a782782dd023b59e Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 10:33:56 +0100 Subject: [PATCH 06/18] getFullName --- .../client/source/class/osparc/auth/Data.js | 11 +++++++++ .../class/osparc/desktop/account/MyAccount.js | 23 +++++++------------ .../source/class/osparc/theme/Appearance.js | 1 - 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/auth/Data.js b/services/static-webserver/client/source/class/osparc/auth/Data.js index 306d3032558b..2a4b27a96463 100644 --- a/services/static-webserver/client/source/class/osparc/auth/Data.js +++ b/services/static-webserver/client/source/class/osparc/auth/Data.js @@ -147,6 +147,17 @@ qx.Class.define("osparc.auth.Data", { return this.getUsername(); }, + getFullName: function() { + let name = ""; + if (this.getFirstName()) { + name += this.getFirstName(); + } + if (this.getLastName()) { + name += " " + this.getLastName(); + } + return name; + }, + getFriendlyRole: function() { const role = this.getRole(); let friendlyRole = role.replace(/_/g, " "); diff --git a/services/static-webserver/client/source/class/osparc/desktop/account/MyAccount.js b/services/static-webserver/client/source/class/osparc/desktop/account/MyAccount.js index 1d19d05f390a..0df1dc1d8be9 100644 --- a/services/static-webserver/client/source/class/osparc/desktop/account/MyAccount.js +++ b/services/static-webserver/client/source/class/osparc/desktop/account/MyAccount.js @@ -64,24 +64,17 @@ qx.Class.define("osparc.desktop.account.MyAccount", { authData.bind("username", usernameLabel, "value"); layout.add(usernameLabel); - const nameLabel = new qx.ui.basic.Label().set({ + const fullNameLabel = new qx.ui.basic.Label().set({ font: "text-13", alignX: "center" }); - layout.add(nameLabel); - const updateName = () => { - let name = ""; - if (authData.getFirstName()) { - name += authData.getFirstName(); - } - if (authData.getLastName()) { - name += " " + authData.getLastName(); - } - nameLabel.setValue(name); - } - updateName(); - authData.addListener("changeFirstName", updateName); - authData.addListener("changeLastName", updateName); + layout.add(fullNameLabel); + authData.bind("firstName", fullNameLabel, "value", { + converter: () => authData.getFullName() + }); + authData.bind("lastName", fullNameLabel, "value", { + converter: () => authData.getFullName() + }); if (authData.getRole() !== "user") { const role = authData.getFriendlyRole(); diff --git a/services/static-webserver/client/source/class/osparc/theme/Appearance.js b/services/static-webserver/client/source/class/osparc/theme/Appearance.js index f293cde92284..8f3f01bbf4c1 100644 --- a/services/static-webserver/client/source/class/osparc/theme/Appearance.js +++ b/services/static-webserver/client/source/class/osparc/theme/Appearance.js @@ -576,7 +576,6 @@ qx.Theme.define("osparc.theme.Appearance", { decorator: "form-button", cursor: "pointer", padding: 5, - center: true, }; if (states.hovered) { style.decorator = "form-button-hovered"; From 3e7813c65891ac9c9b5bbb4300f9a61727a9d740 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 10:38:16 +0100 Subject: [PATCH 07/18] aesthetics --- .../client/source/class/osparc/vipMarket/Market.js | 3 ++- .../client/source/class/osparc/vipMarket/VipMarket.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/vipMarket/Market.js b/services/static-webserver/client/source/class/osparc/vipMarket/Market.js index dbffeefed8e1..dd4f9567f4de 100644 --- a/services/static-webserver/client/source/class/osparc/vipMarket/Market.js +++ b/services/static-webserver/client/source/class/osparc/vipMarket/Market.js @@ -22,7 +22,8 @@ qx.Class.define("osparc.vipMarket.Market", { this.base(arguments); const miniWallet = osparc.desktop.credits.BillingCenter.createMiniWalletView().set({ - paddingRight: 10 + paddingRight: 10, + minWidth: 150, }); this.addWidgetOnTopOfTheTabs(miniWallet); diff --git a/services/static-webserver/client/source/class/osparc/vipMarket/VipMarket.js b/services/static-webserver/client/source/class/osparc/vipMarket/VipMarket.js index a7adecbf386c..79b2626f260d 100644 --- a/services/static-webserver/client/source/class/osparc/vipMarket/VipMarket.js +++ b/services/static-webserver/client/source/class/osparc/vipMarket/VipMarket.js @@ -126,7 +126,8 @@ qx.Class.define("osparc.vipMarket.VipMarket", { decorator: "no-border", spacing: 5, minWidth: 250, - maxWidth: 250 + maxWidth: 250, + backgroundColor: "transparent", }); this.getChildControl("left-side").add(control, { flex: 1 From d83ad37450b432dffc8fc46c6bda9a22bba287c0 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 10:57:48 +0100 Subject: [PATCH 08/18] aesthetics --- .../client/source/class/osparc/dashboard/DragWidget.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/DragWidget.js b/services/static-webserver/client/source/class/osparc/dashboard/DragWidget.js index 64a1c188f1f7..4685f93caaf1 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/DragWidget.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/DragWidget.js @@ -27,10 +27,10 @@ qx.Class.define("osparc.dashboard.DragWidget", { })); this.set({ + appearance: "strong-ui", opacity: 0.9, padding: 10, zIndex: 1000, - backgroundColor: "strong-main", decorator: "rounded", visibility: "excluded", }); @@ -71,7 +71,7 @@ qx.Class.define("osparc.dashboard.DragWidget", { __dropAllowed: function(allowed) { this.getChildControl("allowed-icon").set({ source: allowed ? "@FontAwesome5Solid/check/14" : "@FontAwesome5Solid/times/14", - textColor: allowed ? "text" : "danger-red", + textColor: allowed ? "default-button-text" : "danger-red", }); }, From 9e299cb2864de9741061d644db6700555e27df93 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 11:09:02 +0100 Subject: [PATCH 09/18] [skip ci] dragover trashStudy --- .../class/osparc/dashboard/DragDropHelpers.js | 46 ++++++++++++++++++- .../class/osparc/dashboard/ResourceFilter.js | 17 +++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js b/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js index 83aed499cb4b..21f22fe90a6e 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js @@ -169,11 +169,55 @@ qx.Class.define("osparc.dashboard.DragDropHelpers", { }, }, + trashStudy: { + dragOver: function(event) { + let compatible = false; + const studyDataOrigin = event.getData("osparc-moveStudy")["studyDataOrigin"]; + const workspaceIdOrigin = studyDataOrigin["workspaceId"]; + const workspaceOrigin = osparc.store.Workspaces.getInstance().getWorkspace(workspaceIdOrigin); + // Compatibility checks: + // - My Workspace -> Trash (1) + // - Delete on Study + // - Shared Workspace -> Trash (2) + // - Delete on Shared Workspace + if (workspaceIdOrigin === null) { // (0) + compatible = osparc.data.model.Study.canIDelete(studyDataOrigin["accessRights"]) + } else if (workspaceIdOrigin !== null) { // (1) + compatible = workspaceOrigin.getMyAccessRights()["delete"]; + } + + if (!compatible) { + // do not allow + event.preventDefault(); + } + + const dragWidget = osparc.dashboard.DragWidget.getInstance(); + dragWidget.setDropAllowed(compatible); + }, + + drop: function(event, folderItem, destWorkspaceId, destFolderId) { + const studyData = event.getData("osparc-moveStudy")["studyDataOrigin"]; + const studyToFolderData = { + studyData, + destWorkspaceId, + destFolderId, + }; + folderItem.getChildControl("icon").resetTextColor(); + return studyToFolderData; + }, + }, + + trashFolder: { + + }, + dragLeave: function(item) { const dragWidget = osparc.dashboard.DragWidget.getInstance(); dragWidget.setDropAllowed(false); - item.getChildControl("icon").resetTextColor(); + if (item) { + item.getChildControl("icon").resetTextColor(); + } }, dragEnd: function(draggedItem) { diff --git a/services/static-webserver/client/source/class/osparc/dashboard/ResourceFilter.js b/services/static-webserver/client/source/class/osparc/dashboard/ResourceFilter.js index 097247cc847d..13c9710b31e3 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/ResourceFilter.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/ResourceFilter.js @@ -114,9 +114,26 @@ qx.Class.define("osparc.dashboard.ResourceFilter", { } }); this.evaluateTrashEmpty(); + this.__attachDropHandlers(trashButton); return trashButton; }, + __attachDropHandlers: function(trashButton) { + trashButton.setDroppable(true); + + trashButton.addListener("dragover", e => { + if (e.supportsType("osparc-moveStudy")) { + osparc.dashboard.DragDropHelpers.trashStudy.dragOver(e); + } else if (e.supportsType("osparc-moveFolder")) { + osparc.dashboard.DragDropHelpers.trashFolder.dragOver(e); + } + }); + + trashButton.addListener("dragleave", () => { + osparc.dashboard.DragDropHelpers.dragLeave(); + }); + }, + evaluateTrashEmpty: function() { const studiesParams = { url: { From 549495635bd720fbf7258d0b95e4e993c5765d72 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 11:21:51 +0100 Subject: [PATCH 10/18] to trash working --- .../class/osparc/dashboard/DragDropHelpers.js | 45 ++++++++++++++----- .../class/osparc/dashboard/ResourceFilter.js | 12 +++++ .../class/osparc/dashboard/StudyBrowser.js | 7 +++ 3 files changed, 52 insertions(+), 12 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js b/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js index 21f22fe90a6e..caccbcbab2ca 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js @@ -176,12 +176,12 @@ qx.Class.define("osparc.dashboard.DragDropHelpers", { const workspaceIdOrigin = studyDataOrigin["workspaceId"]; const workspaceOrigin = osparc.store.Workspaces.getInstance().getWorkspace(workspaceIdOrigin); // Compatibility checks: - // - My Workspace -> Trash (1) + // - My Workspace -> Trash (0) // - Delete on Study - // - Shared Workspace -> Trash (2) + // - Shared Workspace -> Trash (1) // - Delete on Shared Workspace if (workspaceIdOrigin === null) { // (0) - compatible = osparc.data.model.Study.canIDelete(studyDataOrigin["accessRights"]) + compatible = osparc.data.model.Study.canIDelete(studyDataOrigin["accessRights"]); } else if (workspaceIdOrigin !== null) { // (1) compatible = workspaceOrigin.getMyAccessRights()["delete"]; } @@ -195,20 +195,41 @@ qx.Class.define("osparc.dashboard.DragDropHelpers", { dragWidget.setDropAllowed(compatible); }, - drop: function(event, folderItem, destWorkspaceId, destFolderId) { - const studyData = event.getData("osparc-moveStudy")["studyDataOrigin"]; - const studyToFolderData = { - studyData, - destWorkspaceId, - destFolderId, - }; - folderItem.getChildControl("icon").resetTextColor(); - return studyToFolderData; + drop: function(event) { + return event.getData("osparc-moveStudy")["studyDataOrigin"]; }, }, trashFolder: { + dragOver: function(event) { + let compatible = false; + const folderOrigin = event.getData("osparc-moveFolder")["folderOrigin"]; + const workspaceIdOrigin = folderOrigin.getWorkspaceId(); + const workspaceOrigin = osparc.store.Workspaces.getInstance().getWorkspace(workspaceIdOrigin); + // Compatibility checks: + // - My Workspace -> Trash (0) + // - Yes + // - Shared Workspace -> Trash (1) + // - Delete on Shared Workspace + if (workspaceIdOrigin === null) { // (0) + compatible = true; + } else if (workspaceIdOrigin !== null) { // (1) + compatible = workspaceOrigin.getMyAccessRights()["delete"]; + } + + if (!compatible) { + // do not allow + event.preventDefault(); + } + + const dragWidget = osparc.dashboard.DragWidget.getInstance(); + dragWidget.setDropAllowed(compatible); + }, + drop: function(event) { + const folderOrigin = event.getData("osparc-moveFolder")["folderOrigin"]; + return folderOrigin.getFolderId(); + }, }, dragLeave: function(item) { diff --git a/services/static-webserver/client/source/class/osparc/dashboard/ResourceFilter.js b/services/static-webserver/client/source/class/osparc/dashboard/ResourceFilter.js index 13c9710b31e3..ad896f44cfd3 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/ResourceFilter.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/ResourceFilter.js @@ -35,6 +35,8 @@ qx.Class.define("osparc.dashboard.ResourceFilter", { events: { "trashContext": "qx.event.type.Event", + "trashStudyRequested": "qx.event.type.Data", + "trashFolderRequested": "qx.event.type.Data", "changeSharedWith": "qx.event.type.Data", "changeSelectedTags": "qx.event.type.Data", "changeServiceType": "qx.event.type.Data" @@ -132,6 +134,16 @@ qx.Class.define("osparc.dashboard.ResourceFilter", { trashButton.addListener("dragleave", () => { osparc.dashboard.DragDropHelpers.dragLeave(); }); + + trashButton.addListener("drop", e => { + if (e.supportsType("osparc-moveStudy")) { + const studyData = osparc.dashboard.DragDropHelpers.trashStudy.drop(e); + this.fireDataEvent("trashStudyRequested", studyData); + } else if (e.supportsType("osparc-moveFolder")) { + const folderId = osparc.dashboard.DragDropHelpers.trashFolder.drop(e); + this.fireDataEvent("trashFolderRequested", folderId); + } + }); }, evaluateTrashEmpty: function() { diff --git a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js index 081d63a2a960..5bdf4d284d55 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js @@ -1167,6 +1167,13 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { workspacesAndFoldersTree.addListener("folderToFolderRequested", e => { this._folderToFolderRequested(e.getData()); }); + + this._resourceFilter.addListener("trashStudyRequested", e => { + this.__trashStudyRequested(e.getData()); + }); + this._resourceFilter.addListener("trashFolderRequested", e => { + this._trashFolderRequested(e.getData()); + }); }, __addSortByButton: function() { From 3b872d08937f75503f65eacb892fdc41e22cf905 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 11:27:14 +0100 Subject: [PATCH 11/18] Folder toTtrash: ask for confirmation --- .../osparc/dashboard/FolderButtonItem.js | 20 +------------------ .../class/osparc/dashboard/StudyBrowser.js | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/FolderButtonItem.js b/services/static-webserver/client/source/class/osparc/dashboard/FolderButtonItem.js index 4d11a423c34c..f496b14501af 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/FolderButtonItem.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/FolderButtonItem.js @@ -272,7 +272,7 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", { menu.addSeparator(); const trashButton = new qx.ui.menu.Button(this.tr("Trash"), "@FontAwesome5Solid/trash/12"); - trashButton.addListener("execute", () => this.__trashFolderRequested(), this); + trashButton.addListener("execute", () => this.fireDataEvent("trashFolderRequested", this.getFolderId()), this); menu.add(trashButton); } else if (studyBrowserContext === "trash") { const restoreButton = new qx.ui.menu.Button(this.tr("Restore"), "@MaterialIcons/restore_from_trash/16"); @@ -325,24 +325,6 @@ qx.Class.define("osparc.dashboard.FolderButtonItem", { folderEditor.addListener("cancel", () => win.close()); }, - __trashFolderRequested: function() { - const trashDays = osparc.store.StaticInfo.getInstance().getTrashRetentionDays(); - let msg = this.tr("Are you sure you want to move the Folder and all its content to the trash?"); - msg += "

" + this.tr("It will be permanently deleted after ") + trashDays + " days."; - const confirmationWin = new osparc.ui.window.Confirmation(msg).set({ - caption: this.tr("Move to Trash"), - confirmText: this.tr("Move to Trash"), - confirmAction: "delete" - }); - confirmationWin.center(); - confirmationWin.open(); - confirmationWin.addListener("close", () => { - if (confirmationWin.getConfirmed()) { - this.fireDataEvent("trashFolderRequested", this.getFolderId()); - } - }, this); - }, - __deleteFolderRequested: function() { const msg = this.tr("Are you sure you want to delete") + " " + this.getTitle() + "?"; const confirmationWin = new osparc.ui.window.Confirmation(msg).set({ diff --git a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js index 5bdf4d284d55..68fbe466c76c 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js @@ -606,7 +606,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { this.__doMoveFolder(folderId, destWorkspaceId, destFolderId); }, - _trashFolderRequested: function(folderId) { + __folderToTrash: function(folderId) { osparc.store.Folders.getInstance().trashFolder(folderId, this.getCurrentWorkspaceId()) .then(() => { this.__reloadFolders(); @@ -620,6 +620,24 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { }) }, + _trashFolderRequested: function(folderId) { + const trashDays = osparc.store.StaticInfo.getInstance().getTrashRetentionDays(); + let msg = this.tr("Are you sure you want to move the Folder and all its content to the trash?"); + msg += "

" + this.tr("It will be permanently deleted after ") + trashDays + " days."; + const confirmationWin = new osparc.ui.window.Confirmation(msg).set({ + caption: this.tr("Move to Trash"), + confirmText: this.tr("Move to Trash"), + confirmAction: "delete" + }); + confirmationWin.center(); + confirmationWin.open(); + confirmationWin.addListener("close", () => { + if (confirmationWin.getConfirmed()) { + this.__folderToTrash(folderId); + } + }, this); + }, + _untrashFolderRequested: function(folder) { osparc.store.Folders.getInstance().untrashFolder(folder) .then(() => { From b16fe5b6df0f910366817931c48de74947312e76 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 11:37:11 +0100 Subject: [PATCH 12/18] [skip ci] ask for permissino change --- .../class/osparc/dashboard/DragDropHelpers.js | 1 + .../class/osparc/dashboard/StudyBrowser.js | 37 ++++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js b/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js index caccbcbab2ca..b67d7669de22 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/DragDropHelpers.js @@ -161,6 +161,7 @@ qx.Class.define("osparc.dashboard.DragDropHelpers", { const folderOrigin = event.getData("osparc-moveFolder")["folderOrigin"]; const folderToFolderData = { folderId: folderOrigin.getFolderId(), + workspaceId: folderOrigin.getWorkspaceId(), destWorkspaceId, destFolderId, }; diff --git a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js index 68fbe466c76c..9def479da4c5 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js @@ -583,27 +583,22 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { const data = e.getData(); const destWorkspaceId = data["workspaceId"]; const destFolderId = data["folderId"]; - if (destWorkspaceId === currentWorkspaceId) { - this.__doMoveFolder(folderId, destWorkspaceId, destFolderId); - } else { - const confirmationWin = this.__showMoveToWorkspaceWarningMessage(); - confirmationWin.addListener("close", () => { - if (confirmationWin.getConfirmed()) { - this.__doMoveFolder(folderId, destWorkspaceId, destFolderId); - } - }, this); - } + this._folderToFolderRequested(folderId, currentWorkspaceId, destWorkspaceId, destFolderId); }); moveFolderTo.addListener("cancel", () => win.close()); }, - _folderToFolderRequested: function(data) { - const { - folderId, - destWorkspaceId, - destFolderId, - } = data; - this.__doMoveFolder(folderId, destWorkspaceId, destFolderId); + _folderToFolderRequested: function(folderId, workspaceId, destWorkspaceId, destFolderId) { + if (destWorkspaceId === workspaceId) { + this.__doMoveFolder(folderId, destWorkspaceId, destFolderId); + } else { + const confirmationWin = this.__showMoveToWorkspaceWarningMessage(); + confirmationWin.addListener("close", () => { + if (confirmationWin.getConfirmed()) { + this.__doMoveFolder(folderId, destWorkspaceId, destFolderId); + } + }, this); + } }, __folderToTrash: function(folderId) { @@ -1183,7 +1178,13 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { this._studyToFolderRequested(e.getData()); }); workspacesAndFoldersTree.addListener("folderToFolderRequested", e => { - this._folderToFolderRequested(e.getData()); + const { + folderId, + workspaceId, + destWorkspaceId, + destFolderId, + } = e.getData(); + this._folderToFolderRequested(folderId, workspaceId, destWorkspaceId, destFolderId); }); this._resourceFilter.addListener("trashStudyRequested", e => { From b7b44ee2341fabdfd497da9bebdbad6c092384dd Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 11:39:14 +0100 Subject: [PATCH 13/18] rename funciton --- .../client/source/class/osparc/dashboard/StudyBrowser.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js index 9def479da4c5..f497822ac3fb 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js @@ -555,7 +555,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { this.__reloadFolders(); }, - __showMoveToWorkspaceWarningMessage: function() { + __showMoveToDifferentWorkspaceWarningMessage: function() { const msg = this.tr("The permissions will be taken from the new workspace."); const win = new osparc.ui.window.Confirmation(msg).set({ caption: this.tr("Move"), @@ -592,7 +592,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { if (destWorkspaceId === workspaceId) { this.__doMoveFolder(folderId, destWorkspaceId, destFolderId); } else { - const confirmationWin = this.__showMoveToWorkspaceWarningMessage(); + const confirmationWin = this.__showMoveToDifferentWorkspaceWarningMessage(); confirmationWin.addListener("close", () => { if (confirmationWin.getConfirmed()) { this.__doMoveFolder(folderId, destWorkspaceId, destFolderId); @@ -1277,7 +1277,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { if (destWorkspaceId === currentWorkspaceId) { moveStudies(); } else { - const confirmationWin = this.__showMoveToWorkspaceWarningMessage(); + const confirmationWin = this.__showMoveToDifferentWorkspaceWarningMessage(); confirmationWin.addListener("close", () => { if (confirmationWin.getConfirmed()) { moveStudies(); @@ -1696,7 +1696,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { if (destWorkspaceId === currentWorkspaceId) { this.__doMoveStudy(studyData, destWorkspaceId, destFolderId); } else { - const confirmationWin = this.__showMoveToWorkspaceWarningMessage(); + const confirmationWin = this.__showMoveToDifferentWorkspaceWarningMessage(); confirmationWin.addListener("close", () => { if (confirmationWin.getConfirmed()) { this.__doMoveStudy(studyData, destWorkspaceId, destFolderId); From 167c5d984561310be403229ea26acf9ae72a6d81 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 11:48:16 +0100 Subject: [PATCH 14/18] minor --- .../source/class/osparc/dashboard/StudyBrowser.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js index f497822ac3fb..475f364672d7 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js @@ -565,13 +565,6 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { return win; }, - __doMoveFolder: function(folderId, destWorkspaceId, destFolderId) { - osparc.store.Folders.getInstance().moveFolderToWorkspace(folderId, destWorkspaceId) // first move to workspace - .then(() => osparc.store.Folders.getInstance().moveFolderToFolder(folderId, destFolderId)) // then move to folder - .then(() => this.__reloadFolders()) - .catch(err => console.error(err)); - }, - _moveFolderToRequested: function(folderId) { const currentWorkspaceId = this.getCurrentWorkspaceId(); const currentFolderId = this.getCurrentFolderId(); @@ -588,6 +581,13 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { moveFolderTo.addListener("cancel", () => win.close()); }, + __doMoveFolder: function(folderId, destWorkspaceId, destFolderId) { + osparc.store.Folders.getInstance().moveFolderToWorkspace(folderId, destWorkspaceId) // first move to workspace + .then(() => osparc.store.Folders.getInstance().moveFolderToFolder(folderId, destFolderId)) // then move to folder + .then(() => this.__reloadFolders()) + .catch(err => console.error(err)); + }, + _folderToFolderRequested: function(folderId, workspaceId, destWorkspaceId, destFolderId) { if (destWorkspaceId === workspaceId) { this.__doMoveFolder(folderId, destWorkspaceId, destFolderId); From c7907cf10425ee961e9cc61fbadc5c7aa86d0b4d Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 11:48:42 +0100 Subject: [PATCH 15/18] ask for confmiratino when moving study --- .../class/osparc/dashboard/StudyBrowser.js | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js index 475f364672d7..f6bcdf3c25f7 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js @@ -1175,7 +1175,12 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { __connectDropHandlers: function() { const workspacesAndFoldersTree = this._resourceFilter.getWorkspacesAndFoldersTree(); workspacesAndFoldersTree.addListener("studyToFolderRequested", e => { - this._studyToFolderRequested(e.getData()); + const { + studyData, + destWorkspaceId, + destFolderId, + } = e.getData(); + this._moveStudyToFolderReqested(studyData, destWorkspaceId, destFolderId); }); workspacesAndFoldersTree.addListener("folderToFolderRequested", e => { const { @@ -1678,6 +1683,19 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { }); }, + _moveStudyToFolderReqested: function(studyData, destWorkspaceId, destFolderId) { + if (studyData["workspaceId"] === destWorkspaceId) { + this.__doMoveStudy(studyData, destWorkspaceId, destFolderId); + } else { + const confirmationWin = this.__showMoveToDifferentWorkspaceWarningMessage(); + confirmationWin.addListener("close", () => { + if (confirmationWin.getConfirmed()) { + this.__doMoveStudy(studyData, destWorkspaceId, destFolderId); + } + }, this); + } + }, + __getMoveStudyToMenuButton: function(studyData) { const moveToButton = new qx.ui.menu.Button(this.tr("Move to..."), "@FontAwesome5Solid/folder/12"); moveToButton["moveToButton"] = true; @@ -1692,17 +1710,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { const data = e.getData(); const destWorkspaceId = data["workspaceId"]; const destFolderId = data["folderId"]; - - if (destWorkspaceId === currentWorkspaceId) { - this.__doMoveStudy(studyData, destWorkspaceId, destFolderId); - } else { - const confirmationWin = this.__showMoveToDifferentWorkspaceWarningMessage(); - confirmationWin.addListener("close", () => { - if (confirmationWin.getConfirmed()) { - this.__doMoveStudy(studyData, destWorkspaceId, destFolderId); - } - }, this); - } + this._moveStudyToFolderReqested(studyData, destWorkspaceId, destFolderId); }, this); moveStudyTo.addListener("cancel", () => win.close()); }, this); @@ -1743,15 +1751,6 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { .then(() => studyData["folderId"] = destFolderId); }, - _studyToFolderRequested: function(data) { - const { - studyData, - destWorkspaceId, - destFolderId, - } = data; - this.__doMoveStudy(studyData, destWorkspaceId, destFolderId); - }, - __getDuplicateMenuButton: function(studyData) { const duplicateButton = new qx.ui.menu.Button(this.tr("Duplicate"), "@FontAwesome5Solid/copy/12"); duplicateButton["duplicateButton"] = true; From 89bc31e3e50fbcdbad335b1d4e2fa7ddeef8dcc4 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 11:54:34 +0100 Subject: [PATCH 16/18] Show error message comign from backend --- .../source/class/osparc/dashboard/StudyBrowser.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js index f6bcdf3c25f7..cf1a07a74c02 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js @@ -585,7 +585,10 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { osparc.store.Folders.getInstance().moveFolderToWorkspace(folderId, destWorkspaceId) // first move to workspace .then(() => osparc.store.Folders.getInstance().moveFolderToFolder(folderId, destFolderId)) // then move to folder .then(() => this.__reloadFolders()) - .catch(err => console.error(err)); + .catch(err => { + console.error(err); + osparc.FlashMessenger.getInstance().logAs(err, "ERROR"); + }); }, _folderToFolderRequested: function(folderId, workspaceId, destWorkspaceId, destFolderId) { @@ -612,7 +615,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { .catch(err => { console.error(err); osparc.FlashMessenger.getInstance().logAs(err, "ERROR"); - }) + }); }, _trashFolderRequested: function(folderId) { @@ -1729,11 +1732,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { } }; return osparc.data.Resources.fetch("studies", "moveToWorkspace", params) - .then(() => studyData["workspaceId"] = destWorkspaceId) - .catch(err => { - console.error(err); - osparc.FlashMessenger.logAs(err.message, "ERROR"); - }); + .then(() => studyData["workspaceId"] = destWorkspaceId); }, __moveStudyToFolder: function(studyData, destFolderId) { From f2dfc84314bcfba54f788ff68950c2bffd4043ac Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 13:15:08 +0100 Subject: [PATCH 17/18] Yellow move to Trash --- .../class/osparc/dashboard/StudyBrowser.js | 4 ++-- .../source/class/osparc/theme/Appearance.js | 9 +++++++++ .../source/class/osparc/theme/Decoration.js | 18 ++++++++++++++++++ .../class/osparc/ui/window/Confirmation.js | 7 +++++-- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js index cf1a07a74c02..397f2682acb1 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js @@ -625,7 +625,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { const confirmationWin = new osparc.ui.window.Confirmation(msg).set({ caption: this.tr("Move to Trash"), confirmText: this.tr("Move to Trash"), - confirmAction: "delete" + confirmAction: "warning", }); confirmationWin.center(); confirmationWin.open(); @@ -2074,7 +2074,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { const confirmationWin = new osparc.ui.window.Confirmation(msg).set({ caption: this.tr("Move to Trash"), confirmText: this.tr("Move to Trash"), - confirmAction: "delete" + confirmAction: "warning", }); osparc.utils.Utils.setIdToWidget(confirmationWin.getConfirmButton(), "confirmDeleteStudyBtn"); return confirmationWin; diff --git a/services/static-webserver/client/source/class/osparc/theme/Appearance.js b/services/static-webserver/client/source/class/osparc/theme/Appearance.js index 8f3f01bbf4c1..82b0c9b56661 100644 --- a/services/static-webserver/client/source/class/osparc/theme/Appearance.js +++ b/services/static-webserver/client/source/class/osparc/theme/Appearance.js @@ -965,6 +965,15 @@ qx.Theme.define("osparc.theme.Appearance", { include: "form-button" }, + "warning-button": { + include: "form-button", + style: state => ({ + decorator: state.hovered || state.focused ? "form-button-warning-hover" : "form-button-warning", + backgroundColor: state.hovered || state.focused ? "default-button-hover-background" : "warning", + textColor: state.hovered || state.focused ? "default-button-text" : "black", + }) + }, + "danger-button": { include: "form-button", style: state => ({ diff --git a/services/static-webserver/client/source/class/osparc/theme/Decoration.js b/services/static-webserver/client/source/class/osparc/theme/Decoration.js index 7eae08b8f893..a13814214942 100644 --- a/services/static-webserver/client/source/class/osparc/theme/Decoration.js +++ b/services/static-webserver/client/source/class/osparc/theme/Decoration.js @@ -554,6 +554,24 @@ qx.Theme.define("osparc.theme.Decoration", { } }, + // Warning button + "form-button-warning": { + include:"form-button-outlined", + style: { + color: "warning", + width: 1, + style: "solid" + } + }, + "form-button-warning-hover": { + include:"form-button-outlined", + style: { + color: "warning", + width: 1, + style: "solid" + } + }, + // Delete button "form-button-danger": { include:"form-button-outlined", diff --git a/services/static-webserver/client/source/class/osparc/ui/window/Confirmation.js b/services/static-webserver/client/source/class/osparc/ui/window/Confirmation.js index 0fe65ef4f746..f8e423624057 100644 --- a/services/static-webserver/client/source/class/osparc/ui/window/Confirmation.js +++ b/services/static-webserver/client/source/class/osparc/ui/window/Confirmation.js @@ -47,7 +47,7 @@ qx.Class.define("osparc.ui.window.Confirmation", { }, confirmAction: { - check: [null, "create", "delete"], + check: [null, "create", "warning", "delete"], init: null, nullable: true, apply: "__applyConfirmAppearance" @@ -74,7 +74,10 @@ qx.Class.define("osparc.ui.window.Confirmation", { const confBtn = this.__confirmButton; switch (confirmationAction) { case "create": - confBtn.setAppearance("form-button"); + confBtn.setAppearance("strong-button"); + break; + case "warning": + confBtn.setAppearance("warning-button"); break; case "delete": confBtn.setAppearance("danger-button"); From f320f62b80e111050392857b0adacd3741006c27 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 17 Dec 2024 13:23:22 +0100 Subject: [PATCH 18/18] fix TIP --- .../client/source/class/osparc/dashboard/NewStudies.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/NewStudies.js b/services/static-webserver/client/source/class/osparc/dashboard/NewStudies.js index 0e0d92b61b6a..4f1c9c9d736b 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/NewStudies.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/NewStudies.js @@ -171,7 +171,7 @@ qx.Class.define("osparc.dashboard.NewStudies", { const newPlanButton = new osparc.dashboard.GridButtonNew(title, desc); newPlanButton.setCardKey(templateInfo.idToWidget); osparc.utils.Utils.setIdToWidget(newPlanButton, templateInfo.idToWidget); - newPlanButton.addListener("execute", () => newStudyClicked()); + newPlanButton.addListener("tap", () => newStudyClicked()); return newPlanButton; },