diff --git a/services/static-webserver/client/source/class/osparc/dashboard/CardBase.js b/services/static-webserver/client/source/class/osparc/dashboard/CardBase.js
index 1ca9f2d6da6a..9cefd0c9affa 100644
--- a/services/static-webserver/client/source/class/osparc/dashboard/CardBase.js
+++ b/services/static-webserver/client/source/class/osparc/dashboard/CardBase.js
@@ -405,7 +405,7 @@ qx.Class.define("osparc.dashboard.CardBase", {
services: {
check: "Array",
init: true,
- nullable: false,
+ nullable: true,
apply: "__applyServices",
event: "changeServices",
},
@@ -567,7 +567,11 @@ qx.Class.define("osparc.dashboard.CardBase", {
resourceData["services"] = services;
this.setServices(services);
})
- .catch(err => console.error(err));
+ .catch(err => {
+ resourceData["services"] = null;
+ this.setServices(null);
+ console.error(err);
+ });
osparc.study.Utils.guessIcon(resourceData)
.then(iconSource => this.setIcon(iconSource));
@@ -688,27 +692,38 @@ qx.Class.define("osparc.dashboard.CardBase", {
},
__applyServices: function(services) {
- this.setEmptyWorkbench(services.length === 0);
-
- // Updatable study
- if (osparc.study.Utils.anyServiceRetired(services)) {
- this.setUpdatable("retired");
- } else if (osparc.study.Utils.anyServiceDeprecated(services)) {
- this.setUpdatable("deprecated");
- } else if (osparc.study.Utils.anyServiceUpdatable(services)) {
- this.setUpdatable("updatable");
- }
-
- // Block card
- const cantReadServices = osparc.study.Utils.getCantReadServices(services);
- if (cantReadServices.length) {
+ const unknownServices = cantReadServices => {
+ // Block card
this.setBlocked("UNKNOWN_SERVICES");
const image = "@FontAwesome5Solid/ban/";
- let toolTipText = this.tr("Inaccessible service(s):");
- cantReadServices.forEach(unSrv => {
- toolTipText += "
" + unSrv.key + ":" + osparc.service.Utils.extractVersionDisplay(unSrv.release);
- });
+ let toolTipText = this.tr("Unknown service(s)");
+ if (cantReadServices && cantReadServices.length) {
+ toolTipText = this.tr("Inaccessible service(s)");
+ cantReadServices.forEach(unSrv => {
+ toolTipText += "
" + unSrv.key + ":" + osparc.service.Utils.extractVersionDisplay(unSrv.release);
+ });
+ }
this.__showBlockedCard(image, toolTipText);
+ };
+
+ if (services) {
+ this.setEmptyWorkbench(services.length === 0);
+
+ // Updatable study
+ if (osparc.study.Utils.anyServiceRetired(services)) {
+ this.setUpdatable("retired");
+ } else if (osparc.study.Utils.anyServiceDeprecated(services)) {
+ this.setUpdatable("deprecated");
+ } else if (osparc.study.Utils.anyServiceUpdatable(services)) {
+ this.setUpdatable("updatable");
+ }
+
+ const cantReadServices = osparc.study.Utils.getCantReadServices(services);
+ if (cantReadServices.length) {
+ unknownServices(cantReadServices);
+ }
+ } else {
+ unknownServices();
}
this.evaluateMenuButtons();
diff --git a/services/static-webserver/client/source/class/osparc/dashboard/DataBrowser.js b/services/static-webserver/client/source/class/osparc/dashboard/DataBrowser.js
index f109994119c2..024cca2100a1 100644
--- a/services/static-webserver/client/source/class/osparc/dashboard/DataBrowser.js
+++ b/services/static-webserver/client/source/class/osparc/dashboard/DataBrowser.js
@@ -43,7 +43,9 @@ qx.Class.define("osparc.dashboard.DataBrowser", {
let control;
switch (id) {
case "tree-folder-view":
- control = new osparc.file.TreeFolderView();
+ control = new osparc.file.TreeFolderView().set({
+ paddingBottom: 15,
+ });
this._addToLayout(control, {
flex: 1
});
diff --git a/services/static-webserver/client/source/class/osparc/dashboard/ResourceDetails.js b/services/static-webserver/client/source/class/osparc/dashboard/ResourceDetails.js
index 2f9454212e38..df7146df45dc 100644
--- a/services/static-webserver/client/source/class/osparc/dashboard/ResourceDetails.js
+++ b/services/static-webserver/client/source/class/osparc/dashboard/ResourceDetails.js
@@ -804,7 +804,7 @@ qx.Class.define("osparc.dashboard.ResourceDetails", {
__getCreateTemplatePage: function() {
if (
!osparc.utils.Resources.isStudy(this.__resourceData) ||
- osparc.product.Utils.showTemplates()
+ !osparc.product.Utils.showTemplates()
) {
return null;
}
diff --git a/services/static-webserver/client/source/class/osparc/study/Utils.js b/services/static-webserver/client/source/class/osparc/study/Utils.js
index 35902e6d4aa7..51953df991db 100644
--- a/services/static-webserver/client/source/class/osparc/study/Utils.js
+++ b/services/static-webserver/client/source/class/osparc/study/Utils.js
@@ -355,7 +355,9 @@ qx.Class.define("osparc.study.Utils", {
},
__getBlockedState: function(studyData) {
- if (studyData["services"]) {
+ if (studyData["services"] === null) {
+ return "UNKNOWN_SERVICES";
+ } else if (studyData["services"]) {
const cantReadServices = osparc.study.Utils.getCantReadServices(studyData["services"]);
const inaccessibleServices = osparc.store.Services.getInaccessibleServices(studyData["workbench"]);
if (cantReadServices.length || inaccessibleServices.length) {