diff --git a/services/static-webserver/client/source/class/osparc/desktop/account/ProfilePage.js b/services/static-webserver/client/source/class/osparc/desktop/account/ProfilePage.js
index 9378f0c279d1..75ef9650f604 100644
--- a/services/static-webserver/client/source/class/osparc/desktop/account/ProfilePage.js
+++ b/services/static-webserver/client/source/class/osparc/desktop/account/ProfilePage.js
@@ -225,7 +225,7 @@ qx.Class.define("osparc.desktop.account.ProfilePage", {
maxWidth: 500
});
- const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr("For Privacy reasons, you might want to hide your Full Name and/or the email to other users"));
+ const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr("For Privacy reasons, you might want to hide your First and Last Names and/or the Email to other users"));
box.add(label);
const hideFullname = new qx.ui.form.CheckBox().set({
@@ -237,7 +237,7 @@ qx.Class.define("osparc.desktop.account.ProfilePage", {
const form = new qx.ui.form.Form();
form.add(hideFullname, "Hide Full Name", null, "hideFullname");
- form.add(hideEmail, "Hide email", null, "hideEmail");
+ form.add(hideEmail, "Hide Email", null, "hideEmail");
box.add(new qx.ui.form.renderer.Single(form));
// binding to a model
diff --git a/services/static-webserver/client/source/class/osparc/desktop/preferences/pages/ConfirmationsPage.js b/services/static-webserver/client/source/class/osparc/desktop/preferences/pages/ConfirmationsPage.js
index 7b9dc943e63d..c883c6bd37f0 100644
--- a/services/static-webserver/client/source/class/osparc/desktop/preferences/pages/ConfirmationsPage.js
+++ b/services/static-webserver/client/source/class/osparc/desktop/preferences/pages/ConfirmationsPage.js
@@ -114,7 +114,7 @@ qx.Class.define("osparc.desktop.preferences.pages.ConfirmationsPage", {
cbConfirmStopNode.addListener("changeValue", e => osparc.Preferences.patchPreferenceField("confirmStopNode", cbConfirmStopNode, e.getData()));
box.add(cbConfirmStopNode);
- const cbSnapNodeToGrid = new qx.ui.form.CheckBox(this.tr("Snap Node to grid"));
+ const cbSnapNodeToGrid = new qx.ui.form.CheckBox(this.tr("Snap Node to Grid"));
preferencesSettings.bind("snapNodeToGrid", cbSnapNodeToGrid, "value");
cbSnapNodeToGrid.addListener("changeValue", e => osparc.Preferences.patchPreferenceField("snapNodeToGrid", cbSnapNodeToGrid, e.getData()));
box.add(cbSnapNodeToGrid);
diff --git a/services/static-webserver/client/source/class/osparc/desktop/preferences/pages/GeneralPage.js b/services/static-webserver/client/source/class/osparc/desktop/preferences/pages/GeneralPage.js
index 70095507e49d..6f02c5a65b96 100644
--- a/services/static-webserver/client/source/class/osparc/desktop/preferences/pages/GeneralPage.js
+++ b/services/static-webserver/client/source/class/osparc/desktop/preferences/pages/GeneralPage.js
@@ -137,7 +137,7 @@ qx.Class.define("osparc.desktop.preferences.pages.GeneralPage", {
__addLowDiskSpaceSetting: function() {
const box = osparc.ui.window.TabbedView.createSectionBox(this.tr("Low Disk Space Threshold"));
- const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr("Set the warning Threshold for low Disk Space availability."), "text-13-italic");
+ const label = osparc.ui.window.TabbedView.createHelpLabel(this.tr("Set the warning Threshold for Low Disk Space availability"), "text-13-italic");
box.add(label);
const form = new qx.ui.form.Form();
const diskUsageSpinner = new qx.ui.form.Spinner().set({
diff --git a/services/static-webserver/client/source/class/osparc/product/AboutProduct.js b/services/static-webserver/client/source/class/osparc/product/AboutProduct.js
index 507c8c9ae7c1..a9f8328a3492 100644
--- a/services/static-webserver/client/source/class/osparc/product/AboutProduct.js
+++ b/services/static-webserver/client/source/class/osparc/product/AboutProduct.js
@@ -49,10 +49,8 @@ qx.Class.define("osparc.product.AboutProduct", {
__buildLayout: function() {
switch (osparc.product.Utils.getProductName()) {
case "s4l":
- this.__buildS4LLayout();
- break;
case "s4lacad":
- this.__buildS4LAcademicLayout();
+ this.__buildS4LLayout();
break;
case "s4llite":
this.__buildS4LLiteLayout();
@@ -73,11 +71,11 @@ qx.Class.define("osparc.product.AboutProduct", {
__buildS4LLayout: function() {
const licenseUrl = osparc.store.Support.getLicenseURL();
const text = this.tr(`
- sim4life.io is a native implementation of the most advanced simulation platform, Sim4Life, in the cloud. \
+ Sim4Life.web is a native implementation of the most advanced simulation platform, Sim4Life, in the cloud. \
The platform empowers users to simulate, analyze, and predict complex, multifaceted, and dynamic biological interactions within the full anatomical complexity of the human body. \
It provides the ability to set up and run complex simulations directly within any browser, utilizing cloud technology.
- sim4life.io makes use of technologies developed by our research partner for the o2S2PARC platform, the IT’IS Foundation, and co-funded by the U.S. National Institutes of Health’s SPARC initiative.\
+ Sim4Life.web makes use of technologies developed by our research partner for the o2S2PARC platform, the IT’IS Foundation, and co-funded by the U.S. National Institutes of Health’s SPARC initiative.\
For more information about Sim4Life, please visit ${osparc.utils.Utils.createHTMLLink("sim4life.swiss", "https://sim4life.swiss/")}.
@@ -90,26 +88,6 @@ qx.Class.define("osparc.product.AboutProduct", {
this.add(label);
},
- __buildS4LAcademicLayout: function() {
- const licenseUrl = osparc.store.Support.getLicenseURL();
- const text = this.tr(`
- sim4life.science is a native implementation of the most advanced simulation platform, Sim4Life, in the cloud. \
- The platform empowers users to simulate, analyze, and predict complex, multifaceted, and dynamic biological interactions within the full anatomical complexity of the human body. \
- It provides the ability to set up and run complex simulations directly within any browser, utilizing cloud technology.
-
- sim4life.science makes use of technologies developed by our research partner for the o2S2PARC platform, the IT’IS Foundation, and co-funded by the U.S. National Institutes of Health’s SPARC initiative.\
-
- For more information about Sim4Life, please visit ${osparc.utils.Utils.createHTMLLink("sim4life.swiss", "href='https://sim4life.swiss/")}.
-
- To review license agreements, click ${osparc.utils.Utils.createHTMLLink("here", licenseUrl)}.
-
- Send us an email ${this.__getMailTo()}
- `);
-
- const label = osparc.product.quickStart.Utils.createLabel(text);
- this.add(label);
- },
-
__buildS4LLiteLayout: function() {
// https://zurichmedtech.github.io/s4l-lite-manual/#/docs/what_is_s4l_lite
const introText = "Sim4Life.lite is a powerful web-based simulation platform that allows you to model and analyze real-world phenomena and to design complex technical devices in a validated environment. With its intuitive interface and advanced tools, Sim4Life.lite makes it easy to develop your simulation project, wherever you are.";
diff --git a/services/static-webserver/client/source/class/osparc/store/LicensedItems.js b/services/static-webserver/client/source/class/osparc/store/LicensedItems.js
index 41e17ba41df5..5fc436bfdb50 100644
--- a/services/static-webserver/client/source/class/osparc/store/LicensedItems.js
+++ b/services/static-webserver/client/source/class/osparc/store/LicensedItems.js
@@ -22,8 +22,7 @@ qx.Class.define("osparc.store.LicensedItems", {
construct: function() {
this.base(arguments);
- this.__licensedItems = null;
- this.__cachedLicensedItems = {};
+ this.__licensedItems = {};
},
statics: {
@@ -52,23 +51,22 @@ qx.Class.define("osparc.store.LicensedItems", {
members: {
__licensedItems: null,
- __cachedLicensedItems: null,
getLicensedItems: function() {
- if (this.__cachedLicensedItems.length) {
- return new Promise(resolve => resolve(this.__cachedLicensedItems));
+ if (Object.keys(this.__licensedItems).length) {
+ return new Promise(resolve => resolve(this.__licensedItems));
}
return osparc.data.Resources.getInstance().getAllPages("licensedItems")
.then(licensedItemsData => {
licensedItemsData.forEach(licensedItemData => this.__addLicensedItemsToCache(licensedItemData));
- return this.__cachedLicensedItems;
+ return this.__licensedItems;
});
},
__addLicensedItemsToCache: function(licensedItemData) {
const licensedItem = new osparc.data.model.LicensedItem(licensedItemData);
- this.__cachedLicensedItems[licensedItem.getLicensedItemId()] = licensedItem;
+ this.__licensedItems[licensedItem.getLicensedItemId()] = licensedItem;
},
getPurchasedLicensedItems: function(walletId, urlParams, options = {}) {
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 32df2d05c515..8e93f4ec75c8 100644
--- a/services/static-webserver/client/source/class/osparc/vipMarket/Market.js
+++ b/services/static-webserver/client/source/class/osparc/vipMarket/Market.js
@@ -65,7 +65,7 @@ qx.Class.define("osparc.vipMarket.Market", {
licensedItemsStore.getLicensedItems(),
licensedItemsStore.getPurchasedLicensedItems(walletId),
])
- .then(values => {
+ .then(async values => {
const licensedItems = values[0];
const purchasedItems = values[1];
osparc.data.model.LicensedItem.addSeatsFromPurchases(licensedItems, purchasedItems);
@@ -104,6 +104,8 @@ qx.Class.define("osparc.vipMarket.Market", {
}
});
+ await this.__addFreeItems();
+
categories.forEach(category => {
this.__buildViPMarketPage(category, category["items"]);
});
@@ -111,14 +113,12 @@ qx.Class.define("osparc.vipMarket.Market", {
if (openCategory) {
this.__openCategory(openCategory);
}
-
- this.__addFreeItems();
});
},
__addFreeItems: function() {
const licensedItemsStore = osparc.store.LicensedItems.getInstance();
- licensedItemsStore.getLicensedItems()
+ return licensedItemsStore.getLicensedItems()
.then(async licensedItems => {
this.__freeItems = [];
const licensedItemsArr = Object.values(licensedItems);