]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - src/window/TaskViewer.js
window: add FileBrowser
[proxmox-widget-toolkit.git] / src / window / TaskViewer.js
index 2f3102361aea2abdd190dc82e67fb5023a182f1f..996a41b5c32ad73cfcdb601c815175f402c45078 100644 (file)
@@ -14,7 +14,7 @@ Ext.define('Proxmox.window.TaskProgress', {
        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' },
@@ -127,9 +127,21 @@ Ext.define('Proxmox.window.TaskViewer', {
            },
            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,
@@ -152,8 +164,33 @@ Ext.define('Proxmox.window.TaskViewer', {
            },
        };
 
+       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,
        });
@@ -162,7 +199,7 @@ Ext.define('Proxmox.window.TaskViewer', {
 
        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) {
@@ -196,7 +233,7 @@ Ext.define('Proxmox.window.TaskViewer', {
            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() {
@@ -218,7 +255,7 @@ Ext.define('Proxmox.window.TaskViewer', {
        Ext.apply(me, {
            title: "Task viewer: " + task.desc + me.extraTitle,
            width: 800,
-           height: 400,
+           height: 500,
            layout: 'fit',
            modal: true,
            items: [{