1 Ext
.define('PVE.node.Tasks', {
2 extend
: 'Ext.grid.GridPanel',
4 alias
: ['widget.pveNodeTasks'],
6 initComponent : function() {
9 var nodename
= me
.pveSelNode
.data
.node
;
11 throw "no node name specified";
13 var store
= Ext
.create('Ext.data.Store', {
23 url
: "/api2/json/nodes/" + nodename
+ "/tasks"
28 var filter_errors
= 0;
30 // fixme: scroller update fails
31 // http://www.sencha.com/forum/showthread.php?133677-scroller-does-not-adjust-to-the-filtered-grid-data&p=602887
32 var reload_task
= new Ext
.util
.DelayedTask(function() {
37 params
.userfilter
= userfilter
;
39 store
.proxy
.extraParams
= params
;
43 var run_task_viewer = function() {
44 var sm
= me
.getSelectionModel();
45 var rec
= sm
.getLastSelected();
49 var win
= Ext
.create('PVE.window.TaskViewer', {
55 var view_btn
= new Ext
.Button({
58 handler
: run_task_viewer
65 verticalScrollerType
: 'paginggridscroller',
67 invalidateScrollerOnRefresh
: false,
70 stripeRows
: false, // does not work with getRowClass()
72 getRowClass: function(record
, index
) {
73 var status
= record
.get('status');
75 if (status
&& status
!= 'OK')
76 return "x-form-invalid-field";
80 view_btn
, '->', 'User:', ' ',
85 enableKeyEvents
: true,
87 keyup: function(field
, e
) {
88 userfilter
= field
.getValue();
89 reload_task
.delay(500);
92 }, ' ', 'Only Errors:', ' ',
96 checked
: filter_errors
,
98 change: function(field
, checked
) {
99 filter_errors
= checked
? 1 : 0;
100 reload_task
.delay(10);
105 sortableColumns
: false,
108 header
: "Start Time", dataIndex
: 'starttime',
110 renderer: function(value
) {
111 return Ext
.Date
.format(value
, "M d H:i:s");
115 header
: "End Time", dataIndex
: 'endtime',
117 renderer: function(value
, metaData
, record
) {
118 return Ext
.Date
.format(value
,"M d H:i:s");
122 header
: "Node", dataIndex
: 'node',
126 header
: "User", dataIndex
: 'user',
130 header
: "Description", dataIndex
: 'upid',
132 renderer
: PVE
.Utils
.render_upid
135 header
: "Status", dataIndex
: 'status',
137 renderer: function(value
, metaData
, record
) {
140 // metaData.attr = 'style="color:red;"';
141 return "ERROR: " + value
;
146 itemdblclick
: run_task_viewer
,
147 selectionchange: function(v
, selections
) {
148 view_btn
.setDisabled(!(selections
&& selections
[0]));
150 show: function() { reload_task
.delay(10); }
156 store
.guaranteeRange(0, store
.pageSize
- 1);