source: trunk/web2/addons/job_monarch/js/jobgrid.js @ 545

Last change on this file since 545 was 545, checked in by ramonb, 16 years ago

job_monarch/css/styles.css:

  • make selected filter light blue

job_monarch/js/jobgrid.js:

  • minimizing is weird
File size: 6.4 KB
Line 
1var JobsDataStore;
2var JobsColumnModel;
3var JobListingEditorGrid;
4var JobListingWindow;
5var JobProxy;
6var myfilters = { start: 0, limit: 30};
7
8function initJobGrid() {
9
10  Ext.QuickTips.init();
11
12  function jobCellClick(grid, rowIndex, columnIndex, e)
13  {
14    var record = grid.getStore().getAt(rowIndex);  // Get the Record
15    var fieldName = grid.getColumnModel().getDataIndex(columnIndex);
16    var data = record.get(fieldName);
17    var view = grid.getView();
18    var cell = view.getCell( rowIndex, columnIndex );
19
20    if( fieldName == 'owner' || fieldName == 'jid' || fieldName == 'status' || fieldName == 'queue' )
21    {
22      if( myfilters[fieldName] != null )
23      {
24        Ext.fly(cell).removeClass( 'filterenabled' );
25        Ext.fly(cell).addClass( 'filter' );
26
27        delete myfilters[fieldName];
28
29        grid.getStore().reload( {params: myfilters} );
30      }
31      else
32      {
33        Ext.fly(cell).removeClass( 'filter' );
34        Ext.fly(cell).addClass( 'filterenabled' );
35
36        myfilters[fieldName] = data;
37
38        grid.getStore().reload( {params: myfilters} );
39      }
40    }
41  }
42
43  function jobCellRender( value, metadata, record, rowindex, colindex, store )
44  {
45    var fieldName = JobsColumnModel.getColumnById( colindex ).dataIndex;
46
47    if( fieldName == 'owner' || fieldName == 'jid' || fieldName == 'status' || fieldName == 'queue' )
48    {
49      if( myfilters[fieldName] != null )
50      {
51        metadata.css = 'filterenabled';
52      }
53      else
54      {
55        metadata.css = 'filter';
56      }
57    }
58    return value;
59  }
60
61  JobProxy = new Ext.data.HttpProxy({
62                url: 'jobstore.php',
63                method: 'POST'
64            });
65
66  JobsDataStore = new Ext.data.Store({
67      id: 'JobsDataStore',
68      proxy: JobProxy,
69      baseParams:{task: "LISTING"}, // this parameter is passed for any HTTP request
70      reader: new Ext.data.JsonReader({
71        root: 'results',
72        totalProperty: 'total',
73        id: 'id'
74      },[
75        {name: 'jid', type: 'int', mapping: 'jid'},
76        {name: 'status', type: 'string', mapping: 'status'},
77        {name: 'owner', type: 'string', mapping: 'owner'},
78        {name: 'queue', type: 'string', mapping: 'queue'},
79        {name: 'name', type: 'string', mapping: 'name'},
80        {name: 'requested_time', type: 'string', mapping: 'requested_time'},
81        //{name: 'requested_memory', type: 'string', mapping: 'requested_memory'},
82        {name: 'ppn', type: 'int', mapping: 'ppn'},
83        {name: 'nodect', type: 'int', mapping: 'nodect'},
84        {name: 'nodes', type: 'string', mapping: 'nodes'},
85        {name: 'queued_timestamp', type: 'string', mapping: 'queued_timestamp'},
86        {name: 'start_timestamp', type: 'string', mapping: 'start_timestamp'},
87        {name: 'runningtime', type: 'string', mapping: 'runningtime'}
88      ]),
89      sortInfo: {field: 'jid', direction: "ASC"},
90      remoteSort: true
91    });
92   
93  JobsColumnModel = new Ext.grid.ColumnModel(
94    [{
95        header: '#',
96        tooltip: 'Job id',
97        readOnly: true,
98        dataIndex: 'jid',
99        width: 50,
100        hidden: false,
101        renderer: jobCellRender
102      },{
103        header: 'S',
104        tooltip: 'Job status',
105        readOnly: true,
106        dataIndex: 'status',
107        width: 20,
108        hidden: false,
109        renderer: jobCellRender
110      },{
111        header: 'User',
112        tooltip: 'Owner of job',
113        readOnly: true,
114        dataIndex: 'owner',
115        width: 60,
116        hidden: false,
117        renderer: jobCellRender
118      },{
119        header: 'Queue',
120        tooltip: 'In which queue does this job reside',
121        readOnly: true,
122        dataIndex: 'queue',
123        width: 60,
124        hidden: false,
125        renderer: jobCellRender
126      },{
127        header: 'Name',
128        tooltip: 'Name of job',
129        readOnly: true,
130        dataIndex: 'name',
131        width: 100,
132        hidden: false
133      },{
134        header: 'Requested Time',
135        tooltip: 'Amount of requested time (wallclock)',
136        readOnly: true,
137        dataIndex: 'requested_time',
138        width: 100,
139        hidden: false
140      },{
141        header: 'Requested Memory',
142        tooltip: 'Amount of requested memory',
143        readOnly: true,
144        dataIndex: 'requested_memory',
145        width: 100,
146        hidden: true
147      },{
148        header: 'P',
149        tooltip: 'Number of processors per node (PPN)',
150        readOnly: true,
151        dataIndex: 'ppn',
152        width: 25,
153        hidden: false
154      },{
155        header: 'N',
156        tooltip: 'Number of nodes (hosts)',
157        readOnly: true,
158        dataIndex: 'nodect',
159        width: 25,
160        hidden: false
161      },{
162        header: 'Nodes',
163        readOnly: true,
164        dataIndex: 'nodes',
165        width: 100,
166        hidden: true
167      },{
168        header: 'Queued',
169        tooltip: 'At what time did this job enter the queue',
170        readOnly: true,
171        dataIndex: 'queued_timestamp',
172        width: 140,
173        hidden: false
174      },{
175        header: 'Started',
176        tooltip: 'At what time did this job enter the running status',
177        readOnly: true,
178        dataIndex: 'start_timestamp',
179        width: 140,
180        hidden: false
181      },{
182        header: 'Runningtime',
183        tooltip: 'How long has this job been in the running status',
184        readOnly: true,
185        dataIndex: 'runningtime',
186        width: 140,
187        hidden: false
188      }]
189    );
190    JobsColumnModel.defaultSortable= true;
191
192  JobListingEditorGrid =  new Ext.grid.EditorGridPanel({
193      id: 'JobListingEditorGrid',
194      store: JobsDataStore,
195      cm: JobsColumnModel,
196      enableColLock:false,
197      clicksToEdit:1,
198      loadMask: true,
199      selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),
200      bbar: new Ext.PagingToolbar({
201                pageSize: 30,
202                store: JobsDataStore,
203                displayInfo: true,
204                displayMsg: 'Displaying jobs {0} - {1} out of {2} jobs total found.',
205                emptyMsg: 'No jobs found to display'
206            }),
207      tbar: [ new Ext.app.SearchField({
208                                store: JobsDataStore,
209                                params: {start: 0, limit: 30},
210                                width: 200
211                    })
212      ]
213    });
214
215  JobListingWindow = new Ext.Window({
216      id: 'JobListingWindow',
217      title: 'Cluster Jobs Overview',
218      closable:true,
219      collapsible: true,
220      animCollapse: true,
221      maximizable: true,
222      width:900,
223      height:500,
224      plain:true,
225      shadow: true,
226      shadowOffset: 10,
227      layout: 'fit',
228      items: JobListingEditorGrid
229    });
230
231  JobListingEditorGrid.addListener( 'cellclick', jobCellClick );
232}
Note: See TracBrowser for help on using the repository browser.