]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/dc/Tasks.js
make /etc/hosts editable via gui
[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: {
56a353b9 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()
9b707b3b
DM
59
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: [
70 {
71 header: gettext("Start Time"),
72 dataIndex: 'starttime',
a26b2cb9 73 width: 150,
9b707b3b
DM
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',
a26b2cb9 81 width: 150,
9b707b3b
DM
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,
e7ade592 110 renderer: Proxmox.Utils.render_upid
9b707b3b
DM
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;"';
e7ade592 127 return Proxmox.Utils.errorText + ': ' + value;
9b707b3b
DM
128 }
129 }
130 ],
131 listeners: {
132 itemdblclick: run_task_viewer,
133 show: taskstore.startUpdate,
9b707b3b
DM
134 destroy: taskstore.stopUpdate
135 }
136 });
137
138 me.callParent();
139 }
7251c620 140});