Skip to content

Commit 78ab79f

Browse files
committed
createResourceTypeContextButtons
1 parent d993cc4 commit 78ab79f

File tree

1 file changed

+81
-32
lines changed

1 file changed

+81
-32
lines changed

services/static-webserver/client/source/class/osparc/dashboard/ResourceFilter.js

Lines changed: 81 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ qx.Class.define("osparc.dashboard.ResourceFilter", {
2929
this.__tagButtons = [];
3030
this.__serviceTypeButtons = [];
3131

32-
this._setLayout(new qx.ui.layout.VBox(5));
32+
this._setLayout(new qx.ui.layout.VBox(15));
3333
this.__buildLayout();
3434
},
3535

@@ -47,36 +47,28 @@ qx.Class.define("osparc.dashboard.ResourceFilter", {
4747
__resourceType: null,
4848
__workspacesAndFoldersTree: null,
4949
__trashButton: null,
50-
__templatesButton: null,
51-
__servicesButton: null,
5250
__sharedWithButtons: null,
5351
__tagButtons: null,
5452
__serviceTypeButtons: null,
5553

5654
__buildLayout: function() {
57-
const permissions = osparc.data.Permissions.getInstance();
58-
59-
if (this.__resourceType === "study") {
60-
this._add(this.__createWorkspacesAndFoldersTree());
61-
this._add(this.__createTrashBin());
62-
const templates = this.__createTemplates();
63-
if (permissions.canDo("dashboard.templates.read")) {
64-
this._add(templates);
65-
}
66-
const services = this.__createServices();
67-
if (permissions.canDo("dashboard.services.read")) {
68-
this._add(services);
69-
}
70-
} else {
71-
this._add(this.__createSharedWithFilterLayout());
72-
}
73-
74-
if (this.__resourceType !== "service") {
75-
this._add(this.__createTagsFilterLayout());
76-
}
77-
78-
if (this.__resourceType === "service") {
79-
this._add(this.__createServiceTypeFilterLayout());
55+
switch (this.__resourceType) {
56+
case "study":
57+
this._add(this.__createWorkspacesAndFoldersTree());
58+
this._add(this.__createTrashBin());
59+
this._add(this.__createResourceTypeContextButtons());
60+
this._add(this.__createTagsFilterLayout());
61+
break;
62+
case "template":
63+
this._add(this.__createResourceTypeContextButtons());
64+
this._add(this.__createSharedWithFilterLayout());
65+
this._add(this.__createTagsFilterLayout());
66+
break;
67+
case "service":
68+
this._add(this.__createResourceTypeContextButtons());
69+
this._add(this.__createSharedWithFilterLayout());
70+
this._add(this.__createServiceTypeFilterLayout());
71+
break;
8072
}
8173
},
8274

@@ -216,33 +208,90 @@ qx.Class.define("osparc.dashboard.ResourceFilter", {
216208
},
217209
/* /TRASH BIN */
218210

219-
__createTemplates: function() {
211+
/* RESOURCE TYPE CONTEXT */
212+
__createResourceTypeContextButtons: function() {
213+
const resourceTypeContextButtons = new qx.ui.container.Composite(new qx.ui.layout.VBox());
214+
215+
const studiesButton = this.__createStudiesButton().set({
216+
value: this.__resourceType === "study",
217+
visibility: this.__resourceType === "study" ? "excluded" : "visible",
218+
});
219+
resourceTypeContextButtons.add(studiesButton);
220+
221+
const permissions = osparc.data.Permissions.getInstance();
222+
const templatesButton = this.__createTemplatesButton().set({
223+
value: this.__resourceType === "template",
224+
});
225+
if (permissions.canDo("dashboard.templates.read")) {
226+
resourceTypeContextButtons.add(templatesButton);
227+
}
228+
229+
const servicesButton = this.__createServicesButton().set({
230+
value: this.__resourceType === "service",
231+
});
232+
if (permissions.canDo("dashboard.services.read")) {
233+
resourceTypeContextButtons.add(servicesButton);
234+
}
235+
236+
return resourceTypeContextButtons;
237+
},
238+
239+
__createStudiesButton: function() {
240+
const studyAlias = osparc.product.Utils.getStudyAlias({
241+
firstUpperCase: true,
242+
plural: true
243+
});
244+
const studiesButton = new qx.ui.toolbar.RadioButton().set({
245+
value: false,
246+
appearance: "filter-toggle-button",
247+
label: studyAlias,
248+
icon: "@FontAwesome5Solid/file/16",
249+
paddingLeft: 10, // align it with the context
250+
});
251+
osparc.utils.Utils.setIdToWidget(studiesButton, "studiesTabBtn");
252+
studiesButton.addListener("tap", () => {
253+
studiesButton.setValue(true);
254+
this.fireDataEvent("changeTab", "studiesTab");
255+
});
256+
return studiesButton;
257+
},
258+
259+
__createTemplatesButton: function() {
220260
const templateAlias = osparc.product.Utils.getTemplateAlias({
221261
firstUpperCase: true,
222262
plural: true
223263
});
224-
const templatesButton = new qx.ui.toolbar.Button().set({
264+
const templatesButton = new qx.ui.toolbar.RadioButton().set({
265+
value: false,
225266
appearance: "filter-toggle-button",
226267
label: templateAlias,
227268
icon: "@FontAwesome5Solid/copy/16",
228269
paddingLeft: 10, // align it with the context
229270
});
230271
osparc.utils.Utils.setIdToWidget(templatesButton, "templatesTabBtn");
231-
templatesButton.addListener("tap", () => this.fireDataEvent("changeTab", "templatesTab"));
272+
templatesButton.addListener("tap", () => {
273+
templatesButton.setValue(true);
274+
this.fireDataEvent("changeTab", "templatesTab");
275+
});
232276
return templatesButton;
233277
},
234278

235-
__createServices: function() {
236-
const servicesButton = new qx.ui.toolbar.Button().set({
279+
__createServicesButton: function() {
280+
const servicesButton = new qx.ui.toolbar.RadioButton().set({
281+
value: false,
237282
appearance: "filter-toggle-button",
238283
label: this.tr("Services"),
239284
icon: "@FontAwesome5Solid/cogs/16",
240285
paddingLeft: 10, // align it with the context
241286
});
242287
osparc.utils.Utils.setIdToWidget(servicesButton, "servicesTabBtn");
243-
servicesButton.addListener("tap", () => this.fireDataEvent("changeTab", "servicesTab"));
288+
servicesButton.addListener("tap", () => {
289+
servicesButton.setValue(true);
290+
this.fireDataEvent("changeTab", "servicesTab");
291+
});
244292
return servicesButton;
245293
},
294+
/* /RESOURCE TYPE CONTEXT */
246295

247296
/* SHARED WITH */
248297
__createSharedWithFilterLayout: function() {

0 commit comments

Comments
 (0)