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' },
{ 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, {
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);
+ });
+ },
});
-