mirror of
				https://git.proxmox.com/git/proxmox-backup
				synced 2025-11-02 15:18:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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(); });
 | 
						|
    },
 | 
						|
});
 |