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 5fbc49b32f9..ac1e0967dee 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js @@ -100,6 +100,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { }, members: { + __dontShowTutorial: null, __currentRequest: null, __workspacesList: null, __foldersList: null, @@ -240,7 +241,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { const quickStartInfo = osparc.product.quickStart.Utils.getQuickStart(); if (quickStartInfo) { const dontShow = osparc.utils.Utils.localCache.getLocalStorageItem(quickStartInfo.localStorageStr); - if (dontShow === "true") { + if (dontShow === "true" || this.__dontShowTutorial) { return; } const nStudies = "_meta" in resp ? resp["_meta"]["total"] : 0; @@ -252,6 +253,9 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { const quickStartWindow = quickStartInfo.tutorial(); quickStartWindow.center(); quickStartWindow.open(); + quickStartWindow.addListener("close", () => { + this.__dontShowTutorial = true; + }, this); } } }) diff --git a/services/static-webserver/client/source/class/osparc/navigation/NavigationBar.js b/services/static-webserver/client/source/class/osparc/navigation/NavigationBar.js index b61b6f4e110..93f9af91ce9 100644 --- a/services/static-webserver/client/source/class/osparc/navigation/NavigationBar.js +++ b/services/static-webserver/client/source/class/osparc/navigation/NavigationBar.js @@ -133,6 +133,9 @@ qx.Class.define("osparc.navigation.NavigationBar", { this.getChildControl("read-only-info"); // right-items + if (osparc.product.Utils.isProduct("tiplite")) { + this.getChildControl("tip-lite-button"); + } this.getChildControl("tasks-button"); this.getChildControl("notifications-button"); this.getChildControl("expiration-icon"); @@ -228,16 +231,14 @@ qx.Class.define("osparc.navigation.NavigationBar", { this.getChildControl("center-items").add(control); break; } - case "credits-menu-button": { - const currentUsage = new osparc.desktop.credits.CurrentUsage(); - control = new osparc.navigation.CreditsMenuButton().set({ - appearance: "fab-button", - currentUsage, - maxHeight: this.self().HEIGHT + case "tip-lite-button": + control = new qx.ui.form.Button(this.tr("Access TIP")).set({ + marginRight: 30, + ...this.self().BUTTON_OPTIONS, }); + control.addListener("execute", () => osparc.product.TIPTeaser.getInstance().open()); this.getChildControl("right-items").add(control); break; - } case "credits-button": control = new osparc.desktop.credits.CreditsIndicatorButton(); this.getChildControl("right-items").add(control); diff --git a/services/static-webserver/client/source/class/osparc/product/TIPTeaser.js b/services/static-webserver/client/source/class/osparc/product/TIPTeaser.js new file mode 100644 index 00000000000..aac97d48eeb --- /dev/null +++ b/services/static-webserver/client/source/class/osparc/product/TIPTeaser.js @@ -0,0 +1,80 @@ +/* ************************************************************************ + + 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.Class.define("osparc.product.TIPTeaser", { + extend: osparc.ui.window.Window, + type: "singleton", + + construct: function() { + this.base(arguments, this.tr("Access TIP")); + + this.set({ + layout: new qx.ui.layout.VBox(10), + width: this.self().WIDTH, + contentPadding: this.self().PADDING, + showMaximize: false, + showMinimize: false, + resizable: true, + centerOnAppear: true, + clickAwayClose: true, + modal: true + }); + + this.getChildControl("teaser-text"); + }, + + statics: { + WIDTH: 500, + PADDING: 15 + }, + + members: { + _createChildControlImpl: function(id) { + let control; + switch (id) { + case "teaser-text": { + const link1 = osparc.utils.Utils.createHTMLLink("Request Full TIP Access", "https://tip.science/"); + const link2 = osparc.utils.Utils.createHTMLLink("Learn More About EAP", "https://temporalinterference.com/"); + const text = this.tr(` + Unlock the Full Potential of TI Research!
+
+ Are you part of the TI Solutions Early Adopter Program (EAP)?
+
+ If yes, you have free access to our complete TIP platform with advanced features for TI planning and simulations. Click here to request access.
+
+ Not an EAP member yet? Join our cutting-edge research community:
+ • Use our investigational TIBS-R devices in your projects
+ • Contribute to advancing TI knowledge
+ • Shape the future of neurostimulation technology
+
+ Click here to learn more about EAP and apply today!
+
+ ${link1}   ${link2} + `); + control = new qx.ui.basic.Label(text).set({ + font: "text-14", + wrap: true, + rich: true, + }); + this.add(control); + break; + } + } + return control || this.base(arguments, id); + }, + } +}); diff --git a/services/static-webserver/client/source/class/osparc/product/quickStart/tis/S4LPostPro.js b/services/static-webserver/client/source/class/osparc/product/quickStart/tis/S4LPostPro.js index 213759c9654..bfff8f37e26 100644 --- a/services/static-webserver/client/source/class/osparc/product/quickStart/tis/S4LPostPro.js +++ b/services/static-webserver/client/source/class/osparc/product/quickStart/tis/S4LPostPro.js @@ -19,12 +19,19 @@ qx.Class.define("osparc.product.quickStart.tis.S4LPostPro", { extend: osparc.product.quickStart.SlideBase, construct: function() { - const title = this.tr("Sim4Life Post Processing"); + let title = ""; + if (osparc.product.Utils.isProduct("tiplite")) { + title += "" + this.tr("(Not available in TIP lite)") + "

"; + } + title += this.tr("Sim4Life Post Processing"); this.base(arguments, title); }, members: { _populateCard: function() { + if (osparc.product.Utils.isProduct("tiplite")) { + this.setEnabled(false); + } const text1 = this.tr("\ Finally, and optionally, exposure conditions-of-interest can be visualized and analyzed freely, using the web-version of the \ Sim4Life (ZMT Zurich MedTech AG) computational life sciences platform.\