Skip to content

Commit edc8956

Browse files
odeimaizpcrespov
authored andcommitted
Feature/Flash Messenger (#286)
* Singleton that pops up logs. Functionality first (Needs to be beautified) * connects to #287 and #167
1 parent 582a631 commit edc8956

File tree

5 files changed

+89
-5
lines changed

5 files changed

+89
-5
lines changed

services/docker-compose.deploy.devel.yml

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ services:
2020
- node.platform.os == linux
2121
- node.role == manager
2222
environment:
23-
- OSPARC_PUBLIC_URL=http://osparc01.itis.ethz.ch:9081
2423
- POSTGRES_ENDPOINT=postgres
2524
- POSTGRES_USER=simcore
2625
- POSTGRES_PASSWORD=simcore

services/docker-compose.deploy.yml

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ services:
2020
- node.platform.os == linux
2121
- node.role == manager
2222
environment:
23-
- OSPARC_PUBLIC_URL=http://osparc01.itis.ethz.ch:9081
2423
- POSTGRES_ENDPOINT=postgres
2524
- POSTGRES_USER=simcore
2625
- POSTGRES_PASSWORD=simcore

services/web/client/source/class/qxapp/auth/Manager.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ qx.Class.define("qxapp.auth.Manager", {
5757
// TODO: validate data against specs???
5858
// TODO: activate tokens!?
5959
this.__loginUser(email, data.token || "fake token");
60-
successCbk.call(context, data.message);
60+
successCbk.call(context, data);
6161
}, this);
6262

6363
this.__bindDefaultFailCallback(request, failCbk, context);
@@ -110,6 +110,7 @@ qx.Class.define("qxapp.auth.Manager", {
110110
} = e.getTarget().getResponse();
111111

112112
// TODO: validate data against specs???
113+
// FIXME: Data is an object
113114
successCbk.call(context, data);
114115
}, this);
115116
},
@@ -126,7 +127,7 @@ qx.Class.define("qxapp.auth.Manager", {
126127
msg = msg + error.errors[i].message + " ";
127128
}
128129
}
129-
130+
// FIXME: Data is an object
130131
failCbk.call(context, msg);
131132
}, this);
132133
}

services/web/client/source/class/qxapp/auth/ui/RegistrationPage.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ qx.Class.define("qxapp.auth.ui.RegistrationPage", {
119119
let manager = qxapp.auth.Manager.getInstance();
120120

121121
let successFun = function(log) {
122-
// TODO: add flash
123122
this.fireDataEvent("done", log.message);
123+
qxapp.component.widget.FlashMessenger.getInstance().log(log);
124124
};
125125

126126
let failFun = function(msg) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
qx.Class.define("qxapp.component.widget.FlashMessenger", {
2+
extend: qx.ui.window.Window,
3+
4+
type: "singleton",
5+
6+
construct: function() {
7+
this.base();
8+
9+
this.set({
10+
appearance: "window-small-cap",
11+
showMinimize: false,
12+
showMaximize: false,
13+
allowMaximize: false,
14+
showStatusbar: false,
15+
resizable: false,
16+
contentPadding: 0,
17+
caption: "Logger",
18+
layout: new qx.ui.layout.VBox()
19+
});
20+
},
21+
22+
members: {
23+
log: function(logMessage) {
24+
const message = logMessage.message;
25+
const level = logMessage.level; // "DEBUG", "INFO", "WARNING", "ERROR"
26+
const logger = logMessage.logger;
27+
28+
let label = new qx.ui.basic.Label(logger + ": " + message).set({
29+
allowGrowX: true,
30+
allowGrowY: true,
31+
alignX: "center",
32+
textAlign: "center",
33+
padding: 5
34+
});
35+
this.add(label);
36+
37+
switch (level) {
38+
case "DEBUG":
39+
label.setBackgroundColor("blue");
40+
label.setTextColor("white");
41+
break;
42+
case "INFO":
43+
label.setBackgroundColor("blue");
44+
label.setTextColor("white");
45+
break;
46+
case "WARNING":
47+
label.setBackgroundColor("yellow");
48+
label.setTextColor("black");
49+
break;
50+
case "ERROR":
51+
label.setBackgroundColor("red");
52+
label.setTextColor("black");
53+
break;
54+
}
55+
56+
if (this.getVisibility() !== "visible") {
57+
this.__toTopCenter();
58+
this.open();
59+
}
60+
61+
const time = 3000;
62+
qx.event.Timer.once(e => {
63+
this.remove(label);
64+
if (this.getChildren().length === 0) {
65+
this.close();
66+
}
67+
}, this, time);
68+
},
69+
70+
__toTopCenter: function() {
71+
const parent = this.getLayoutParent();
72+
if (parent) {
73+
const bounds = parent.getBounds();
74+
if (bounds) {
75+
const hint = this.getSizeHint();
76+
const left = Math.round((bounds.width - hint.width) / 2);
77+
const top = 50;
78+
this.moveTo(left, top);
79+
return;
80+
}
81+
}
82+
this.center();
83+
}
84+
}
85+
});

0 commit comments

Comments
 (0)