187 lines
3.9 KiB
JavaScript
187 lines
3.9 KiB
JavaScript
Ext.define('PBS.NodeInfoPanel', {
|
|
extend: 'Proxmox.panel.StatusView',
|
|
alias: 'widget.pbsNodeInfoPanel',
|
|
|
|
height: 300,
|
|
bodyPadding: '15 5 15 5',
|
|
|
|
layout: {
|
|
type: 'table',
|
|
columns: 2,
|
|
tableAttrs: {
|
|
style: {
|
|
width: '100%',
|
|
},
|
|
},
|
|
},
|
|
|
|
defaults: {
|
|
xtype: 'pmxInfoWidget',
|
|
padding: '0 10 5 10',
|
|
},
|
|
|
|
controller: {
|
|
xclass: 'Ext.app.ViewController',
|
|
|
|
showFingerPrint: function() {
|
|
let me = this;
|
|
let view = me.getView();
|
|
let fingerprint = view.fingerprint;
|
|
Ext.create('Ext.window.Window', {
|
|
modal: true,
|
|
width: 600,
|
|
title: gettext('Fingerprint'),
|
|
layout: 'form',
|
|
bodyPadding: '10 0',
|
|
items: [
|
|
{
|
|
xtype: 'textfield',
|
|
inputId: 'fingerprintField',
|
|
value: fingerprint,
|
|
editable: false,
|
|
},
|
|
],
|
|
buttons: [
|
|
{
|
|
xtype: 'button',
|
|
iconCls: 'fa fa-clipboard',
|
|
handler: function(b) {
|
|
var el = document.getElementById('fingerprintField');
|
|
el.select();
|
|
document.execCommand("copy");
|
|
},
|
|
text: gettext('Copy'),
|
|
},
|
|
{
|
|
text: gettext('Ok'),
|
|
handler: function() {
|
|
this.up('window').close();
|
|
},
|
|
},
|
|
],
|
|
}).show();
|
|
},
|
|
},
|
|
|
|
tools: [
|
|
{
|
|
xtype: 'button',
|
|
reference: 'fpButton',
|
|
text: gettext('Show Fingerprint'),
|
|
handler: 'showFingerPrint',
|
|
disabled: true,
|
|
},
|
|
],
|
|
|
|
items: [
|
|
{
|
|
itemId: 'cpu',
|
|
iconCls: 'fa fa-fw pmx-itype-icon-processor pmx-icon',
|
|
title: gettext('CPU usage'),
|
|
valueField: 'cpu',
|
|
maxField: 'cpuinfo',
|
|
renderer: Proxmox.Utils.render_node_cpu_usage,
|
|
},
|
|
{
|
|
itemId: 'wait',
|
|
iconCls: 'pmx-icon-size fa fa-fw fa-clock-o',
|
|
title: gettext('IO delay'),
|
|
valueField: 'wait',
|
|
},
|
|
{
|
|
xtype: 'box',
|
|
colspan: 2,
|
|
padding: '0 0 20 0',
|
|
},
|
|
{
|
|
iconCls: 'fa fa-fw pmx-itype-icon-memory pmx-icon',
|
|
itemId: 'memory',
|
|
title: gettext('RAM usage'),
|
|
valueField: 'memory',
|
|
maxField: 'memory',
|
|
renderer: Proxmox.Utils.render_node_size_usage,
|
|
},
|
|
{
|
|
itemId: 'load',
|
|
iconCls: 'pmx-icon-size fa fa-fw fa-tasks',
|
|
title: gettext('Load average'),
|
|
printBar: false,
|
|
textField: 'loadavg',
|
|
},
|
|
{
|
|
iconCls: 'pmx-icon-size fa fa-fw fa-hdd-o',
|
|
itemId: 'rootfs',
|
|
title: gettext('HD space') + '(root)',
|
|
valueField: 'root',
|
|
maxField: 'root',
|
|
renderer: ({ used, total }) => Proxmox.Utils.render_size_usage(used, total, true),
|
|
},
|
|
{
|
|
iconCls: 'pmx-icon-size fa fa-fw fa-refresh',
|
|
itemId: 'swap',
|
|
printSize: true,
|
|
title: gettext('SWAP usage'),
|
|
valueField: 'swap',
|
|
maxField: 'swap',
|
|
renderer: Proxmox.Utils.render_node_size_usage,
|
|
},
|
|
{
|
|
xtype: 'box',
|
|
colspan: 2,
|
|
padding: '0 0 20 0',
|
|
},
|
|
{
|
|
itemId: 'cpus',
|
|
colspan: 2,
|
|
printBar: false,
|
|
title: gettext('CPU(s)'),
|
|
textField: 'cpuinfo',
|
|
renderer: Proxmox.Utils.render_cpu_model,
|
|
value: '',
|
|
},
|
|
{
|
|
itemId: 'kversion',
|
|
colspan: 2,
|
|
title: gettext('Kernel Version'),
|
|
printBar: false,
|
|
textField: 'kversion',
|
|
value: '',
|
|
},
|
|
{
|
|
xtype: 'pmxNodeInfoRepoStatus',
|
|
itemId: 'repositoryStatus',
|
|
product: 'Proxmox Backup Server',
|
|
repoLink: '#pbsServerAdministration:aptrepositories',
|
|
},
|
|
],
|
|
|
|
updateTitle: function() {
|
|
var me = this;
|
|
var uptime = Proxmox.Utils.render_uptime(me.getRecordValue('uptime'));
|
|
me.setTitle(Proxmox.NodeName + ' (' + gettext('Uptime') + ': ' + uptime + ')');
|
|
},
|
|
|
|
initComponent: function() {
|
|
let me = this;
|
|
|
|
me.rstore = Ext.create('Proxmox.data.ObjectStore', {
|
|
interval: 3000,
|
|
url: '/api2/json/nodes/localhost/status',
|
|
autoStart: true,
|
|
});
|
|
|
|
me.callParent();
|
|
|
|
me.mon(me.rstore, 'load', function(store, records, success) {
|
|
if (!success) {
|
|
return;
|
|
}
|
|
|
|
let info = me.getRecordValue('info');
|
|
me.fingerprint = info.fingerprint;
|
|
me.lookup('fpButton').setDisabled(!me.fingerprint);
|
|
});
|
|
me.on('destroy', function() { me.rstore.stopUpdate(); });
|
|
},
|
|
});
|