Skip to content

Commit c7fdefe

Browse files
odeimaizpcrespov
authored andcommitted
✨ Frontend: Announcements (#4489)
1 parent 0b9b0c3 commit c7fdefe

File tree

12 files changed

+394
-203
lines changed

12 files changed

+394
-203
lines changed

services/static-webserver/client/source/class/osparc/AnnouncementTracker.js

Lines changed: 0 additions & 154 deletions
This file was deleted.
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
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.AnnouncementsTracker", {
19+
extend: qx.core.Object,
20+
type: "singleton",
21+
22+
statics: {
23+
CHECK_INTERVAL: 60*60*1000 // Check every 60'
24+
},
25+
26+
members: {
27+
__checkInternval: null,
28+
__announcements: null,
29+
30+
startTracker: function() {
31+
const checkAnnouncements = () => {
32+
osparc.data.Resources.get("announcements")
33+
.then(announcements => {
34+
if (announcements && announcements.length) {
35+
this.__setAnnouncements(announcements);
36+
} else {
37+
this.__setAnnouncements(null);
38+
}
39+
})
40+
.catch(err => console.error(err));
41+
};
42+
checkAnnouncements();
43+
this.__checkInternval = setInterval(checkAnnouncements, this.self().CHECK_INTERVAL);
44+
},
45+
46+
stopTracker: function() {
47+
if (this.__checkInternval) {
48+
clearInterval(this.__checkInternval);
49+
}
50+
},
51+
52+
__setAnnouncements: function(announcementsData) {
53+
this.__announcements = {};
54+
if (announcementsData) {
55+
announcementsData.forEach(announcementData => {
56+
const announcement = new osparc.component.announcement.Announcement(announcementData);
57+
osparc.component.announcement.AnnouncementUIFactory.getInstance().setAnnouncement(announcement);
58+
});
59+
}
60+
}
61+
}
62+
});

services/static-webserver/client/source/class/osparc/Application.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ qx.Class.define("osparc.Application", {
6767
const threejs = osparc.wrapper.Three.getInstance();
6868
threejs.init();
6969

70+
const announcementsTracker = osparc.AnnouncementsTracker.getInstance();
71+
announcementsTracker.startTracker();
72+
7073
const webSocket = osparc.wrapper.WebSocket.getInstance();
7174
webSocket.addListener("connect", () => osparc.io.WatchDog.getInstance().setOnline(true));
7275
webSocket.addListener("disconnect", () => osparc.io.WatchDog.getInstance().setOnline(false));
@@ -433,6 +436,7 @@ qx.Class.define("osparc.Application", {
433436

434437
osparc.data.PollTasks.getInstance().removeTasks();
435438
osparc.MaintenanceTracker.getInstance().stopTracker();
439+
osparc.AnnouncementsTracker.getInstance().stopTracker();
436440
osparc.auth.Manager.getInstance().logout();
437441
if (this.__mainPage) {
438442
this.__mainPage.closeEditor();

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,6 @@ qx.Class.define("osparc.auth.LoginPageS4L", {
6868
const image = this._getLogoWPlatform();
6969
loginLayout.add(image);
7070

71-
const announcementTracker = osparc.AnnouncementTracker.getInstance();
72-
announcementTracker.startTracker();
73-
const loginAnnouncement = announcementTracker.getLoginAnnouncement();
74-
if (loginAnnouncement) {
75-
loginLayout.add(loginAnnouncement);
76-
}
77-
7871
const pages = this._getLoginStack();
7972
loginLayout.add(pages);
8073

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ qx.Class.define("osparc.auth.ui.LoginView", {
5555
__loginBtn: null,
5656

5757
_buildPage: function() {
58+
const announcementUIFactory = osparc.component.announcement.AnnouncementUIFactory.getInstance();
59+
if (announcementUIFactory.hasLoginAnnouncement()) {
60+
this.add(announcementUIFactory.createLoginAnnouncement());
61+
}
62+
5863
this.__form = new qx.ui.form.Form();
5964

6065
const email = new qx.ui.form.TextField().set({
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/* ************************************************************************
2+
3+
osparc - the simcore frontend
4+
5+
https://osparc.io
6+
7+
Copyright:
8+
2018 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.component.announcement.Announcement", {
19+
extend: qx.core.Object,
20+
21+
construct: function(announcementData) {
22+
this.base(arguments);
23+
24+
this.set({
25+
id: announcementData.id,
26+
products: announcementData.products,
27+
start: new Date(announcementData.start),
28+
end: new Date(announcementData.end),
29+
title: announcementData.title,
30+
description: announcementData.description,
31+
link: announcementData.link,
32+
widgets: announcementData.widgets
33+
});
34+
},
35+
36+
properties: {
37+
id: {
38+
check: "String",
39+
init: null,
40+
nullable: false
41+
},
42+
43+
products: {
44+
check: "Array",
45+
init: [],
46+
nullable: false
47+
},
48+
49+
start: {
50+
check: "Date",
51+
init: null,
52+
nullable: false
53+
},
54+
55+
end: {
56+
check: "Date",
57+
init: null,
58+
nullable: false
59+
},
60+
61+
title: {
62+
check: "String",
63+
init: null,
64+
nullable: true
65+
},
66+
67+
description: {
68+
check: "String",
69+
init: null,
70+
nullable: true
71+
},
72+
73+
link: {
74+
check: "String",
75+
init: null,
76+
nullable: true
77+
},
78+
79+
widgets: {
80+
check: "Array",
81+
init: [],
82+
nullable: true
83+
}
84+
}
85+
});

0 commit comments

Comments
 (0)