]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/TaskViewer.js
1 Ext
.define('PVE.window.TaskProgress', {
2 extend
: 'Ext.window.Window',
3 alias
: 'widget.pveTaskProgress',
5 initComponent: function() {
9 throw "no task specified";
12 var task
= Proxmox
.Utils
.parse_task_upid(me
.upid
);
14 var statstore
= Ext
.create('PVE.data.ObjectStore', {
15 url
: "/api2/json/nodes/" + task
.node
+ "/tasks/" + me
.upid
+ "/status",
18 status
: { defaultValue
: 'unknown' },
19 exitstatus
: { defaultValue
: 'unknown' }
23 me
.on('destroy', statstore
.stopUpdate
);
25 var getObjectValue = function(key
, defaultValue
) {
26 var rec
= statstore
.getById(key
);
28 return rec
.data
.value
;
33 var pbar
= Ext
.create('Ext.ProgressBar', { text
: 'running...' });
35 me
.mon(statstore
, 'load', function() {
36 var status
= getObjectValue('status');
37 if (status
=== 'stopped') {
38 var exitstatus
= getObjectValue('exitstatus');
39 if (exitstatus
== 'OK') {
41 pbar
.updateText("Done!");
42 Ext
.Function
.defer(me
.close
, 1000, me
);
45 Ext
.Msg
.alert('Task failed', exitstatus
);
50 var descr
= Proxmox
.Utils
.format_task_description(task
.type
, task
.id
);
53 title
: "Task: " + descr
,
61 text
: gettext('Details'),
63 var win
= Ext
.create('PVE.window.TaskViewer', {
75 statstore
.startUpdate();
81 // fixme: how can we avoid those lint errors?
82 /*jslint confusion: true */
84 Ext
.define('PVE.window.TaskViewer', {
85 extend
: 'Ext.window.Window',
86 alias
: 'widget.pveTaskViewer',
87 extraTitle
: '', // string to prepend after the generic task title
89 initComponent: function() {
93 throw "no task specified";
96 var task
= Proxmox
.Utils
.parse_task_upid(me
.upid
);
102 header
: gettext('Status'),
103 defaultValue
: 'unknown',
104 renderer: function(value
) {
105 if (value
!= 'stopped') {
108 var es
= statgrid
.getObjectValue('exitstatus');
110 return value
+ ': ' + es
;
118 header
: gettext('Task type'),
122 header
: gettext('User name'),
126 header
: gettext('Node'),
130 header
: gettext('Process ID'),
134 header
: gettext('Start Time'),
136 renderer
: Proxmox
.Utils
.render_timestamp
139 header
: gettext('Unique task ID')
143 var statstore
= Ext
.create('PVE.data.ObjectStore', {
144 url
: "/api2/json/nodes/" + task
.node
+ "/tasks/" + me
.upid
+ "/status",
149 me
.on('destroy', statstore
.stopUpdate
);
151 var stop_task = function() {
152 Proxmox
.Utils
.API2Request({
153 url
: "/nodes/" + task
.node
+ "/tasks/" + me
.upid
,
156 failure: function(response
, opts
) {
157 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
162 var stop_btn1
= new Ext
.Button({
163 text
: gettext('Stop'),
168 var stop_btn2
= new Ext
.Button({
169 text
: gettext('Stop'),
174 statgrid
= Ext
.create('Proxmox.grid.ObjectGrid', {
175 title
: gettext('Status'),
183 var logView
= Ext
.create('PVE.panel.LogView', {
184 title
: gettext('Output'),
187 url
: "/api2/extjs/nodes/" + task
.node
+ "/tasks/" + me
.upid
+ "/log"
190 me
.mon(statstore
, 'load', function() {
191 var status
= statgrid
.getObjectValue('status');
193 if (status
=== 'stopped') {
194 logView
.requestUpdate(undefined, true);
195 logView
.scrollToEnd
= false;
196 statstore
.stopUpdate();
199 stop_btn1
.setDisabled(status
!== 'running');
200 stop_btn2
.setDisabled(status
!== 'running');
203 statstore
.startUpdate();
206 title
: "Task viewer: " + task
.desc
+ me
.extraTitle
,
214 items
: [ logView
, statgrid
]
220 logView
.fireEvent('show', logView
);