@@ -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