Skip to content

Commit faaf530

Browse files
authored
🐛 Fix: Frontend generated logs in App Mode (#4888)
1 parent 8ea0eb2 commit faaf530

File tree

12 files changed

+121
-71
lines changed

12 files changed

+121
-71
lines changed

services/static-webserver/client/source/class/osparc/auth/ui/RegistrationView.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ qx.Class.define("osparc.auth.ui.RegistrationView", {
9494
// buttons
9595
const grp = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));
9696

97-
const submitBtn = this.__submitBtn = new qx.ui.form.Button(this.tr("Submit")).set({
97+
const submitBtn = this.__submitBtn = new osparc.ui.form.FetchButton(this.tr("Submit")).set({
9898
center: true,
9999
appearance: "strong-button"
100100
});
@@ -118,7 +118,7 @@ qx.Class.define("osparc.auth.ui.RegistrationView", {
118118
password: password1.getValue(),
119119
confirm: password2.getValue(),
120120
invitation: invitationToken ? invitationToken : ""
121-
});
121+
}, submitBtn);
122122
}
123123
}
124124
}, this);
@@ -128,7 +128,8 @@ qx.Class.define("osparc.auth.ui.RegistrationView", {
128128
this.add(grp);
129129
},
130130

131-
__submit: function(userData) {
131+
__submit: function(userData, submitButton) {
132+
submitButton.setFetching(true);
132133
osparc.auth.Manager.getInstance().register(userData)
133134
.then(log => {
134135
this.fireDataEvent("done", log.message);
@@ -137,7 +138,8 @@ qx.Class.define("osparc.auth.ui.RegistrationView", {
137138
.catch(err => {
138139
const msg = err.message || this.tr("Cannot register user");
139140
osparc.FlashMessenger.getInstance().logAs(msg, "ERROR");
140-
});
141+
})
142+
.finally(() => submitButton.setFetching(false));
141143
},
142144

143145
_onAppear: function() {

services/static-webserver/client/source/class/osparc/data/Resources.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,15 @@ qx.Class.define("osparc.data.Resources", {
693693
}
694694
}
695695
},
696+
"productMetadata": {
697+
useCache: true,
698+
endpoints: {
699+
get: {
700+
method: "GET",
701+
url: statics.API + "/products/{productName}"
702+
}
703+
}
704+
},
696705
"invitations": {
697706
endpoints: {
698707
post: {

services/static-webserver/client/source/class/osparc/desktop/WorkbenchView.js

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -607,20 +607,7 @@ qx.Class.define("osparc.desktop.WorkbenchView", {
607607
const nodeId = data.nodeId;
608608
const msg = data.msg;
609609
const logLevel = ("level" in data) ? data["level"] : "INFO";
610-
switch (logLevel) {
611-
case "DEBUG":
612-
this.__loggerView.debug(nodeId, msg);
613-
break;
614-
case "WARNING":
615-
this.__loggerView.warn(nodeId, msg);
616-
break;
617-
case "ERROR":
618-
this.__loggerView.error(nodeId, msg);
619-
break;
620-
default:
621-
this.__loggerView.info(nodeId, msg);
622-
break;
623-
}
610+
this.__logsToLogger(nodeId, [msg], logLevel);
624611
}, this);
625612

626613
workbench.addListener("fileRequested", () => {
@@ -633,6 +620,29 @@ qx.Class.define("osparc.desktop.WorkbenchView", {
633620
this.__workbenchUIConnected = true;
634621
},
635622

623+
__logsToLogger: function(nodeId, logs, logLevel) {
624+
// the node logger is mainly used in App Mode
625+
const nodeLogger = this.__getNodeLogger(nodeId);
626+
switch (logLevel) {
627+
case "DEBUG":
628+
this.__loggerView.debugs(nodeId, logs);
629+
nodeLogger.debugs(nodeId, logs);
630+
break;
631+
case "WARNING":
632+
this.__loggerView.warns(nodeId, logs);
633+
nodeLogger.warns(nodeId, logs);
634+
break;
635+
case "ERROR":
636+
this.__loggerView.errors(nodeId, logs);
637+
nodeLogger.errors(nodeId, logs);
638+
break;
639+
default:
640+
this.__loggerView.infos(nodeId, logs);
641+
nodeLogger.infos(nodeId, logs);
642+
break;
643+
}
644+
},
645+
636646
__attachSocketEventHandlers: function() {
637647
// Listen to socket
638648
const socket = osparc.wrapper.WebSocket.getInstance();
@@ -650,24 +660,7 @@ qx.Class.define("osparc.desktop.WorkbenchView", {
650660
const messages = data["messages"];
651661
const logLevelMap = osparc.widget.logger.LoggerView.LOG_LEVEL_MAP;
652662
const logLevel = ("log_level" in data) ? logLevelMap[data["log_level"]] : "INFO";
653-
switch (logLevel) {
654-
case "DEBUG":
655-
this.__loggerView.debugs(nodeId, messages);
656-
break;
657-
case "WARNING":
658-
this.__loggerView.warns(nodeId, messages);
659-
break;
660-
case "ERROR":
661-
this.__loggerView.errors(nodeId, messages);
662-
break;
663-
default:
664-
this.__loggerView.infos(nodeId, messages);
665-
break;
666-
}
667-
const nodeLogger = this.__getNodeLogger(nodeId);
668-
if (nodeLogger) {
669-
nodeLogger.infos(nodeId, messages);
670-
}
663+
this.__logsToLogger(nodeId, messages, logLevel);
671664
}, this);
672665
}
673666
socket.emit(slotName);

services/static-webserver/client/source/class/osparc/desktop/credits/Usage.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ qx.Class.define("osparc.desktop.credits.Usage", {
175175
params.url["walletId"] = walletId.toString();
176176
return osparc.data.Resources.fetch("resourceUsagePerWallet", "getPage", params, undefined, options);
177177
}
178-
return null;
178+
// Usage supports the non wallet enabled products
179+
return osparc.data.Resources.fetch("resourceUsage", "getPage", params, undefined, options);
179180
},
180181

181182
__setData: function(data) {

services/static-webserver/client/source/class/osparc/desktop/credits/UserCenter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ qx.Class.define("osparc.desktop.credits.UserCenter", {
5959
tabViews.add(buyCreditsPage);
6060
}
6161

62-
if (osparc.data.Permissions.getInstance().canDo("usage.all.read")) {
62+
if (this.__walletsEnabled) {
6363
const activityPage = this.__activityPage = this.__getActivityPage();
6464
tabViews.add(activityPage);
6565
}

services/static-webserver/client/source/class/osparc/navigation/UserMenuButton.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,7 @@ qx.Class.define("osparc.navigation.UserMenuButton", {
100100
break;
101101
case "po-center":
102102
control = new qx.ui.menu.Button(this.tr("PO Center"));
103-
control.addListener("execute", () => {
104-
const poCenterWindow = osparc.po.POCenterWindow.openWindow();
105-
poCenterWindow.openInvitations();
106-
}, this);
103+
control.addListener("execute", () => osparc.po.POCenterWindow.openWindow(), this);
107104
this.getMenu().add(control);
108105
break;
109106
case "preferences":

services/static-webserver/client/source/class/osparc/node/UpdateResourceLimitsView.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ qx.Class.define("osparc.node.UpdateResourceLimitsView", {
100100
if (resourceKey === "RAM") {
101101
value = osparc.utils.Utils.bytesToGB(value);
102102
}
103-
const spinner = new qx.ui.form.Spinner(0, value, 200).set({
103+
const spinner = new qx.ui.form.Spinner(0, value, 512).set({
104104
singleStep: 0.1
105105
});
106106
const nf = new qx.util.format.NumberFormat();

services/static-webserver/client/source/class/osparc/po/POCenter.js

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,45 +27,46 @@ qx.Class.define("osparc.po.POCenter", {
2727
padding: 10
2828
});
2929

30-
const tabViews = this.__tabsView = new qx.ui.tabview.TabView().set({
30+
const tabViews = new qx.ui.tabview.TabView().set({
3131
barPosition: "left",
3232
contentPadding: 0
3333
});
3434
tabViews.getChildControl("bar").add(osparc.desktop.credits.UserCenter.createMiniProfileView());
3535

36-
const invitationsPage = this.__invitationsPage = this.__getInvitationsPage();
36+
const invitationsPage = this.__getInvitationsPage();
3737
tabViews.add(invitationsPage);
3838

39+
const productPage = this.__getProductPage();
40+
tabViews.add(productPage);
41+
3942
this._add(tabViews);
4043
},
4144

4245
members: {
43-
__tabsView: null,
44-
__invitationsPage: null,
45-
4646
__getInvitationsPage: function() {
4747
const title = this.tr("Invitations");
4848
const iconSrc = "@FontAwesome5Solid/envelope/22";
4949
const page = new osparc.desktop.preferences.pages.BasePage(title, iconSrc);
5050
page.showLabelOnTab();
51-
const overview = new osparc.po.Invitations();
52-
overview.set({
51+
const invitations = new osparc.po.Invitations();
52+
invitations.set({
5353
margin: 10
5454
});
55-
page.add(overview);
55+
page.add(invitations);
5656
return page;
5757
},
5858

59-
__openPage: function(page) {
60-
if (page) {
61-
this.__tabsView.setSelection([page]);
62-
}
63-
},
64-
65-
openInvitations: function() {
66-
if (this.__invitationsPage) {
67-
this.__openPage(this.__invitationsPage);
68-
}
59+
__getProductPage: function() {
60+
const title = this.tr("Product Info");
61+
const iconSrc = "@FontAwesome5Solid/info/22";
62+
const page = new osparc.desktop.preferences.pages.BasePage(title, iconSrc);
63+
page.showLabelOnTab();
64+
const productInfo = new osparc.po.ProductInfo();
65+
productInfo.set({
66+
margin: 10
67+
});
68+
page.add(productInfo);
69+
return page;
6970
}
7071
}
7172
});

services/static-webserver/client/source/class/osparc/po/POCenterWindow.js

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ qx.Class.define("osparc.po.POCenterWindow", {
3535
appearance: "service-window"
3636
});
3737

38-
const poCenter = this.__poCenter = new osparc.po.POCenter();
38+
const poCenter = new osparc.po.POCenter();
3939
this.add(poCenter);
4040
},
4141

@@ -46,13 +46,5 @@ qx.Class.define("osparc.po.POCenterWindow", {
4646
accountWindow.open();
4747
return accountWindow;
4848
}
49-
},
50-
51-
members: {
52-
__poCenter: null,
53-
54-
openInvitations: function() {
55-
this.__poCenter.openInvitations();
56-
}
5749
}
5850
});
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/* ************************************************************************
2+
3+
osparc - the simcore frontend
4+
5+
https://osparc.io
6+
7+
Copyright:
8+
2023 IT'IS Foundation, https://itis.swiss
9+
10+
License:
11+
MIT: https://opensource.org/licenses/MIT
12+
13+
Authors:
14+
* Odei Maiz (odeimaiz)
15+
16+
************************************************************************ */
17+
18+
qx.Class.define("osparc.po.ProductInfo", {
19+
extend: qx.ui.core.Widget,
20+
21+
construct: function() {
22+
this.base(arguments);
23+
24+
this._setLayout(new qx.ui.layout.VBox(10));
25+
26+
this.__fetchInfo();
27+
},
28+
29+
members: {
30+
__fetchInfo: function() {
31+
const params = {
32+
url: {
33+
productName: osparc.product.Utils.getProductName()
34+
}
35+
};
36+
osparc.data.Resources.fetch("productMetadata", "get", params)
37+
.then(respData => {
38+
const invitationRespViewer = new osparc.ui.basic.JsonTreeWidget(respData, "product-metadata");
39+
const container = new qx.ui.container.Scroll().set({
40+
maxHeight: 500
41+
});
42+
container.add(invitationRespViewer);
43+
this._add(container, {
44+
flex: 1
45+
});
46+
});
47+
}
48+
}
49+
});

0 commit comments

Comments
 (0)