Skip to content

Commit 55be1a7

Browse files
authored
🎨 Roles update (#4968)
1 parent 5a1d735 commit 55be1a7

File tree

11 files changed

+158
-106
lines changed

11 files changed

+158
-106
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ node_modules/
110110
# IDEs config (except templates)
111111
.vscode/*
112112
!.vscode/*.template.json
113+
.idea/
113114

114115
# manual overrides
115116
services/docker-compose.override.yml

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

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@ qx.Class.define("osparc.data.Roles", {
2323
ORG: {
2424
0: {
2525
id: "noRead",
26-
label: qx.locale.Manager.tr("User"),
27-
longLabel: qx.locale.Manager.tr("User: no Read access"),
26+
label: qx.locale.Manager.tr("Restricted Member"),
27+
longLabel: qx.locale.Manager.tr("Restricted user: no Read access"),
2828
canDo: [
2929
qx.locale.Manager.tr("- can access content shared within the Organization")
3030
]
3131
},
3232
1: {
3333
id: "read",
3434
label: qx.locale.Manager.tr("Member"),
35-
longLabel: qx.locale.Manager.tr("Member: Read access"),
35+
longLabel: qx.locale.Manager.tr("User: Read access"),
3636
canDo: [
37-
qx.locale.Manager.tr("- can See other members"),
38-
qx.locale.Manager.tr("- can Share with other members")
37+
qx.locale.Manager.tr("- can see other users"),
38+
qx.locale.Manager.tr("- can share with other users")
3939
]
4040
},
4141
2: {
@@ -58,22 +58,23 @@ qx.Class.define("osparc.data.Roles", {
5858
}
5959
},
6060

61-
// study, templates, services
62-
RESOURCE: {
61+
// study & templates
62+
STUDY: {
6363
1: {
6464
id: "read",
65-
label: qx.locale.Manager.tr("Viewer"),
66-
longLabel: qx.locale.Manager.tr("Viewer: Read access"),
65+
label: qx.locale.Manager.tr("User"),
66+
longLabel: qx.locale.Manager.tr("User: Read access"),
6767
canDo: [
6868
qx.locale.Manager.tr("- can open it")
6969
]
7070
},
7171
2: {
7272
id: "write",
73-
label: qx.locale.Manager.tr("Collaborator"),
74-
longLabel: qx.locale.Manager.tr("Collaborator: Read/Write access"),
73+
label: qx.locale.Manager.tr("Editor"),
74+
longLabel: qx.locale.Manager.tr("Editor: Read/Write access"),
7575
canDo: [
76-
qx.locale.Manager.tr("- can make changes")
76+
qx.locale.Manager.tr("- can make changes"),
77+
qx.locale.Manager.tr("- can share it")
7778
]
7879
},
7980
3: {
@@ -85,6 +86,26 @@ qx.Class.define("osparc.data.Roles", {
8586
]
8687
}
8788
},
89+
// services
90+
SERVICES: {
91+
1: {
92+
id: "read",
93+
label: qx.locale.Manager.tr("User"),
94+
longLabel: qx.locale.Manager.tr("User: Read access"),
95+
canDo: [
96+
qx.locale.Manager.tr("- can use it")
97+
]
98+
},
99+
2: {
100+
id: "write",
101+
label: qx.locale.Manager.tr("Owner"),
102+
longLabel: qx.locale.Manager.tr("Owner: Read/Write access"),
103+
canDo: [
104+
qx.locale.Manager.tr("- can make changes"),
105+
qx.locale.Manager.tr("- can share it")
106+
]
107+
}
108+
},
88109

89110
WALLET: {
90111
1: {
@@ -143,8 +164,12 @@ qx.Class.define("osparc.data.Roles", {
143164
return this.__createIntoFromRoles(osparc.data.Roles.WALLET);
144165
},
145166

146-
createRolesResourceInfo: function() {
147-
return this.__createIntoFromRoles(osparc.data.Roles.RESOURCE);
167+
createRolesStudyResourceInfo: function() {
168+
return this.__createIntoFromRoles(osparc.data.Roles.STUDY);
169+
},
170+
171+
createServicesRolesResourceInfo: function() {
172+
return this.__createIntoFromRoles(osparc.data.Roles.SERVICES);
148173
}
149174
}
150175
});

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

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
171171
});
172172
item.addListener("promoteToMember", e => {
173173
const clusterMember = e.getData();
174-
this.__promoteToMember(clusterMember);
174+
this.__promoteToUser(clusterMember);
175175
});
176176
item.addListener("promoteToManager", e => {
177177
const orgMember = e.getData();
@@ -183,7 +183,7 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
183183
});
184184
item.addListener("demoteToUser", e => {
185185
const clusterMember = e.getData();
186-
this.__demoteToUser(clusterMember);
186+
this.__demoteToRestrictedUser(clusterMember);
187187
});
188188
item.addListener("demoteToMember", e => {
189189
const orgMember = e.getData();
@@ -318,7 +318,7 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
318318
.then(respOrgMembers => {
319319
const newMember = respOrgMembers.find(m => m["login"] === orgMemberEmail);
320320
if (newMember) {
321-
this.__demoteToUser(newMember, text);
321+
this.__demoteToRestrictedUser(newMember, text);
322322
}
323323
});
324324
} else {
@@ -347,7 +347,8 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
347347
});
348348
},
349349

350-
__promoteToMember: function(orgMember) {
350+
// Fixme - promote to user
351+
__promoteToUser: function(orgMember) {
351352
if (this.__currentOrg === null) {
352353
return;
353354
}
@@ -363,7 +364,7 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
363364
};
364365
osparc.data.Resources.fetch("organizationMembers", "patch", params)
365366
.then(() => {
366-
osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(" successfully promoted to Member"));
367+
osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(` successfully promoted to ${osparc.data.Roles.ORG[1].label}`));
367368
osparc.store.Store.getInstance().reset("organizationMembers");
368369
this.__reloadOrgMembers();
369370
})
@@ -373,7 +374,8 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
373374
});
374375
},
375376

376-
__demoteToUser: function(orgMember, msg) {
377+
// Fixme - promote to restricted user
378+
__demoteToRestrictedUser: function(orgMember, msg) {
377379
if (this.__currentOrg === null) {
378380
return;
379381
}
@@ -390,7 +392,7 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
390392
osparc.data.Resources.fetch("organizationMembers", "patch", params)
391393
.then(() => {
392394
if (msg === undefined) {
393-
msg = orgMember["name"] + this.tr(" successfully demoted to User");
395+
msg = orgMember["name"] + this.tr(` successfully demoted to ${osparc.data.Roles.ORG[0].label}`);
394396
}
395397
osparc.FlashMessenger.getInstance().logAs(msg);
396398
osparc.store.Store.getInstance().reset("organizationMembers");
@@ -418,7 +420,7 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
418420
};
419421
osparc.data.Resources.fetch("organizationMembers", "patch", params)
420422
.then(() => {
421-
osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(" successfully promoted to Manager"));
423+
osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(` successfully promoted to ${osparc.data.Roles.ORG[2].label}`));
422424
osparc.store.Store.getInstance().reset("organizationMembers");
423425
this.__reloadOrgMembers();
424426
})
@@ -444,7 +446,7 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
444446
};
445447
osparc.data.Resources.fetch("organizationMembers", "patch", params)
446448
.then(() => {
447-
osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(" successfully promoted to Administrator"));
449+
osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(` successfully promoted to ${osparc.data.Roles.ORG[3].label}`));
448450
osparc.store.Store.getInstance().reset("organizationMembers");
449451
this.__reloadOrgMembers();
450452
})
@@ -470,7 +472,8 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
470472
};
471473
osparc.data.Resources.fetch("organizationMembers", "patch", params)
472474
.then(() => {
473-
osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(" successfully demoted to Member"));
475+
// osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(" successfully demoted to Member"));
476+
osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(` successfully demoted to ${osparc.data.Roles.ORG[1].label}`));
474477
osparc.store.Store.getInstance().reset("organizationMembers");
475478
this.__reloadOrgMembers();
476479
})
@@ -496,7 +499,8 @@ qx.Class.define("osparc.desktop.organizations.MembersList", {
496499
};
497500
osparc.data.Resources.fetch("organizationMembers", "patch", params)
498501
.then(() => {
499-
osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(" successfully demoted to Manager"));
502+
// osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(" successfully demoted to Manager"));
503+
osparc.FlashMessenger.getInstance().logAs(orgMember["name"] + this.tr(` successfully demoted to ${osparc.data.Roles.ORG[3].label}`));
500504
osparc.store.Store.getInstance().reset("organizationMembers");
501505
this.__reloadOrgMembers();
502506
})

services/static-webserver/client/source/class/osparc/info/StudyUtils.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ qx.Class.define("osparc.info.StudyUtils", {
9292
if (ar[myGID]["delete"]) {
9393
permissions = qx.locale.Manager.tr("Owner");
9494
} else if (ar[myGID]["write"]) {
95-
permissions = qx.locale.Manager.tr("Collaborator");
95+
permissions = qx.locale.Manager.tr("Editor");
9696
} else if (ar[myGID]["read"]) {
9797
permissions = qx.locale.Manager.tr("Viewer");
9898
}
@@ -346,7 +346,7 @@ qx.Class.define("osparc.info.StudyUtils", {
346346
*/
347347
openAccessRights: function(studyData) {
348348
const permissionsView = new osparc.share.CollaboratorsStudy(studyData);
349-
const title = qx.locale.Manager.tr("Share with Collaborators and Organizations");
349+
const title = qx.locale.Manager.tr("Share with Editors and Organizations");
350350
osparc.ui.window.Window.popUpInWindow(permissionsView, title, 500, 400);
351351
return permissionsView;
352352
},

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ qx.Class.define("osparc.navigation.CreditsMenuButton", {
8484
if (currentUsage) {
8585
currentUsage.addListener("changeUsedCredits", () => {
8686
this.__updateCredits();
87-
this.__animate();
87+
// this.__animate();
8888
});
8989
}
9090
},
@@ -97,11 +97,11 @@ qx.Class.define("osparc.navigation.CreditsMenuButton", {
9797
wallet.addListener("changeCreditsAvailable", () => this.__updateCredits());
9898
}
9999
},
100-
101-
__animate: function() {
102-
const label = this.getChildControl("label");
103-
osparc.utils.Utils.animateUsage(label.getContentElement().getDomElement());
104-
},
100+
// Note - Sometimes it doesn't work and it bring the credits indicator into a failed state
101+
// __animate: function() {
102+
// const label = this.getChildControl("label");
103+
// osparc.utils.Utils.animateUsage(label.getContentElement().getDomElement());
104+
// },
105105

106106
__updateCredits: function() {
107107
const store = osparc.store.Store.getInstance();

services/static-webserver/client/source/class/osparc/product/tours/Utils.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,9 @@ qx.Class.define("osparc.product.tours.Utils", {
3030

3131
// it returns a promise
3232
getTours: function() {
33-
if (osparc.utils.Utils.isDevelEnv()) {
34-
const pName = osparc.product.Utils.getProductName();
35-
if (Object.keys(this.TOURS).includes(pName)) {
36-
return this.TOURS[pName].fetchTours();
37-
}
33+
const pName = osparc.product.Utils.getProductName();
34+
if (Object.keys(this.TOURS).includes(pName)) {
35+
return this.TOURS[pName].fetchTours();
3836
}
3937
return null;
4038
}

services/static-webserver/client/source/class/osparc/share/Collaborators.js

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -217,15 +217,15 @@ qx.Class.define("osparc.share.Collaborators", {
217217
const label = new qx.ui.basic.Label(this.tr("Select from the list below and click Share"));
218218
vBox.add(label);
219219

220-
const addCollaboratorBtn = new qx.ui.form.Button(this.tr("Add Collaborators...")).set({
220+
const addCollaboratorBtn = new qx.ui.form.Button(this.tr("Add Editors...")).set({
221221
appearance: "strong-button",
222222
allowGrowX: false
223223
});
224224
addCollaboratorBtn.addListener("execute", () => {
225225
const collaboratorsManager = new osparc.share.NewCollaboratorsManager(this._serializedData);
226-
collaboratorsManager.addListener("addCollaborators", e => {
226+
collaboratorsManager.addListener("addEditors", e => {
227227
const cb = () => collaboratorsManager.close();
228-
this._addCollaborators(e.getData(), cb);
228+
this._addEditors(e.getData(), cb);
229229
}, this);
230230
}, this);
231231
vBox.add(addCollaboratorBtn);
@@ -239,7 +239,7 @@ qx.Class.define("osparc.share.Collaborators", {
239239
const label = new qx.ui.basic.Label(this.tr("Shared with"));
240240
vBox.add(label);
241241

242-
const rolesLayout = osparc.data.Roles.createRolesResourceInfo();
242+
const rolesLayout = osparc.data.Roles.createRolesStudyResourceInfo();
243243
const leaveButton = this.__getLeaveStudyButton();
244244
if (leaveButton) {
245245
rolesLayout.addAt(leaveButton, 0);
@@ -267,6 +267,7 @@ qx.Class.define("osparc.share.Collaborators", {
267267
ctrl.bindProperty("label", "title", null, item, id); // organization
268268
ctrl.bindProperty("login", "subtitleMD", null, item, id); // user
269269
ctrl.bindProperty("description", "subtitle", null, item, id); // organization
270+
ctrl.bindProperty("resourceType", "resourceType", null, item, id); // Resource type
270271
ctrl.bindProperty("accessRights", "accessRights", null, item, id);
271272
ctrl.bindProperty("showOptions", "showOptions", null, item, id);
272273
},
@@ -275,21 +276,21 @@ qx.Class.define("osparc.share.Collaborators", {
275276
.setStyles({
276277
"border-radius": "16px"
277278
});
278-
item.addListener("promoteToCollaborator", e => {
279+
item.addListener("promoteToEditor", e => {
279280
const orgMember = e.getData();
280-
this._promoteToCollaborator(orgMember, item);
281+
this._promoteToEditor(orgMember, item);
281282
});
282283
item.addListener("promoteToOwner", e => {
283284
const orgMember = e.getData();
284285
this._promoteToOwner(orgMember, item);
285286
});
286-
item.addListener("demoteToViewer", e => {
287+
item.addListener("demoteToUser", e => {
287288
const orgMember = e.getData();
288-
this._demoteToViewer(orgMember, item);
289+
this._demoteToUser(orgMember, item);
289290
});
290-
item.addListener("demoteToCollaborator", e => {
291+
item.addListener("demoteToEditor", e => {
291292
const orgMember = e.getData();
292-
this._demoteToCollaborator(orgMember, item);
293+
this._demoteToEditor(orgMember, item);
293294
});
294295
item.addListener("removeMember", e => {
295296
const orgMember = e.getData();
@@ -366,6 +367,7 @@ qx.Class.define("osparc.share.Collaborators", {
366367
}
367368
collaborator["accessRights"] = accessRights[gid];
368369
collaborator["showOptions"] = (this._resourceType === "service") ? this._canIWrite() : this._canIDelete();
370+
collaborator["resourceType"] = this._resourceType;
369371
collaboratorsList.push(collaborator);
370372
}
371373
});
@@ -381,7 +383,7 @@ qx.Class.define("osparc.share.Collaborators", {
381383
throw new Error("Abstract method called!");
382384
},
383385

384-
_addCollaborators: function(gids) {
386+
_addEditors: function(gids) {
385387
throw new Error("Abstract method called!");
386388
},
387389

@@ -393,15 +395,15 @@ qx.Class.define("osparc.share.Collaborators", {
393395
throw new Error("Abstract method called!");
394396
},
395397

396-
_promoteToCollaborator: function(collaborator, item) {
398+
_promoteToEditor: function(collaborator, item) {
397399
throw new Error("Abstract method called!");
398400
},
399401

400-
_demoteToViewer: function(collaborator, item) {
402+
_demoteToUser: function(collaborator, item) {
401403
throw new Error("Abstract method called!");
402404
},
403405

404-
_demoteToCollaborator: function(collaborator, item) {
406+
_demoteToEditor: function(collaborator, item) {
405407
throw new Error("Abstract method called!");
406408
}
407409
}

0 commit comments

Comments
 (0)