]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - window/TaskViewer.js
make eslint 100% happy
[proxmox-widget-toolkit.git] / window / TaskViewer.js
index 189268b9655e95c27372bad7c408c6dc506d4b2e..2f3102361aea2abdd190dc82e67fb5023a182f1f 100644 (file)
@@ -2,41 +2,43 @@ Ext.define('Proxmox.window.TaskProgress', {
     extend: 'Ext.window.Window',
     alias: 'widget.proxmoxTaskProgress',
 
+    taskDone: Ext.emptyFn,
+
     initComponent: function() {
-        var me = this;
+        let me = this;
 
        if (!me.upid) {
            throw "no task specified";
        }
 
-       var task = Proxmox.Utils.parse_task_upid(me.upid);
+       let task = Proxmox.Utils.parse_task_upid(me.upid);
 
-       var statstore = Ext.create('Proxmox.data.ObjectStore', {
+       let statstore = Ext.create('Proxmox.data.ObjectStore', {
             url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status",
            interval: 1000,
            rows: {
                status: { defaultValue: 'unknown' },
-               exitstatus: { defaultValue: 'unknown' }
-           }
+               exitstatus: { defaultValue: 'unknown' },
+           },
        });
 
-       me.on('destroy', statstore.stopUpdate); 
+       me.on('destroy', statstore.stopUpdate);
 
-       var getObjectValue = function(key, defaultValue) {
-           var rec = statstore.getById(key);
+       let getObjectValue = function(key, defaultValue) {
+           let rec = statstore.getById(key);
            if (rec) {
                return rec.data.value;
            }
            return defaultValue;
        };
 
-       var pbar = Ext.create('Ext.ProgressBar', { text: 'running...' });
+       let pbar = Ext.create('Ext.ProgressBar', { text: 'running...' });
 
        me.mon(statstore, 'load', function() {
-           var status = getObjectValue('status');
+           let status = getObjectValue('status');
            if (status === 'stopped') {
-               var exitstatus = getObjectValue('exitstatus');
-               if (exitstatus == 'OK') {
+               let exitstatus = getObjectValue('exitstatus');
+               if (exitstatus === 'OK') {
                    pbar.reset();
                    pbar.updateText("Done!");
                    Ext.Function.defer(me.close, 1000, me);
@@ -44,10 +46,11 @@ Ext.define('Proxmox.window.TaskProgress', {
                    me.close();
                    Ext.Msg.alert('Task failed', exitstatus);
                }
+               me.taskDone(exitstatus === 'OK');
            }
        });
 
-       var descr = Proxmox.Utils.format_task_description(task.type, task.id);
+       let descr = Proxmox.Utils.format_task_description(task.type, task.id);
 
        Ext.apply(me, {
            title: gettext('Task') + ': ' + descr,
@@ -57,17 +60,18 @@ Ext.define('Proxmox.window.TaskProgress', {
            bodyPadding: 5,
            items: pbar,
            buttons: [
-               { 
+               {
                    text: gettext('Details'),
-                   handler: function() {                       
-                       var win = Ext.create('Proxmox.window.TaskViewer', { 
-                           upid: me.upid
+                   handler: function() {
+                       let win = Ext.create('Proxmox.window.TaskViewer', {
+                           taskDone: me.taskDone,
+                           upid: me.upid,
                        });
                        win.show();
                        me.close();
-                   }
-               }
-           ]
+                   },
+               },
+           ],
        });
 
        me.callParent();
@@ -75,124 +79,134 @@ Ext.define('Proxmox.window.TaskProgress', {
        statstore.startUpdate();
 
        pbar.wait();
-    }
+    },
 });
 
 // fixme: how can we avoid those lint errors?
-/*jslint confusion: true */
 
 Ext.define('Proxmox.window.TaskViewer', {
     extend: 'Ext.window.Window',
     alias: 'widget.proxmoxTaskViewer',
 
+    extraTitle: '', // string to prepend after the generic task title
+
+    taskDone: Ext.emptyFn,
+
     initComponent: function() {
-        var me = this;
+        let me = this;
 
        if (!me.upid) {
            throw "no task specified";
        }
 
-       var task = Proxmox.Utils.parse_task_upid(me.upid);
+       let task = Proxmox.Utils.parse_task_upid(me.upid);
 
-       var statgrid;
+       let statgrid;
 
-       var rows = {
+       let rows = {
            status: {
                header: gettext('Status'),
                defaultValue: 'unknown',
                renderer: function(value) {
-                   if (value != 'stopped') {
+                   if (value !== 'stopped') {
                        return value;
                    }
-                   var es = statgrid.getObjectValue('exitstatus');
+                   let es = statgrid.getObjectValue('exitstatus');
                    if (es) {
                        return value + ': ' + es;
                    }
-               }
+                   return 'unknown';
+               },
            },
-           exitstatus: { 
-               visible: false
+           exitstatus: {
+               visible: false,
            },
            type: {
                header: gettext('Task type'),
-               required: true
+               required: true,
            },
            user: {
                header: gettext('User name'),
-               required: true 
+               renderer: Ext.String.htmlEncode,
+               required: true,
            },
            node: {
                header: gettext('Node'),
-               required: true 
+               required: true,
            },
            pid: {
                header: gettext('Process ID'),
-               required: true
+               required: true,
+           },
+           task_id: {
+               header: gettext('Task ID'),
            },
            starttime: {
                header: gettext('Start Time'),
-               required: true, 
-               renderer: Proxmox.Utils.render_timestamp
+               required: true,
+               renderer: Proxmox.Utils.render_timestamp,
            },
            upid: {
-               header: gettext('Unique task ID')
-           }
+               header: gettext('Unique task ID'),
+               renderer: Ext.String.htmlEncode,
+           },
        };
 
-       var statstore = Ext.create('Proxmox.data.ObjectStore', {
+       let statstore = Ext.create('Proxmox.data.ObjectStore', {
             url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status",
            interval: 1000,
-           rows: rows
+           rows: rows,
        });
 
-       me.on('destroy', statstore.stopUpdate); 
+       me.on('destroy', statstore.stopUpdate);
 
-       var stop_task = function() {
+       let stop_task = function() {
            Proxmox.Utils.API2Request({
                url: "/nodes/" + task.node + "/tasks/" + me.upid,
                waitMsgTarget: me,
                method: 'DELETE',
                failure: function(response, opts) {
                    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-               }
+               },
            });
        };
 
-       var stop_btn1 = new Ext.Button({
+       let stop_btn1 = new Ext.Button({
            text: gettext('Stop'),
            disabled: true,
-           handler: stop_task
+           handler: stop_task,
        });
 
-       var stop_btn2 = new Ext.Button({
+       let stop_btn2 = new Ext.Button({
            text: gettext('Stop'),
            disabled: true,
-           handler: stop_task
+           handler: stop_task,
        });
 
        statgrid = Ext.create('Proxmox.grid.ObjectGrid', {
            title: gettext('Status'),
            layout: 'fit',
-           tbar: [ stop_btn1 ],
+           tbar: [stop_btn1],
            rstore: statstore,
            rows: rows,
-           border: false
+           border: false,
        });
 
-       var logView = Ext.create('Proxmox.panel.LogView', {
+       let logView = Ext.create('Proxmox.panel.LogView', {
            title: gettext('Output'),
-           tbar: [ stop_btn2 ],
+           tbar: [stop_btn2],
            border: false,
-           url: "/api2/extjs/nodes/" + task.node + "/tasks/" + me.upid + "/log"
+           url: "/api2/extjs/nodes/" + task.node + "/tasks/" + me.upid + "/log",
        });
 
        me.mon(statstore, 'load', function() {
-           var status = statgrid.getObjectValue('status');
-           
+           let status = statgrid.getObjectValue('status');
+
            if (status === 'stopped') {
-               logView.requestUpdate(undefined, true);
                logView.scrollToEnd = false;
+               logView.requestUpdate();
                statstore.stopUpdate();
+               me.taskDone(statgrid.getObjectValue('exitstatus') === 'OK');
            }
 
            stop_btn1.setDisabled(status !== 'running');
@@ -202,7 +216,7 @@ Ext.define('Proxmox.window.TaskViewer', {
        statstore.startUpdate();
 
        Ext.apply(me, {
-           title: "Task viewer: " + task.desc,
+           title: "Task viewer: " + task.desc + me.extraTitle,
            width: 800,
            height: 400,
            layout: 'fit',
@@ -210,13 +224,13 @@ Ext.define('Proxmox.window.TaskViewer', {
            items: [{
                xtype: 'tabpanel',
                region: 'center',
-               items: [ logView, statgrid ]
-           }]
+               items: [logView, statgrid],
+           }],
         });
 
        me.callParent();
 
        logView.fireEvent('show', logView);
-    }
+    },
 });