@@ -36,21 +36,23 @@ qx.Class.define("osparc.jobs.JobsTable", {
3636
3737 Object . values ( this . self ( ) . COLS ) . forEach ( col => columnModel . setColumnWidth ( col . column , col . width ) ) ;
3838
39- const fontButtonRendererInfo = new osparc . ui . table . cellrenderer . ImageButtonRenderer ( ) ;
40- fontButtonRendererInfo . setIconPath ( "osparc/circle- info-solid_text.svg" ) ;
39+ const iconPathInfo = " osparc/circle-info-solid_text.svg" ;
40+ const fontButtonRendererInfo = new osparc . ui . table . cellrenderer . ImageButtonRenderer ( " info" , iconPathInfo ) ;
4141 columnModel . setDataCellRenderer ( this . self ( ) . COLS . INFO . column , fontButtonRendererInfo ) ;
4242
43- const fontButtonRendererStop = new osparc . ui . table . cellrenderer . ImageButtonRenderer ( ) ;
44- fontButtonRendererStop . setIconPath ( "osparc/circle-info-solid_text.svg" ) ;
43+ const iconPathStop = " osparc/circle-info-solid_text.svg" ;
44+ const fontButtonRendererStop = new osparc . ui . table . cellrenderer . ImageButtonRenderer ( "stop" , iconPathStop ) ;
4545 columnModel . setDataCellRenderer ( this . self ( ) . COLS . ACTION_STOP . column , fontButtonRendererStop ) ;
4646
47- const fontButtonRendererDelete = new osparc . ui . table . cellrenderer . ImageButtonRenderer ( ) ;
48- fontButtonRendererDelete . setIconPath ( "osparc/circle-info-solid_text.svg" ) ;
47+ const iconPathDelete = " osparc/circle-info-solid_text.svg" ;
48+ const fontButtonRendererDelete = new osparc . ui . table . cellrenderer . ImageButtonRenderer ( "delete" , iconPathDelete ) ;
4949 columnModel . setDataCellRenderer ( this . self ( ) . COLS . ACTION_DELETE . column , fontButtonRendererDelete ) ;
5050
51- const fontButtonRendererLogs = new osparc . ui . table . cellrenderer . ImageButtonRenderer ( ) ;
52- fontButtonRendererLogs . setIconPath ( "osparc/circle-info-solid_text.svg" ) ;
51+ const iconPathLogs = " osparc/circle-info-solid_text.svg" ;
52+ const fontButtonRendererLogs = new osparc . ui . table . cellrenderer . ImageButtonRenderer ( "logs" , iconPathLogs ) ;
5353 columnModel . setDataCellRenderer ( this . self ( ) . COLS . ACTION_LOGS . column , fontButtonRendererLogs ) ;
54+
55+ this . __attachHandlers ( ) ;
5456 } ,
5557
5658 statics : {
@@ -122,5 +124,38 @@ qx.Class.define("osparc.jobs.JobsTable", {
122124 width : 40
123125 } ,
124126 }
127+ } ,
128+
129+ members : {
130+ __attachHandlers : function ( ) {
131+ this . addListener ( "cellTap" , e => {
132+ const row = e . getRow ( ) ;
133+ const target = e . getOriginalTarget ( ) ;
134+ if ( target . closest ( ".qx-material-button" ) && ( target . tagName === "IMG" || target . tagName === "DIV" ) ) {
135+ const action = target . closest ( ".qx-material-button" ) . getAttribute ( "data-action" ) ;
136+ if ( action ) {
137+ this . __handleButtonClick ( action , row ) ;
138+ }
139+ }
140+ } ) ;
141+ } ,
142+
143+ __handleButtonClick : function ( action , row ) {
144+ const rowData = this . getTableModel ( ) . getRowData ( row ) ;
145+ switch ( action ) {
146+ case "info" :
147+ console . log ( `Info row ${ row } ` ) ;
148+ break ;
149+ case "stop" :
150+ case "delete" :
151+ case "logs" : {
152+ const msg = `I wish I could ${ action } the job ${ rowData [ "jobId" ] } ` ;
153+ osparc . FlashMessenger . logAs ( msg , "WARNING" ) ;
154+ break ;
155+ }
156+ default :
157+ console . warn ( `Unknown action: ${ action } ` ) ;
158+ }
159+ } ,
125160 }
126161} ) ;
0 commit comments