]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/dc/Tasks.js
use DiffStore from widget toolkit
[pve-manager.git] / www / manager6 / dc / Tasks.js
1 /* This class defines the "Tasks" tab of the bottom status panel
2 * Tasks are jobs with a start, end and log output
3 */
4
5 Ext.define('PVE.dc.Tasks', {
6 extend: 'Ext.grid.GridPanel',
7
8 alias: ['widget.pveClusterTasks'],
9
10 initComponent : function() {
11 var me = this;
12
13 var taskstore = Ext.create('Proxmox.data.UpdateStore', {
14 storeid: 'pve-cluster-tasks',
15 model: 'pve-tasks',
16 proxy: {
17 type: 'pve',
18 url: '/api2/json/cluster/tasks'
19 }
20 });
21
22 var store = Ext.create('Proxmox.data.DiffStore', {
23 rstore: taskstore,
24 sortAfterUpdate: true,
25 appendAtStart: true,
26 sorters: [
27 {
28 property : 'pid',
29 direction: 'DESC'
30 },
31 {
32 property : 'starttime',
33 direction: 'DESC'
34 }
35 ]
36
37 });
38
39 var run_task_viewer = function() {
40 var sm = me.getSelectionModel();
41 var rec = sm.getSelection()[0];
42 if (!rec) {
43 return;
44 }
45
46 var win = Ext.create('Proxmox.window.TaskViewer', {
47 upid: rec.data.upid
48 });
49 win.show();
50 };
51
52 Ext.apply(me, {
53 store: store,
54 stateful: false,
55
56 viewConfig: {
57 trackOver: false,
58 stripeRows: true, // does not work with getRowClass()
59
60 getRowClass: function(record, index) {
61 var status = record.get('status');
62
63 if (status && status != 'OK') {
64 return "proxmox-invalid-row";
65 }
66 }
67 },
68 sortableColumns: false,
69 columns: [
70 {
71 header: gettext("Start Time"),
72 dataIndex: 'starttime',
73 width: 150,
74 renderer: function(value) {
75 return Ext.Date.format(value, "M d H:i:s");
76 }
77 },
78 {
79 header: gettext("End Time"),
80 dataIndex: 'endtime',
81 width: 150,
82 renderer: function(value, metaData, record) {
83 if (record.data.pid) {
84 if (record.data.type == "vncproxy" ||
85 record.data.type == "vncshell" ||
86 record.data.type == "spiceproxy") {
87 metaData.tdCls = "x-grid-row-console";
88 } else {
89 metaData.tdCls = "x-grid-row-loading";
90 }
91 return "";
92 }
93 return Ext.Date.format(value, "M d H:i:s");
94 }
95 },
96 {
97 header: gettext("Node"),
98 dataIndex: 'node',
99 width: 100
100 },
101 {
102 header: gettext("User name"),
103 dataIndex: 'user',
104 width: 150
105 },
106 {
107 header: gettext("Description"),
108 dataIndex: 'upid',
109 flex: 1,
110 renderer: Proxmox.Utils.render_upid
111 },
112 {
113 header: gettext("Status"),
114 dataIndex: 'status',
115 width: 200,
116 renderer: function(value, metaData, record) {
117 if (record.data.pid) {
118 if (record.data.type != "vncproxy") {
119 metaData.tdCls = "x-grid-row-loading";
120 }
121 return "";
122 }
123 if (value == 'OK') {
124 return 'OK';
125 }
126 // metaData.attr = 'style="color:red;"';
127 return Proxmox.Utils.errorText + ': ' + value;
128 }
129 }
130 ],
131 listeners: {
132 itemdblclick: run_task_viewer,
133 show: taskstore.startUpdate,
134 destroy: taskstore.stopUpdate
135 }
136 });
137
138 me.callParent();
139 }
140 });