]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/dc/Tasks.js
ui: use pmxDiskList from widget-toolkit
[pve-manager.git] / www / manager6 / dc / Tasks.js
CommitLineData
5289a1b8
EK
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
9b707b3b
DM
5Ext.define('PVE.dc.Tasks', {
6 extend: 'Ext.grid.GridPanel',
7
8 alias: ['widget.pveClusterTasks'],
9
10 initComponent : function() {
11 var me = this;
12
0c7c0d6b 13 var taskstore = Ext.create('Proxmox.data.UpdateStore', {
9b707b3b 14 storeid: 'pve-cluster-tasks',
56a353b9 15 model: 'proxmox-tasks',
9b707b3b 16 proxy: {
70793a32 17 type: 'proxmox',
9b707b3b 18 url: '/api2/json/cluster/tasks'
7251c620
AD
19 }
20 });
21
eaa018d7 22 var store = Ext.create('Proxmox.data.DiffStore', {
7251c620
AD
23 rstore: taskstore,
24 sortAfterUpdate: true,
25 appendAtStart: true,
9b707b3b 26 sorters: [
7251c620
AD
27 {
28 property : 'pid',
29 direction: 'DESC'
30 },
9b707b3b
DM
31 {
32 property : 'starttime',
33 direction: 'DESC'
34 }
35 ]
9b707b3b 36
9b707b3b
DM
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
8cbc11a7 46 var win = Ext.create('Proxmox.window.TaskViewer', {
9b707b3b
DM
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,
8c1c7742 58 stripeRows: true, // does not work with getRowClass()
9d8d96c6 59
9b707b3b
DM
60 getRowClass: function(record, index) {
61 var status = record.get('status');
62
63 if (status && status != 'OK') {
3ab7e0ec 64 return "proxmox-invalid-row";
9b707b3b
DM
65 }
66 }
67 },
68 sortableColumns: false,
69 columns: [
9d8d96c6
DC
70 {
71 header: gettext("Start Time"),
9b707b3b 72 dataIndex: 'starttime',
a26b2cb9 73 width: 150,
9d8d96c6
DC
74 renderer: function(value) {
75 return Ext.Date.format(value, "M d H:i:s");
9b707b3b
DM
76 }
77 },
9d8d96c6
DC
78 {
79 header: gettext("End Time"),
9b707b3b 80 dataIndex: 'endtime',
a26b2cb9 81 width: 150,
9b707b3b
DM
82 renderer: function(value, metaData, record) {
83 if (record.data.pid) {
9d8d96c6 84 if (record.data.type == "vncproxy" ||
9b707b3b
DM
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 }
9d8d96c6 93 return Ext.Date.format(value, "M d H:i:s");
9b707b3b
DM
94 }
95 },
9d8d96c6
DC
96 {
97 header: gettext("Node"),
9b707b3b
DM
98 dataIndex: 'node',
99 width: 100
100 },
9d8d96c6
DC
101 {
102 header: gettext("User name"),
9b707b3b 103 dataIndex: 'user',
1011b569 104 renderer: Ext.String.htmlEncode,
9b707b3b
DM
105 width: 150
106 },
9d8d96c6
DC
107 {
108 header: gettext("Description"),
109 dataIndex: 'upid',
110 flex: 1,
e7ade592 111 renderer: Proxmox.Utils.render_upid
9b707b3b 112 },
9d8d96c6
DC
113 {
114 header: gettext("Status"),
115 dataIndex: 'status',
9b707b3b 116 width: 200,
9d8d96c6 117 renderer: function(value, metaData, record) {
9b707b3b
DM
118 if (record.data.pid) {
119 if (record.data.type != "vncproxy") {
120 metaData.tdCls = "x-grid-row-loading";
121 }
122 return "";
123 }
124 if (value == 'OK') {
125 return 'OK';
126 }
9d8d96c6 127 // metaData.attr = 'style="color:red;"';
e7ade592 128 return Proxmox.Utils.errorText + ': ' + value;
9b707b3b
DM
129 }
130 }
131 ],
132 listeners: {
133 itemdblclick: run_task_viewer,
6386068d
TL
134 show: () => taskstore.startUpdate(),
135 destroy: () => taskstore.stopUpdate(),
9b707b3b
DM
136 }
137 });
138
139 me.callParent();
140 }
7251c620 141});