let task = Proxmox.Utils.parse_task_upid(me.upid);
let statstore = Ext.create('Proxmox.data.ObjectStore', {
- url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status",
+ url: "/api2/json/nodes/" + task.node + "/tasks/" + encodeURIComponent(me.upid) + "/status",
interval: 1000,
rows: {
status: { defaultValue: 'unknown' },
},
user: {
header: gettext('User name'),
- renderer: Ext.String.htmlEncode,
+ renderer: function(value) {
+ let user = value;
+ let tokenid = statgrid.getObjectValue('tokenid');
+ if (tokenid) {
+ user += `!${tokenid} (API Token)`;
+ }
+ return Ext.String.htmlEncode(user);
+ },
required: true,
},
+ tokenid: {
+ header: gettext('API Token'),
+ renderer: Ext.String.htmlEncode,
+ visible: false,
+ },
node: {
header: gettext('Node'),
required: true,
},
};
+ if (me.endtime) {
+ if (typeof me.endtime === 'object') {
+ // convert to epoch
+ me.endtime = parseInt(me.endtime.getTime()/1000, 10);
+ }
+ rows.endtime = {
+ header: gettext('End Time'),
+ required: true,
+ renderer: function() {
+ return Proxmox.Utils.render_timestamp(me.endtime);
+ },
+ };
+ }
+
+ rows.duration = {
+ header: gettext('Duration'),
+ required: true,
+ renderer: function() {
+ let starttime = statgrid.getObjectValue('starttime');
+ let endtime = me.endtime || Date.now()/1000;
+ let duration = endtime - starttime;
+ return Proxmox.Utils.format_duration_human(duration);
+ },
+ };
+
let statstore = Ext.create('Proxmox.data.ObjectStore', {
- url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status",
+ url: "/api2/json/nodes/" + task.node + "/tasks/" + encodeURIComponent(me.upid) + "/status",
interval: 1000,
rows: rows,
});
let stop_task = function() {
Proxmox.Utils.API2Request({
- url: "/nodes/" + task.node + "/tasks/" + me.upid,
+ url: "/nodes/" + task.node + "/tasks/" + encodeURIComponent(me.upid),
waitMsgTarget: me,
method: 'DELETE',
failure: function(response, opts) {
title: gettext('Output'),
tbar: [stop_btn2],
border: false,
- url: "/api2/extjs/nodes/" + task.node + "/tasks/" + me.upid + "/log",
+ url: "/api2/extjs/nodes/" + task.node + "/tasks/" + encodeURIComponent(me.upid) + "/log",
});
me.mon(statstore, 'load', function() {
Ext.apply(me, {
title: "Task viewer: " + task.desc + me.extraTitle,
width: 800,
- height: 400,
+ height: 500,
layout: 'fit',
modal: true,
items: [{