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