From 5bfec5c38bdc1c00baafc05c842bc71e399937aa Mon Sep 17 00:00:00 2001 From: Odei Maiz <33152403+odeimaiz@users.noreply.github.com> Date: Fri, 11 Feb 2022 11:35:03 +0100 Subject: [PATCH] Enable/disable Export and Duplicate (#2820) --- .../class/osparc/dashboard/StudyBrowser.js | 21 +++++-- .../class/osparc/utils/DisabledPlugins.js | 55 +++++++++++++++++++ 2 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 services/web/client/source/class/osparc/utils/DisabledPlugins.js diff --git a/services/web/client/source/class/osparc/dashboard/StudyBrowser.js b/services/web/client/source/class/osparc/dashboard/StudyBrowser.js index 4f46880aa93..d41b9738fa2 100644 --- a/services/web/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/web/client/source/class/osparc/dashboard/StudyBrowser.js @@ -435,7 +435,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { const renameStudyButton = this.__getRenameStudyMenuButton(studyData); menu.add(renameStudyButton); - const duplicateStudyButton = this.__getDuplicateStudyMenuButton(studyData); + const duplicateStudyButton = this.__getDuplicateMenuButton(studyData); menu.add(duplicateStudyButton); const exportButton = this.__getExportMenuButton(studyData); @@ -497,17 +497,26 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { }); }, - __getDuplicateStudyMenuButton: function(studyData) { - const duplicateStudyButton = new qx.ui.menu.Button(this.tr("Duplicate")); - osparc.utils.Utils.setIdToWidget(duplicateStudyButton, "duplicateStudy"); - duplicateStudyButton.addListener("execute", () => { + __getDuplicateMenuButton: function(studyData) { + const duplicateButton = new qx.ui.menu.Button(this.tr("Duplicate")); + duplicateButton.exclude(); + osparc.utils.DisabledPlugins.isDuplicateDisabled() + .then(isDisabled => { + duplicateButton.setVisibility(isDisabled ? "excluded" : "visible"); + }); + duplicateButton.addListener("execute", () => { this.__duplicateStudy(studyData); }, this); - return duplicateStudyButton; + return duplicateButton; }, __getExportMenuButton: function(studyData) { const exportButton = new qx.ui.menu.Button(this.tr("Export")); + exportButton.exclude(); + osparc.utils.DisabledPlugins.isExportDisabled() + .then(isDisabled => { + exportButton.setVisibility(isDisabled ? "excluded" : "visible"); + }); exportButton.addListener("execute", () => { this.__exportStudy(studyData); }, this); diff --git a/services/web/client/source/class/osparc/utils/DisabledPlugins.js b/services/web/client/source/class/osparc/utils/DisabledPlugins.js new file mode 100644 index 00000000000..0272ec48411 --- /dev/null +++ b/services/web/client/source/class/osparc/utils/DisabledPlugins.js @@ -0,0 +1,55 @@ +/* ************************************************************************ + + osparc - the simcore frontend + + https://osparc.io + + Copyright: + 2022 IT'IS Foundation, https://itis.swiss + + License: + MIT: https://opensource.org/licenses/MIT + + Authors: + * Odei Maiz (odeimaiz) + +************************************************************************ */ + +/** + * Collection of methods for studies + */ + +qx.Class.define("osparc.utils.DisabledPlugins", { + type: "static", + + statics: { + EXPORT: "WEBSERVER_EXPORTER", + DUPLICATE: "WEBSERVER_EXPORTER", + SCICRUNCH: "WEBSERVER_SCICRUNCH", + + isExportDisabled: function() { + return this.self().isPluginDisabled(this.self().EXPORT); + }, + + isDuplicateDisabled: function() { + return this.self().isPluginDisabled(this.self().EXPORT); + }, + + isScicrunchDisabled: function() { + return this.self().isPluginDisabled(this.self().SCICRUNCH); + }, + + isPluginDisabled: function(key) { + return new Promise((resolve, reject) => { + osparc.data.Resources.get("statics") + .then(statics => { + if ("pluginsDisabled" in statics) { + resolve(statics["pluginsDisabled"].includes(key)); + } + resolve(false); + }) + .catch(err => reject(err)); + }); + } + } +});