]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/ServerStatus.js
configuration: options: adapt to new advanced statistic filter default
[pmg-gui.git] / js / ServerStatus.js
index 8ff793b796e96cd03cda55d5f5ca8c66e83a3ded..f7d79e90ee03d3540ab1b65df06027b60f9e9004 100644 (file)
@@ -1,4 +1,3 @@
-/*global Proxmox*/
 Ext.define('PMG.ServerStatus', {
     extend: 'Ext.panel.Panel',
     alias: 'widget.pmgServerStatus',
@@ -9,49 +8,98 @@ Ext.define('PMG.ServerStatus', {
 
     scrollable: true,
 
-    bodyPadding: '10 0 0 0',
+    bodyPadding: 5,
     defaults: {
        width: 700,
-       padding: '0 0 10 10'
+       padding: 5,
+       columnWidth: 1,
     },
 
     layout: 'column',
 
+    controller: {
+       xclass: 'Ext.app.ViewController',
+
+       openConsole: function() {
+           Proxmox.Utils.openXtermJsViewer('shell', 0, Proxmox.NodeName);
+       },
+
+       nodeCommand: function(cmd) {
+           Proxmox.Utils.API2Request({
+               params: {
+                   command: cmd,
+               },
+               url: `/nodes/${Proxmox.NodeName}/status`,
+               method: 'POST',
+               waitMsgTarget: this.getView(),
+               failure: response => Ext.Msg.alert(gettext('Error'), response.htmlStatus),
+           });
+       },
+
+       nodeShutdown: function() {
+           this.nodeCommand('shutdown');
+       },
+
+       nodeReboot: function() {
+           this.nodeCommand('reboot');
+       },
+    },
+
     tbar: [
+       {
+           text: gettext('Package versions'),
+           iconCls: 'fa fa-gift',
+           handler: () => Proxmox.Utils.checked_command(() => {
+               Ext.create('Proxmox.window.PackageVersions', {
+                   autoShow: true,
+               });
+           }),
+       },
        {
            text: gettext("Console"),
-           handler: function() {
-               PMG.Utils.openVNCViewer('shell', Proxmox.NodeName);
-           }
+           iconCls: 'fa fa-terminal',
+           handler: 'openConsole',
+       },
+       {
+           xtype: 'proxmoxButton',
+           text: gettext('Restart'),
+           dangerous: true,
+           confirmMsg: `${gettext('Node')} '${Proxmox.NodeName}' - ${gettext('Restart')}`,
+           handler: 'nodeReboot',
+           iconCls: 'fa fa-undo',
+       },
+       {
+           xtype: 'proxmoxButton',
+           text: gettext('Shutdown'),
+           dangerous: true,
+           confirmMsg: `${gettext('Node')} '${Proxmox.NodeName}' - ${gettext('Shutdown')}`,
+           handler: 'nodeShutdown',
+           iconCls: 'fa fa-power-off',
        },
        '->',
        {
-           xtype: 'proxmoxRRDTypeSelector'
-       }
+           xtype: 'proxmoxRRDTypeSelector',
+       },
     ],
 
     initComponent: function() {
-        var me = this;
+        let me = this;
 
-       var nodename = Proxmox.NodeName;
-       var rrdstore = Ext.create('Proxmox.data.RRDStore', {
-           rrdurl: "/api2/json/nodes/" + nodename + "/rrddata",
+       let nodename = Proxmox.NodeName;
+       let rrdstore = Ext.create('Proxmox.data.RRDStore', {
+           rrdurl: `/api2/json/nodes/${nodename}/rrddata`,
            fields: [
                { type: 'number', name: 'loadavg' },
                { type: 'number', name: 'maxcpu' },
                {
                    type: 'number',
                    name: 'cpu',
-                   convert: function(val) {
-                       return val*100;
-                   }
+                   convert: val => val * 100,
                },
                {
                    type: 'number',
                    name: 'iowait',
-                   convert: function(val) {
-                       return val*100;
-                   }
+                   convert: val => val * 100,
                },
                { type: 'number', name: 'memtotal' },
                { type: 'number', name: 'memused' },
@@ -61,8 +109,8 @@ Ext.define('PMG.ServerStatus', {
                { type: 'number', name: 'rootused' },
                { type: 'number', name: 'netin' },
                { type: 'number', name: 'netout' },
-               { type: 'date', dateFormat: 'timestamp', name: 'time' }
-           ]
+               { type: 'date', dateFormat: 'timestamp', name: 'time' },
+           ],
        });
 
        Ext.apply(me, {
@@ -71,60 +119,65 @@ Ext.define('PMG.ServerStatus', {
                    xtype: 'proxmoxRRDChart',
                    title: gettext('CPU usage'),
                    unit: 'percent',
-                   fields: ['cpu','iowait'],
+                   fields: ['cpu', 'iowait'],
                    fieldTitles: [gettext('CPU usage'), gettext('IO delay')],
-                   store: rrdstore
+                   store: rrdstore,
                },
                {
                    xtype: 'proxmoxRRDChart',
                    title: gettext('Server load'),
                    fields: ['loadavg'],
                    fieldTitles: [gettext('Load average')],
-                   store: rrdstore
+                   store: rrdstore,
                },
                {
                    xtype: 'proxmoxRRDChart',
                    title: gettext('Memory usage'),
                    unit: 'bytes',
-                   fields: ['memtotal','memused'],
+                   fields: ['memtotal', 'memused'],
                    fieldTitles: [gettext('Total'), gettext('Used')],
-                   store: rrdstore
+                   store: rrdstore,
                },
                {
                    xtype: 'proxmoxRRDChart',
                    title: gettext('Swap usage'),
                    unit: 'bytes',
-                   fields: ['swaptotal','swapused'],
+                   fields: ['swaptotal', 'swapused'],
                    fieldTitles: [gettext('Total'), gettext('Used')],
-                   store: rrdstore
+                   store: rrdstore,
                },
                {
                    xtype: 'proxmoxRRDChart',
                    title: gettext('Network traffic'),
                    unit: 'bytespersecond',
-                   fields: ['netin','netout'],
+                   fields: ['netin', 'netout'],
                    fieldTitles: [gettext('Ingress'), gettext('Egress')],
-                   store: rrdstore
+                   store: rrdstore,
                },
                {
                    xtype: 'proxmoxRRDChart',
                    title: gettext('Disk usage'),
                    unit: 'bytes',
-                   fields: ['roottotal','rootused'],
+                   fields: ['roottotal', 'rootused'],
                    fieldTitles: [gettext('Total'), gettext('Used')],
-                   store: rrdstore
-               }
+                   store: rrdstore,
+               },
            ],
            listeners: {
-               activate: function() {
-                   rrdstore.startUpdate();
-               },
-               destroy: function() {
-                   rrdstore.stopUpdate();
-               }
-           }
+               resize: panel => Proxmox.Utils.updateColumnWidth(panel),
+               activate: () => rrdstore.startUpdate(),
+               destroy: () => rrdstore.stopUpdate(),
+           },
        });
+
        me.callParent();
-   }
+
+       let sp = Ext.state.Manager.getProvider();
+       me.mon(sp, 'statechange', function(provider, key, value) {
+           if (key !== 'summarycolumns') {
+               return;
+           }
+           Proxmox.Utils.updateColumnWidth(me);
+       });
+   },
 });
-